SciQLop


NameSciQLop JSON
Version 0.7.1 PyPI version JSON
download
home_pageNone
SummaryAn ergonomic and efficient application to browse and label in situ plasma measurements from multi-mission satellite data.
upload_time2024-04-10 12:38:46
maintainerNone
docs_urlNone
authorNone
requires_python>=3.8
licenseNone
keywords machine-learning satellite plasma-physics nasa-data amda cdpp
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            <div style="text-align:center">
<img src="SciQLop/resources/icons/SciQLop.png" alt="sciqlop_logo" style="width: 200px;"/>
</div>
<br /><br />

# What Is SciQLop?

**SciQLop** (**SCI**entific **Q**t application for **L**earning from **O**bservations of **P**lasmas) is a powerful and
user-friendly tool designed for the visualization and analysis of in-situ space plasma data.

Using SciQLop will let you:

- have a super easy access to tens of thousands of products from the top main data archives in the world,
- explore multivariate time series effortlessly, with lightning-fast and transparent downloads as you scroll, zoom in,
  and zoom out,
- visualize custom products with simple python code executed on-the-fly,
- easily label time intervals and make or edit catalog of events graphically and rapidely,
- analyze your data in jupyter notebooks,

<div style="text-align:center">
<img src="pictures/sciqlop_screenshot.png" alt="sciqlop_logo" style="width: 80%;"/>
</div>

Heliophysicists now benefit from decades of space exploration through many spacecraft missions.
Exploring this massive amount of data to find events of interest, build catalogs, and conduct statistical multi-mission
data analysis
can be a daunting task if not having the right tool.

SciQLop aims at being this tool! A simple lightweight yet powerful graphical interface coupled to the limitless options
brought by the Jupyter Notebook integration,
that focuses on providing users with the easiest possible way to explore, label and analyze huge amounts of data.
SciQLop is also the right tool for teaching space physics and in situ spacecraft data handling to students effortlessly.

# Main Features

- **Interactive and responsive**: SciQLop can handle millions of data points without compromising on interactivity.
  Users can scroll, zoom, move, and export plots with ease.

  <img src="https://github.com/SciQLop/SciQLopMedia/blob/main/screencasts/SciQLop_MMS.gif" alt="SciQLop smooth navigation" style="width: 80%;"/>

- **User-friendly**: Accessing data in SciQLop is as simple as a drag and drop from the tens of thousands of products
  readily available.
  Custom user products defined in Python behave exactly the same way and bring infinite possibilities.

  <img src="https://github.com/SciQLop/SciQLopMedia/blob/main/screencasts/SciQLop_DragAndDrop.gif" alt="SciQLop drag and drop" style="width: 80%;"/>

- **Jupyter notebook integration**: SciQLop can be used as a backend for Jupyter notebooks, allowing users to create and
  manipulate plots from within their notebooks, define new products and much more.

  <img src="pictures/sciqlop_jupyterlab_plot_side_by_side.png" alt="SciQLop Jupyter integration" style="width: 80%;"/>

- **Catalogs**: SciQLop provides a catalog system that allows users to easily label events in their data or visualize
  existing catalogs of events.

  <img src="pictures/sciqlop_catalogs.png" alt="SciQLop catalogs" style="width: 80%;"/>

- **Evolving and growing list of examples**: SciQLop comes with a growing list of examples that demonstrate how to
  perform common tasks such as loading data, creating plots, and using the catalog system.

  <img src="pictures/sciqlop_welcome.png" alt="SciQLop examples" style="width: 80%;"/>

## Upcoming features

- **community-driven plugins repository**: SciQLop will soon have a plugin system that will allow users to extend the
  software's capabilities by installing community-driven plugins.
- **catalogs coediting**: SciQLop will allow users to coedit catalogs, making it easier to collaborate on event
  labeling and visualization, thereby also improving reproducibility of space physics studies.

# How to install SciQLop

**Warning**: Due to [this issue](https://github.com/grantjenks/python-diskcache/issues/295) you should not use any *
*Python**
version higher than **3.10.x**.

Since SciQLop depends on specific versions of PySide6 you should use a dedicated virtualenv for SciQLop to avoid any
conflict with any other Python package already installed in your system.

- Using releases from PyPi

```Bash
python -m pip install sciqlop
```

- Using the latest code from GitHub

```Bash
python -m pip install git+https://github.com/SciQLop/SciQLop
```

Once installed the sciqlop launcher should be in your PATH and you should be able to start SciQLop from your terminal.

```Bash
sciqlop
```

or

```Bash
python -m SciQLop.app
```

## Mac Users

The easiest way to install SciQLop now is to install [homebrew](https://brew.sh/) and then run:

```Bash
brew install python@3.10 node
/opt/homebrew/bin/jupyter-lab build
/opt/homebrew/bin/pip3.10 install sciqlop
```

## Linux Users

If you are using a Linux distribution, you may not need to install anything, you can just download the AppImage from the
[latest release](https://github.com/SciQLop/SciQLop/releases/latest) and run it (after making it executable).

# Experimental Python API Examples:

The following API examples are for early adopters and will likely change a bit in the future!

- Creating plot panels:

```python
from SciQLop.backend import TimeRange
from datetime import datetime

# all plots are stacked
p = main_window.new_plot_panel()
p.time_range = TimeRange(datetime(2015, 10, 22, 6, 4, 30).timestamp(), datetime(2015, 10, 22, 6, 6, 0).timestamp())
p.plot("speasy/cda/MMS/MMS1/FGM/MMS1_FGM_BRST_L2/mms1_fgm_b_gsm_brst_l2")
p.plot("speasy/cda/MMS/MMS1/DIS/MMS1_FPI_BRST_L2_DIS_MOMS/mms1_dis_bulkv_gse_brst")
p.plot("speasy/cda/MMS/MMS1/DIS/MMS1_FPI_BRST_L2_DIS_MOMS/mms1_dis_energyspectr_omni_brst")

# tha_peif_sc_pot and tha_peif_en_eflux will share the same plot 
p2 = main_window.new_plot_panel()
p2.plot("speasy/cda/THEMIS/THA/L2/THA_L2_ESA/tha_peif_en_eflux")
p2.plots[0].plot("speasy/cda/THEMIS/THA/L2/THA_L2_ESA/tha_peif_sc_pot")
p2.plot("speasy/cda/THEMIS/THA/L2/THA_L2_ESA/tha_peif_velocity_dsl")
```

> **_NOTE:_**  An easy way to get product paths, is to drag a product from Products Tree to any text zone or even your
> Python terminal.

- Custom products:

```python
from datetime import datetime

import numpy as np

from SciQLop.backend.pipelines_model.easy_provider import EasyVector, EasyScalar


# The following functions can do anything from loading data from a file to any complex computation, they should not 
# block the GUI since they will be run in background.

def my_vect(start: datetime, stop: datetime) -> (np.ndarray, np.ndarray):
    x = np.arange(start.timestamp(), stop.timestamp(), 0.1) * 1.
    y = np.empty((len(x), 3))
    y[:, 0] = np.cos(x / 100.) * 10.
    y[:, 1] = np.cos((x + 100) / 100.) * 10.
    y[:, 2] = np.cos((x + 200) / 100.) * 10.
    return x, y


def my_scalar(start: datetime, stop: datetime) -> (np.ndarray, np.ndarray):
    x = np.arange(start.timestamp(), stop.timestamp(), 0.1) * 1.
    y = np.empty((len(x), 1))
    y[:, 0] = np.cos(x / 100.) * 10.
    return x, y


my_vector_provider = EasyVector(path='some_root_folder/my_hello_world_vector', get_data_callback=my_vect,
                                components_names=["x", "y", "z"], metadata={})
my_scalar_provider = EasyScalar(path='some_other_root_folder/my_hello_world_scalar', get_data_callback=my_scalar,
                                component_name="x", metadata={})
```

More examples can be found in the [examples](SciQLop/examples) folder, they are also available from the welcome screen.

# How to contribute

Just fork the repository, make your changes and submit a pull request. We will be happy to review and merge your
changes.
Reports of bugs and feature requests are also welcome.

# Credits

The development of SciQLop is supported by the [CDPP](http://www.cdpp.eu/).<br />
We acknowledge support from the federation [Plas@Par](https://www.plasapar.sorbonne-universite.fr)


            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "SciQLop",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": "Alexis Jeandet <alexis.jeandet@member.fsf.org>",
    "keywords": "machine-learning, satellite, plasma-physics, nasa-data, amda, cdpp",
    "author": null,
    "author_email": "Alexis Jeandet <alexis.jeandet@member.fsf.org>",
    "download_url": "https://files.pythonhosted.org/packages/2e/3c/b2d8ceb439239a7847bef831f130f40ea1bd2c8d4bf45d616ee8bc025782/sciqlop-0.7.1.tar.gz",
    "platform": null,
    "description": "<div style=\"text-align:center\">\n<img src=\"SciQLop/resources/icons/SciQLop.png\" alt=\"sciqlop_logo\" style=\"width: 200px;\"/>\n</div>\n<br /><br />\n\n# What Is SciQLop?\n\n**SciQLop** (**SCI**entific **Q**t application for **L**earning from **O**bservations of **P**lasmas) is a powerful and\nuser-friendly tool designed for the visualization and analysis of in-situ space plasma data.\n\nUsing SciQLop will let you:\n\n- have a super easy access to tens of thousands of products from the top main data archives in the world,\n- explore multivariate time series effortlessly, with lightning-fast and transparent downloads as you scroll, zoom in,\n  and zoom out,\n- visualize custom products with simple python code executed on-the-fly,\n- easily label time intervals and make or edit catalog of events graphically and rapidely,\n- analyze your data in jupyter notebooks,\n\n<div style=\"text-align:center\">\n<img src=\"pictures/sciqlop_screenshot.png\" alt=\"sciqlop_logo\" style=\"width: 80%;\"/>\n</div>\n\nHeliophysicists now benefit from decades of space exploration through many spacecraft missions.\nExploring this massive amount of data to find events of interest, build catalogs, and conduct statistical multi-mission\ndata analysis\ncan be a daunting task if not having the right tool.\n\nSciQLop aims at being this tool! A simple lightweight yet powerful graphical interface coupled to the limitless options\nbrought by the Jupyter Notebook integration,\nthat focuses on providing users with the easiest possible way to explore, label and analyze huge amounts of data.\nSciQLop is also the right tool for teaching space physics and in situ spacecraft data handling to students effortlessly.\n\n# Main Features\n\n- **Interactive and responsive**: SciQLop can handle millions of data points without compromising on interactivity.\n  Users can scroll, zoom, move, and export plots with ease.\n\n  <img src=\"https://github.com/SciQLop/SciQLopMedia/blob/main/screencasts/SciQLop_MMS.gif\" alt=\"SciQLop smooth navigation\" style=\"width: 80%;\"/>\n\n- **User-friendly**: Accessing data in SciQLop is as simple as a drag and drop from the tens of thousands of products\n  readily available.\n  Custom user products defined in Python behave exactly the same way and bring infinite possibilities.\n\n  <img src=\"https://github.com/SciQLop/SciQLopMedia/blob/main/screencasts/SciQLop_DragAndDrop.gif\" alt=\"SciQLop drag and drop\" style=\"width: 80%;\"/>\n\n- **Jupyter notebook integration**: SciQLop can be used as a backend for Jupyter notebooks, allowing users to create and\n  manipulate plots from within their notebooks, define new products and much more.\n\n  <img src=\"pictures/sciqlop_jupyterlab_plot_side_by_side.png\" alt=\"SciQLop Jupyter integration\" style=\"width: 80%;\"/>\n\n- **Catalogs**: SciQLop provides a catalog system that allows users to easily label events in their data or visualize\n  existing catalogs of events.\n\n  <img src=\"pictures/sciqlop_catalogs.png\" alt=\"SciQLop catalogs\" style=\"width: 80%;\"/>\n\n- **Evolving and growing list of examples**: SciQLop comes with a growing list of examples that demonstrate how to\n  perform common tasks such as loading data, creating plots, and using the catalog system.\n\n  <img src=\"pictures/sciqlop_welcome.png\" alt=\"SciQLop examples\" style=\"width: 80%;\"/>\n\n## Upcoming features\n\n- **community-driven plugins repository**: SciQLop will soon have a plugin system that will allow users to extend the\n  software's capabilities by installing community-driven plugins.\n- **catalogs coediting**: SciQLop will allow users to coedit catalogs, making it easier to collaborate on event\n  labeling and visualization, thereby also improving reproducibility of space physics studies.\n\n# How to install SciQLop\n\n**Warning**: Due to [this issue](https://github.com/grantjenks/python-diskcache/issues/295) you should not use any *\n*Python**\nversion higher than **3.10.x**.\n\nSince SciQLop depends on specific versions of PySide6 you should use a dedicated virtualenv for SciQLop to avoid any\nconflict with any other Python package already installed in your system.\n\n- Using releases from PyPi\n\n```Bash\npython -m pip install sciqlop\n```\n\n- Using the latest code from GitHub\n\n```Bash\npython -m pip install git+https://github.com/SciQLop/SciQLop\n```\n\nOnce installed the sciqlop launcher should be in your PATH and you should be able to start SciQLop from your terminal.\n\n```Bash\nsciqlop\n```\n\nor\n\n```Bash\npython -m SciQLop.app\n```\n\n## Mac Users\n\nThe easiest way to install SciQLop now is to install [homebrew](https://brew.sh/) and then run:\n\n```Bash\nbrew install python@3.10 node\n/opt/homebrew/bin/jupyter-lab build\n/opt/homebrew/bin/pip3.10 install sciqlop\n```\n\n## Linux Users\n\nIf you are using a Linux distribution, you may not need to install anything, you can just download the AppImage from the\n[latest release](https://github.com/SciQLop/SciQLop/releases/latest) and run it (after making it executable).\n\n# Experimental Python API Examples:\n\nThe following API examples are for early adopters and will likely change a bit in the future!\n\n- Creating plot panels:\n\n```python\nfrom SciQLop.backend import TimeRange\nfrom datetime import datetime\n\n# all plots are stacked\np = main_window.new_plot_panel()\np.time_range = TimeRange(datetime(2015, 10, 22, 6, 4, 30).timestamp(), datetime(2015, 10, 22, 6, 6, 0).timestamp())\np.plot(\"speasy/cda/MMS/MMS1/FGM/MMS1_FGM_BRST_L2/mms1_fgm_b_gsm_brst_l2\")\np.plot(\"speasy/cda/MMS/MMS1/DIS/MMS1_FPI_BRST_L2_DIS_MOMS/mms1_dis_bulkv_gse_brst\")\np.plot(\"speasy/cda/MMS/MMS1/DIS/MMS1_FPI_BRST_L2_DIS_MOMS/mms1_dis_energyspectr_omni_brst\")\n\n# tha_peif_sc_pot and tha_peif_en_eflux will share the same plot \np2 = main_window.new_plot_panel()\np2.plot(\"speasy/cda/THEMIS/THA/L2/THA_L2_ESA/tha_peif_en_eflux\")\np2.plots[0].plot(\"speasy/cda/THEMIS/THA/L2/THA_L2_ESA/tha_peif_sc_pot\")\np2.plot(\"speasy/cda/THEMIS/THA/L2/THA_L2_ESA/tha_peif_velocity_dsl\")\n```\n\n> **_NOTE:_**  An easy way to get product paths, is to drag a product from Products Tree to any text zone or even your\n> Python terminal.\n\n- Custom products:\n\n```python\nfrom datetime import datetime\n\nimport numpy as np\n\nfrom SciQLop.backend.pipelines_model.easy_provider import EasyVector, EasyScalar\n\n\n# The following functions can do anything from loading data from a file to any complex computation, they should not \n# block the GUI since they will be run in background.\n\ndef my_vect(start: datetime, stop: datetime) -> (np.ndarray, np.ndarray):\n    x = np.arange(start.timestamp(), stop.timestamp(), 0.1) * 1.\n    y = np.empty((len(x), 3))\n    y[:, 0] = np.cos(x / 100.) * 10.\n    y[:, 1] = np.cos((x + 100) / 100.) * 10.\n    y[:, 2] = np.cos((x + 200) / 100.) * 10.\n    return x, y\n\n\ndef my_scalar(start: datetime, stop: datetime) -> (np.ndarray, np.ndarray):\n    x = np.arange(start.timestamp(), stop.timestamp(), 0.1) * 1.\n    y = np.empty((len(x), 1))\n    y[:, 0] = np.cos(x / 100.) * 10.\n    return x, y\n\n\nmy_vector_provider = EasyVector(path='some_root_folder/my_hello_world_vector', get_data_callback=my_vect,\n                                components_names=[\"x\", \"y\", \"z\"], metadata={})\nmy_scalar_provider = EasyScalar(path='some_other_root_folder/my_hello_world_scalar', get_data_callback=my_scalar,\n                                component_name=\"x\", metadata={})\n```\n\nMore examples can be found in the [examples](SciQLop/examples) folder, they are also available from the welcome screen.\n\n# How to contribute\n\nJust fork the repository, make your changes and submit a pull request. We will be happy to review and merge your\nchanges.\nReports of bugs and feature requests are also welcome.\n\n# Credits\n\nThe development of SciQLop is supported by the [CDPP](http://www.cdpp.eu/).<br />\nWe acknowledge support from the federation [Plas@Par](https://www.plasapar.sorbonne-universite.fr)\n\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "An ergonomic and efficient application to browse and label in situ plasma measurements from multi-mission satellite data.",
    "version": "0.7.1",
    "project_urls": {
        "bug_tracker": "https://github.com/SciQLop/SciQLop/issues",
        "homepage": "https://github.com/SciQLop/SciQLop"
    },
    "split_keywords": [
        "machine-learning",
        " satellite",
        " plasma-physics",
        " nasa-data",
        " amda",
        " cdpp"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "97c9446282492a09a3ee58645953e3c0be8da54636ec84e72ceb6291550a9a0d",
                "md5": "ee23e4038ee204bd4dfe7f75e5019d1b",
                "sha256": "18fd3c1f518f816c4068e2c529cdb52cefe3abd8ff3ba28494dc0b60311f2c46"
            },
            "downloads": -1,
            "filename": "sciqlop-0.7.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "ee23e4038ee204bd4dfe7f75e5019d1b",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 4340046,
            "upload_time": "2024-04-10T12:38:44",
            "upload_time_iso_8601": "2024-04-10T12:38:44.604465Z",
            "url": "https://files.pythonhosted.org/packages/97/c9/446282492a09a3ee58645953e3c0be8da54636ec84e72ceb6291550a9a0d/sciqlop-0.7.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "2e3cb2d8ceb439239a7847bef831f130f40ea1bd2c8d4bf45d616ee8bc025782",
                "md5": "d61c44a6b7e5f12baf8a1c1ab479edb9",
                "sha256": "e6d4c0578935961a364e72ce55b95184e9e003e96bc9f252b83d33ff50ef8dda"
            },
            "downloads": -1,
            "filename": "sciqlop-0.7.1.tar.gz",
            "has_sig": false,
            "md5_digest": "d61c44a6b7e5f12baf8a1c1ab479edb9",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 4259067,
            "upload_time": "2024-04-10T12:38:46",
            "upload_time_iso_8601": "2024-04-10T12:38:46.494415Z",
            "url": "https://files.pythonhosted.org/packages/2e/3c/b2d8ceb439239a7847bef831f130f40ea1bd2c8d4bf45d616ee8bc025782/sciqlop-0.7.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-04-10 12:38:46",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "SciQLop",
    "github_project": "SciQLop",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [],
    "lcname": "sciqlop"
}
        
Elapsed time: 0.23216s