magma-multigas


Namemagma-multigas JSON
Version 1.1.0 PyPI version JSON
download
home_pageNone
SummaryMultiGas package for internal use. A collaboration between CVGHM and USGS
upload_time2024-06-19 09:21:43
maintainerNone
docs_urlNone
authorNone
requires_python>=3.10
licenseNone
keywords gas volcano multigas usgs cvghm pvmbg
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # magma-multigas
Python package for multigas sensor.

## Installation

---

Make sure you have at least Python 3.10 installed. You can install the package using `pip`
```python
pip install magma-multigas
```

## How to use

---

First we need to import the package.
```python
from magma_multigas import MultiGas
```

Then we need to add all the required files. Please change the files location with your multi gas data. At the moment we are excluding the `span` data files. Will add later in future development.
```python
two_seconds = 'D:\\Projects\\magma-multigas\\input\\TANG_RTU_ChemData_Sec2.dat'
six_hours = 'D:\\Projects\\magma-multigas\\input\\TANG_RTU_Data_6Hr.dat'
one_minute = 'D:\\Projects\\magma-multigas\\input\\TANG_RTU_Wx_Min1.dat'
zero = 'D:\\Projects\\magma-multigas\\input\\TANG_RTU_Zero_Data.dat'
```

Initiate MultiGas module with the code below. This code will correct "NAN" data, and create a new file into your current poject directory. The default location is `<your project directory>/output/normalize` . 
```python
multigas = MultiGas(
    two_seconds=two_seconds,
    six_hours=six_hours,
    one_minute=one_minute,
    zero=zero
)
```

By initiating the module, we can check the output after run the code.
```markdown
💾 New file saved to D:\Projects\magma-multigas\output\normalize\TANG_RTU_ChemData_Sec2.dat
💾 New file saved to D:\Projects\magma-multigas\output\normalize\TANG_RTU_Data_6Hr.dat
💾 New file saved to D:\Projects\magma-multigas\output\normalize\TANG_RTU_Wx_Min1.dat
💾 New file saved to D:\Projects\magma-multigas\output\normalize\TANG_RTU_Zero_Data.dat
```

## Slicing and export for specific time

---

We can filter the data we have by using the code below. At this example we will select data between `start_date = 2024-05-17` and `end_date = 2024-06-18`.
```python
data_filtered = multigas.where_date_between(start_date='2024-05-17', end_date='2024-06-18').save(file_type='excel')
```

We can also save the filtering results. Only `excel`,`xls`,`xlsx` and `csv` are supported.
```python
data_filtered.save(file_type='excel')
```

All files would be saved into `<your project directory>/output/<file_type>`. You can also check the save location after run the `save()` command.
```markdown
✅ Data saved to: D:\Projects\magma-multigas\output\excel\two_seconds_2024-05-17_2024-06-18_TANG_RTU_ChemData_Sec2.xlsx
✅ Data saved to: D:\Projects\magma-multigas\output\excel\six_hours_2024-05-17_2024-06-18_TANG_RTU_Data_6Hr.xlsx
✅ Data saved to: D:\Projects\magma-multigas\output\excel\one_minute_2024-05-17_2024-06-18_TANG_RTU_Wx_Min1.xlsx
✅ Data saved to: D:\Projects\magma-multigas\output\excel\zero_2024-05-17_2024-06-18_TANG_RTU_Zero_Data.xlsx
```

## Selecting Data

---

As we know, we only have 4 type of data at the moment.
1. `two_seconds`
2. `six_hours`
3. `one_minute`
4. `zero`

To working on specific dataset, we can do it like this. To choose `two_secons` data:
```python
two_seconds_data = multigas.two_seconds
```
or:
```python
two_seconds_data = multigas.select('two_seconds').get()
```

You can change the `two_seconds` parameter with the available options above.

## Data Preview

---

After we select the data, we can do a quick view by typing this code:
```python
two_seconds_data.df
```
For anyone not familiar with `df` abbreviation, it is stand for _dataframe_. Just imagine it as an excel with header, but it is in python.

![df-review.png](images/df-review.png)

You can also see the columns name:
```python
two_seconds_data.columns
```
It will show all the columns name:
![columns.png](images/columns.png)

## Filtering
We can do fluent filtering data by using this code below. And it also support chaining filtering.  
```python
filtered_two_seconds = (two_seconds_data
                        .select_columns(column_names=['H2O','CO2','SO2','H2S','S_total'])
                        .where_date_between(start_date='2024-06-12', end_date='2024-06-18')
                        .where('Status_Flag', '==', 0)
                        .where_values_between(column_name='SO2', start_value=-0.129, end_value=-0.127)
                        .where_values_between(column_name='H2O', start_value=-260, end_value=-228)
                       )
```
We can read the above code as is:
> By using `two_seconds_data`, I want to select specific columns, such as: `H2O, CO2, SO2, S_Total` where the `Status_Flag` should have a `0` value. And the `SO2` columns must be between `-0.129` and `-0.127`. In addition I also want to filter `H2O` values between `-260` and `-228`.

To see the results, please run the `get()` method:
```python
filtered_two_seconds.get()
```

You can see the example of the results below. Here we only found 1 result based on our query filtering.
![filtering.png](images/filtering.png)

To check and count the results:
```python
filtered_two_seconds.count()
```

## Save Filtering Results

---

And we can save it, using `save_as()` method:
```python
filtered_two_seconds.save_as(file_type='excel')
```

You will get the information where your file is saved. By default, it should be in your `output` directory. Here is the example of the output:
```markdown
✅ Data saved to: D:\Projects\magma-multigas\output\excel\two_seconds_2024-06-16_2024-06-16_TANG_RTU_ChemData_Sec2.xlsx
```

## Plot

---

This package provide some basic functionality to plot some data. For the simplicity, we will use `six_hours` data as an example. We will do all the basic things above, from load, selecting, and filtering.

#### Selecting Six Hours
```python
six_hours_data = multigas.select('six_hours').get()
```

#### Date Filtering
```python
filtered_six_hours = six_hours_data.where_date_between(start_date='2024-05-17', end_date='2024-06-18')
```

#### Plot Initiating
Using `plot()` method to initiate
```python
plot_six_hours = filtered_six_hours.plot()
```

#### Plot Avg. CO2, H2S, and SO2
This package has some default plotting method. We will use `plot_co2_so2_h2s()` as an example:
```python
plot_six_hours.plot_co2_so2_h2s()
```

You can see the result here:
![plot_example_1.png](images/plot_example_1.png)

From the plot above we can see there ae some anomaly values (below 400). We can re-filtering once again to optimize the result. In this case we will select column `Avg_CO2_lowpass` which value greater than or equal to `250`
```python
filtered_six_hours = filtered_six_hours.where('Avg_CO2_lowpass', '>=', 250)
```

Then plot it:
```python
filtered_six_hours.plot().plot_co2_so2_h2s()
```

Result:
![plot_example_2.png](images/plot_example_2.png)

We can also plot as an individual by adding parameter `plot_as_individual=True`
```python
filtered_six_hours.plot().plot_co2_so2_h2s(
    plot_as_individual=True
)
```

And the result:
![plot_example_3.png](images/plot_example_3.png)

###  Plot Specific Column(s)
Select columns to plot:
```python
columns_to_plot = ['Avg_Wind_Speed', 'Avg_Wind_Direction', 'Avg_H2O', 'Avg_CO2_lowpass']
```

Then plot it:
```python
filtered_six_hours.plot(height=2).plot_columns(columns_to_plot)
```

Results:
![plot_example_4.png](images/plot_example_4.png)

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "magma-multigas",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.10",
    "maintainer_email": null,
    "keywords": "gas, volcano, multigas, usgs, cvghm, pvmbg",
    "author": null,
    "author_email": "Martanto <martanto@live.com>",
    "download_url": "https://files.pythonhosted.org/packages/43/af/f46e9f44cbe2217de6d6aa67b628d2b5920fbc979232bf751c454b3fcef3/magma_multigas-1.1.0.tar.gz",
    "platform": null,
    "description": "# magma-multigas\nPython package for multigas sensor.\n\n## Installation\n\n---\n\nMake sure you have at least Python 3.10 installed. You can install the package using `pip`\n```python\npip install magma-multigas\n```\n\n## How to use\n\n---\n\nFirst we need to import the package.\n```python\nfrom magma_multigas import MultiGas\n```\n\nThen we need to add all the required files. Please change the files location with your multi gas data. At the moment we are excluding the `span` data files. Will add later in future development.\n```python\ntwo_seconds = 'D:\\\\Projects\\\\magma-multigas\\\\input\\\\TANG_RTU_ChemData_Sec2.dat'\nsix_hours = 'D:\\\\Projects\\\\magma-multigas\\\\input\\\\TANG_RTU_Data_6Hr.dat'\none_minute = 'D:\\\\Projects\\\\magma-multigas\\\\input\\\\TANG_RTU_Wx_Min1.dat'\nzero = 'D:\\\\Projects\\\\magma-multigas\\\\input\\\\TANG_RTU_Zero_Data.dat'\n```\n\nInitiate MultiGas module with the code below. This code will correct \"NAN\" data, and create a new file into your current poject directory. The default location is `<your project directory>/output/normalize` . \n```python\nmultigas = MultiGas(\n    two_seconds=two_seconds,\n    six_hours=six_hours,\n    one_minute=one_minute,\n    zero=zero\n)\n```\n\nBy initiating the module, we can check the output after run the code.\n```markdown\n\ud83d\udcbe New file saved to D:\\Projects\\magma-multigas\\output\\normalize\\TANG_RTU_ChemData_Sec2.dat\n\ud83d\udcbe New file saved to D:\\Projects\\magma-multigas\\output\\normalize\\TANG_RTU_Data_6Hr.dat\n\ud83d\udcbe New file saved to D:\\Projects\\magma-multigas\\output\\normalize\\TANG_RTU_Wx_Min1.dat\n\ud83d\udcbe New file saved to D:\\Projects\\magma-multigas\\output\\normalize\\TANG_RTU_Zero_Data.dat\n```\n\n## Slicing and export for specific time\n\n---\n\nWe can filter the data we have by using the code below. At this example we will select data between `start_date = 2024-05-17` and `end_date = 2024-06-18`.\n```python\ndata_filtered = multigas.where_date_between(start_date='2024-05-17', end_date='2024-06-18').save(file_type='excel')\n```\n\nWe can also save the filtering results. Only `excel`,`xls`,`xlsx` and `csv` are supported.\n```python\ndata_filtered.save(file_type='excel')\n```\n\nAll files would be saved into `<your project directory>/output/<file_type>`. You can also check the save location after run the `save()` command.\n```markdown\n\u2705 Data saved to: D:\\Projects\\magma-multigas\\output\\excel\\two_seconds_2024-05-17_2024-06-18_TANG_RTU_ChemData_Sec2.xlsx\n\u2705 Data saved to: D:\\Projects\\magma-multigas\\output\\excel\\six_hours_2024-05-17_2024-06-18_TANG_RTU_Data_6Hr.xlsx\n\u2705 Data saved to: D:\\Projects\\magma-multigas\\output\\excel\\one_minute_2024-05-17_2024-06-18_TANG_RTU_Wx_Min1.xlsx\n\u2705 Data saved to: D:\\Projects\\magma-multigas\\output\\excel\\zero_2024-05-17_2024-06-18_TANG_RTU_Zero_Data.xlsx\n```\n\n## Selecting Data\n\n---\n\nAs we know, we only have 4 type of data at the moment.\n1. `two_seconds`\n2. `six_hours`\n3. `one_minute`\n4. `zero`\n\nTo working on specific dataset, we can do it like this. To choose `two_secons` data:\n```python\ntwo_seconds_data = multigas.two_seconds\n```\nor:\n```python\ntwo_seconds_data = multigas.select('two_seconds').get()\n```\n\nYou can change the `two_seconds` parameter with the available options above.\n\n## Data Preview\n\n---\n\nAfter we select the data, we can do a quick view by typing this code:\n```python\ntwo_seconds_data.df\n```\nFor anyone not familiar with `df` abbreviation, it is stand for _dataframe_. Just imagine it as an excel with header, but it is in python.\n\n![df-review.png](images/df-review.png)\n\nYou can also see the columns name:\n```python\ntwo_seconds_data.columns\n```\nIt will show all the columns name:\n![columns.png](images/columns.png)\n\n## Filtering\nWe can do fluent filtering data by using this code below. And it also support chaining filtering.  \n```python\nfiltered_two_seconds = (two_seconds_data\n                        .select_columns(column_names=['H2O','CO2','SO2','H2S','S_total'])\n                        .where_date_between(start_date='2024-06-12', end_date='2024-06-18')\n                        .where('Status_Flag', '==', 0)\n                        .where_values_between(column_name='SO2', start_value=-0.129, end_value=-0.127)\n                        .where_values_between(column_name='H2O', start_value=-260, end_value=-228)\n                       )\n```\nWe can read the above code as is:\n> By using `two_seconds_data`, I want to select specific columns, such as: `H2O, CO2, SO2, S_Total` where the `Status_Flag` should have a `0` value. And the `SO2` columns must be between `-0.129` and `-0.127`. In addition I also want to filter `H2O` values between `-260` and `-228`.\n\nTo see the results, please run the `get()` method:\n```python\nfiltered_two_seconds.get()\n```\n\nYou can see the example of the results below. Here we only found 1 result based on our query filtering.\n![filtering.png](images/filtering.png)\n\nTo check and count the results:\n```python\nfiltered_two_seconds.count()\n```\n\n## Save Filtering Results\n\n---\n\nAnd we can save it, using `save_as()` method:\n```python\nfiltered_two_seconds.save_as(file_type='excel')\n```\n\nYou will get the information where your file is saved. By default, it should be in your `output` directory. Here is the example of the output:\n```markdown\n\u2705 Data saved to: D:\\Projects\\magma-multigas\\output\\excel\\two_seconds_2024-06-16_2024-06-16_TANG_RTU_ChemData_Sec2.xlsx\n```\n\n## Plot\n\n---\n\nThis package provide some basic functionality to plot some data. For the simplicity, we will use `six_hours` data as an example. We will do all the basic things above, from load, selecting, and filtering.\n\n#### Selecting Six Hours\n```python\nsix_hours_data = multigas.select('six_hours').get()\n```\n\n#### Date Filtering\n```python\nfiltered_six_hours = six_hours_data.where_date_between(start_date='2024-05-17', end_date='2024-06-18')\n```\n\n#### Plot Initiating\nUsing `plot()` method to initiate\n```python\nplot_six_hours = filtered_six_hours.plot()\n```\n\n#### Plot Avg. CO2, H2S, and SO2\nThis package has some default plotting method. We will use `plot_co2_so2_h2s()` as an example:\n```python\nplot_six_hours.plot_co2_so2_h2s()\n```\n\nYou can see the result here:\n![plot_example_1.png](images/plot_example_1.png)\n\nFrom the plot above we can see there ae some anomaly values (below 400). We can re-filtering once again to optimize the result. In this case we will select column `Avg_CO2_lowpass` which value greater than or equal to `250`\n```python\nfiltered_six_hours = filtered_six_hours.where('Avg_CO2_lowpass', '>=', 250)\n```\n\nThen plot it:\n```python\nfiltered_six_hours.plot().plot_co2_so2_h2s()\n```\n\nResult:\n![plot_example_2.png](images/plot_example_2.png)\n\nWe can also plot as an individual by adding parameter `plot_as_individual=True`\n```python\nfiltered_six_hours.plot().plot_co2_so2_h2s(\n    plot_as_individual=True\n)\n```\n\nAnd the result:\n![plot_example_3.png](images/plot_example_3.png)\n\n###  Plot Specific Column(s)\nSelect columns to plot:\n```python\ncolumns_to_plot = ['Avg_Wind_Speed', 'Avg_Wind_Direction', 'Avg_H2O', 'Avg_CO2_lowpass']\n```\n\nThen plot it:\n```python\nfiltered_six_hours.plot(height=2).plot_columns(columns_to_plot)\n```\n\nResults:\n![plot_example_4.png](images/plot_example_4.png)\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "MultiGas package for internal use. A collaboration between CVGHM and USGS",
    "version": "1.1.0",
    "project_urls": {
        "Homepage": "https://github.com/martanto/magma-multigas",
        "Issues": "https://github.com/martanto/magma-multigas/issues"
    },
    "split_keywords": [
        "gas",
        " volcano",
        " multigas",
        " usgs",
        " cvghm",
        " pvmbg"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "be6d1dd7c4520d7bb5445b7f6c3ddee1e5939da7af818df20fcb74eba3931d9d",
                "md5": "0a0e6e7368a49f1a6cbe843376554df6",
                "sha256": "42ded0e119652a6fae73fc85b6085a23ded8e62fb30d909e2b483e178573e17b"
            },
            "downloads": -1,
            "filename": "magma_multigas-1.1.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "0a0e6e7368a49f1a6cbe843376554df6",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.10",
            "size": 27839,
            "upload_time": "2024-06-19T09:21:39",
            "upload_time_iso_8601": "2024-06-19T09:21:39.017831Z",
            "url": "https://files.pythonhosted.org/packages/be/6d/1dd7c4520d7bb5445b7f6c3ddee1e5939da7af818df20fcb74eba3931d9d/magma_multigas-1.1.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "43aff46e9f44cbe2217de6d6aa67b628d2b5920fbc979232bf751c454b3fcef3",
                "md5": "9a93fa37608a733c951e9bd04bb012b3",
                "sha256": "aadbe545da404f296853cf89fd5b2dd46ccc04add689a65269b851a9eb1e953f"
            },
            "downloads": -1,
            "filename": "magma_multigas-1.1.0.tar.gz",
            "has_sig": false,
            "md5_digest": "9a93fa37608a733c951e9bd04bb012b3",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.10",
            "size": 25583,
            "upload_time": "2024-06-19T09:21:43",
            "upload_time_iso_8601": "2024-06-19T09:21:43.070838Z",
            "url": "https://files.pythonhosted.org/packages/43/af/f46e9f44cbe2217de6d6aa67b628d2b5920fbc979232bf751c454b3fcef3/magma_multigas-1.1.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-06-19 09:21:43",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "martanto",
    "github_project": "magma-multigas",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "magma-multigas"
}
        
Elapsed time: 0.39447s