Package: ndexsignorloader
NDEx Signor Content LoaderPython application that loads Signor data intoNDExThis tool downloads data files fromSignorand performs the following operations:1)The text files are loaded into a network using thisloadplan2)The edge attributedirectis set toTrueif value is‘t’otherwise its set toFalse3)Using values in thedatabaseaanddatabasebdata files, therepresentsfield found on each node is prefixed withuniprot:if the database value isUNIPROTandsignor:if the database value isSIGNOR4)Thelocationnode attribute is set tocytoplasmif its not set (which is case for all nodes inSignor Complete - Human, Signor Complete - Rat, and Signor Complete - Mousenetworks)5)Thelocationnode attribute with valuephenotypeListis set to empty string6)Any negative or non-numeric citations are removed from thecitationedge attribute (There were multiple cases of -1 andOther). In addition, a specific PMC:## is updated to its pubmed id.7)IF--edgecollapseflag is set on commandline, then edges between same nodes are collapsed if they have sameinteractionwith attributes stored in lists with exception ofdirectwhich is a bool. The pubmed id is prepended (as html link) to eachsentenceattribute entry.In addition, a network attribute namednotesis added with following text:Edges have been collapsed with attributes converted to lists with exception of direct attribute8)The layout of the network is created using the spring layout, but with additional logic that positions nodes in a vertical based on value of thelocationnode attribute. The ordering is as follows:extracellularare placed at the topreceptorare belowextracellularcytoplasmare placed in the middlefactorare belowcytoplasmIf attribute is empty, nodes are placed at the bottom9)The following network attributes are setnameis set to data from Signor servicegetPathwayData.php?pathway=(except for the full/complete networks which have a more generic description)authoris set to data from Signor servicegetPathwayData.php?pathway=(unless its empty in which case its not added to network)organismis set toHuman, 9606, Homo sapiens(except forSignor Complete - Rat, and Signor Complete - Mousenetworks)prov:wasGeneratedByis set to ndexsignorloader <VERSION> (example: ndexsignorloader 1.1.0)prov:wasDerivedFromset to URL to download data file (or in case of full networks its set to Signor site)versionis set to Abbreviated day-month-year (example: 05-Jun-2019)descriptionis taken from Signor servicegetPathwayData.php?pathway=rightsHolderis set toProf. Gianni Cesarenirightsis set toAttribution-ShareAlike 4.0 International (CC BY-SA 4.0)referenceis set to citation forSIGNOR: a database of causal relationships between biological entitieslabelsis set to data from Signor servicegetPathwayData.php?pathway=(not set for full networks)typeis set to a list withpathwayand if known type of pathway__normalizationversionis set to0.1The script will attempt to update in place on NDEx any matching networks. The matching is
performed by looking for (ignore case) match of thelabelsnetwork attribute of any
networks owned by the user configured. If no match there is found then (ignore case) match
of the network name is used to update. In scenario of multiple matches inlabelsor by
name, one randomly is chosen and updated.Dependenciesndex2ndexutilCompatibilityPython 3.4+Installationgit clone https://github.com/ndexcontent/ndexsignorloader
cd ndexsignorloader
make dist
pip install dist/ndexloadsignor*whlRunmakecommand with no arguments to see other build/deploy options including creation of Docker imagemakeOutput: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 dockerhubConfigurationThendexloadsignor.pyrequires a configuration file in the following format be created.
The default path for this configuration is~/.ndexutils.confbut can be overridden with--confflag.Format of configuration file[<value in --profile (default ndexsignorloader)>]

user = <NDEx username>
password = <NDEx password>
server = <NDEx server(omit http) ie public.ndexbio.org>Example configuration file[ndexsignorloader_dev]

user = joe123
password = somepassword123
server = dev.ndexbio.orgUsageFor information invokendexloadsignor.py -hExample usageTODO:Add information about example usagemkdir signor
ndexloadsignor.py signor/Via DockerExample usageTODO:Add information about example usagedocker run -v `pwd`:`pwd` -w `pwd` coleslawndex/ndexsignorloader:1.1.1 ndexloadsignor.py --conf conf # TODO Add other needed arguments hereCreditsThis package was created withCookiecutterand theaudreyr/cookiecutter-pypackageproject template.History1.2.0 (2022-07-06)Uploaded networks are now public, searchable, showcased, and fully
indexed by defaultThe search for networks to update is done by matching thelabelsnetwork attribute first and if no match is found, the name is usedFixed bug where some networks were laid out on a single horizontal
line. This happened when thelocationattribute for all nodes
in a network were all the sameFixed bug where duplicate symbols ended up inmemberattribute of nodes UD-2078Useslabelsnetwork attribute (if found) to find network on NDEx to update instead
of upload as new. If nolabelsmatch, then any network matching thenameof
network is updated otherwise network is uploaded as a new network. UD-16771.1.1 (2020-10-16)Removed NODE_LABEL_POSITION discrete mapping from style since it is
not compatible with CX 2.01.1.0 (2020-02-19)Fixed bug where an empty pathway description file would cause loader to fail. Issue #1Removed network visual properties:NETWORK_CENTER_*, NETWORK_ HEIGHT, NODE_SELECTION, SCALE_FACTOR, SIZE, WIDTHcause they caused problems when displaying the network in CytoscapeFixed bug where URL for DOI inreferencenetwork attribute was incorrectSet minimum version of ndex2 python client to 3.3.1 and maximum to less then 4.0.0Set maximum version of ndexutil package to less then 2.0.01.0.0 (2019-07-30)–edgecollapseflag added which collapses all edges putting all attributes
minusdirectinto lists. Forsentenceattribute each entry the
list is now prepended with href link to citation labeled pubmed:#### In addition,
if–edgecollapseflag is set then anotesnetwork attribute is added to
let user know.–stylecan also accept NDEx UUID for network style. Network needs to be on  same
server set in–profile0.3.0 (2019-07-29)Added commandline flag–visibilitythat lets user dictate whether NEW networks are public or private (default is public)Signor Full Human, Signor Full Rat, and Signor Full Mouse networks have been renamed
to Signor Complete - Human, Signor Complete - Rat, Signor Complete - MouseOn edges, replaced location attribute value of phenotypesList with empty string NSU-75Added __iconurl network attribute and renamed type network attribute to networkType0.2.0 (2019-06-28)Changed prov:wasDerivedFrom network attribute to just signor website URL for full networksRemoved author network attribute if no value is foundRemoved labels attribute for full networks0.1.0 (2019-06-27)First release on PyPI.