diff --git a/README.rst b/README.rst index 699bcdc..81d05ee 100644 --- a/README.rst +++ b/README.rst @@ -170,15 +170,18 @@ following attributes are extracted or reserved for use by ``SEGY-SAK``. * ``ns`` number of samples per trace * ``ds`` sample interval * ``text`` ebcidc header as ascii text - * ``d3_units`` vertical units of the data + * ``measurement_sys`` vertical units of the data * ``d3_domain`` vertical domain of the data * ``epsg`` data epsg code * ``corner_points`` corner points of the dataset in grid coordinates * ``corner_points_xy`` corner points of the dataset in xy * ``source_file`` name of the file the dataset was created from - * ``srd`` seismic reference datum of the data in vertical units ``d3_units`` + * ``srd`` seismic reference datum of the data in vertical units ``measurement_sys`` and ``d3_domain`` * ``datatype`` the data type e.g. amplitude, velocity, attribute + * ``percentiles`` this is an array of approximate percentile values created during + scanning from SEGY. Primarily this is useful for plotting by limiting the dynamic + range of the display. The percentiles are in percent 0, 0.1, 10, 50, 90, 99.9 & 100. Complete Documentation ---------------------- diff --git a/docs/api.rst b/docs/api.rst index b03d599..4cde3e9 100644 --- a/docs/api.rst +++ b/docs/api.rst @@ -108,6 +108,7 @@ segysak xarray accessor modules SeisGeom.is_depth SeisGeom.is_empty SeisGeom.zeros_like + SeisGeom.get_measurement_system ``seisnc`` data tools @@ -123,4 +124,10 @@ segysak xarray accessor modules :toctree: generated/ SeisGeom.xysel + SeisGeom.interp_line SeisGeom.surface_from_points + +``seisnc`` plotting functions + :toctree: generated/ + + SeisGeom.plot_bounds diff --git a/docs/command-line-tool.rst b/docs/command-line-tool.rst index cb67c16..cf536e5 100644 --- a/docs/command-line-tool.rst +++ b/docs/command-line-tool.rst @@ -16,7 +16,7 @@ convert between data formats. .. program-output:: segysak scan --help -**segysak scan** +**segysak scrape** .. program-output:: segysak scrape --help diff --git a/docs/conf.py b/docs/conf.py index c3a375e..768e343 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -124,12 +124,19 @@ data_dir.mkdir(exist_ok=True) nb_dir.mkdir(exist_ok=True) -data = ["volve10r12-full-twt-sub3d.sgy", "hor_twt_hugin_fm_top.dat"] +data = [ + "volve10r12-full-twt-sub3d.sgy", + "hor_twt_hugin_fm_top.dat", + "volve10r12-full-twt-arb.sgy", + "arbitrary_line.shp", +] nbs = [ "example_segysak_basics.ipynb", "example_segysak_dask.ipynb", - "example_extract_data_on_a_horizon.ipynb", + "example_amplitude_extraction_displays.ipynb", "example_segy_headers.ipynb", + "QuickOverview.ipynb", + "example_extract_arbitrary_line.ipynb", ] # copy data diff --git a/docs/examples.rst b/docs/examples.rst index 82be7ae..8bab420 100644 --- a/docs/examples.rst +++ b/docs/examples.rst @@ -7,5 +7,6 @@ Examples _examples/notebooks/example_segysak_basics _examples/notebooks/example_segy_headers - _examples/notebooks/example_extract_data_on_a_horizon - _examples/notebooks/example_segysak_dask \ No newline at end of file + _examples/notebooks/example_amplitude_extraction_displays + _examples/notebooks/example_extract_arbitrary_line + _examples/notebooks/example_segysak_dask diff --git a/docs/index.rst b/docs/index.rst index b001764..c8a2a6b 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -1,18 +1,44 @@ segysak: A library for loading and manipulating SEG-Y data with Python using **xarray** ======================================================================================== -**segysak** is a ... +**SEGYSAK** can be use as a tool to handle *SEGY* +files inside Python environment. -**segysak** leverages Xarray_ and Pandas_, to simplify handling of seismic data with -coordinates and meta data. It also offered a large number of utilities for common -seismic operations. To handle large data files it uses netCDF_ files, which were -also the source of xarray's data model. +By including **SEGYSAK** in your toolbox you will be +able to load or transform the original binary *SEGY* data into more accessible and +Python friendly formats. It leverages the work of Segyio_ to simplify +loading of common SEGY formats into ``xarray.Dataset`` objects for east of use and +to NetCDF4_ files for better on disk and large file performance using dask_. +Tools to help users create new volumes and to return data to SEGY are also included. +Additional features include +---------------------------- + + - **Arbitrary slicing and extration** + + - label based slicing + - horizon + - well path extraction + + - **Integrates with the existing Python scientific stack** + + - Leverage Xarray_ for easy coordinate management merging and plotting + - Inheritted compatibility with core Python libraries (NumPy_, Scipy and Pandas_). + - Works well with matplotlib_ and Pyvista_ + + - **Scalability** + + - NetCDF4 files work with dask to scale your Python code to multi-core and + distributed memory computing + +.. _Segyio: https://segyio.readthedocs.io/en/latest/segyio.html .. _NumPy: http://www.numpy.org .. _Pandas: http://pandas.pydata.org .. _dask: http://dask.org -.. _netCDF: http://www.unidata.ucar.edu/software/netcdf +.. _NetCDF4: http://www.unidata.ucar.edu/software/netcdf .. _Xarray: http://xarray.pydata.org/en/stable/ +.. _Pyvista: https://docs.pyvista.org/ +.. _matplotlib: https://matplotlib.org/ Documentation @@ -20,15 +46,7 @@ Documentation **Getting Started** -TODO: - - quick-overview - * :doc:`why-segysak` -* :doc:`faq` - -.. * :doc:`quick-overview` - -* :doc:`examples` * :doc:`installation` .. toctree:: @@ -38,20 +56,14 @@ TODO: why-segysak installation - examples - faq - -.. quick-overview + _examples/notebooks/QuickOverview **User Guide** -TODO: - - seisnc-standard - - terminology - - common-tasks - * :doc:`seisnc-standard` +* :doc:`examples` * :doc:`command-line-tool` +* :doc:`faq` .. toctree:: :maxdepth: 1 @@ -59,16 +71,12 @@ TODO: :hidden: seisnc-standard + examples command-line-tool -.. terminology -.. common-tasks + faq **Help & Reference** -TODO: - - contributing - - related-projects - * :doc:`api` .. * :doc:`contributing` @@ -86,10 +94,9 @@ See also Fundamental Python libraries to segysak are segyio_ and xarray_. -.. _segyio: https://segyio.readthedocs.io/en/latest/ .. _xarray: http://xarray.pydata.org/en/stable/ -The full Volve dataset was published by Equinor and you can read_ about it +The full Volve dataset was published by Equinor and you can read_ about it or get a copy of it here_. .. _read: https://www.equinor.com/en/news/14jun2018-disclosing-volve-data.html @@ -98,9 +105,11 @@ or get a copy of it here_. Get in touch ------------ -Contact through swung channel - +Contact us through our Swung Slack channel - |slack| +.. |slack| image:: https://img.shields.io/badge/slack-help-blueviolet?logo=slack + :alt: help + :target: https://swung.slack.com/messages/t20-segysak/ History ------- @@ -109,7 +118,7 @@ in Python. The ground work was layed by Tony Hallam but development really began during the Transform 2020 Software Underground Hackathon held online across the world due to the cancellation of of the EAGE Annual in June of that year. Significant contributions during the hackathon -were made by Steve Purves, Gijs Straathof and Fabio ... . +were made by Steve Purves, Gijs Straathof, Fabio Contreras and Alessandro Amato del Monte. License ------- diff --git a/docs/installation.rst b/docs/installation.rst index 6d2b6f2..6aec8ef 100644 --- a/docs/installation.rst +++ b/docs/installation.rst @@ -1,7 +1,11 @@ Installation ------------- -*SEGY-SAK* can be installed by using pip or python setuptools. +*SEGY-SAK* can be installed by using pip or python setuptools, we also provide an ``environment.yml`` for use +with conda and is available through Github_. + +.. _Github: https://github.com/trhallam/segysak + Python Package Index via ``pip`` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -20,3 +24,9 @@ Clone the SEGY-SAK Github repository and in the top level directory run setuptoo .. code-block:: shell python setup.py install + +And to run the tests + +.. code-block:: shell + + python setup.py test diff --git a/docs/quick-overview.rst b/docs/quick-overview.rst deleted file mode 100644 index 2384e58..0000000 --- a/docs/quick-overview.rst +++ /dev/null @@ -1,24 +0,0 @@ -Quick Overview -============== - -**SEGYSAK** can be use as a tool to handle *segy* and *sgy* -files inside Python environment. - -By including **SEGYSAK** in your toolbox you will be -able to transform the original binary data to an ascii-ish -format easier to be handle. Additionally, you can: - -- **Visualize Seismic Data** - - Volume or sculpt volume - - ILN or XLN section - - arbitrary section - -- **Extract values along** - - horizon - - well path - - INL-XLN coordinates - -So here below you can see some quick examples of what can be -done with **SEGY-SAK** - ------------------ diff --git a/docs/seisnc-standard.rst b/docs/seisnc-standard.rst index b1b6ee2..f6e0428 100644 --- a/docs/seisnc-standard.rst +++ b/docs/seisnc-standard.rst @@ -1,2 +1,78 @@ -SEISNC Standard -=============== \ No newline at end of file +SEISNC Standard for `xarray` +============================ + +The ``xarray`` seismic specification termed ``seisnc`` can be used by segysak to +output NETCDF4 files is more performant for Python operations than standard SEG-Y. +Unlike SEG-Y, ``xarray`` compatable files fit neatly into the Python scientific +stack providing operations like lazy loading, easy slicing, compatability with +multi-core and multi-node operations using ``dask`` as well as important features +such as labelled axes and coordinates. + +This specification is not meant to be prescriptive but outlines some basic +requirements for ``xarray`` datasets to work with *SEGYSAK* functionality. + +*SEGY-SAK* uses the convention ``.seisnc`` for the suffix on NETCDF4 files it +creates. These files are datasets with specific 1D and 2D coordiates and have a +single variable called ``data``. +The ``data`` variable contains the seismic cube volume or 2D line traces. +Attributes can be used to provide further metadata about the cube. + +3D and 3D Gathers +^^^^^^^^^^^^^^^^^ + +*SEGY-SAK* uses the convention labels of ``iline``, ``xline`` and ``offset`` to +describe +the bins of 3D data. Vertical dimensions are ``twt`` and ``depth``. A typical +``xarray`` dataset created by *SEGY-SAK* will return for example + +.. code-block:: python + + >>> seisnc_3d = segysak.segy_loader('test3d.sgy', iline=189, xline=193) + >>> seisnc_3d.dims + + Frozen(SortedKeysDict({'iline': 61, 'xline': 202, 'twt': 850})) + + +2D and 2D Gathers +^^^^^^^^^^^^^^^^^ + +For 2D data SEGY-SAK uses the dimensino labels ``cdp`` and ``offset``. This allows +the package to distinguish between 2D and 3D data to allow automation on saving +and convience wrappers. The same vertical dimensions apply as for 3D. +A typical ``xarray`` in 2D format would return + +.. code-block:: python + + >>> seisnc_2d = segysak.segy_loader('test2d.sgy', cdp=21) + >>> seisnc_2d.dims + + Frozen(SortedKeysDict({'cdp': 61, 'twt': 850})) + +Coordinates +^^^^^^^^^^^^ + +If the ``cdpx`` and ``cdpy`` byte locations are specified during loading the +SEGY the coordinates will be populated from the headers with the variable names +``cdp_x`` and ``cdp_y``. These will have dimensions equivalent to the horizontal +dimensions of the data (``iline``, ``xline`` for 3D and ``cdp`` for 2D). + +Attributes +^^^^^^^^^^^ +Any number of attributes can be added to a ``siesnc`` file. Currently the +following attributes are extracted or reserved for use by ``SEGY-SAK``. + + * ``ns`` number of samples per trace + * ``ds`` sample interval + * ``text`` ebcidc header as ascii text + * ``measurement_sys`` vertical units of the data + * ``d3_domain`` vertical domain of the data + * ``epsg`` data epsg code + * ``corner_points`` corner points of the dataset in grid coordinates + * ``corner_points_xy`` corner points of the dataset in xy + * ``source_file`` name of the file the dataset was created from + * ``srd`` seismic reference datum of the data in vertical units ``measurement_sys`` + and ``d3_domain`` + * ``datatype`` the data type e.g. amplitude, velocity, attribute + * ``percentiles`` this is an array of approximate percentile values created during + scanning from SEGY. Primarily this is useful for plotting by limiting the dynamic + range of the display. The percentiles are in percent 0, 0.1, 10, 50, 90, 99.9 & 100. diff --git a/docs/why-segysak.rst b/docs/why-segysak.rst index c7ed360..3c8aa8e 100644 --- a/docs/why-segysak.rst +++ b/docs/why-segysak.rst @@ -1,2 +1,27 @@ -Overview: Why segysak? -====================== \ No newline at end of file +Overview: Why SEGY-SAK? +======================== + +The objective of SEGY-SAK was to bring together the usefulness of `segyio` and +`xarray` to improve accessibility of seismic data for geoscientists using Python. +Key objectives for this project are to make loading and exporting SEG-Y easier +by offering common simple interfaces to `segyio` and to then load data into an +`xarray` format either directly into memory or by streaming large files to disk. + +Currently SEGY-SAK can load 2D, 2D gathers, 3D and 3D gathers into a common format +stable format called `seisnc` that you can use faithfully in your downstream +applications. The `seisnc` format is outlined in the standard section of the +documentation and is the basis for all of the other functionality provided by +SEGY-SAK. + +Beyond that, the `segysak` package has enhancements to `xarray` that reduce +complexity for common seismic related tasks to extracting information from seismic +such as arbitrary line, well-deviation or horizon extractions. We also offer a +long list of notebook examples to help new and experienced Python users alike +traverse the intricacies of Xarray and demonstrate how to do common tasks with +`segysak`. + +Finally, the use of Xarray and the NetCDF4 format allows you to scale your problems +using Dask. Dask can lazily load and process data across multiple cores and even +distributed memory allowing you to apply your Python code to large seismic volumes. +This process also means you can plot slices from your volumes in Python +without loading the full dataset into memory. diff --git a/environment.yml b/environment.yml index 98a9be9..bd7c5cb 100644 --- a/environment.yml +++ b/environment.yml @@ -26,7 +26,6 @@ dependencies: - pip - click - attrdict - - seaborn - pyshp - pip: - sphinxcontrib-programoutput diff --git a/examples/data/arbitrary_line.shp b/examples/data/arbitrary_line.shp new file mode 100644 index 0000000..d4367fd Binary files /dev/null and b/examples/data/arbitrary_line.shp differ diff --git a/examples/data/volve10r12-full-twt-arb.sgy b/examples/data/volve10r12-full-twt-arb.sgy new file mode 100644 index 0000000..3943f24 Binary files /dev/null and b/examples/data/volve10r12-full-twt-arb.sgy differ diff --git a/examples/notebooks/QuickOverview.ipynb b/examples/notebooks/QuickOverview.ipynb index c2926f8..435a469 100644 --- a/examples/notebooks/QuickOverview.ipynb +++ b/examples/notebooks/QuickOverview.ipynb @@ -6,24 +6,35 @@ "source": [ "# Quick Overview\n", "\n", - "here you can find some quick examples of what you can do with segysak. For more details refere to the [examples](/segysak/build/html/examples.html)" + "Here you can find some quick examples of what you can do with segysak. For more details refer to the [examples](../../examples.html)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "To beging import:\n", - "- *Segysak*\n", - "- *Numpy*\n", - "- *Matplotlib*\n", + "The library is imported as *segysak* and the loaded `xarray` objects are compatible with *numpy* and *matplotlib*.\n", "\n", - "And we will also add a variable for the location of the data" + "The cropped volume from the Volve field in the North Sea (made available by Equinor) is used for this example, and\n", + "all the examples and data in this documentation are available from the `examples` folder of the \n", + "[Github](https://github.com/trhallam/segysak) respository." ] }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, + "metadata": { + "nbsphinx": "hidden" + }, + "outputs": [], + "source": [ + "import warnings\n", + "warnings.filterwarnings('ignore')" + ] + }, + { + "cell_type": "code", + "execution_count": null, "metadata": { "scrolled": true }, @@ -37,17 +48,9 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "3D ../data/volve10r12-full-twt-sub3d.sgy True\n" - ] - } - ], + "outputs": [], "source": [ "V3D_path = pathlib.Path(\"../data/volve10r12-full-twt-sub3d.sgy\")\n", "print(\"3D\", V3D_path, V3D_path.exists())" @@ -64,322 +67,35 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "A basic operation would be to check the text head included in the SEG-Y file. For this you should import *get_segy_texthead*" + "A basic operation would be to check the text header included in the SEG-Y file. The *get_segy_texthead*\n", + "function accounts for commong encoding issues and returns the header as a text string." ] }, { "cell_type": "code", - "execution_count": 3, - "metadata": { - "scrolled": false - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/home/fabio/.local/lib/python3.7/site-packages/tqdm/autonotebook/__init__.py:14: TqdmExperimentalWarning: Using `tqdm.autonotebook.tqdm` in notebook mode. Use `tqdm.tqdm` instead to force console mode (e.g. in jupyter console)\n", - " \" (e.g. in jupyter console)\", TqdmExperimentalWarning)\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - " | count | \n", - "mean | \n", - "std | \n", - "min | \n", - "25% | \n", - "50% | \n", - "75% | \n", - "max | \n", - "byte_loc | \n", - "
---|---|---|---|---|---|---|---|---|---|
TRACE_SEQUENCE_LINE | \n", - "1000.0 | \n", - "100.54 | \n", - "57.831072 | \n", - "1.0 | \n", - "50.75 | \n", - "100.5 | \n", - "150.25 | \n", - "202.0 | \n", - "1 | \n", - "
TRACE_SEQUENCE_FILE | \n", - "1000.0 | \n", - "10091.98 | \n", - "1.407687 | \n", - "10090.0 | \n", - "10091.00 | \n", - "10092.0 | \n", - "10093.00 | \n", - "10094.0 | \n", - "5 | \n", - "
FieldRecord | \n", - "1000.0 | \n", - "10091.98 | \n", - "1.407687 | \n", - "10090.0 | \n", - "10091.00 | \n", - "10092.0 | \n", - "10093.00 | \n", - "10094.0 | \n", - "9 | \n", - "
TraceNumber | \n", - "1000.0 | \n", - "100.54 | \n", - "57.831072 | \n", - "1.0 | \n", - "50.75 | \n", - "100.5 | \n", - "150.25 | \n", - "202.0 | \n", - "13 | \n", - "
EnergySourcePoint | \n", - "1000.0 | \n", - "0.00 | \n", - "0.000000 | \n", - "0.0 | \n", - "0.00 | \n", - "0.0 | \n", - "0.00 | \n", - "0.0 | \n", - "17 | \n", - "
... | \n", - "... | \n", - "... | \n", - "... | \n", - "... | \n", - "... | \n", - "... | \n", - "... | \n", - "... | \n", - "... | \n", - "
SourceEnergyDirectionMantissa | \n", - "1000.0 | \n", - "0.00 | \n", - "0.000000 | \n", - "0.0 | \n", - "0.00 | \n", - "0.0 | \n", - "0.00 | \n", - "0.0 | \n", - "219 | \n", - "
SourceEnergyDirectionExponent | \n", - "1000.0 | \n", - "0.00 | \n", - "0.000000 | \n", - "0.0 | \n", - "0.00 | \n", - "0.0 | \n", - "0.00 | \n", - "0.0 | \n", - "223 | \n", - "
SourceMeasurementMantissa | \n", - "1000.0 | \n", - "0.00 | \n", - "0.000000 | \n", - "0.0 | \n", - "0.00 | \n", - "0.0 | \n", - "0.00 | \n", - "0.0 | \n", - "225 | \n", - "
SourceMeasurementExponent | \n", - "1000.0 | \n", - "0.00 | \n", - "0.000000 | \n", - "0.0 | \n", - "0.00 | \n", - "0.0 | \n", - "0.00 | \n", - "0.0 | \n", - "229 | \n", - "
SourceMeasurementUnit | \n", - "1000.0 | \n", - "0.00 | \n", - "0.000000 | \n", - "0.0 | \n", - "0.00 | \n", - "0.0 | \n", - "0.00 | \n", - "0.0 | \n", - "231 | \n", - "
89 rows × 9 columns
\n", - "\n", - " | count | \n", - "mean | \n", - "std | \n", - "min | \n", - "25% | \n", - "50% | \n", - "75% | \n", - "max | \n", - "byte_loc | \n", - "
---|---|---|---|---|---|---|---|---|---|
TRACE_SEQUENCE_LINE | \n", - "1000.0 | \n", - "1.005400e+02 | \n", - "57.831072 | \n", - "1.0 | \n", - "5.075000e+01 | \n", - "100.5 | \n", - "1.502500e+02 | \n", - "202.0 | \n", - "1 | \n", - "
TRACE_SEQUENCE_FILE | \n", - "1000.0 | \n", - "1.009198e+04 | \n", - "1.407687 | \n", - "10090.0 | \n", - "1.009100e+04 | \n", - "10092.0 | \n", - "1.009300e+04 | \n", - "10094.0 | \n", - "5 | \n", - "
FieldRecord | \n", - "1000.0 | \n", - "1.009198e+04 | \n", - "1.407687 | \n", - "10090.0 | \n", - "1.009100e+04 | \n", - "10092.0 | \n", - "1.009300e+04 | \n", - "10094.0 | \n", - "9 | \n", - "
TraceNumber | \n", - "1000.0 | \n", - "1.005400e+02 | \n", - "57.831072 | \n", - "1.0 | \n", - "5.075000e+01 | \n", - "100.5 | \n", - "1.502500e+02 | \n", - "202.0 | \n", - "13 | \n", - "
CDP | \n", - "1000.0 | \n", - "2.249540e+03 | \n", - "57.831072 | \n", - "2150.0 | \n", - "2.199750e+03 | \n", - "2249.5 | \n", - "2.299250e+03 | \n", - "2351.0 | \n", - "21 | \n", - "
SourceX | \n", - "1000.0 | \n", - "4.351992e+07 | \n", - "70152.496037 | \n", - "43396267.0 | \n", - "4.345933e+07 | \n", - "43519976.5 | \n", - "4.358062e+07 | \n", - "43641261.0 | \n", - "73 | \n", - "
SourceY | \n", - "1000.0 | \n", - "6.477772e+08 | \n", - "17532.885301 | \n", - "647744704.0 | \n", - "6.477622e+08 | \n", - "647777222.0 | \n", - "6.477923e+08 | \n", - "647809133.0 | \n", - "77 | \n", - "
CDP_X | \n", - "1000.0 | \n", - "4.351992e+07 | \n", - "70152.496037 | \n", - "43396267.0 | \n", - "4.345933e+07 | \n", - "43519976.5 | \n", - "4.358062e+07 | \n", - "43641261.0 | \n", - "181 | \n", - "
CDP_Y | \n", - "1000.0 | \n", - "6.477772e+08 | \n", - "17532.885301 | \n", - "647744704.0 | \n", - "6.477622e+08 | \n", - "647777222.0 | \n", - "6.477923e+08 | \n", - "647809133.0 | \n", - "185 | \n", - "
INLINE_3D | \n", - "1000.0 | \n", - "1.009198e+04 | \n", - "1.407687 | \n", - "10090.0 | \n", - "1.009100e+04 | \n", - "10092.0 | \n", - "1.009300e+04 | \n", - "10094.0 | \n", - "189 | \n", - "
CROSSLINE_3D | \n", - "1000.0 | \n", - "2.249540e+03 | \n", - "57.831072 | \n", - "2150.0 | \n", - "2.199750e+03 | \n", - "2249.5 | \n", - "2.299250e+03 | \n", - "2351.0 | \n", - "193 | \n", - "
\n", - " | TRACE_SEQUENCE_LINE | \n", - "TRACE_SEQUENCE_FILE | \n", - "FieldRecord | \n", - "TraceNumber | \n", - "EnergySourcePoint | \n", - "CDP | \n", - "CDP_TRACE | \n", - "TraceIdentificationCode | \n", - "NSummedTraces | \n", - "NStackedTraces | \n", - "... | \n", - "TransductionConstantPower | \n", - "TransductionUnit | \n", - "TraceIdentifier | \n", - "ScalarTraceHeader | \n", - "SourceType | \n", - "SourceEnergyDirectionMantissa | \n", - "SourceEnergyDirectionExponent | \n", - "SourceMeasurementMantissa | \n", - "SourceMeasurementExponent | \n", - "SourceMeasurementUnit | \n", - "
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | \n", - "1 | \n", - "10090 | \n", - "10090 | \n", - "1 | \n", - "0 | \n", - "2150 | \n", - "1 | \n", - "1 | \n", - "0 | \n", - "0 | \n", - "... | \n", - "0 | \n", - "0 | \n", - "0 | \n", - "0 | \n", - "0 | \n", - "0 | \n", - "0 | \n", - "0 | \n", - "0 | \n", - "0 | \n", - "
1 | \n", - "2 | \n", - "10090 | \n", - "10090 | \n", - "2 | \n", - "0 | \n", - "2151 | \n", - "1 | \n", - "1 | \n", - "0 | \n", - "0 | \n", - "... | \n", - "0 | \n", - "0 | \n", - "0 | \n", - "0 | \n", - "0 | \n", - "0 | \n", - "0 | \n", - "0 | \n", - "0 | \n", - "0 | \n", - "
2 | \n", - "3 | \n", - "10090 | \n", - "10090 | \n", - "3 | \n", - "0 | \n", - "2152 | \n", - "1 | \n", - "1 | \n", - "0 | \n", - "0 | \n", - "... | \n", - "0 | \n", - "0 | \n", - "0 | \n", - "0 | \n", - "0 | \n", - "0 | \n", - "0 | \n", - "0 | \n", - "0 | \n", - "0 | \n", - "
3 | \n", - "4 | \n", - "10090 | \n", - "10090 | \n", - "4 | \n", - "0 | \n", - "2153 | \n", - "1 | \n", - "1 | \n", - "0 | \n", - "0 | \n", - "... | \n", - "0 | \n", - "0 | \n", - "0 | \n", - "0 | \n", - "0 | \n", - "0 | \n", - "0 | \n", - "0 | \n", - "0 | \n", - "0 | \n", - "
4 | \n", - "5 | \n", - "10090 | \n", - "10090 | \n", - "5 | \n", - "0 | \n", - "2154 | \n", - "1 | \n", - "1 | \n", - "0 | \n", - "0 | \n", - "... | \n", - "0 | \n", - "0 | \n", - "0 | \n", - "0 | \n", - "0 | \n", - "0 | \n", - "0 | \n", - "0 | \n", - "0 | \n", - "0 | \n", - "
... | \n", - "... | \n", - "... | \n", - "... | \n", - "... | \n", - "... | \n", - "... | \n", - "... | \n", - "... | \n", - "... | \n", - "... | \n", - "... | \n", - "... | \n", - "... | \n", - "... | \n", - "... | \n", - "... | \n", - "... | \n", - "... | \n", - "... | \n", - "... | \n", - "... | \n", - "
9995 | \n", - "98 | \n", - "10139 | \n", - "10139 | \n", - "98 | \n", - "0 | \n", - "2247 | \n", - "1 | \n", - "1 | \n", - "0 | \n", - "0 | \n", - "... | \n", - "0 | \n", - "0 | \n", - "0 | \n", - "0 | \n", - "0 | \n", - "0 | \n", - "0 | \n", - "0 | \n", - "0 | \n", - "0 | \n", - "
9996 | \n", - "99 | \n", - "10139 | \n", - "10139 | \n", - "99 | \n", - "0 | \n", - "2248 | \n", - "1 | \n", - "1 | \n", - "0 | \n", - "0 | \n", - "... | \n", - "0 | \n", - "0 | \n", - "0 | \n", - "0 | \n", - "0 | \n", - "0 | \n", - "0 | \n", - "0 | \n", - "0 | \n", - "0 | \n", - "
9997 | \n", - "100 | \n", - "10139 | \n", - "10139 | \n", - "100 | \n", - "0 | \n", - "2249 | \n", - "1 | \n", - "1 | \n", - "0 | \n", - "0 | \n", - "... | \n", - "0 | \n", - "0 | \n", - "0 | \n", - "0 | \n", - "0 | \n", - "0 | \n", - "0 | \n", - "0 | \n", - "0 | \n", - "0 | \n", - "
9998 | \n", - "101 | \n", - "10139 | \n", - "10139 | \n", - "101 | \n", - "0 | \n", - "2250 | \n", - "1 | \n", - "1 | \n", - "0 | \n", - "0 | \n", - "... | \n", - "0 | \n", - "0 | \n", - "0 | \n", - "0 | \n", - "0 | \n", - "0 | \n", - "0 | \n", - "0 | \n", - "0 | \n", - "0 | \n", - "
9999 | \n", - "102 | \n", - "10139 | \n", - "10139 | \n", - "102 | \n", - "0 | \n", - "2251 | \n", - "1 | \n", - "1 | \n", - "0 | \n", - "0 | \n", - "... | \n", - "0 | \n", - "0 | \n", - "0 | \n", - "0 | \n", - "0 | \n", - "0 | \n", - "0 | \n", - "0 | \n", - "0 | \n", - "0 | \n", - "
10000 rows × 89 columns
\n", - "array([10090, 10091, 10092, 10093, 10094, 10095, 10096, 10097, 10098, 10099,\n", - " 10100, 10101, 10102, 10103, 10104, 10105, 10106, 10107, 10108, 10109,\n", - " 10110, 10111, 10112, 10113, 10114, 10115, 10116, 10117, 10118, 10119,\n", - " 10120, 10121, 10122, 10123, 10124, 10125, 10126, 10127, 10128, 10129,\n", - " 10130, 10131, 10132, 10133, 10134, 10135, 10136, 10137, 10138, 10139,\n", - " 10140, 10141, 10142, 10143, 10144, 10145, 10146, 10147, 10148, 10149,\n", - " 10150])
array([2150, 2151, 2152, ..., 2349, 2350, 2351])
array([ 4, 8, 12, ..., 3392, 3396, 3400])
array([[436400.52, 436388.39, 436376.26, ..., 433986.92, 433974.8 ,\n", - " 433962.67],\n", - " [436403.54, 436391.41, 436379.28, ..., 433989.95, 433977.82,\n", - " 433965.69],\n", - " [436406.57, 436394.44, 436382.31, ..., 433992.97, 433980.84,\n", - " 433968.72],\n", - " ...,\n", - " [436575.93, 436563.8 , 436551.67, ..., 434162.34, 434150.21,\n", - " 434138.08],\n", - " [436578.95, 436566.83, 436554.7 , ..., 434165.36, 434153.23,\n", - " 434141.1 ],\n", - " [436581.98, 436569.85, 436557.72, ..., 434168.39, 434156.26,\n", - " 434144.13]])
array([[6477447.04, 6477450.06, 6477453.09, ..., 6478048.89, 6478051.92,\n", - " 6478054.94],\n", - " [6477459.17, 6477462.19, 6477465.22, ..., 6478061.02, 6478064.05,\n", - " 6478067.07],\n", - " [6477471.3 , 6477474.32, 6477477.35, ..., 6478073.15, 6478076.17,\n", - " 6478079.2 ],\n", - " ...,\n", - " [6478150.5 , 6478153.52, 6478156.55, ..., 6478752.35, 6478755.38,\n", - " 6478758.4 ],\n", - " [6478162.63, 6478165.65, 6478168.68, ..., 6478764.48, 6478767.51,\n", - " 6478770.53],\n", - " [6478174.76, 6478177.78, 6478180.81, ..., 6478776.61, 6478779.63,\n", - " 6478782.66]])
array([[[ 2.05745399e-02, 2.20407024e-02, 1.96589418e-02, ...,\n", - " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],\n", - " [ 1.23256370e-02, 1.59417503e-02, 1.38800517e-02, ...,\n", - " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],\n", - " [-1.63372169e-05, 4.92771342e-03, 3.24293785e-03, ...,\n", - " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],\n", - " ...,\n", - " [ 5.47898412e-02, 5.22681139e-02, 5.00054434e-02, ...,\n", - " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],\n", - " [ 6.27492070e-02, 6.00568764e-02, 5.75365834e-02, ...,\n", - " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],\n", - " [ 6.91987872e-02, 6.67222738e-02, 6.40410781e-02, ...,\n", - " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]],\n", - "\n", - " [[-3.46487835e-02, -3.38801444e-02, -3.20093483e-02, ...,\n", - " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],\n", - " [-4.10056897e-02, -4.02579159e-02, -3.83855253e-02, ...,\n", - " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],\n", - " [-5.01492284e-02, -4.94211540e-02, -4.75146063e-02, ...,\n", - " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],\n", - " ...,\n", - " [ 5.67428097e-02, 5.52131385e-02, 5.07290289e-02, ...,\n", - " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],\n", - " [ 6.64809942e-02, 6.48384690e-02, 6.00756221e-02, ...,\n", - " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],\n", - " [ 7.48873353e-02, 7.32158422e-02, 6.82448149e-02, ...,\n", - " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]],\n", - "\n", - " [[-9.64066982e-02, -9.07384753e-02, -9.37667489e-02, ...,\n", - " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],\n", - " [-1.04108036e-01, -9.81314182e-02, -1.01393223e-01, ...,\n", - " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],\n", - " [-1.13099337e-01, -1.06950760e-01, -1.10372961e-01, ...,\n", - " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],\n", - " ...,\n", - " [ 5.40114716e-02, 5.10329828e-02, 4.78516594e-02, ...,\n", - " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],\n", - " [ 6.48291111e-02, 6.16531037e-02, 5.82096726e-02, ...,\n", - " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],\n", - " [ 7.29467869e-02, 6.98981881e-02, 6.60549402e-02, ...,\n", - " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]],\n", - "\n", - " ...,\n", - "\n", - " [[ 9.68695153e-04, -2.51687597e-04, 1.44266407e-03, ...,\n", - " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],\n", - " [-1.63413770e-03, -2.75512878e-03, -1.06797647e-03, ...,\n", - " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],\n", - " [-4.35291976e-03, -5.47245145e-03, -3.75785050e-03, ...,\n", - " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],\n", - " ...,\n", - " [-1.80308372e-02, -1.90376081e-02, -1.74372271e-02, ...,\n", - " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],\n", - " [-1.87230855e-02, -1.95240490e-02, -1.79770775e-02, ...,\n", - " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],\n", - " [-1.83046348e-02, -1.88191719e-02, -1.74503252e-02, ...,\n", - " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]],\n", - "\n", - " [[ 8.91474541e-04, 1.06899254e-03, 1.12220901e-03, ...,\n", - " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],\n", - " [-9.47480323e-04, -7.20057171e-04, -5.74156409e-04, ...,\n", - " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],\n", - " [-2.25873315e-03, -1.95197086e-03, -1.81181263e-03, ...,\n", - " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],\n", - " ...,\n", - " [-8.93678516e-03, -8.87831673e-03, -8.82190093e-03, ...,\n", - " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],\n", - " [-8.89039040e-03, -9.03325155e-03, -8.77474993e-03, ...,\n", - " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],\n", - " [-8.80905986e-03, -9.18869302e-03, -8.81006569e-03, ...,\n", - " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]],\n", - "\n", - " [[ 2.17335932e-02, 1.93170868e-02, 2.07530260e-02, ...,\n", - " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],\n", - " [ 2.12477669e-02, 1.89855732e-02, 2.04903930e-02, ...,\n", - " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],\n", - " [ 2.13435888e-02, 1.91475898e-02, 2.07546689e-02, ...,\n", - " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],\n", - " ...,\n", - " [ 6.19068742e-03, 5.15908375e-03, 6.23933598e-03, ...,\n", - " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],\n", - " [ 7.53349811e-03, 6.49160147e-03, 7.51641765e-03, ...,\n", - " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],\n", - " [ 9.05360654e-03, 7.92511553e-03, 8.82008299e-03, ...,\n", - " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]]])
array([[[ 2.05745399e-02, 2.20407024e-02, 1.96589418e-02, ...,\n", +======= "xarray.DataArray'data'
- iline: 61
- xline: 202
- twt: 850
0.02057 0.02204 0.01966 0.02542 0.02544 ... 0.0 0.0 0.0 0.0 0.0array([[[ 2.05745399e-02, 2.20407024e-02, 1.96589418e-02, ...,\n", +>>>>>>> eb016c77556cc469c6c413d39442c5072b2b7539 " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],\n", " [ 1.23256370e-02, 1.59417503e-02, 1.38800517e-02, ...,\n", " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],\n", @@ -593,13 +622,21 @@ " [ 7.53349811e-03, 6.49160147e-03, 7.51641765e-03, ...,\n", " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00],\n", " [ 9.05360654e-03, 7.92511553e-03, 8.82008299e-03, ...,\n", +<<<<<<< HEAD + " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]]])
iline(iline)int6410090 10091 10092 ... 10149 10150array([10090, 10091, 10092, 10093, 10094, 10095, 10096, 10097, 10098, 10099,\n", +======= " 0.00000000e+00, 0.00000000e+00, 0.00000000e+00]]])
iline(iline)int6410090 10091 10092 ... 10149 10150array([10090, 10091, 10092, 10093, 10094, 10095, 10096, 10097, 10098, 10099,\n", +>>>>>>> eb016c77556cc469c6c413d39442c5072b2b7539 " 10100, 10101, 10102, 10103, 10104, 10105, 10106, 10107, 10108, 10109,\n", " 10110, 10111, 10112, 10113, 10114, 10115, 10116, 10117, 10118, 10119,\n", " 10120, 10121, 10122, 10123, 10124, 10125, 10126, 10127, 10128, 10129,\n", " 10130, 10131, 10132, 10133, 10134, 10135, 10136, 10137, 10138, 10139,\n", " 10140, 10141, 10142, 10143, 10144, 10145, 10146, 10147, 10148, 10149,\n", +<<<<<<< HEAD + " 10150]) xline(xline)int642150 2151 2152 ... 2349 2350 2351array([2150, 2151, 2152, ..., 2349, 2350, 2351]) twt(twt)int644 8 12 16 ... 3388 3392 3396 3400array([ 4, 8, 12, ..., 3392, 3396, 3400]) cdp_x(iline, xline)float644.364e+05 4.364e+05 ... 4.341e+05array([[436400.52, 436388.39, 436376.26, ..., 433986.92, 433974.8 ,\n", +======= " 10150]) xline(xline)int642150 2151 2152 ... 2349 2350 2351array([2150, 2151, 2152, ..., 2349, 2350, 2351]) twt(twt)int644 8 12 16 ... 3388 3392 3396 3400array([ 4, 8, 12, ..., 3392, 3396, 3400]) cdp_x(iline, xline)float644.364e+05 4.364e+05 ... 4.341e+05array([[436400.52, 436388.39, 436376.26, ..., 433986.92, 433974.8 ,\n", +>>>>>>> eb016c77556cc469c6c413d39442c5072b2b7539 " 433962.67],\n", " [436403.54, 436391.41, 436379.28, ..., 433989.95, 433977.82,\n", " 433965.69],\n", @@ -611,7 +648,11 @@ " [436578.95, 436566.83, 436554.7 , ..., 434165.36, 434153.23,\n", " 434141.1 ],\n", " [436581.98, 436569.85, 436557.72, ..., 434168.39, 434156.26,\n", +<<<<<<< HEAD + " 434144.13]]) cdp_y(iline, xline)float646.477e+06 6.477e+06 ... 6.479e+06array([[6477447.04, 6477450.06, 6477453.09, ..., 6478048.89, 6478051.92,\n", +======= " 434144.13]]) cdp_y(iline, xline)float646.477e+06 6.477e+06 ... 6.479e+06array([[6477447.04, 6477450.06, 6477453.09, ..., 6478048.89, 6478051.92,\n", +>>>>>>> eb016c77556cc469c6c413d39442c5072b2b7539 " 6478054.94],\n", " [6477459.17, 6477462.19, 6477465.22, ..., 6478061.02, 6478064.05,\n", " 6478067.07],\n", @@ -623,7 +664,11 @@ " [6478162.63, 6478165.65, 6478168.68, ..., 6478764.48, 6478767.51,\n", " 6478770.53],\n", " [6478174.76, 6478177.78, 6478180.81, ..., 6478776.61, 6478779.63,\n", +<<<<<<< HEAD + " 6478782.66]])