Skip to main content

An ergonomic and efficient application to browse and label in situ plasma measurements from multi-mission satellite data.

Project description

sciqlop_logo

sciqlop_logo

Overview

SciQLop (SCIentific Qt application for Learning from Observations of Plasmas) is a powerful and user-friendly tool designed for the visualization and analysis of in-situ space plasma data. The software has been developed to address the technical challenges that arise from the high time resolution required by modern plasma measurements. It is capable of plotting millions of data points without compromising on interactivity, ensuring that users can scroll, zoom, move, and export plots with ease.

One of the key features of SciQLop is its ability to abstract the manipulation of physics data, making it accessible to users with different levels of expertise. The software also provides contextual features such as coordinate transforms and physical quantity extraction from data.

Keeping SciQLop lightweight and intuitive has been a top priority during the software's development, making it both usable a nd competitive. By balancing advanced graphical features with a simple and streamlined GUI, SciQLop delivers an exceptional user experience that sets it apart from other software tools in the field.

If you are looking for a reliable and powerful tool for analyzing space plasma data, SciQLop is an excellent choice. With its intuitive interface and advanced features, it offers a seamless workflow that can save you time and effort. Download SciQLop today and experience the benefits for yourself!

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.

    SciQLop smooth navigation
  • User-friendly: SciQLop abstracts the manipulation of physics data, making it accessible to users with different levels of expertise.

    SciQLop drag and drop
  • Jupyter notebook integration: SciQLop can be used as a backend for Jupyter notebooks, allowing users to create and manipulate plots from within their notebooks.

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

    SciQLop catalogs
  • 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.

    SciQLop examples

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 soon allow users to coedit catalogs, making it easier to collaborate on event labeling and visualization.

How to install SciQLop

Warning: Due to this issue 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
python -m pip install sciqlop
  • Using the latest code from GitHub
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.

sciqlop

or

python -m SciQLop.app

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 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:
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:
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 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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sciqlop-0.5.4.tar.gz (3.9 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sciqlop-0.5.4-py3-none-any.whl (4.0 MB view details)

Uploaded Python 3

File details

Details for the file sciqlop-0.5.4.tar.gz.

File metadata

  • Download URL: sciqlop-0.5.4.tar.gz
  • Upload date:
  • Size: 3.9 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.8.18

File hashes

Hashes for sciqlop-0.5.4.tar.gz
Algorithm Hash digest
SHA256 ae94fc517d61537aebb990a30fd628a95c52f32fd76619adabb8cf72c7410c02
MD5 1ac8411f757d79f27b69389ff7ee0491
BLAKE2b-256 e001aed193f3676c35888f28b9d96bd6378c5caceb44111a356252d5c43bd46c

See more details on using hashes here.

File details

Details for the file sciqlop-0.5.4-py3-none-any.whl.

File metadata

  • Download URL: sciqlop-0.5.4-py3-none-any.whl
  • Upload date:
  • Size: 4.0 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.8.18

File hashes

Hashes for sciqlop-0.5.4-py3-none-any.whl
Algorithm Hash digest
SHA256 4d751cbfab462d0fbef1199418db42f1dce8ea88ed0f02ab6e543ccc1c4f64fc
MD5 49b68fd8ad28d38d796f4e1f650c7625
BLAKE2b-256 6972cfa435869b503f8868985244232a54080eb8c210b35ea69a1491e3e6f340

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page