Christopher Fields
and 1 contributors




Do not use this module directly, use Bio::Network::IO:

  my $io = Bio::Network::IO->new(-format => 'psi25',
                                 -file   => 'data.xml');

  my $network = $io->next_network;


PSI MI (Protein Standards Initiative Molecular Interaction) XML is a format to describe protein-protein interactions and interaction networks. This module parses version 2.5 of PSI MI.


The following databases provide their data as PSI MI XML:

Each of these databases will call PSI format by some different name. for example, PSI MI from DIP comes in files with the suffix "mif" whereas PSI MI from IntAct or MINT has the "xml" suffix.

Documentation for PSI XML can be found at


This module supports a subset of the fields described in PSI MI version 2.5. ( The DATA IN THE NODE section below describes which fields are currently parsed into ProteinNet networks.


See the Bio::Network::IO::psi_xml page in the Bioperl Wiki ( for notes on PSI XML from various databases.

When using this parser recall that some PSI MI fields, or classes, are populated by values taken from an ontology created for the PSI MI format. This ontology is an OBO ontology and can be browsed at


The naming system is analagous to the SeqIO system, although usually next_network() will be called only once per file.


The Node (protein or protein complex) is roughly equivalent to the PSI MI interactor (entrySet/entry/interactorList/interactor). The following are subclasses of interactor whose values are accessible through the Node object.


The following are subclasses of interactor whose values are currently not accessible through the Node object.


The Interaction object is roughly equivalent to the PSI MI interaction (entrySet/entry/interactionList/interaction) and experimentDescription (entrySet/entry/experimentList/experimentDescription). The following are subclasses of interaction and experimentDescription whose values are NOT yet accessible through the Interaction object.


Mailing Lists

User feedback is an integral part of the evolution of this and other Bioperl modules. Send your comments and suggestions preferably to one of the Bioperl mailing lists. Your participation is much appreciated.                  - General discussion  - About the mailing lists


Please direct usage questions or support issues to the mailing list:

rather than to the module maintainer directly. Many experienced and reponsive experts will be able look at the problem and quickly address it. Please include a thorough description of the problem with code and data examples if at all possible.

Reporting Bugs

Report bugs to the Bioperl bug tracking system to help us keep track the bugs and their resolution. Bug reports can be submitted via the web:


Brian Osborne bosborne at


 Name       : next_network
 Purpose    : Constructs a protein interaction graph from PSI XML data
 Usage      : my $net = $io->next_network()
 Arguments  :
 Returns    : A Bio::Network::ProteinNet object


 Name      : _addInteractor
 Purpose   : Parses protein information into Bio::Seq::RichSeq objects
 Returns   :
 Usage     : Internally called by next_network()
 Arguments : None
 Notes     : Interactors without organism data get their Bio::Species
             fields set to -1


 Name     : _addInteraction
 Purpose  : Adds a new Interaction to a graph
 Usage    : Do not call, called internally by next_network()
 Returns  :
 Notes    : All interactions are made of 2 nodes - if there are more
            or less than 2 then no Interaction object is created