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 * Author: Daniel Asarnow
021 * Date:   2012-6-23
022 */
023
024package org.biojava.nbio.structure.cath;
025
026import java.util.List;
027
028/** General API for interacting with CATH.
029 *
030 * @author Daniel Asarnow
031 */
032public interface CathDatabase {
033
034        /** Return the CATH release version.
035         *
036         * @return CATH version
037         */
038        public String getCathVersion();
039
040        /** Return the CathNode for a node ID.
041         *
042         * @param nodeId
043         * @return CATH node
044         */
045        public CathNode getCathNode(String nodeId);
046
047        /** Return list of CATH descriptions for node representatives at a CATH category (e.g. "T").
048         *
049         * @param category
050         * @return CATH descriptions
051         */
052        public List<CathDomain> getByCategory(CathCategory category);
053
054        /** Return list of CATH descriptions whose CATH codes (e.g. 1.4.6.10) start with the query.
055         * This is currently redundant with getDescriptionsByNodeId.
056         *
057         * @param query
058         * @return CATH descriptions
059         */
060        public List<CathDomain> filterByCathCode(String query);
061
062        /** Return the CATH sub-tree for a particular domain.
063         *
064         * @param domain
065         * @return CATH sub-tree
066         */
067        public List<CathNode> getTree(CathDomain domain);
068
069        /** Return list of CATH domains whose node name (e.g. Orthogonal Bundle) starts with the query.
070         *
071         * @param query
072         * @return CATH domains
073         */
074        public List<CathDomain> filterByNodeName(String query);
075
076        /** Return list of CATH descriptions whose descriptions (name field) starts with the query.
077         *
078         * @param query
079         * @return CATH descriptions
080         */
081        public List<CathDomain> filterByDescription(String query);
082
083        /** Return CATH description for node representative by node ID.
084         *
085         * @param nodeId
086         * @return CATH description
087         */
088        public CathDomain getDescriptionByNodeId(String nodeId);
089
090        /** Return all CATH domains for a PDB ID.
091         *
092         * @param pdbId
093         * @return CATH domains
094         */
095        public List<CathDomain> getDomainsForPdb(String pdbId);
096
097        /** Return CATH domain for CATH domain ID.
098         *
099         * @param cathId
100         * @return CATH domain
101         */
102        public CathDomain getDomainByCathId(String cathId);
103
104        /** Return CATH description for CATH domain ID.
105         *
106         * @param cathId
107         * @return
108         */
109        public CathDomain getDescriptionByCathId(String cathId);
110
111        /** Return all CATH domains for a particular CATH node.
112         *
113         * @param nodeId
114         * @return
115         */
116        public List<CathDomain> getDomainsByNodeId(String nodeId);
117
118        public List<CathFragment> getFragmentsByPdbId(String pdbId);
119}