NDEx STRING Content Loader
Python application for loading STRING data into NDEx.
This tool downloads and unpacks the STRING files below
9606.protein.links.full.v11.0.txt.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 --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 combined_score
)
are included to the generated TSV and CX files only once.
Name of the newly generated network includes the value of cutoffscore
argument, for example,
STRING - Human Protein Links - High Confidence (Score >= 0.7)
.
In case user didn't specify --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 --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
--stringversion
overrides default version of 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
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 combined_score
with the value cutoffscore
argument. The row is not added to the network generated in case
combined_score
is less than the commad-line argument cutoffscore
.
2) If combined_score
is no than less cutoffscore
, the loader process two first columns
column 1 - protein1 (9606.ENSP00000261819) column 2 - protein2 (9606.ENSP00000353549)
When processing first column protein1
, the script
replaces Ensembl Id
with a display name
, for example 9606.ENSP00000261819
becomes ANAPC5
. Mapping of
display names to Enseml Ids
is found in
human.name_2_string.tsv.gz
uses human.uniprot_2_string.2018.tsv.gz
to create represents
value. For example, represents
for 9606.ENSP00000261819
is uniprot:Q9UJX4
uses human.entrez_2_string.2018.tsv.gz
to create list of aliases for the current protein. Thus, list of aliases for 9606.ENSP00000261819
is
ncbigene:51433|ensembl:ENSP00000261819
3) The second column protein2
is processed the same way as column 1
.
4) In the generated tsv file 9606.protein.links.tsv
, protein1
and protein2
values from the original file are replaced with
protein_display_name_1 represents_1 alias_1 protein_display_name_2 represents_2 alias_2
So, the original
9606.ENSP00000261819 9606.ENSP00000353549 0 0 0 0 0 102 90 987 260 900 0 754 622 999
becomes
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 9606.protein.links.tsv
is then transformed to CX 9606.protein.links.cx
.
The default style defined in style.cx
distributed with this loader is applied to the
generated network in case neither --style
nor --template
is specified.
User can specify style template file with either --style
argument or
style template network UUID --template UUID_of_style_template_network
.
Specifying both --template
and --style
is not allowed.
6) 9606.protein.links.cx
is then uploaded to NDEx server either replacing
an existing network (in case --update UUID
is specified),
or creating a new network.
Dependencies
- ndex2
- ndexutil
- networkx
- scipy
- requests
- py4cytoscape
- pandas
Compatibility
- Python 3.6+
Installation
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
make
Output:
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 ~/.ndexutils.conf
but can be overridden with
--conf
flag.
Configuration file
Networks listed in [network_ids] section need to be visible to the user
[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 ndexloadstring.py -h
Example usage
Here is how this command can be run for dev and prod targets:
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.