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 */
021package org.biojava.nbio.structure.quaternary.io;
022
023import org.biojava.nbio.structure.io.mmcif.model.PdbxStructAssembly;
024import org.biojava.nbio.structure.io.mmcif.model.PdbxStructAssemblyGen;
025import org.biojava.nbio.structure.io.mmcif.model.PdbxStructOperList;
026
027import java.util.List;
028
029
030/** Defines the methods that have to be implemented by a class that provides the data that is necessary to recreate the correct biological assembly of a protein.
031 * This is very close to the way PDB is representing biological assemblies. For the outside it is probably easier to use the other way of accessing the data as defined in
032 * BioUnitDataProvider
033 *
034 * @author Andreas Prlic
035 * @since 3.0.5
036 */
037public interface RawBioUnitDataProvider {
038
039        /** Tell the provider for which PDB ID the quaternary structure should be returned.
040         *
041         * @param pdbId
042         */
043        public void setPdbId(String pdbId);
044
045        /** Data access method for list describing all assemblies
046         *
047         * @return
048         */
049        public List<PdbxStructAssembly> getPdbxStructAssemblies();
050
051        /** Data access method for list describing all assemblies
052         *
053         * @return
054         */
055        public List<PdbxStructAssemblyGen> getPdbxStructAssemblyGens();
056
057        /** Get all the possible operators
058         *
059         * @return
060         */
061        public List<PdbxStructOperList> getPdbxStructOperList();
062
063
064        /** Returns the number of available biological assemblies.
065         *
066         * @return
067         */
068        public int getNrBiolAssemblies();
069
070
071        /** Does the PDB ID have biological assembly information?
072         *
073         * @return boolean flag
074         */
075        public boolean hasBiolAssembly();
076
077        /** get the data for a particular pdbxStructAssembly. We start counting at 0.
078         *
079         * @param biolAssemblyNr
080         * @return
081         */
082        public PdbxStructAssembly getPdbxStructAssembly(int biolAssemblyNr);
083
084
085        /** get the data for a particular pdbxStructAssemblyGen. We start counting at 0.
086         *
087         * @param biolAssemblyNr
088         * @return
089         */
090        public List<PdbxStructAssemblyGen> getPdbxStructAssemblyGen(int biolAssemblyNr);
091
092
093}