Abstract
Summary Working with protein structures at the genome-scale has been challenging in a variety of ways. Here, we present ssbio, a Python package which provides a framework to easily work with structural information in the context of genome-scale network reconstructions. The ssbio package provides an automated pipeline to construct high quality genome-scale models with protein structures (GEM-PROs), intuitively linking 3D structural data with established systems workflows.
Availability and Implementation ssbio is implemented in Python and available to download under the MIT license at http://github.com/SBRG/ssbio. Documentation and Jupyter notebook tutorials are available at http://ssbio.readthedocs.io/en/latest/.
Contact nmih{at}ucsd.edu
Introduction
Genome-scale models (GEMs), commonly stored using the Systems Biology Markup Language (SBML) (Hucka et al. 2003), are curated network models that provide a context for molecular interactions in a functional cell (O’Brien et al. 2015). A number of methods have been developed to simulate and analyze these models in silico, notably constraint-based modeling methods (i.e., COBRA) to study cell metabolism (Schellenberger et al. 2011). Recently, genome-scale models integrated with protein structures (GEM-PROs) have extended these models to explicitly utilize 3D structural data alongside modeling methods to substantiate a number of hypotheses, as we explain below. A researcher interested in integrating structural information with their systems analyses and experimental datasets may encounter questions such as: how can I zoom in and visualize the interactions happening in the cell at the molecular level; how do structural properties correlate with my experimental datasets; or, how can I improve the contents of my model with structural data?
Merging the disciplines of structural and systems biology remains promising in a variety of ways, but differences in the fields present a learning curve for those looking towards this integration within their own research. Beltrao et al. stated it best, that “apparently structural biology and systems biology look like two different universes” (Beltrao et al. 2007). A great number of software tools exist within the structural bioinformatics community (Gu & Bourne 2009), and with recent advances in structure determination techniques, the number of experimental protein structures in the Protein Data Bank (PDB) continues to steadily rise (Mizianty et al. 2014). The challenges of integrating external data and software tools into systems-level analyses has been detailed (Ghosh et al. 2011), and structural information is no exception to the norm.
Here, we present ssbio, a Python package designed with the goal of lowering the learning curve associated with structural systems biology to directly address this challenge. ssbio directly integrates with and builds upon the COBRApy toolkit (Ebrahim et al. 2013) allowing for seamless integration with existing genome-scale models.
Functionality
Protein class
ssbio adds a Protein class as an attribute to a COBRApy Gene and is representative of the gene’s translated polypeptide chain (Fig. 1A). In the context of a COBRApy Model (my_model in the example below), the protein can be accessed simply by:
my_gene_id = ‘Gene123’ my_protein = my_model.genes.get_by_id(my_gene_id).proteinA Protein holds related amino acid sequences and structures, and a single representative sequence and structure can be set from these. This simplifies network analyses by enabling the properties of all or a subset of proteins to be queried for at once. Additionally, proteins with multiple structures available in the PDB can be subjected to QC/QA based on set cutoffs such as sequence coverage and X-ray resolution. Proteins with no structures available can be prepared for homology modeling through the I-TASSER platform (Roy et al. 2010).
Biopython representations of sequences (SeqRecord objects) and structures (Structure objects (Hamelryck & Manderick 2003)) are utilized to allow access to prediction and analysis functions available for their respective objects (Fig. 1B) (Cock et al. 2009). A full table of current integrations can be found in Supplementary Table S1. Finally, all information contained in a Protein (or in the context of a network model, multiple proteins) can be saved and shared as a JavaScript Object Notation (JSON) file.
GEM-PRO pipeline
The objectives of the GEM-PRO pipeline have previously been detailed (Brunk et al. 2016). A GEM-PRO directly integrates structural information within a curated GEM (Fig. 1C), and streamlines identifier mapping, representative object selection, and property calculation for a set of proteins. The pipeline provided in ssbio requires an input of a GEM in supported formats (SBML, JSON, or MAT), but alternatively works with a list of gene identifiers or their protein sequences if network information is unavailable.
The added context of manually curated network interactions to protein structures enables different scales of analyses. For instance, from the top-down, global non-variant properties of protein structures such as the distribution of fold types can be compared within or between organisms (Brunk et al. 2016; Zhang et al. 2009). From the bottom-up, structural properties predicted from sequence or calculated from structure can be utilized to guide a metabolic reconstruction (Broddrick et al. 2016) or to enhance model predictive capabilities (Chang et al. 2010, 2013; Liu et al. 2014; Mih et al. 2016; O’Brien et al. 2013). Looking forward, applications to multi-strain modelling techniques (Bosi et al. 2016; Monk et al. 2013, 2016; Ong et al. 2014) would allow strain-specific changes to be investigated at the molecular level, potentially explaining phenotypic differences or strain adaptations to certain environments.
Scientific analysis environment
We provide a number of Jupyter notebook tutorials available with the documentation (Kluyver et al. 2016) to demonstrate analyses at different scales (i.e. for a single protein sequence or structure, set of proteins, or network model). Certain data can be represented as Pandas DataFrames (McKinney 2012), enabling quick data manipulation and graphical visualization. These notebooks demonstrate fully-featured Python scientific analysis environments which are further extended by visualization tools such as the NGL viewer for visualizing 3D structures (Rose & Hildebrand 2015), and Escher for visualizing biological pathways (King et al. 2015) (Supplementary Figure S1). Module organization and directory organization for cached files is further described in the Supplementary Text.
Conclusion
ssbio provides a Python framework for systems biologists to start thinking about detailed molecular interactions and how they impact their models, and enables structural biologists to scale up and apply their expertise to multiple enzymes working together in a system. Towards a vision of whole-cell in silico models, structural information provides invaluable molecular-level details, and integration remains crucial.
Funding
This work was supported by the Novo Nordisk Foundation Center for Biosustainability at the Technical University of Denmark [NNF10CC1016517 to N.M., E.C., K.C., and A.S.]; the Swiss National Science Foundation [p2elp2_148961 to E.B.]; and the National Institute of General Medical Sciences of the National Institutes of Health [U01-GM102098 to B.O.P., 1-U01-AI124316-01 to J.M.M., and E.K.].
Acknowledgements
We would like to thank Patrick Phaneuf, Dr. Zachary King, Marta Matos, and Colton Lloyd for valuable discussions in software development, and Dr. Laurence Yang, Yara Seif, Jean-Christophe Lachance, and Jared Broddrick for insight into desired functionalities, testing, and use of the package. We would also like to thank Marc Abrams for proofreading and editing of the manuscript.