ndexbiogridloader 1.0.0
Loads BioGRID data into NDEx
License: BSD license
Keywords: ndexbiogridloader

===========================
NDEx BioGRID Content Loader
===========================


.. image:: https://img.shields.io/pypi/v/ndexbiogridloader.svg
        :target: https://pypi.python.org/pypi/ndexbiogridloader

.. image:: https://img.shields.io/travis/ndexcontent/ndexbiogridloader.svg
        :target: https://travis-ci.org/ndexcontent/ndexbiogridloader

.. image:: https://coveralls.io/repos/github/ndexcontent/ndexbiogridloader/badge.svg?branch=master
        :target: https://coveralls.io/github/ndexcontent/ndexbiogridloader?branch=master

.. image:: https://readthedocs.org/projects/ndexbiogridloader/badge/?version=latest
        :target: https://ndexbiogridloader.readthedocs.io/en/latest/?badge=latest
        :alt: Documentation Status


Python application for loading BioGRID data into `NDEx <http://ndexbio.org>`_.

This tool downloads and unpacks the `BioGRID <https://thebiogrid.org/>`_ files below

    `BIOGRID-ORGANISM-4.2.191.tab2.zip <https://downloads.thebiogrid.org/Download/BioGRID/Release-Archive/BIOGRID-3.5.187/BIOGRID-ORGANISM-3.5.87.tab2.zip>`_

    `BIOGRID-CHEMICALS-4.2.191.chemtab.zip <https://downloads.thebiogrid.org/Download/BioGRID/Release-Archive/BIOGRID-3.5.187/BIOGRID-CHEMICALS-3.5.187.chemtab.zip>`_

**NOTE:** ``ndexloadbiogrid.py`` script ``--biogridversion`` parameter dictates version (``4.2.191`` above)





Dependencies
------------

* `ndex2 <https://pypi.org/project/ndex2>`_
* `ndexutil <https://pypi.org/project/ndexutil>`_
* `requests <https://pypi.org/project/requests>`_
* `pandas <https://pypi.org/project/pandas>`_
* `networkx <https://pypi.org/project/networkx>`_
* `scipy <https://pypi.org/project/scipy>`_
* `tqdm <https://pypi.org/project/tqdm>`_
* `py4cytoscape <https://pypi.org/project/py4cytoscape>`_

Compatibility
-------------

* Python 3.6+

Installation
------------

From PyPi:

.. code-block::

   pip install ndexbiogridloader

Build from source:

.. code-block::

   git clone https://github.com/ndexcontent/ndexbiogridloader
   cd ndexbiogridloader
   make dist
   pip install dist/ndexloadbiogrid*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 **ndexloadbiogrid.py** requires a configuration file in the following format be created.
The default path for this configuration is :code:`~/.ndexutils.conf` but can be overridden with
:code:`--conf` flag.

**Format of configuration file:**

.. code-block::

    [<value in --profile (default ndexbiogridloader)>]

    user = <NDEx username>
    password = <NDEx password>
    server = <NDEx server(omit http) ie public.ndexbio.org>

**Example of default configuration file:**

.. code-block::

    [ndexbiogridloader]
    user = joe123
    password = somepassword123
    server = dev.ndexbio.org



Usage
-----

For information invoke :code:`ndexloadbiogrid.py -h`

The command shown below will download the default version of BioGRID files (4.2.191) to the working
directory :code:`biogrid_data`, will generate CX networks in this directory, and then upload these networks
to default account specified in :code:`[ndexbiogridloader]` section of default configuration file:

.. code-block::

   ndexloadbiogrid.py biogrid_data


.. note::

   By default Cytoscape must be running to generate the layout for each network. See ``--layout`` flag
   options to generate networks without Cytoscape.


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.0 (11-09-2020)
------------------

* 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 (10-27-2020)
------------------

* Updated default ``--biogridversion`` version to ``4.2.191``

* All generated networks get networkx spring layout added by default

* Added tqdm progress bar support. Set ``--noprogressbar`` flag to disable

* Added --skipupload flag to skip the upload to NDEx step

* Added logic to retry failed upload of network to NDEx.
  ``--maxretries`` and ``--retry_sleep`` allow caller to control
  behavior

* Added ``--organismfile`` and ``--chemicalsfile`` to let caller override
  defaults

0.2.0 (2020-07-27)
------------------

* Updated default ``--biogridversion`` version to ``3.5.187``

* Modified organism_list file to include 3 strains of
  coronavirus (SARS-1, SARS-2 and MERS)

* Modified organism_style file to add an orange border
  to all viral protein nodes. This change affects all the
  both new and already existing viral organisms.

0.1.3 (2019-11-21)
------------------
Fixed a bug where networkType used to be a string, now it is a list of strings and we specify 'list_of_string'
type when setting networkType attribute with network.set_network_attribute("networkType", networkType, 'list_of_string').
This results in correct representation of networkType in CX model, for example:
{"n":"networkType","v":["interactome","ppi"],"d":"list_of_string"}.

0.1.2 (2019-10-25)
------------------
In organism_load_plan.json, changed types of edge columns
"Experimental System Type" and "Throughput" to be "list_of_string",
and "Score" to be "list_of_double".
This change resolves UD-761 Biogrid network can't be imported to Cytoscape.

0.1.1 (2019-08-23)
------------------
* First release on PyPI.