bpforms 0.0.16
Unambiguous representation of modified DNA, RNA, and proteins
License: MIT
Keywords: DNA,RNA,protein,post-transcriptional modification,post-translational modification,proteoform,phosphorylation,methylation

|PyPI package| |Documentation| |Test results| |Test coverage| |Code
analysis| |License| |Analytics|

``BpForms``: toolkit for concretely describing non-canonical DNA, RNA, and proteins
===================================================================================

``BpForms`` is a set of tools for concretely representing the primary
structures of non-canonical forms of biopolymers, such as oxidized DNA,
methylated RNA, and acetylated proteins, and calculating properties of
non-canonical biopolymers.

``BpForms`` encompasses five tools:

-  A grammar for concretely describing the primary structures of
   non-canonical biopolymers. See the
   `documentation <https://docs.karrlab.org/bpforms/>`__ for more
   information. For example, the following text represents a modified
   DNA molecule that contains a deoxyinosine monomeric form at the
   fourth position.
   ``ACG[id: "dI"    | structure: "[H][C@]1(O)C[C@@]([H])(O[C@]1([H])CO)N1C=NC2=C1N=CN=C2O"]T``

This concrete representation enables the ``BpForms`` software tools to
calculate properties of non-canonical biopolymers.

-  Tools for calculating properties of non-canonical biopolymers
   including their chemical formulae, molecular weights, charges, and
   major protonation and tautomerization states.
-  A web app: https://bpforms.org
-  A JSON REST API: https://bpforms.org/api
-  A command line interface. See the
   `documentation <https://docs.karrlab.org/bpforms/master/0.0.1/cli.html>`__
   for more information.
-  A Python API. See the
   `documentation <https://docs.karrlab.org/bpforms/master/0.0.1/python_api.html>`__
   for more information.

``BpForms`` was motivated by the need to concretely represent the
biochemistry of DNA modification, DNA repair, post-transcriptional
processing, and post-translational processing in `whole-cell
computational models <https://www.wholecell.org>`__. ``BpForms`` is also
a valuable tool for experimental proteomics and synthetic biology. In
particular, we developed ``BpForms`` because there were no notations,
schemas, data models, or file formats for concretely representing
non-canonical forms of biopolymers, despite the existence of several
databases and ontologies of DNA, RNA, and protein modifications, the
`ProForma Proteoform
Notation <https://www.topdownproteomics.org/resources/proforma/>`__, and
the `MOMODICS <http://modomics.genesilico.pl/>`__ codes for modified RNA
bases.

*BpForms* can be combined with `*BcForms* <https://www.bcforms.org>`__
to concretely describe the primary structure of complexes.

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

The following is a brief guide to installing ``BpForms``. The
`Dockerfile <Dockerfile>`__ in the repository contains detailed
instructions for how to install ``BpForms`` in Ubuntu Linux.

1. Install the third-party dependencies listed below.

   -  `ChemAxon Marvin <https://chemaxon.com/products/marvin>`__:
      optional to calculate major protonation and tautomerization states
      and draw molecules
   -  `Java <https://www.java.com>`__ >= 1.8
   -  `Open Babel <http://openbabel.org>`__
   -  `Pip <https://pip.pypa.io>`__ >= 19.0
   -  `Python <https://www.python.org>`__ >= 3.6

2. To use Marvin to calculate major protonation and tautomerization
   states, set ``JAVA_HOME`` to the path to your Java virtual machine
   (JVM) ``export JAVA_HOME=/usr/lib/jvm/default-java``

3. To use Marvin to calculate major protonation and tautomerization
   states, add Marvin to the Java class path
   ``export CLASSPATH=$CLASSPATH:/opt/chemaxon/marvinsuite/lib/MarvinBeans.jar``

4. Install this package

   -  Install the latest release from PyPI: ``pip install bpforms``

   -  Install the latest revision from GitHub:
      ``pip install git+https://github.com/KarrLab/pkg_utils.git#egg=pkg_utils   pip install git+https://github.com/KarrLab/wc_utils.git#egg=wc_utils[chem]   pip install git+https://github.com/KarrLab/bpforms.git#egg=bpforms``

   -  To calculate major protonation and tautomerization states,
      ``BpForms`` must be installed with the ``[protontation]`` option:
      ``pip install bpforms[protontation]   pip install git+https://github.com/KarrLab/bpforms.git#egg=bpforms[protontation]``

   -  To draw molecules, ``BpForms`` must be installed with the
      ``[draw]`` option:
      ``pip install bpforms[draw]   pip install git+https://github.com/KarrLab/bpforms.git#egg=bpforms[draw]``

   -  To export the alphabets in OBO format, ``BpForms`` must be
      installed with the ``[onto_export]`` option:
      ``pip install bpforms[onto_export]   pip install git+https://github.com/KarrLab/bpforms.git#egg=bpforms[onto_export]``

   -  To install the rest API, ``BpForms`` must be installed with the
      ``[rest_api]`` option:
      ``pip install bpforms[rest_api]   pip install git+https://github.com/KarrLab/bpforms.git#egg=bpforms[rest_api]``

Examples, tutorial, and documentation
-------------------------------------

Please see the `documentation <https://docs.karrlab.org/bpforms>`__. An
`interactive
tutorial <https://sandbox.karrlab.org/notebooks/bpforms/Tutorial.ipynb>`__
is also available in the whole-cell modeling sandbox.

License
-------

The package is released under the `MIT license <LICENSE>`__.

Citing ``BpForms``
------------------

Lang PF, Chebaro Y & Jonathan R. Karr. BpForms: a toolkit for concretely
describing modified DNA, RNA and proteins. arXiv:1903.10042.
`:link: <https://arxiv.org/abs/1903.10042>`__

Development team
----------------

This package was developed by the `Karr Lab <https://www.karrlab.org>`__
at the Icahn School of Medicine at Mount Sinai in New York, USA.

-  `Jonathan Karr <https://www.karrlab.org>`__
-  `Yassmine
   Chebaro <https://www.linkedin.com/in/yassmine-chebaro-6bb8a05/>`__
-  `Paul Lang <http://www.dtc.ox.ac.uk/people/17/langp/>`__

Questions and comments
----------------------

Please contact the `Karr Lab <mailto:info@karrlab.org>`__ with any
questions or comments.

.. |PyPI package| image:: https://img.shields.io/pypi/v/bpforms.svg
   :target: https://pypi.python.org/pypi/bpforms
.. |Documentation| image:: https://readthedocs.org/projects/bpforms/badge/?version=latest
   :target: https://docs.karrlab.org/bpforms
.. |Test results| image:: https://circleci.com/gh/KarrLab/bpforms.svg?style=shield
   :target: https://circleci.com/gh/KarrLab/bpforms
.. |Test coverage| image:: https://coveralls.io/repos/github/KarrLab/bpforms/badge.svg
   :target: https://coveralls.io/github/KarrLab/bpforms
.. |Code analysis| image:: https://api.codeclimate.com/v1/badges/e35081f676dfbb5ac46f/maintainability
   :target: https://codeclimate.com/github/KarrLab/bpforms
.. |License| image:: https://img.shields.io/github/license/KarrLab/bpforms.svg
   :target: LICENSE
.. |Analytics| image:: https://ga-beacon.appspot.com/UA-86759801-1/bpforms/README.md?pixel