==========================
NDEx STRING Content Loader
==========================
.. image:: https://img.shields.io/pypi/v/ndexstringloader.svg
:target: https://pypi.python.org/pypi/ndexstringloader
.. image:: https://img.shields.io/travis/vrynkov/ndexstringloader.svg
:target: https://travis-ci.org/ndexcontent/ndexstringloader
.. image:: https://coveralls.io/repos/github/ndexcontent/ndexstringloader/badge.svg?branch=master
:target: https://coveralls.io/github/ndexcontent/ndexstringloader?branch=master
.. image:: https://readthedocs.org/projects/ndexstringloader/badge/?version=latest
:target: https://ndexstringloader.readthedocs.io/en/latest/?badge=latest
:alt: Documentation Status
Python application for loading STRING data into `NDEx <http://ndexbio.org>`_.
This tool downloads and unpacks the `STRING <https://string-db.org/>`_ files below
`9606.protein.links.full.v11.0.txt.gz <https://stringdb-static.org/download/protein.links.full.v11.0/9606.protein.links.full.v11.0.txt.gz>`_
`human.name_2_string.tsv.gz <https://string-db.org/mapping_files/STRING_display_names/human.name_2_string.tsv.gz>`_
`human.entrez_2_string.2018.tsv.gz <https://string-db.org/mapping_files/entrez/human.entrez_2_string.2018.tsv.gz>`__
`human.uniprot_2_string.2018.tsv.gz <https://string-db.org/mapping_files/uniprot/human.uniprot_2_string.2018.tsv.gz>`_
This loader generates one or more TSV files, converts them to CX, and uploads them to NDEx server.
The number of networks generated is dictated by the :code:`--cutoffscore` parameter which by
default generates two networks, one with all edges `0.0 cutoffscore` and one with edges with score `0.7`
and above
Duplicate edges (edges that have the same Source and Target nodes and the same value of :code:`combined_score`)
are included to the generated TSV and CX files only once.
Name of the newly generated network includes the value of :code:`cutoffscore` argument, for example,
:code:`STRING - Human Protein Links - High Confidence (Score >= 0.7)`.
In case user didn't specify :code:`--update UUID` argument, then the network with this name gets over-written in case if already exists on NDEx server;
otherwise, a new network is created.
Specifying :code:`--update UUID` command line argument will over-write network with this UUID if it is found.
If not, then user is asked if (s)he wants to create a new network. When network is updated, only edges and nodes are
changed; network attributes other then **version** are not modified.
.. note::
:code:`--stringversion` overrides default version of :code:`11.5` for all files with a version when downloaded
**1\)** Below is an example of a record
from `9606.protein.links.full.v11.0.txt.gz <https://stringdb-static.org/download/protein.links.full.v11.0/9606.protein.links.full.v11.0.txt.gz>`__
.. code-block::
9606.ENSP00000261819 9606.ENSP00000353549 0 0 0 0 0 102 90 987 260 900 0 754 622 999
To generate a STRING network, the loader reads rows from that file one by one and compares the value of the last
column :code:`combined_score` with the value :code:`cutoffscore` argument. The row is not added to the network generated in case
:code:`combined_score` is less than the commad-line argument :code:`cutoffscore`.
**2\)** If :code:`combined_score` is no than less :code:`cutoffscore`, the loader process two first columns
.. code-block::
column 1 - protein1 (9606.ENSP00000261819)
column 2 - protein2 (9606.ENSP00000353549)
When processing first column :code:`protein1`, the script
replaces :code:`Ensembl Id` with a :code:`display name`, for example :code:`9606.ENSP00000261819` becomes :code:`ANAPC5`. Mapping of
display names to :code:`Enseml Ids` is found in
`human.name_2_string.tsv.gz <https://string-db.org/mapping_files/STRING_display_names/human.name_2_string.tsv.gz>`__
uses `human.uniprot_2_string.2018.tsv.gz <https://string-db.org/mapping_files/uniprot/human.uniprot_2_string.2018.tsv.gz>`__
to create :code:`represents` value. For example, :code:`represents` for :code:`9606.ENSP00000261819` is :code:`uniprot:Q9UJX4`
uses `human.entrez_2_string.2018.tsv.gz <https://string-db.org/mapping_files/entrez/human.entrez_2_string.2018.tsv.gz>`__
to create list of aliases for the current protein. Thus, list of aliases for :code:`9606.ENSP00000261819` is
:code:`ncbigene:51433|ensembl:ENSP00000261819`
**3\)** The second column :code:`protein2` is processed the same way as :code:`column 1`.
**4\)** In the generated tsv file :code:`9606.protein.links.tsv`, :code:`protein1` and :code:`protein2` values from the original file are replaced with
.. code-block::
protein_display_name_1 represents_1 alias_1 protein_display_name_2 represents_2 alias_2
So, the original
.. code-block::
9606.ENSP00000261819 9606.ENSP00000353549 0 0 0 0 0 102 90 987 260 900 0 754 622 999
becomes
.. code-block::
ANAPC5 uniprot:Q9UJX4 ncbigene:51433|ensembl:ENSP00000261819 CDC16 uniprot:Q13042 ncbigene:8881|ensembl:ENSP00000353549 0 0 0 0 0 102 90 987 260 900 0 754 622 999
**5\)** The generated tsv file :code:`9606.protein.links.tsv` is then transformed to CX :code:`9606.protein.links.cx`.
The default style defined in :code:`style.cx` distributed with this loader is applied to the
generated network in case neither :code:`--style` nor :code:`--template` is specified.
User can specify style template file with either :code:`--style` argument or
style template network UUID :code:`--template UUID_of_style_template_network`.
Specifying both :code:`--template` and :code:`--style` is not allowed.
**6\)** :code:`9606.protein.links.cx` is then uploaded to NDEx server either replacing
an existing network (in case :code:`--update UUID` is specified),
or creating a new network.
Dependencies
------------
* ndex2
* ndexutil
* networkx
* scipy
* requests
* py4cytoscape
* pandas
Compatibility
-------------
* Python 3.6+
Installation
------------
.. code-block::
git clone https://github.com/ndexcontent/ndexstringloader
cd ndexstringloader
make dist
pip install dist/ndexloadstring*whl
Run **make** command with no arguments to see other build/deploy options including creation of Docker image
.. code-block::
make
Output:
.. code-block::
clean remove all build, test, coverage and Python artifacts
clean-build remove build artifacts
clean-pyc remove Python file artifacts
clean-test remove test and coverage artifacts
lint check style with flake8
test run tests quickly with the default Python
test-all run tests on every Python version with tox
coverage check code coverage quickly with the default Python
docs generate Sphinx HTML documentation, including API docs
servedocs compile the docs watching for changes
testrelease package and upload a TEST release
release package and upload a release
dist builds source and wheel package
install install the package to the active Python's site-packages
dockerbuild build docker image and store in local repository
dockerpush push image to dockerhub
Configuration
-------------
The **ndexloadstring.py** requires a configuration file to be created.
The default path for this configuration is :code:`~/.ndexutils.conf` but can be overridden with
:code:`--conf` flag.
**Configuration file**
Networks listed in **[network_ids]** section need to be visible to the **user**
.. code-block::
[ndexstringloader]
user = joe123
password = somepassword123
server = dev.ndexbio.org
Needed files
------------
Load plan is required for running this script. **string_plan.json** found at **ndexstringloader/ndexstringloader** can be used for this purpose.
Usage
-----
For information invoke :code:`ndexloadstring.py -h`
**Example usage**
Here is how this command can be run for **dev** and **prod** targets:
.. code-block::
ndexloadstring.py --profile dev tmpdir/
ndexloadstring.py --profile prod tmpdir/ --cutoffscore 0.99 0.95
Credits
-------
This package was created with Cookiecutter_ and the `audreyr/cookiecutter-pypackage`_ project template.
.. _Cookiecutter: https://github.com/audreyr/cookiecutter
.. _`audreyr/cookiecutter-pypackage`: https://github.com/audreyr/cookiecutter-pypackage
=======
History
=======
1.0.3 (2023-09-20)
-------------------
* Updated URL paths to data files because they moved on STRING server
* Set default STRING version to "12.0"
* Version of STRING data used is now appended to the network name.
* Updated default network description and default style template file
1.0.2 (2022-06-29)
-------------------
* Fixed bug where ``--stringversion`` was being ignored when
downloading data files
* Set default version to ``11.5``
* Fixed bug where ``version`` network attribute was not being updated
with value of ``--stringversion``
* Changed URL to `human.entrez_2_string.2018.tsv.gz` cause it
moved on STRING server
* ``--cutoffscore`` parameter can now take multiple values and a network
for each value will be generated and uploaded to NDEx. The default
is set to generate a network with all edges (0.0 --cutoffscore) and a
network with edges 0.7 and above
1.0.0 (2020-11-11)
------------------
* New default behavior: **force-directed-cl** layout is now applied on
networks via py4cytoscape library and a running instance of Cytoscape.
Alternate Cytoscape layouts and the networkx "spring" layout can be
run by setting appropriate value via the new **--layout** flag
0.3.0 (2020-10-28)
------------------
* Added ``--skipupload`` that lets caller skip upload of network to NDEx
* Spring layout applied by default for all networks that have less then 2,000,000
edges. This can be overridden with new flag ``--layoutedgecutoff``
0.2.4 (2019-12-01)
------------------
* Fixed defect UD-462 Verify new network attributes are correctly set in ndexstringloader (https://ndexbio.atlassian.net/browse/UD-462).
0.2.3 (2019-09-13)
------------------
* If user loads the entire STRING network (i.e., runs the script with --cutoffscore 0), the name of the resulting netwpork should be "STRING - Human Protein Links", not "STRING - Human Protein Links - High Confidence".
0.2.2 (2019-09-12)
------------------
* Added new featured specified by UD-577 Quick improvement for new String loader (added optional --update argument that allows to specify the UUID of a target network to update; added optional --template argument that allows to specify the UUID of a target network to use as style template, the update operation now only changes nodes and edges, but leaves network properties untouched).
0.2.1 (2019-08-23)
------------------
* Improved README file.
* Added new JUnit tests (JUnit test coverage is 87%).
0.2.0 (2019-07-26)
------------------
* Removed duplicate edges. Every pair of connected nodes in STRING networks had the same edge duplicated (one edge going from A to B, and another going from B to A). Since edges in STRING are not directed, we can safely remove half of them.
* Added new arguments to command line:
optional --cutoffscore (default is 0.7) - used to filter on combined_score column. To include edges with combined_score of 800 or higher, --cutoffscore 0.8 should be specified
required --datadir specifies a working directory where STRING files will be downloaded to and processed style.cx file that contains style is supplied with the STRING loader and used by default. It can be overwritten with --style argument.
0.1.0 (2019-03-13)
------------------
* First release on PyPI.
Raw data
{
"_id": null,
"home_page": "https://github.com/ndexcontent/ndexstringloader",
"name": "ndexstringloader",
"maintainer": "",
"docs_url": null,
"requires_python": "",
"maintainer_email": "",
"keywords": "ndexstringloader",
"author": "Vladimir Rynkov",
"author_email": "vrynkov@ucsd.edu",
"download_url": "https://files.pythonhosted.org/packages/4f/bf/cf732b76f253a8f5493504c8db980285899bfe33f168a156d7079349f0c6/ndexstringloader-1.0.3.tar.gz",
"platform": null,
"description": "==========================\nNDEx STRING Content Loader\n==========================\n\n\n.. image:: https://img.shields.io/pypi/v/ndexstringloader.svg\n :target: https://pypi.python.org/pypi/ndexstringloader\n\n.. image:: https://img.shields.io/travis/vrynkov/ndexstringloader.svg\n :target: https://travis-ci.org/ndexcontent/ndexstringloader\n\n.. image:: https://coveralls.io/repos/github/ndexcontent/ndexstringloader/badge.svg?branch=master\n :target: https://coveralls.io/github/ndexcontent/ndexstringloader?branch=master\n\n.. image:: https://readthedocs.org/projects/ndexstringloader/badge/?version=latest\n :target: https://ndexstringloader.readthedocs.io/en/latest/?badge=latest\n :alt: Documentation Status\n\n\nPython application for loading STRING data into `NDEx <http://ndexbio.org>`_.\n\nThis tool downloads and unpacks the `STRING <https://string-db.org/>`_ files below\n\n `9606.protein.links.full.v11.0.txt.gz <https://stringdb-static.org/download/protein.links.full.v11.0/9606.protein.links.full.v11.0.txt.gz>`_\n\n `human.name_2_string.tsv.gz <https://string-db.org/mapping_files/STRING_display_names/human.name_2_string.tsv.gz>`_\n\n `human.entrez_2_string.2018.tsv.gz <https://string-db.org/mapping_files/entrez/human.entrez_2_string.2018.tsv.gz>`__\n\n `human.uniprot_2_string.2018.tsv.gz <https://string-db.org/mapping_files/uniprot/human.uniprot_2_string.2018.tsv.gz>`_\n\nThis loader generates one or more TSV files, converts them to CX, and uploads them to NDEx server.\nThe number of networks generated is dictated by the :code:`--cutoffscore` parameter which by\ndefault generates two networks, one with all edges `0.0 cutoffscore` and one with edges with score `0.7`\nand above\n\nDuplicate edges (edges that have the same Source and Target nodes and the same value of :code:`combined_score`)\nare included to the generated TSV and CX files only once.\n\nName of the newly generated network includes the value of :code:`cutoffscore` argument, for example,\n:code:`STRING - Human Protein Links - High Confidence (Score >= 0.7)`.\n\nIn case user didn't specify :code:`--update UUID` argument, then the network with this name gets over-written in case if already exists on NDEx server;\notherwise, a new network is created.\n\nSpecifying :code:`--update UUID` command line argument will over-write network with this UUID if it is found.\nIf not, then user is asked if (s)he wants to create a new network. When network is updated, only edges and nodes are\nchanged; network attributes other then **version** are not modified.\n\n\n.. note::\n\n :code:`--stringversion` overrides default version of :code:`11.5` for all files with a version when downloaded\n\n**1\\)** Below is an example of a record\nfrom `9606.protein.links.full.v11.0.txt.gz <https://stringdb-static.org/download/protein.links.full.v11.0/9606.protein.links.full.v11.0.txt.gz>`__\n\n.. code-block::\n\n 9606.ENSP00000261819 9606.ENSP00000353549 0 0 0 0 0 102 90 987 260 900 0 754 622 999\n\n\nTo generate a STRING network, the loader reads rows from that file one by one and compares the value of the last\ncolumn :code:`combined_score` with the value :code:`cutoffscore` argument. The row is not added to the network generated in case\n:code:`combined_score` is less than the commad-line argument :code:`cutoffscore`.\n\n\n**2\\)** If :code:`combined_score` is no than less :code:`cutoffscore`, the loader process two first columns\n\n.. code-block::\n\n column 1 - protein1 (9606.ENSP00000261819)\n column 2 - protein2 (9606.ENSP00000353549)\n\nWhen processing first column :code:`protein1`, the script\n\nreplaces :code:`Ensembl Id` with a :code:`display name`, for example :code:`9606.ENSP00000261819` becomes :code:`ANAPC5`. Mapping of\ndisplay names to :code:`Enseml Ids` is found in\n`human.name_2_string.tsv.gz <https://string-db.org/mapping_files/STRING_display_names/human.name_2_string.tsv.gz>`__\n\nuses `human.uniprot_2_string.2018.tsv.gz <https://string-db.org/mapping_files/uniprot/human.uniprot_2_string.2018.tsv.gz>`__\nto create :code:`represents` value. For example, :code:`represents` for :code:`9606.ENSP00000261819` is :code:`uniprot:Q9UJX4`\n\nuses `human.entrez_2_string.2018.tsv.gz <https://string-db.org/mapping_files/entrez/human.entrez_2_string.2018.tsv.gz>`__\nto create list of aliases for the current protein. Thus, list of aliases for :code:`9606.ENSP00000261819` is\n:code:`ncbigene:51433|ensembl:ENSP00000261819`\n\n**3\\)** The second column :code:`protein2` is processed the same way as :code:`column 1`.\n\n**4\\)** In the generated tsv file :code:`9606.protein.links.tsv`, :code:`protein1` and :code:`protein2` values from the original file are replaced with\n\n.. code-block::\n\n protein_display_name_1 represents_1 alias_1 protein_display_name_2 represents_2 alias_2\n\nSo, the original\n\n.. code-block::\n\n 9606.ENSP00000261819 9606.ENSP00000353549 0 0 0 0 0 102 90 987 260 900 0 754 622 999\n\nbecomes\n\n.. code-block::\n\n ANAPC5 uniprot:Q9UJX4 ncbigene:51433|ensembl:ENSP00000261819 CDC16 uniprot:Q13042 ncbigene:8881|ensembl:ENSP00000353549 0 0 0 0 0 102 90 987 260 900 0 754 622 999\n\n\n**5\\)** The generated tsv file :code:`9606.protein.links.tsv` is then transformed to CX :code:`9606.protein.links.cx`.\nThe default style defined in :code:`style.cx` distributed with this loader is applied to the\ngenerated network in case neither :code:`--style` nor :code:`--template` is specified.\nUser can specify style template file with either :code:`--style` argument or\nstyle template network UUID :code:`--template UUID_of_style_template_network`.\nSpecifying both :code:`--template` and :code:`--style` is not allowed.\n\n**6\\)** :code:`9606.protein.links.cx` is then uploaded to NDEx server either replacing\nan existing network (in case :code:`--update UUID` is specified),\nor creating a new network.\n\n\nDependencies\n------------\n\n* ndex2\n* ndexutil\n* networkx\n* scipy\n* requests\n* py4cytoscape\n* pandas\n\n\nCompatibility\n-------------\n\n* Python 3.6+\n\nInstallation\n------------\n\n.. code-block::\n\n git clone https://github.com/ndexcontent/ndexstringloader\n cd ndexstringloader\n make dist\n pip install dist/ndexloadstring*whl\n\n\nRun **make** command with no arguments to see other build/deploy options including creation of Docker image\n\n.. code-block::\n\n make\n\nOutput:\n\n.. code-block::\n\n clean remove all build, test, coverage and Python artifacts\n clean-build remove build artifacts\n clean-pyc remove Python file artifacts\n clean-test remove test and coverage artifacts\n lint check style with flake8\n test run tests quickly with the default Python\n test-all run tests on every Python version with tox\n coverage check code coverage quickly with the default Python\n docs generate Sphinx HTML documentation, including API docs\n servedocs compile the docs watching for changes\n testrelease package and upload a TEST release\n release package and upload a release\n dist builds source and wheel package\n install install the package to the active Python's site-packages\n dockerbuild build docker image and store in local repository\n dockerpush push image to dockerhub\n\n\nConfiguration\n-------------\n\nThe **ndexloadstring.py** requires a configuration file to be created.\nThe default path for this configuration is :code:`~/.ndexutils.conf` but can be overridden with\n:code:`--conf` flag.\n\n**Configuration file**\n\nNetworks listed in **[network_ids]** section need to be visible to the **user**\n\n.. code-block::\n\n [ndexstringloader]\n user = joe123\n password = somepassword123\n server = dev.ndexbio.org\n\n\nNeeded files\n------------\n\nLoad plan is required for running this script. **string_plan.json** found at **ndexstringloader/ndexstringloader** can be used for this purpose.\n\n\nUsage\n-----\n\nFor information invoke :code:`ndexloadstring.py -h`\n\n**Example usage**\n\nHere is how this command can be run for **dev** and **prod** targets:\n\n.. code-block::\n\n ndexloadstring.py --profile dev tmpdir/\n\n ndexloadstring.py --profile prod tmpdir/ --cutoffscore 0.99 0.95\n\n\nCredits\n-------\n\nThis package was created with Cookiecutter_ and the `audreyr/cookiecutter-pypackage`_ project template.\n\n.. _Cookiecutter: https://github.com/audreyr/cookiecutter\n.. _`audreyr/cookiecutter-pypackage`: https://github.com/audreyr/cookiecutter-pypackage\n\n\n=======\nHistory\n=======\n\n1.0.3 (2023-09-20)\n-------------------\n\n* Updated URL paths to data files because they moved on STRING server\n\n* Set default STRING version to \"12.0\"\n\n* Version of STRING data used is now appended to the network name.\n\n* Updated default network description and default style template file\n\n1.0.2 (2022-06-29)\n-------------------\n\n* Fixed bug where ``--stringversion`` was being ignored when\n downloading data files\n\n* Set default version to ``11.5``\n\n* Fixed bug where ``version`` network attribute was not being updated\n with value of ``--stringversion``\n\n* Changed URL to `human.entrez_2_string.2018.tsv.gz` cause it\n moved on STRING server\n\n* ``--cutoffscore`` parameter can now take multiple values and a network\n for each value will be generated and uploaded to NDEx. The default\n is set to generate a network with all edges (0.0 --cutoffscore) and a\n network with edges 0.7 and above\n\n1.0.0 (2020-11-11)\n------------------\n\n* New default behavior: **force-directed-cl** layout is now applied on\n networks via py4cytoscape library and a running instance of Cytoscape.\n Alternate Cytoscape layouts and the networkx \"spring\" layout can be\n run by setting appropriate value via the new **--layout** flag\n\n0.3.0 (2020-10-28)\n------------------\n\n* Added ``--skipupload`` that lets caller skip upload of network to NDEx\n\n* Spring layout applied by default for all networks that have less then 2,000,000\n edges. This can be overridden with new flag ``--layoutedgecutoff``\n\n0.2.4 (2019-12-01)\n------------------\n* Fixed defect UD-462 Verify new network attributes are correctly set in ndexstringloader (https://ndexbio.atlassian.net/browse/UD-462).\n\n0.2.3 (2019-09-13)\n------------------\n* If user loads the entire STRING network (i.e., runs the script with --cutoffscore 0), the name of the resulting netwpork should be \"STRING - Human Protein Links\", not \"STRING - Human Protein Links - High Confidence\".\n\n0.2.2 (2019-09-12)\n------------------\n* Added new featured specified by UD-577 Quick improvement for new String loader (added optional --update argument that allows to specify the UUID of a target network to update; added optional --template argument that allows to specify the UUID of a target network to use as style template, the update operation now only changes nodes and edges, but leaves network properties untouched).\n\n0.2.1 (2019-08-23)\n------------------\n* Improved README file.\n* Added new JUnit tests (JUnit test coverage is 87%).\n\n0.2.0 (2019-07-26)\n------------------\n* Removed duplicate edges. Every pair of connected nodes in STRING networks had the same edge duplicated (one edge going from A to B, and another going from B to A). Since edges in STRING are not directed, we can safely remove half of them.\n\n* Added new arguments to command line:\n optional --cutoffscore (default is 0.7) - used to filter on combined_score column. To include edges with combined_score of 800 or higher, --cutoffscore 0.8 should be specified\n\n required --datadir specifies a working directory where STRING files will be downloaded to and processed style.cx file that contains style is supplied with the STRING loader and used by default. It can be overwritten with --style argument.\n\n0.1.0 (2019-03-13)\n------------------\n* First release on PyPI.\n\n\n",
"bugtrack_url": null,
"license": "BSD license",
"summary": "Loads STRING data into NDEx",
"version": "1.0.3",
"project_urls": {
"Homepage": "https://github.com/ndexcontent/ndexstringloader"
},
"split_keywords": [
"ndexstringloader"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "48ac9a2d5a1b43a688fce85402608d9ddd828be2ae4ab97bcf3e05748abf5398",
"md5": "9c5db274d0c185adf3c769ace12dbf98",
"sha256": "1fe091323da239b981aa455a50ac75bb962091a5b29ef42fb239971476fb9165"
},
"downloads": -1,
"filename": "ndexstringloader-1.0.3-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "9c5db274d0c185adf3c769ace12dbf98",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": null,
"size": 38801,
"upload_time": "2023-09-20T23:30:30",
"upload_time_iso_8601": "2023-09-20T23:30:30.964571Z",
"url": "https://files.pythonhosted.org/packages/48/ac/9a2d5a1b43a688fce85402608d9ddd828be2ae4ab97bcf3e05748abf5398/ndexstringloader-1.0.3-py2.py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "4fbfcf732b76f253a8f5493504c8db980285899bfe33f168a156d7079349f0c6",
"md5": "d67aca57e0a5c6de584e7669b218d7c6",
"sha256": "69ad31eb8280409a93bcadb82cd674e8eb821179a37f4713336aa477c1553aad"
},
"downloads": -1,
"filename": "ndexstringloader-1.0.3.tar.gz",
"has_sig": false,
"md5_digest": "d67aca57e0a5c6de584e7669b218d7c6",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 54614,
"upload_time": "2023-09-20T23:30:32",
"upload_time_iso_8601": "2023-09-20T23:30:32.886806Z",
"url": "https://files.pythonhosted.org/packages/4f/bf/cf732b76f253a8f5493504c8db980285899bfe33f168a156d7079349f0c6/ndexstringloader-1.0.3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-09-20 23:30:32",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "ndexcontent",
"github_project": "ndexstringloader",
"travis_ci": true,
"coveralls": false,
"github_actions": false,
"requirements": [],
"tox": true,
"lcname": "ndexstringloader"
}