starlingrt

[I]nteractive [R]etention [T]ime vi[S]ualization for gas chromatography

https://github.com/mahynski/starlingrt

Science Score: 67.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 2 DOI reference(s) in README
  • Academic publication links
    Links to: zenodo.org
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (17.6%) to scientific vocabulary
Last synced: 7 months ago · JSON representation ·

Repository

[I]nteractive [R]etention [T]ime vi[S]ualization for gas chromatography

Basic Info
  • Host: GitHub
  • Owner: mahynski
  • License: other
  • Language: Python
  • Default Branch: main
  • Homepage:
  • Size: 8.58 MB
Statistics
  • Stars: 2
  • Watchers: 1
  • Forks: 0
  • Open Issues: 0
  • Releases: 1
Created over 1 year ago · Last pushed over 1 year ago
Metadata Files
Readme License Citation Codeowners

README.md

Workflow Documentation Status codecov pre-commit DOI

STARLINGrt : [I]nteractive [R]etention [T]ime vi[S]ualization for gas chromatography

STARLINGrt is a tool for analyzing retention times from gas chromatogaphy mass spectrometry (GCMS). It can be used to determine a consensus value for compounds by visualizing a collection of results. Compound identification(s) made at a given retention time are assumed to be provided by a separate code which analyzes the mass spectrometry data collected at that time. Currently, STARLINGrt is configured to work with the outputs from MassHunter(TM) but is extensible by subclassing "data._SampleBase" (see samples.py for an example). The code produces an interactive HTML file using Bokeh which can be modified interactively, saved, exported and shared easily between different users. The name "starling" was selected as a reverse acronym of the tool's purpose.

Installation

We recommend creating a virtual environment or, e.g., a conda environment then installing startlingrt with pip:

~~~bash $ conda create -n starlingrt-env python=3.10 $ conda activate starlingrt-env $ pip install startlingrt ~~~

You can also install from this GitHub repo source:

~~~bash $ git clone git@github.com:mahynski/startlingrt.git $ cd startlingrt $ conda create -n starlingrt-env python=3.10 $ conda activate starlingrt-env $ pip install . $ python -m pytest # Optional unittests ~~~

To install this into a Jupyter kernel:

~~~bash $ conda activate starlingrt-env $ python -m ipykernel install --user --name starlingrt-kernel --display-name "starlingrt-kernel" ~~~

Use Cases

Imagine you have multiple GCMS output files which have been used to identify chemicals at different retention times, e.g., using some sort of library. In principle, these could correspond to analyses of a range of different mixtures; regardless, an individual component should elute at the same time regardless of what it is combined with. However, natural variations in:

  • the retention times can cause confusion when other compounds coelute or elute at very similar times,
  • the mass spectrometry peak location(s) at a given retention time can cause the identification routine to identify the same compound differently.

Given these uncertainties we would like to learn things like:

  1. What is a consensus value, or at least a natural range, of retention times for each compound identified?
  2. What compounds elute at similar points and are commonly confused with each other?
  3. Are there any analyses that identify a compound at a retention time far away from its consensus value (data cleaning)?
  4. What is a natural "gap" in retention times that can be used to "ideally" divide all compounds from their "neighbors"?

This visualization tool helps users answer these questions by exploring their data with interactive graphs. The output of this tool is an HTML file that acts as a self-contained summary of your data, how you cleaned / modified it, and can be easily shared between users.

Example

Here is a simple example (see docs/_static/example.py):

~~~python import os import starlingrt

from starlingrt import sample, data, functions, visualize

def loadmasshunter(inputdirectory): """ Parameters
--------- input
directory : str Directory to seach for raw folders are in.

Returns
-------
samples : list(sample.MassHunterSample)
    List of Samples collected from all directories in `input_directory`.
"""
...
return samples

topentries = starlingrt.data.Utilities.selecttopentries( starlingrt.data.Utilities.createentries( loadmasshunter( "path/to/data/" ) ) )

starlingrt.visualize.make( topentries=topentries, width=1200, threshold=starlingrt.functions.estimatethreshold(starlingrt.functions.getdataframe(topentries)[0]), outputfilename='summary.html', ) ~~~

Documentation

Documentation is hosted at https://starlingrt.readthedocs.io/ via readthedocs.

The logo was generated using Google Gemini (Imagen 3) with the prompt "Design a logo involving a starling and gas chromatography" on Nov. 9, 2024.

Contributors

This code was developed during a collaboration with:

License Information

  • See LICENSE.md for more information.
  • Any mention of commercial products is for information only; it does not imply recommendation or endorsement by NIST.

Owner

  • Name: Nathan A. Mahynski
  • Login: mahynski
  • Kind: user
  • Location: Gaithersburg, MD
  • Company: NIST

Chemical Engineer at NIST. Interests include: machine learning, nuclear metrology, food science, thermodynamics, tiling, and crystallography.

Citation (CITATION.cff)

cff-version: 1.2.0
message: "Please cite this repository as indicated below."
authors:
  - family-names: Mahynski
    given-names: Nathan
    orcid: https://orcid.org/0000-0002-0008-8749
title: "starlingrt"
version: v0.0.0
doi: 10.1234/zenodo.12345678
date-released: YYYY-MM-DD

GitHub Events

Total
  • Release event: 2
  • Watch event: 3
  • Delete event: 1
  • Public event: 1
  • Push event: 49
  • Create event: 2
Last Year
  • Release event: 2
  • Watch event: 3
  • Delete event: 1
  • Public event: 1
  • Push event: 49
  • Create event: 2

Packages

  • Total packages: 1
  • Total downloads:
    • pypi 7 last-month
  • Total dependent packages: 0
  • Total dependent repositories: 0
  • Total versions: 1
  • Total maintainers: 1
pypi.org: starlingrt

[I]nteractive [R]etention [T]ime vi[S]ualization for gas chromatography.

  • Documentation: https://starlingrt.readthedocs.io/
  • License: # NIST Software Licensing Statement NIST-developed software is provided by NIST as a public service. You may use, copy, and distribute copies of the software in any medium, provided that you keep intact this entire notice. You may improve, modify, and create derivative works of the software or any portion of the software, and you may copy and distribute such modifications or works. Modified works should carry a notice stating that you changed the software and should note the date and nature of any such change. Please explicitly acknowledge the National Institute of Standards and Technology as the source of the software. NIST-developed software is expressly provided "AS IS." NIST MAKES NO WARRANTY OF ANY KIND, EXPRESS, IMPLIED, IN FACT, OR ARISING BY OPERATION OF LAW, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, AND DATA ACCURACY. NIST NEITHER REPRESENTS NOR WARRANTS THAT THE OPERATION OF THE SOFTWARE WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT ANY DEFECTS WILL BE CORRECTED. NIST DOES NOT WARRANT OR MAKE ANY REPRESENTATIONS REGARDING THE USE OF THE SOFTWARE OR THE RESULTS THEREOF, INCLUDING BUT NOT LIMITED TO THE CORRECTNESS, ACCURACY, RELIABILITY, OR USEFULNESS OF THE SOFTWARE. You are solely responsible for determining the appropriateness of using and distributing the software and you assume all risks associated with its use, including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and the unavailability or interruption of operation. This software is not intended to be used in any situation where a failure could cause risk of injury or damage to property. The software developed by NIST employees is not subject to copyright protection within the United States.
  • Latest release: 0.1.0
    published over 1 year ago
  • Versions: 1
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 7 Last month
Rankings
Dependent packages count: 10.0%
Average: 33.2%
Dependent repos count: 56.4%
Maintainers (1)
Last synced: 7 months ago

Dependencies

.github/workflows/python-app.yml actions
  • actions/checkout v2 composite
  • actions/setup-python v2 composite
docs/requirements.in pypi
  • nbsphinx ==0.9.2
  • readthedocs-sphinx-search ==0.3.1
  • sphinx *
  • sphinx-book-theme ==1.0.1
  • sphinx_gallery ==0.14.0
  • sphinxcontrib-bibtex ==2.5.0
docs/requirements.txt pypi
  • accessible-pygments ==0.0.5
  • alabaster ==0.7.16
  • attrs ==24.2.0
  • babel ==2.16.0
  • beautifulsoup4 ==4.12.3
  • bleach ==6.2.0
  • certifi ==2024.8.30
  • charset-normalizer ==3.4.0
  • defusedxml ==0.7.1
  • docutils ==0.19
  • fastjsonschema ==2.20.0
  • idna ==3.10
  • imagesize ==1.4.1
  • jinja2 ==3.1.4
  • jsonschema ==4.23.0
  • jsonschema-specifications ==2024.10.1
  • jupyter-client ==8.6.3
  • jupyter-core ==5.7.2
  • jupyterlab-pygments ==0.3.0
  • latexcodec ==3.0.0
  • markupsafe ==3.0.2
  • mistune ==3.0.2
  • nbclient ==0.10.0
  • nbconvert ==7.16.4
  • nbformat ==5.10.4
  • nbsphinx ==0.9.2
  • packaging ==24.2
  • pandocfilters ==1.5.1
  • platformdirs ==4.3.6
  • pybtex ==0.24.0
  • pybtex-docutils ==1.0.3
  • pydata-sphinx-theme ==0.16.0
  • pygments ==2.18.0
  • python-dateutil ==2.9.0.post0
  • pyyaml ==6.0.2
  • pyzmq ==26.2.0
  • readthedocs-sphinx-search ==0.3.1
  • referencing ==0.35.1
  • requests ==2.32.3
  • rpds-py ==0.21.0
  • six ==1.16.0
  • snowballstemmer ==2.2.0
  • soupsieve ==2.6
  • sphinx ==6.2.1
  • sphinx-book-theme ==1.0.1
  • sphinx-gallery ==0.14.0
  • sphinxcontrib-applehelp ==2.0.0
  • sphinxcontrib-bibtex ==2.5.0
  • sphinxcontrib-devhelp ==2.0.0
  • sphinxcontrib-htmlhelp ==2.1.0
  • sphinxcontrib-jsmath ==1.0.1
  • sphinxcontrib-qthelp ==2.0.0
  • sphinxcontrib-serializinghtml ==2.0.0
  • tinycss2 ==1.4.0
  • tornado ==6.4.1
  • traitlets ==5.14.3
  • typing-extensions ==4.12.2
  • urllib3 ==2.2.3
  • webencodings ==0.5.1
pyproject.toml pypi
  • bokeh ==3.0.3
  • ipykernel *
  • matplotlib >=3.7.2
  • mypy *
  • numpy >= 1.23, <2.0.0
  • pandas ==2.2
  • pre-commit ==3.3.3
  • pre-commit *
  • pytest >=7.4.0
  • scikit-learn *
  • scipy *
  • sphinx *
  • xlrd ==2.0.1