001/*
002 *                    BioJava development code
003 *
004 * This code may be freely distributed and modified under the
005 * terms of the GNU Lesser General Public Licence.  This should
006 * be distributed with the code.  If you do not have a copy,
007 * see:
008 *
009 *      http://www.gnu.org/copyleft/lesser.html
010 *
011 * Copyright for this code is held jointly by the individual
012 * authors.  These should be listed in @author doc comments.
013 *
014 * For more information on the BioJava project and its aims,
015 * or to join the biojava-l mailing list, visit the home page
016 * at:
017 *
018 *      http://www.biojava.org/
019 *
020 */
021
022package org.biojava.bio.program.homologene;
023
024import org.biojava.utils.ChangeVetoException;
025
026/**
027 * Homologene is a NCBI dataset that curates sets
028 * of orthologues from the reference model organisms.
029 * <p>
030 * This class is a Collection of methods for handling
031 * data from the Homologene dataset.
032 *
033 * @author David Huen
034 * @author Matthew Pocock
035 */
036public interface HomologeneDB
037{
038    /**
039     * Create an orthologue.
040     */
041    public Orthologue createOrthologue(Taxon taxon, String locusID, String homologeneID, String accession)
042        throws ChangeVetoException;
043
044    /**
045     * Create an orthologue.
046     */
047    public Orthologue createOrthologue(int taxonID, String locusID, String homologeneID, String accession)
048        throws ChangeVetoException;
049
050    /**
051     * Returns an orthologue of specified ID.
052     */
053    public Orthologue getOrthologue(String homologeneID);
054
055    /**
056     * Create a computed orthology entry.
057     */
058    public OrthoPair createOrthoPair(Orthologue first, Orthologue second, SimilarityType type, double percentIdentity);
059
060    /**
061     * Create a curated orthology entry.
062     */
063    public OrthoPair createOrthoPair(Orthologue first, Orthologue second, String ref);
064
065    /**
066     * Create a Homologene Group.
067     */
068    public OrthoPairSet createOrthoPairSet();    
069
070    /**
071     * Get the HomologeneGroups in this database.
072     */
073    public OrthoPairCollection getOrthoPairSets();
074
075    /**
076     * Filter the database for a specified group.
077     */
078    public OrthoPairCollection filter(OrthoPairSetFilter filters);
079}
080