|PyPI version| |PyPI pyversions| |Code style|
.. |PyPI version| image:: https://img.shields.io/pypi/v/pycollisiondb.svg
:target: https://pypi.python.org/pypi/pycollisondb
.. |PyPI pyversions| image:: https://img.shields.io/pypi/pyversions/pycollisiondb.svg
:target: https://pypi.org/project/pycollisiondb/
.. |Code style| image:: https://img.shields.io/badge/code%20style-black-000000.svg
:target: https://github.com/psf/black
.. _PYPI: https://pypi.org/project/pycollisiondb/
.. _COLLISIONDB: https://db-amdis.org/collisiondb/
.. _ALADDIN2: https://db-amdis.org/aladdin2/
.. _Documentation: https://db-amdis.org/collisiondb/submitting-data/
.. contents::
*****************************
Introduction to PyCollisionDB
*****************************
PyCollisionDB is a Python package for interacting with `CollisionDB`_ or `ALADDIN2`_, databases
of plasma collisional cross sections and rate coefficients.
Datasets in these collisional databases can be retrieved in a standardized way and compared, aggregated, and assessed using a set of predefined Python methods.
Installation
============
The ``PyCollisionDB`` package can be installed either from `PYPI`_ using pip
.. code-block:: bash
python3 -m pip install pycollisiondb
or from the source by running (one of the two) from the project source directory.
.. code-block:: bash
# either
python setup.py install
# or
python3 -m pip install .
PyCollision
===========
The ``PyCollision`` object represents the main instance of the ``PyCollisionDB`` package for interacting with collisional databases, and datasets may be compared, output in various formats, and manipulated using the methods object as described below:
.. code-block:: pycon
>>> from pycollisiondb.pycollisiondb import PyCollision
Dataset(s) Search
------------------
Collisional datasets can be retrieved using ``PyCollision`` class method ``get_datasets`` for a given query. The value of each query can be passed as a Python dictionary with valid metadata keys, and values can be specified either as a string or a list of comma-separated strings.
.. code-block:: pycon
>>> # Fetch datasets from the server over the API.
>>> query = {'reactants': ['W+61', 'H']}
>>> pycoll = PyCollision.get_datasets(query=query)
or datasets can be acessed from a locally-cached archive
.. code-block:: pycon
>>> # Specify the data directory for accessing the archive
>>> DATA_DIR = '/Users/tmp/results'
>>> # archive UUID
>>> archive_uuid = '026a7abd-5ed7-4e30-827d-f3f606f3fa98'
>>> pycoll = PyCollision.get_datasets(archive_uuid=archive_uuid, DATA_DIR=DATA_DIR)
Valid Query Keywords
********************
.. code-block:: pycon
>>> pycoll.VALID_QUERY_KEYWORDS
(ˈpkˈ,
ˈpksˈ,
ˈreaction_textˈ,
ˈreaction_textsˈ,
ˈreactant1ˈ,
ˈreactant2ˈ,
ˈproduct1ˈ,
ˈproduct2ˈ,
ˈprocess_typesˈ,
ˈmethodˈ,
ˈdata_typeˈ,
ˈreactantsˈ,
ˈproductsˈ,
ˈdoiˈ)
>>> # Example
>>> pycoll = PyCollision.get_datasets(query={'rxns': ['H']})
---------------------------------------------------------------------------
PyCollisionDBKeywordError Traceback (most recent call last)
...
PyCollisionDBKeywordError: Invalid query keyword in dict_keys(['rxns'])
Please see the `documentation`_ for currently available choices or formats (if any) for query key values.
.. code-block:: pycon
>>> # reaction_text is a string consisting of a single reaction,
>>> # while a comma-separated list of reactions can be searched with the reaction_texts key.
>>> # data_type can be specified as one of "cross section", "differential cross section" or "rate coefficient".
>>> query = {'reaction_text': "H+ + H 1s -> H+ + H+ + e-",
'data_type': 'sigma'}
>>> pycoll = PyCollision.get_datasets(query=query)
---------------------------------------------------------------------------
PyCollisionDBConnectionError Traceback (most recent call last)
...
PyCollisionDBConnectionError: Could not retrieve data: HTTP 400 (Bad Request) returned from https://db-amdis.org/collisiondb/api/
Accessing data from the datasets
************************************
.. code-block:: pycon
>>> # Proton-impact ionization of H.
>>> query = {'reactants': ['H+', 'H 1s'],
'process_types': ['HIN'],
'data_type': 'cross section'}
>>> pycoll = PyCollision.get_datasets(query=query)
>>> # Datasets retrieved from the server as a dict keyed by pk ID.
>>> pycoll.datasets
{102737: D102737: H+ + H 1s → H+ + H+ + e-,
107356: D107356: H+ + H 1s → H+ + H+ + e-,
103103: D103103: H 1s + H+ → H+ + H+ + e-,
103104: D103104: H 1s + H+ → H+ + H+ + e-}
.. code-block:: pycon
>>> # A list of datasets pks identified by each distinct reaction text.
>>> pycoll.pks
defaultdict(list,
{'H+ + H 1s → H+ + H+ + e-': [102737, 107356],
'H 1s + H+ → H+ + H+ + e-': [103103, 103104]})
>>> # Summarize datasets for each distint reaction text.
>>> pycoll.summarize_datasets()
H+ + H 1s → H+ + H+ + e-
========================================================================
qid: D102737
process_types: ['HIN']
data_type: cross section
refs: {'B32': {'doi': '10.1016/j.adt.2019.05.002'}}
qid: D107356
process_types: ['HIN']
data_type: cross section
refs: {'B45': {'doi': '10.1140/epjd/e2019-100380-x'}}
H 1s + H+ → H+ + H+ + e-
========================================================================
qid: D103103
process_types: ['HIN']
data_type: cross section
refs: {'B33': {'doi': '10.1088/0022-3700/14/14/009'}}
qid: D103104
process_types: ['HIN']
data_type: cross section
refs: {'B34': {'doi': '10.1088/0022-3700/20/11/016'}}
.. code-block:: pycon
>>> # Contents of the manifest.json file available in archive
>>> pycoll.manifest
{'timestamp': '2022-12-08 16:00:32.768200+00:00',
'uuid': '4d3bf0d4-c786-4712-b7a6-e5c04e67c89c',
'GET_string': '',
'ndatasets': 4,
'datasets': {'D102737': 'H+ + H 1s → H+ + H+ + e-',
'D107356': 'H+ + H 1s → H+ + H+ + e-',
'D103103': 'H 1s + H+ → H+ + H+ + e-',
'D103104': 'H 1s + H+ → H+ + H+ + e-'}}
.. code-block:: pycon
>>> # Resolve the references for all the datasets into proper, citeable format.
>>> # this accesses the django-pyref API through the Server.
>>> pycoll.REFS_API_URL
'https://db-amdis.org/collisiondb/refs/api/'
>>> pycoll.resolve_refs()
>>> # a dict with bibliographic data identified by pk ID
>>> pycoll.refs
{
'B32': {'authors': 'H. Agueny, J. Petter Hansen, A. Dubois, A. Makhoute, A. Taoutioui, N. Sisourat',
'title': 'Electron capture, ionization and excitation cross sections for keV collisions between fully stripped ions and atomic hydrogen in ground and excited states',
'journal': 'Atomic Data and Nuclear Data Tables',
'volume': '129-130',
'page_start': '101281',
'page_end': '',
'article_number': '101281',
'year': 2019,
'note': '',
'doi': '10.1016/j.adt.2019.05.002',
'bibcode': '2019ADNDT.12901281A',
'url': 'https://dx.doi.org/10.1016/j.adt.2019.05.002'},
'B33': {...},
'B34': {...},
'B45': {...}
}
More details
**************
.. code-block:: pycon
>>> # List of all datasets pks
>>> pycoll.all_pks
[102737, 107356, 103103, 103104]
>>> # Access to individual dataset via pk
>>> pycoll.datasets[102737].metadata
{'qid': 'D102737',
'reaction': 'H+ + H 1s → H+ + H+ + e-',
'process_types': {'HIN': 'Ionization'},
'data_type': 'cross section',
'refs': {'B32': {'doi': '10.1016/j.adt.2019.05.002'}},
'json_comment': {'comment': 'Ionization cross sections in H+ + H collisions using a semiclassical close-coupling approach. Cross sections represent the average values of the results obtained with two basis sets and the uncertainties provide the estimate of convergence of the cross sections'},
'json_data': {'method': 'CC',
'columns': [{'name': 'E', 'units': 'eV.u-1'},
{'name': 'sigma', 'units': 'cm2'}]}}
.. code-block:: pycon
>>> # Prints the numerical values of datasets along with units.
>>> pycoll.datasets[102737].print_values()
E / eV.u-1 sigma / cm2
1000.0 5.471e-19
4000.0 1.96e-18
9000.0 1.235e-17
16000.0 4.05e-17
25000.0 9.192e-17
36000.0 1.405e-16
49000.0 1.628e-16
64000.0 1.605e-16
81000.0 1.45e-16
100000.0 1.248e-16
.. code-block:: pycon
>>> # Metadata for all datasets can be accessed with a for loop.
>>> for ds in pycoll.datasets.values():
>>> print(ds.metadata)
Convert Units
---------------
The ``PyCollision`` method ``convert_units`` can be used to change the units of datasets.
.. code-block:: pycon
>>> pycoll.datasets[102737].x
array([ 1000., 4000., 9000., 16000., 25000., 36000., 49000.,
64000., 81000., 100000.])
>>> # The units of all datasets are changed,
>>> # Energy is changed from eV.u-1 (default) to keV.u-1 and sigma from cm2 (default) to a02 (atomic units).
>>> # This accesses the pyqn library.
>>> pycoll.convert_units({'E': 'keV.u-1', 'sigma': 'a02'})
>>> pycoll.datasets[102737].x
array([ 1., 4., 9., 16., 25., 36., 49., 64., 81., 100.])
.. code-block:: pycon
>>> # Change the units of a single dataset,
>>> # provide the column name followed by units as arguments.
>>> pycoll.datasets[102737].convert_units('sigma', 'm2')
Visualization tools
------------------------------
The ``PyCollision`` method ``plot_all_datasets`` can be used to create plots using the ``pyplot`` submodule of the ``Matplotlib`` library as the visualization utility.
.. code-block:: pycon
>>> import matplotlib.pyplot as plt
>>> %matplotlib notebook
>>> # Make a plot, indicating how the data should be labelled.
>>> fig, ax = plt.subplots()
>>> # The default legend consists of qid/pk and reaction labels,
>>> # it can be customized to include refs and process_types or either of these lables.
>>> pycoll.plot_all_datasets(ax, label=('reaction', 'qid', 'refs', 'process_types'))
>>> plt.legend()
.. image:: ./docs/source/pycollisiondb-plot-example.png
:height: 480px
:width: 640 px
:scale: 100 %
:alt: figure
:align: right
Connection to the ALADDIN2 API
------------------------------
.. code-block:: pycon
>>> #By default, PyCollisionDB interacts with the API to the CollisionDB server
>>> pycoll.API_URL
'https://db-amdis.org/collisiondb/api/'
>>> #API_URL can be directed to ALADDIN2 server by passing argument DB_URL
>>> DB_URL = 'https://db-amdis.org/aladdin2'
>>> pycoll = PyCollision.get_datasets(query=query,DB_URL=DB_URL)
>>> pycoll.API_URL
'https://db-amdis.org/aladdin2/api/'
Raw data
{
"_id": null,
"home_page": "https://github.com/xnx/pycollisiondb",
"name": "pycollisiondb",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": "",
"keywords": "chemistry,formula,species,state,reaction",
"author": "Christian Hill",
"author_email": "ch.hill@iaea.org",
"download_url": "https://files.pythonhosted.org/packages/fe/f3/20099542db76dd4a9adaec30088dea8e402c700e71ddf957f474434df7c4/pycollisiondb-0.1.5.tar.gz",
"platform": null,
"description": "|PyPI version| |PyPI pyversions| |Code style|\n\n.. |PyPI version| image:: https://img.shields.io/pypi/v/pycollisiondb.svg\n :target: https://pypi.python.org/pypi/pycollisondb\n.. |PyPI pyversions| image:: https://img.shields.io/pypi/pyversions/pycollisiondb.svg\n :target: https://pypi.org/project/pycollisiondb/\n.. |Code style| image:: https://img.shields.io/badge/code%20style-black-000000.svg\n :target: https://github.com/psf/black\n.. _PYPI: https://pypi.org/project/pycollisiondb/\n.. _COLLISIONDB: https://db-amdis.org/collisiondb/\n.. _ALADDIN2: https://db-amdis.org/aladdin2/\n.. _Documentation: https://db-amdis.org/collisiondb/submitting-data/\n\n.. contents::\n\n*****************************\nIntroduction to PyCollisionDB\n*****************************\n\nPyCollisionDB is a Python package for interacting with `CollisionDB`_ or `ALADDIN2`_, databases\nof plasma collisional cross sections and rate coefficients.\n\nDatasets in these collisional databases can be retrieved in a standardized way and compared, aggregated, and assessed using a set of predefined Python methods.\n\n\nInstallation\n============\n\nThe ``PyCollisionDB`` package can be installed either from `PYPI`_ using pip\n\n\n.. code-block:: bash\n\n python3 -m pip install pycollisiondb\n\nor from the source by running (one of the two) from the project source directory.\n\n.. code-block:: bash\n\n # either\n python setup.py install\n\n # or\n python3 -m pip install .\n\nPyCollision\n===========\n\nThe ``PyCollision`` object represents the main instance of the ``PyCollisionDB`` package for interacting with collisional databases, and datasets may be compared, output in various formats, and manipulated using the methods object as described below:\n\n.. code-block:: pycon\n\n >>> from pycollisiondb.pycollisiondb import PyCollision\n\nDataset(s) Search \n------------------\n\nCollisional datasets can be retrieved using ``PyCollision`` class method ``get_datasets`` for a given query. The value of each query can be passed as a Python dictionary with valid metadata keys, and values can be specified either as a string or a list of comma-separated strings.\n\n.. code-block:: pycon\n\n >>> # Fetch datasets from the server over the API.\n >>> query = {'reactants': ['W+61', 'H']}\n >>> pycoll = PyCollision.get_datasets(query=query)\n \nor datasets can be acessed from a locally-cached archive \n\n.. code-block:: pycon\n\n >>> # Specify the data directory for accessing the archive\n >>> DATA_DIR = '/Users/tmp/results'\n >>> # archive UUID\n >>> archive_uuid = '026a7abd-5ed7-4e30-827d-f3f606f3fa98'\n >>> pycoll = PyCollision.get_datasets(archive_uuid=archive_uuid, DATA_DIR=DATA_DIR)\n \n\nValid Query Keywords\n********************\n\n.. code-block:: pycon\n \n >>> pycoll.VALID_QUERY_KEYWORDS\n (\u02c8pk\u02c8,\n \u02c8pks\u02c8,\n \u02c8reaction_text\u02c8,\n \u02c8reaction_texts\u02c8,\n \u02c8reactant1\u02c8,\n \u02c8reactant2\u02c8,\n \u02c8product1\u02c8,\n \u02c8product2\u02c8,\n \u02c8process_types\u02c8,\n \u02c8method\u02c8,\n \u02c8data_type\u02c8,\n \u02c8reactants\u02c8,\n \u02c8products\u02c8,\n \u02c8doi\u02c8)\n \n >>> # Example\n >>> pycoll = PyCollision.get_datasets(query={'rxns': ['H']})\n ---------------------------------------------------------------------------\n PyCollisionDBKeywordError \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 Traceback (most recent call last)\n ...\n PyCollisionDBKeywordError: Invalid query keyword in dict_keys(['rxns'])\n \nPlease see the `documentation`_ for currently available choices or formats (if any) for query key values.\n\n.. code-block:: pycon\n\n >>> # reaction_text is a string consisting of a single reaction,\n >>> # while a comma-separated list of reactions can be searched with the reaction_texts key.\n >>> # data_type can be specified as one of \"cross section\", \"differential cross section\" or \"rate coefficient\".\n >>> query = {'reaction_text': \"H+ + H 1s -> H+ + H+ + e-\",\n 'data_type': 'sigma'}\n >>> pycoll = PyCollision.get_datasets(query=query)\n ---------------------------------------------------------------------------\n PyCollisionDBConnectionError Traceback (most recent call last)\n ...\n PyCollisionDBConnectionError: Could not retrieve data: HTTP 400 (Bad Request) returned from https://db-amdis.org/collisiondb/api/\n\n\nAccessing data from the datasets\n************************************\n\n.. code-block:: pycon\n\n >>> # Proton-impact ionization of H.\n >>> query = {'reactants': ['H+', 'H 1s'],\n 'process_types': ['HIN'],\n 'data_type': 'cross section'}\n >>> pycoll = PyCollision.get_datasets(query=query)\n \n >>> # Datasets retrieved from the server as a dict keyed by pk ID.\n >>> pycoll.datasets\n {102737: D102737: H+ + H 1s \u2192 H+ + H+ + e-,\n 107356: D107356: H+ + H 1s \u2192 H+ + H+ + e-,\n 103103: D103103: H 1s + H+ \u2192 H+ + H+ + e-,\n 103104: D103104: H 1s + H+ \u2192 H+ + H+ + e-} \n \n.. code-block:: pycon\n \n >>> # A list of datasets pks identified by each distinct reaction text.\n >>> pycoll.pks\n defaultdict(list,\n {'H+ + H 1s \u2192 H+ + H+ + e-': [102737, 107356],\n 'H 1s + H+ \u2192 H+ + H+ + e-': [103103, 103104]}) \n \n >>> # Summarize datasets for each distint reaction text.\n >>> pycoll.summarize_datasets()\n H+ + H 1s \u2192 H+ + H+ + e-\n ========================================================================\n qid: D102737\n process_types: ['HIN']\n data_type: cross section\n refs: {'B32': {'doi': '10.1016/j.adt.2019.05.002'}}\n qid: D107356\n process_types: ['HIN']\n data_type: cross section\n refs: {'B45': {'doi': '10.1140/epjd/e2019-100380-x'}} \n \n H 1s + H+ \u2192 H+ + H+ + e-\n ========================================================================\n qid: D103103\n process_types: ['HIN']\n data_type: cross section\n refs: {'B33': {'doi': '10.1088/0022-3700/14/14/009'}}\n qid: D103104\n process_types: ['HIN']\n data_type: cross section\n refs: {'B34': {'doi': '10.1088/0022-3700/20/11/016'}}\n\n.. code-block:: pycon\n\n >>> # Contents of the manifest.json file available in archive\n >>> pycoll.manifest \n {'timestamp': '2022-12-08 16:00:32.768200+00:00',\n 'uuid': '4d3bf0d4-c786-4712-b7a6-e5c04e67c89c',\n 'GET_string': '',\n 'ndatasets': 4,\n 'datasets': {'D102737': 'H+ + H 1s \u2192 H+ + H+ + e-',\n 'D107356': 'H+ + H 1s \u2192 H+ + H+ + e-',\n 'D103103': 'H 1s + H+ \u2192 H+ + H+ + e-',\n 'D103104': 'H 1s + H+ \u2192 H+ + H+ + e-'}} \n \n.. code-block:: pycon\n\n >>> # Resolve the references for all the datasets into proper, citeable format.\n >>> # this accesses the django-pyref API through the Server.\n >>> pycoll.REFS_API_URL \n 'https://db-amdis.org/collisiondb/refs/api/'\n \n >>> pycoll.resolve_refs()\n >>> # a dict with bibliographic data identified by pk ID\n >>> pycoll.refs\n {\n 'B32': {'authors': 'H. Agueny, J. Petter Hansen, A. Dubois, A. Makhoute, A. Taoutioui, N. Sisourat',\n 'title': 'Electron capture, ionization and excitation cross sections for keV collisions between fully stripped ions and atomic hydrogen in ground and excited states',\n 'journal': 'Atomic Data and Nuclear Data Tables',\n 'volume': '129-130',\n 'page_start': '101281',\n 'page_end': '',\n 'article_number': '101281',\n 'year': 2019,\n 'note': '',\n 'doi': '10.1016/j.adt.2019.05.002',\n 'bibcode': '2019ADNDT.12901281A',\n 'url': 'https://dx.doi.org/10.1016/j.adt.2019.05.002'},\n 'B33': {...},\n 'B34': {...},\n 'B45': {...}\n }\n \n \nMore details\n**************\n\n.. code-block:: pycon\n\n >>> # List of all datasets pks \n >>> pycoll.all_pks\n [102737, 107356, 103103, 103104]\n \n >>> # Access to individual dataset via pk\n >>> pycoll.datasets[102737].metadata\n {'qid': 'D102737',\n 'reaction': 'H+ + H 1s \u2192 H+ + H+ + e-',\n 'process_types': {'HIN': 'Ionization'},\n 'data_type': 'cross section',\n 'refs': {'B32': {'doi': '10.1016/j.adt.2019.05.002'}},\n 'json_comment': {'comment': 'Ionization cross sections in H+ + H collisions using a semiclassical close-coupling approach. Cross sections represent the average values of the results obtained with two basis sets and the uncertainties provide the estimate of convergence of the cross sections'},\n 'json_data': {'method': 'CC',\n 'columns': [{'name': 'E', 'units': 'eV.u-1'},\n {'name': 'sigma', 'units': 'cm2'}]}}\n \n.. code-block:: pycon\n\n >>> # Prints the numerical values of datasets along with units.\n >>> pycoll.datasets[102737].print_values()\n E / eV.u-1 sigma / cm2\n 1000.0 5.471e-19\n 4000.0 1.96e-18\n 9000.0 1.235e-17\n 16000.0 4.05e-17\n 25000.0 9.192e-17\n 36000.0 1.405e-16\n 49000.0 1.628e-16\n 64000.0 1.605e-16\n 81000.0 1.45e-16\n 100000.0 1.248e-16\n \n \n.. code-block:: pycon\n\n >>> # Metadata for all datasets can be accessed with a for loop.\n >>> for ds in pycoll.datasets.values():\n >>> print(ds.metadata)\n \n\nConvert Units\n---------------\nThe ``PyCollision`` method ``convert_units`` can be used to change the units of datasets.\n\n.. code-block:: pycon\n\n >>> pycoll.datasets[102737].x\n array([ 1000., 4000., 9000., 16000., 25000., 36000., 49000.,\n 64000., 81000., 100000.])\n >>> # The units of all datasets are changed,\n >>> # Energy is changed from eV.u-1 (default) to keV.u-1 and sigma from cm2 (default) to a02 (atomic units).\n >>> # This accesses the pyqn library.\n >>> pycoll.convert_units({'E': 'keV.u-1', 'sigma': 'a02'})\n >>> pycoll.datasets[102737].x\n array([ 1., 4., 9., 16., 25., 36., 49., 64., 81., 100.])\n \n.. code-block:: pycon\n\n >>> # Change the units of a single dataset,\n >>> # provide the column name followed by units as arguments.\n >>> pycoll.datasets[102737].convert_units('sigma', 'm2')\n \nVisualization tools\n------------------------------\nThe ``PyCollision`` method ``plot_all_datasets`` can be used to create plots using the ``pyplot`` submodule of the ``Matplotlib`` library as the visualization utility.\n\n.. code-block:: pycon \n\n >>> import matplotlib.pyplot as plt\n >>> %matplotlib notebook\n >>> # Make a plot, indicating how the data should be labelled.\n >>> fig, ax = plt.subplots()\n >>> # The default legend consists of qid/pk and reaction labels,\n >>> # it can be customized to include refs and process_types or either of these lables.\n >>> pycoll.plot_all_datasets(ax, label=('reaction', 'qid', 'refs', 'process_types'))\n >>> plt.legend()\n \n.. image:: ./docs/source/pycollisiondb-plot-example.png\n :height: 480px\n :width: 640 px\n :scale: 100 %\n :alt: figure\n :align: right \n \nConnection to the ALADDIN2 API\n------------------------------\n\n.. code-block:: pycon\n\n\n >>> #By default, PyCollisionDB interacts with the API to the CollisionDB server\n >>> pycoll.API_URL\n 'https://db-amdis.org/collisiondb/api/'\n\n >>> #API_URL can be directed to ALADDIN2 server by passing argument DB_URL \n >>> DB_URL = 'https://db-amdis.org/aladdin2'\n >>> pycoll = PyCollision.get_datasets(query=query,DB_URL=DB_URL)\n >>> pycoll.API_URL\n 'https://db-amdis.org/aladdin2/api/'\n \n\n",
"bugtrack_url": null,
"license": "",
"summary": "A package for interacting with CollisionDB",
"version": "0.1.5",
"project_urls": {
"Bug Reports": "https://github.com/xnx/pycollisiondb/issues",
"Homepage": "https://github.com/xnx/pycollisiondb"
},
"split_keywords": [
"chemistry",
"formula",
"species",
"state",
"reaction"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "cbd9a02eb266ab8f29227673cbf5f4b78396fa89616b81b3895343c22fcc46ec",
"md5": "5d4e884c4b11f4f8c4f0c6a8ed6c9bef",
"sha256": "2c6598394becfb5fede549d0e1ee0318eeae47ae9614068c8beaf29bcb869388"
},
"downloads": -1,
"filename": "pycollisiondb-0.1.5-py3-none-any.whl",
"has_sig": false,
"md5_digest": "5d4e884c4b11f4f8c4f0c6a8ed6c9bef",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 14790,
"upload_time": "2023-10-13T13:00:36",
"upload_time_iso_8601": "2023-10-13T13:00:36.879050Z",
"url": "https://files.pythonhosted.org/packages/cb/d9/a02eb266ab8f29227673cbf5f4b78396fa89616b81b3895343c22fcc46ec/pycollisiondb-0.1.5-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "fef320099542db76dd4a9adaec30088dea8e402c700e71ddf957f474434df7c4",
"md5": "76eef832e5104d56fe501317f7811146",
"sha256": "084452d6cd700e3f205c31769f9f6856dd5a7e148834d380ff2dae9fb2aa7f59"
},
"downloads": -1,
"filename": "pycollisiondb-0.1.5.tar.gz",
"has_sig": false,
"md5_digest": "76eef832e5104d56fe501317f7811146",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 19779,
"upload_time": "2023-10-13T13:00:40",
"upload_time_iso_8601": "2023-10-13T13:00:40.364409Z",
"url": "https://files.pythonhosted.org/packages/fe/f3/20099542db76dd4a9adaec30088dea8e402c700e71ddf957f474434df7c4/pycollisiondb-0.1.5.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-10-13 13:00:40",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "xnx",
"github_project": "pycollisiondb",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "pycollisiondb"
}