|PyPI version| |Docs badge| |License|
ADCPREADER - A python3 module for reading RDI's ADCP binary data files.
=======================================================================
Change log
----------
Version 0.2.1
* Changed name to adcpreader
* Updated documentation
* Documentation on readthedocs
* Glider specific parts of the code have been removed (including unpublished python dependencies)
Version 0.1.0
* Initial release
Synopsis
--------
This python module is primarily intended to read the binary data files
created by RDI's 600 kHz Doppler Velocity Log mounted on Slocum ocean
gliders. The module can, however, also be used to read binary date
from other stand-alone ADCPs, that adhere to RDI's binary data format.
The philosophy behind the implementation of *adcpreader* is that acoustic
ping (ensembles) are processed according to a user-defined
pipeline. Since binary data files can be huge, and the total amount of
data of a deployment even larger, possible issues with limited memory
are dealt with by pushing ensemble per ensemble through the pipeline,
making extensively use of coroutines.
Installation
------------
The python module *adcpreader* can be installed from source, using the
standard method to install python code. Alternatively, *adcpreader* can also
be installed from PyPi, using ``pip install adcpreader``.
Documentation
-------------
Comprehensive documentation is provided at https://adcpreader.readthedocs.io/en/latest/
Quick-start
-----------
For the impatient...
The module *adcpreader* implements a class PD0(), which returns an object the
serves as the source of the pipeline. Usually the end of the pipeline
will be some sink that either writes the data into a file, or into an
object that allows access to the data during an interactive python
session.
In the simplest case we can construct a pipeline with a source and
sink only::
>>> from adcpreader.rdi_reader import PD0
>>> from adcpreader.rdi_writer import DataStructure
>>> source = PD0()
>>> sink = DataStructure()
>>> pipeline = source | sink
In the code example above, we create a source operation and a sink
operation, and construct a pipeline using the pipe symbol "|".
Now, we can push data of file *sample.PD0* through the pipeline::
>>> pipeline.process("sample.PD0")
which results in the sink to contain the data of this file. You can
use :code:`sink.keys()` to list all variables that are accessible
through this object. For example the ensemble numbers can be accesed
as::
>>> sink.data['Ensnum']
or more compact::
>>> sink.Ensnum
In this example, we processed in a single file. We could also provide
a list of filenames as argument to :code:`pipeline.process`. However,
we can use the pipeline only once. That is, this will fail::
>>> pipeline.process("sample.PD0")
>>> pipeline.process("another_sample.PD0")
This is because under the hood generators and coroutines are
used. When the generator (source) is exhausted, the coroutines are
closed, and cannot be used anymore. Either, all data files are
processed when supplied as a list to :code:`pipeline.process()`, or
the pipeline is defined again.
A third way (not recommended), is to leave the coroutines open, by
supplying the optional keyword
:code:`close_coroutines_at_exit=False`. Then it is the user's
responsibility to close the routines when the pipeline is
invoked for the last time.
An extensive number of operations are defined that can be placed in
the pipeline. Some are for information purposes only, but most will in
some way modify the data. You could define an operator::
>>> info = adcpreader.rdi_writer.Info(pause=True)
and create a new pipeline::
>>> pipeline = source | info | sink
This will have no effect on the contents of :code:`sink`, but it will
display some information to the terminal (and pause before
continuing).
Other operations will affect the data. Examples, are corrections,
rotations, coordinate transforms, and quality checks. See for the
documentation for further information on https://adcpreader.readthedocs.io/en/latest/.
.. |PyPI version| image:: https://badgen.net/pypi/v/adcpreader
:target: https://pypi.org/project/adcpreader
.. |Docs badge| image:: https://readthedocs.org/projects/adcpreader/badge/?version=latest
:target: https://adcpreader.readthedocs.io/en/latest/
.. |License| image:: https://img.shields.io/badge/License-GPLv3-blue.svg
:target: https://www.gnu.org/licenses/gpl-3.0
Raw data
{
"_id": null,
"home_page": "https://adcpreader.readthedocs.io/en/latest/",
"name": "adcpreader",
"maintainer": "",
"docs_url": null,
"requires_python": "",
"maintainer_email": "",
"keywords": "",
"author": "Lucas Merckelbach",
"author_email": "lucas.merckelbach@hereon.de",
"download_url": "https://files.pythonhosted.org/packages/4d/63/e6dcf90300841093ad87e11324946590d38338bf5270dcab54187a84450a/adcpreader-0.2.1.tar.gz",
"platform": null,
"description": "|PyPI version| |Docs badge| |License|\n\nADCPREADER - A python3 module for reading RDI's ADCP binary data files.\n=======================================================================\n\nChange log\n----------\n\nVersion 0.2.1\n\n* Changed name to adcpreader\n* Updated documentation\n* Documentation on readthedocs\n* Glider specific parts of the code have been removed (including unpublished python dependencies)\n\nVersion 0.1.0\n\n* Initial release\n\n\nSynopsis\n--------\n\nThis python module is primarily intended to read the binary data files\ncreated by RDI's 600 kHz Doppler Velocity Log mounted on Slocum ocean\ngliders. The module can, however, also be used to read binary date\nfrom other stand-alone ADCPs, that adhere to RDI's binary data format.\n\nThe philosophy behind the implementation of *adcpreader* is that acoustic\nping (ensembles) are processed according to a user-defined\npipeline. Since binary data files can be huge, and the total amount of\ndata of a deployment even larger, possible issues with limited memory\nare dealt with by pushing ensemble per ensemble through the pipeline,\nmaking extensively use of coroutines.\n\nInstallation\n------------\n\nThe python module *adcpreader* can be installed from source, using the\nstandard method to install python code. Alternatively, *adcpreader* can also\nbe installed from PyPi, using ``pip install adcpreader``.\n\n\n\nDocumentation\n-------------\n\nComprehensive documentation is provided at https://adcpreader.readthedocs.io/en/latest/\n\nQuick-start\n-----------\n\nFor the impatient...\n\nThe module *adcpreader* implements a class PD0(), which returns an object the\nserves as the source of the pipeline. Usually the end of the pipeline\nwill be some sink that either writes the data into a file, or into an\nobject that allows access to the data during an interactive python\nsession.\n\nIn the simplest case we can construct a pipeline with a source and\nsink only::\n\n >>> from adcpreader.rdi_reader import PD0\n >>> from adcpreader.rdi_writer import DataStructure\n >>> source = PD0()\n >>> sink = DataStructure()\n >>> pipeline = source | sink\n\n\nIn the code example above, we create a source operation and a sink\noperation, and construct a pipeline using the pipe symbol \"|\".\n\nNow, we can push data of file *sample.PD0* through the pipeline::\n\n >>> pipeline.process(\"sample.PD0\")\n\nwhich results in the sink to contain the data of this file. You can\nuse :code:`sink.keys()` to list all variables that are accessible\nthrough this object. For example the ensemble numbers can be accesed\nas::\n\n >>> sink.data['Ensnum']\n\n\nor more compact::\n\n >>> sink.Ensnum\n\n\nIn this example, we processed in a single file. We could also provide\na list of filenames as argument to :code:`pipeline.process`. However,\nwe can use the pipeline only once. That is, this will fail::\n\n >>> pipeline.process(\"sample.PD0\")\n >>> pipeline.process(\"another_sample.PD0\")\n\n\nThis is because under the hood generators and coroutines are\nused. When the generator (source) is exhausted, the coroutines are\nclosed, and cannot be used anymore. Either, all data files are\nprocessed when supplied as a list to :code:`pipeline.process()`, or\nthe pipeline is defined again.\n\nA third way (not recommended), is to leave the coroutines open, by\nsupplying the optional keyword\n:code:`close_coroutines_at_exit=False`. Then it is the user's\nresponsibility to close the routines when the pipeline is\ninvoked for the last time.\n\nAn extensive number of operations are defined that can be placed in\nthe pipeline. Some are for information purposes only, but most will in\nsome way modify the data. You could define an operator::\n\n >>> info = adcpreader.rdi_writer.Info(pause=True)\n\n \nand create a new pipeline::\n\n >>> pipeline = source | info | sink\n\n\nThis will have no effect on the contents of :code:`sink`, but it will\ndisplay some information to the terminal (and pause before\ncontinuing).\n\nOther operations will affect the data. Examples, are corrections,\nrotations, coordinate transforms, and quality checks. See for the\ndocumentation for further information on https://adcpreader.readthedocs.io/en/latest/.\n\n\n.. |PyPI version| image:: https://badgen.net/pypi/v/adcpreader\n :target: https://pypi.org/project/adcpreader\n.. |Docs badge| image:: https://readthedocs.org/projects/adcpreader/badge/?version=latest\n :target: https://adcpreader.readthedocs.io/en/latest/\n.. |License| image:: https://img.shields.io/badge/License-GPLv3-blue.svg\n :target: https://www.gnu.org/licenses/gpl-3.0\n",
"bugtrack_url": null,
"license": "",
"summary": "A python module to access binary data files generated by RDI ADCPs",
"version": "0.2.1",
"project_urls": {
"Homepage": "https://adcpreader.readthedocs.io/en/latest/"
},
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "cc281bcbae580955c6cd5621f324a1d14cb1113b4a6238151d018f8d18071b33",
"md5": "87b9d65277b7211fcb9dbe66962f7c15",
"sha256": "79ff69d0d39cdecd8fb2b9312f3ca49b7436caa853ca1a8a1c5077f10228bfb7"
},
"downloads": -1,
"filename": "adcpreader-0.2.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "87b9d65277b7211fcb9dbe66962f7c15",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 44274,
"upload_time": "2023-09-04T14:34:32",
"upload_time_iso_8601": "2023-09-04T14:34:32.704074Z",
"url": "https://files.pythonhosted.org/packages/cc/28/1bcbae580955c6cd5621f324a1d14cb1113b4a6238151d018f8d18071b33/adcpreader-0.2.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "4d63e6dcf90300841093ad87e11324946590d38338bf5270dcab54187a84450a",
"md5": "fe2e0384424443160fd8550d12d919b3",
"sha256": "93018ea5ed0cc98f007cc21807518572b49b8d29f229f8c2aded94cba6fc1333"
},
"downloads": -1,
"filename": "adcpreader-0.2.1.tar.gz",
"has_sig": false,
"md5_digest": "fe2e0384424443160fd8550d12d919b3",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 107862,
"upload_time": "2023-09-04T14:33:44",
"upload_time_iso_8601": "2023-09-04T14:33:44.295557Z",
"url": "https://files.pythonhosted.org/packages/4d/63/e6dcf90300841093ad87e11324946590d38338bf5270dcab54187a84450a/adcpreader-0.2.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-09-04 14:33:44",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "adcpreader"
}