starlingrt
[I]nteractive [R]etention [T]ime vi[S]ualization for gas chromatography
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
Repository
[I]nteractive [R]etention [T]ime vi[S]ualization for gas chromatography
Basic Info
Statistics
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
- Releases: 1
Metadata Files
README.md
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:
- What is a consensus value, or at least a natural range, of retention times for each compound identified?
- What compounds elute at similar points and are commonly confused with each other?
- Are there any analyses that identify a compound at a retention time far away from its consensus value (data cleaning)?
- 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
---------
inputdirectory : 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
- Website: https://nathan-mahynski.github.io/
- Repositories: 4
- Profile: https://github.com/mahynski
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
Rankings
Maintainers (1)
Dependencies
- actions/checkout v2 composite
- actions/setup-python v2 composite
- 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
- 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
- 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