# lcheapo
Viewing and modifying LCHEAPO OBS data
## Overview
### Command-line programs
Type ``{command} -h`` to get a list of parameters and options
#### Programs that don't modify files
| Program | description |
| ----------- | ----------------------------------------------------- |
| lcdump | dump raw information from LCHEAPO files |
| lcinfo | return basic information about an LCHEAPO file |
| lcplot | plot an LCHEAPO file |
| lctest | plot LCHEAPO tests |
| lc_examples | create a directory with examples of lcplot and lctest |
#### Programs that modify files
These programs use the *SDPCHAIN* protocols for FAIR-
compliant data:
- Create/append to a process-steps.json file
- Read from input directory (-i) and output to (-o)
| Program | description |
| ----------- | ----------------------------------------------------------------------------- |
| lccut | extract section of an LCHEAPO file |
| lcfix | fix common bugs in an LCHEAPO file |
| lcheader | create an LCHEAPO header + directory |
| sdpcat | concatenate data files |
| sdpstep | run a command line tool and save info to process-steps file |
| lc2ms_weak | converts LCHEAPO file to basic miniSEED files |
| lc2SDS_weak | converts LCHEAPO file to SeisComp Data Structure, with basic drift correction |
## lctest control files
lctest uses YAML-format control files to indicate what kind of plots to
output. The datetime ranges in the `plots` sections must be within those given
in the `input` section, as data is only read using the `input` time bounds.
for details on the control file format, type:
```
python
> import lcheapo
> help(lcheapo.lctest)
```
to put example lctest control files in the current directory, type:
```
lctest --examples
```
### Example plots
### Examples
#### 1: Analysing one station
``` yaml
---
input:
start_time: "2022-02-22T10:00:01"
end_time: "2022-02-25T15:25:25"
datafiles:
- name: "TestAcq-BB02-ProgV1-3.raw.lch"
obs_type: 'BBOBS1'
station: 'TEST'
description: "Tests on BBOBS"
output:
show: True
filebase: 'BB02-V1_3-tests'
plot_globals:
spectra:
window_length.s: 1024
plots:
time_series:
- description: "Entire time series"
select: {station: "*"}
start_time: "2022-02-22T10:00:01"
end_time: "2022-02-25T15:25:25"
- description: "Quiet time"
select: {station: "*"}
start_time: "2022-02-23T21:00:00"
end_time: "2022-02-24T03:00:00"
- description: "Stack time"
select: {station: "*"}
start_time: "2022-02-25T13:54:00"
end_time: "2022-02-25T14:03:00"
spectra:
- description: "Quiet time"
select: {station: "*"}
start_time: "2022-02-23T21:00:00"
end_time: "2022-02-24T03:00:00"
stack:
- description: "Stack, Jump South"
orientation_codes: ["Z"]
offset_before.s: 0.3
offset_after.s: 1
times:
- "2022-02-25T13:57:00.66"
- "2022-02-25T13:58:00.53"
- "2022-02-25T13:59:00.2"
- description: "Stack, Jump Est"
orientation_codes: ["Z"]
offset_before.s: 0.3
offset_after.s: 1
times:
- "2022-02-25T14:00:00.4"
- "2022-02-25T14:01:00.15"
- "2022-02-25T14:02:00.18"
particle_motion:
- description: "Stack, Jump South"
orientation_code_x: "2"
orientation_code_y: "1"
offset_before.s: 0.00
offset_after.s: 0.03
offset_before_ts.s: 0.2
offset_after_ts.s: 1
times:
- "2022-02-25T13:57:00.66"
- "2022-02-25T13:58:00.53"
- "2022-02-25T13:59:00.2"
- description: "Stack, Jump Est"
orientation_code_x: "2"
orientation_code_y: "1"
offset_before.s: 0.1
offset_after.s: 0.2
offset_before_ts.s: 0.3
offset_after_ts.s: 1
times:
- "2022-02-25T14:00:00.4"
- "2022-02-25T14:01:00.15"
- "2022-02-25T14:02:00.18"
```
##### Output plots
###### time_series
![](https://github.com/WayneCrawford/lcheapo/raw/main/README_images/BB02-V1_3-tests_Entire_time_series_ts.png)
![](https://github.com/WayneCrawford/lcheapo/raw/main/README_images/BB02-V1_3-tests_Quiet_time_ts.png)
###### spectra
![](https://github.com/WayneCrawford/lcheapo/raw/main/README_images/BB02-V1_3-tests_Quiet_time_spect.png)
###### stack
![](https://github.com/WayneCrawford/lcheapo/raw/main/README_images/BB02-V1_3-tests_Stack_Jump_South_stack.png)
###### particle_motion
![](https://github.com/WayneCrawford/lcheapo/raw/main/README_images/BB02-V1_3-tests_Stack_Jump_South_pm.png)
#### 2: Comparing several stations
```yaml
---
input:
start_time: null
end_time: null
datafiles:
-
name: "20191107T14_SPOBS09_F02.raw.lch"
obs_type: "SPOBS2"
station: "09F2"
-
name: "20191107T14_SPOBS09_F02.raw.lch"
obs_type: "SPOBS2"
station: "09c1"
-
name: "20191107T14_SPOBS09_F02.raw.lch"
obs_type: "SPOBS2"
station: "09c2"
description: "Simulation of multi-instrument test"
output:
show: True
filebase: "MAYOBS6"
plot_globals:
stack:
offset_before.s: 0.5
offset_after.s: 1.5
plot_span: False
particle_motion:
offset_before.s: 0.00
offset_after.s: 0.03
offset_before_ts.s: 0.1
offset_after_ts.s: 0.2
spectra:
window_length.s: 100
plots:
time_series:
-
description: "Entire time series"
select: {station: "*"}
start_time: null
end_time: null
-
description: "Quiet period"
select: {channel: "*3"}
start_time: null
end_time: "2019-11-07T13:57"
-
description: "Rubber hammer taps"
select: {station: "*"}
start_time: "2019-11-07T14:08"
end_time: "2019-11-07T14:11:10"
spectra:
-
description: "Entire time series"
select: {component: "3"}
start_time: null
end_time: null
-
description: "Quiet period"
select: {channel: "*3"}
start_time: null
end_time: "2019-11-07T13:57"
```
Raw data
{
"_id": null,
"home_page": "https://github.com/WayneCrawford/lcheapo",
"name": "lcheapo",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": "",
"keywords": "oceanography,marine,OBS",
"author": "Wayne Crawford",
"author_email": "crawford@ipgp.fr",
"download_url": "https://files.pythonhosted.org/packages/d2/43/060b94ccb489daccb1ed0f611465ace606f2b4637cc66e0858391464ee11/lcheapo-1.0.6.post2.tar.gz",
"platform": null,
"description": "# lcheapo\n\nViewing and modifying LCHEAPO OBS data\n\n## Overview\n\n### Command-line programs\n\nType ``{command} -h`` to get a list of parameters and options\n\n#### Programs that don't modify files\n\n| Program | description |\n| ----------- | ----------------------------------------------------- |\n| lcdump | dump raw information from LCHEAPO files |\n| lcinfo | return basic information about an LCHEAPO file |\n| lcplot | plot an LCHEAPO file |\n| lctest | plot LCHEAPO tests |\n| lc_examples | create a directory with examples of lcplot and lctest |\n\n#### Programs that modify files\n\nThese programs use the *SDPCHAIN* protocols for FAIR-\ncompliant data:\n\n- Create/append to a process-steps.json file\n- Read from input directory (-i) and output to (-o)\n\n| Program | description |\n| ----------- | ----------------------------------------------------------------------------- |\n| lccut | extract section of an LCHEAPO file |\n| lcfix | fix common bugs in an LCHEAPO file |\n| lcheader | create an LCHEAPO header + directory |\n| sdpcat | concatenate data files |\n| sdpstep | run a command line tool and save info to process-steps file |\n| lc2ms_weak | converts LCHEAPO file to basic miniSEED files |\n| lc2SDS_weak | converts LCHEAPO file to SeisComp Data Structure, with basic drift correction |\n\n## lctest control files\n\nlctest uses YAML-format control files to indicate what kind of plots to\noutput. The datetime ranges in the `plots` sections must be within those given\nin the `input` section, as data is only read using the `input` time bounds.\n\nfor details on the control file format, type:\n```\n python\n > import lcheapo\n > help(lcheapo.lctest)\n```\n\nto put example lctest control files in the current directory, type:\n```\n lctest --examples\n```\n\n### Example plots\n\n### Examples\n\n#### 1: Analysing one station\n\n``` yaml\n---\ninput: \n start_time: \"2022-02-22T10:00:01\"\n end_time: \"2022-02-25T15:25:25\"\n datafiles:\n - name: \"TestAcq-BB02-ProgV1-3.raw.lch\"\n obs_type: 'BBOBS1'\n station: 'TEST'\n description: \"Tests on BBOBS\"\noutput:\n show: True\n filebase: 'BB02-V1_3-tests'\nplot_globals:\n spectra:\n window_length.s: 1024\nplots:\n time_series:\n - description: \"Entire time series\"\n select: {station: \"*\"}\n start_time: \"2022-02-22T10:00:01\"\n end_time: \"2022-02-25T15:25:25\"\n - description: \"Quiet time\"\n select: {station: \"*\"}\n start_time: \"2022-02-23T21:00:00\"\n end_time: \"2022-02-24T03:00:00\"\n - description: \"Stack time\"\n select: {station: \"*\"}\n start_time: \"2022-02-25T13:54:00\"\n end_time: \"2022-02-25T14:03:00\"\n spectra:\n - description: \"Quiet time\"\n select: {station: \"*\"}\n start_time: \"2022-02-23T21:00:00\"\n end_time: \"2022-02-24T03:00:00\"\n stack:\n - description: \"Stack, Jump South\"\n orientation_codes: [\"Z\"]\n offset_before.s: 0.3\n offset_after.s: 1\n times:\n - \"2022-02-25T13:57:00.66\"\n - \"2022-02-25T13:58:00.53\"\n - \"2022-02-25T13:59:00.2\"\n - description: \"Stack, Jump Est\"\n orientation_codes: [\"Z\"]\n offset_before.s: 0.3\n offset_after.s: 1\n times:\n - \"2022-02-25T14:00:00.4\"\n - \"2022-02-25T14:01:00.15\"\n - \"2022-02-25T14:02:00.18\"\n particle_motion:\n - description: \"Stack, Jump South\"\n orientation_code_x: \"2\"\n orientation_code_y: \"1\"\n offset_before.s: 0.00\n offset_after.s: 0.03\n offset_before_ts.s: 0.2\n offset_after_ts.s: 1\n times:\n - \"2022-02-25T13:57:00.66\"\n - \"2022-02-25T13:58:00.53\"\n - \"2022-02-25T13:59:00.2\"\n - description: \"Stack, Jump Est\"\n orientation_code_x: \"2\"\n orientation_code_y: \"1\"\n offset_before.s: 0.1\n offset_after.s: 0.2\n offset_before_ts.s: 0.3\n offset_after_ts.s: 1\n times:\n - \"2022-02-25T14:00:00.4\"\n - \"2022-02-25T14:01:00.15\"\n - \"2022-02-25T14:02:00.18\"\n```\n##### Output plots\n###### time_series\n![](https://github.com/WayneCrawford/lcheapo/raw/main/README_images/BB02-V1_3-tests_Entire_time_series_ts.png)\n![](https://github.com/WayneCrawford/lcheapo/raw/main/README_images/BB02-V1_3-tests_Quiet_time_ts.png)\n\n###### spectra\n![](https://github.com/WayneCrawford/lcheapo/raw/main/README_images/BB02-V1_3-tests_Quiet_time_spect.png)\n\n###### stack\n![](https://github.com/WayneCrawford/lcheapo/raw/main/README_images/BB02-V1_3-tests_Stack_Jump_South_stack.png)\n\n###### particle_motion\n![](https://github.com/WayneCrawford/lcheapo/raw/main/README_images/BB02-V1_3-tests_Stack_Jump_South_pm.png)\n\n\n#### 2: Comparing several stations\n\n```yaml\n---\ninput:\n start_time: null\n end_time: null\n datafiles:\n - \n name: \"20191107T14_SPOBS09_F02.raw.lch\"\n obs_type: \"SPOBS2\"\n station: \"09F2\"\n - \n name: \"20191107T14_SPOBS09_F02.raw.lch\"\n obs_type: \"SPOBS2\"\n station: \"09c1\"\n - \n name: \"20191107T14_SPOBS09_F02.raw.lch\"\n obs_type: \"SPOBS2\"\n station: \"09c2\"\n description: \"Simulation of multi-instrument test\"\noutput:\n show: True\n filebase: \"MAYOBS6\"\nplot_globals:\n stack:\n offset_before.s: 0.5\n offset_after.s: 1.5\n plot_span: False\n particle_motion:\n offset_before.s: 0.00\n offset_after.s: 0.03\n offset_before_ts.s: 0.1\n offset_after_ts.s: 0.2\n spectra:\n window_length.s: 100\nplots:\n time_series:\n -\n description: \"Entire time series\"\n select: {station: \"*\"}\n start_time: null\n end_time: null\n -\n description: \"Quiet period\"\n select: {channel: \"*3\"}\n start_time: null\n end_time: \"2019-11-07T13:57\"\n -\n description: \"Rubber hammer taps\"\n select: {station: \"*\"}\n start_time: \"2019-11-07T14:08\"\n end_time: \"2019-11-07T14:11:10\"\n spectra:\n -\n description: \"Entire time series\"\n select: {component: \"3\"}\n start_time: null\n end_time: null\n -\n description: \"Quiet period\"\n select: {channel: \"*3\"}\n start_time: null\n end_time: \"2019-11-07T13:57\"\n```\n",
"bugtrack_url": null,
"license": "",
"summary": "LCHEAPO data routines",
"version": "1.0.6.post2",
"split_keywords": [
"oceanography",
"marine",
"obs"
],
"urls": [
{
"comment_text": "",
"digests": {
"md5": "b57b80c23bb1bffa7bea08b611fb89b8",
"sha256": "c7073296ee223b02bd854007cb32e55ab9fbc7eaa8070940012143ff6afecb3b"
},
"downloads": -1,
"filename": "lcheapo-1.0.6.post2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "b57b80c23bb1bffa7bea08b611fb89b8",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 103527,
"upload_time": "2022-12-07T09:36:18",
"upload_time_iso_8601": "2022-12-07T09:36:18.509017Z",
"url": "https://files.pythonhosted.org/packages/58/98/e415b08086bfae536c16c7391b10d21581f51348147905287164b208c81d/lcheapo-1.0.6.post2-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"md5": "4f891cd81bb6b3972a70a4c23dc52b38",
"sha256": "0d136ec683d7e2c1a90ac57bf461cff3e346116edd0bb373ce620da5e129e35e"
},
"downloads": -1,
"filename": "lcheapo-1.0.6.post2.tar.gz",
"has_sig": false,
"md5_digest": "4f891cd81bb6b3972a70a4c23dc52b38",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 87665,
"upload_time": "2022-12-07T09:36:22",
"upload_time_iso_8601": "2022-12-07T09:36:22.429823Z",
"url": "https://files.pythonhosted.org/packages/d2/43/060b94ccb489daccb1ed0f611465ace606f2b4637cc66e0858391464ee11/lcheapo-1.0.6.post2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2022-12-07 09:36:22",
"github": true,
"gitlab": false,
"bitbucket": false,
"github_user": "WayneCrawford",
"github_project": "lcheapo",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "lcheapo"
}