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.align;
022
023import java.util.List;
024
025import org.biojava.nbio.structure.Atom;
026import org.biojava.nbio.structure.StructureException;
027import org.biojava.nbio.structure.align.ce.ConfigStrucAligParams;
028import org.biojava.nbio.structure.align.multiple.MultipleAlignment;
029
030/**
031 * Interface for the Multiple Structure Alignment Algorithms. The Pairwise Alignment Algorithms can also
032 * implement this class to be able to return {@link MultipleAlignment} Objects.
033 *
034 * @author Aleix Lafita
035 *
036 */
037public interface MultipleStructureAligner{
038
039        /**
040         * Run an alignment while specifying the atoms to be aligned.
041         * The default parameters for the algorithm are used.
042         *
043         * @param atomArrays List of Atoms of all the structures
044         * @return MultipleAlignment object that contains the alignment.
045         * @throws StructureException
046         * @see #align(List,Object)
047         */
048        public MultipleAlignment align(List<Atom[]> atomArrays) throws StructureException;
049
050        /**
051         * Run an alignment and also send a bean containing the parameters.
052         *
053         * @param atomArrays List of Atoms of all the structures
054         * @return MultipleAlignment object that contains the alignment.
055         * @throws StructureException
056         * @see #align(List)
057         */
058        public MultipleAlignment align(List<Atom[]> atomArrays, Object params) throws StructureException;
059
060        /**
061         * Return the parameters of this algorithm instance.
062         *
063         * @return The returned Object will be a Java bean.
064         */
065        public ConfigStrucAligParams getParameters();
066
067        /**
068         * Set the parameters for this algorithm to use.
069         *
070         * @param parameters
071         */
072        public void setParameters(ConfigStrucAligParams parameters);
073
074        /**
075         * Get the name of this Algorithm.
076         *
077         * @return String name of the algorithm
078         */
079        public String getAlgorithmName();
080
081        /**
082         * Get the Version information for this Algorithm.
083         *
084         * @return String version of the algorithm
085         */
086        public String getVersion();
087}