All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.biojava.nbio.structure.StructureIdentifier Maven / Gradle / Ivy

There is a newer version: 7.2.2
Show newest version
/*
 *                    BioJava development code
 *
 * This code may be freely distributed and modified under the
 * terms of the GNU Lesser General Public Licence.  This should
 * be distributed with the code.  If you do not have a copy,
 * see:
 *
 *      http://www.gnu.org/copyleft/lesser.html
 *
 * Copyright for this code is held jointly by the individual
 * authors.  These should be listed in @author doc comments.
 *
 * For more information on the BioJava project and its aims,
 * or to join the biojava-l mailing list, visit the home page
 * at:
 *
 *      http://www.biojava.org/
 *
 * Created on December 19, 2013
 * Author: Douglas Myers-Turnbull
 */

package org.biojava.nbio.structure;

import java.io.IOException;

import org.biojava.nbio.structure.align.util.AtomCache;


/**
 * An identifier that uniquely identifies a whole {@link Structure} or
 * arbitrary substructure. Common examples would be reducing a structure to a
 * single chain, domain, or residue range.
 *
 * StructureIdentifiers are represented by unique strings. The getId() and fromId()
 * methods convert to and from the string representation.
 *
 * Implementations should provide a constructor which takes a String. A static
 * fromId(String) method is also recommended.
 *
 * @author dmyersturnbull
 * @author Spencer Bliven
 */
public interface StructureIdentifier {

	/**
	 * Get the String form of this identifier.
	 *
	 * It is recommended that the {@link #toString()} method also return the
	 * identifier, for consistency during serialization.
	 * @return The String form of this identifier
	 */
	String getIdentifier();


	/**
	 * Loads a structure encompassing the structure identified.
	 * The Structure returned should be suitable for passing as
	 * the input to {@link #reduce(Structure)}.
	 *
	 * It is recommended that the most complete structure available be returned
	 * (e.g. the full PDB) to allow processing of unselected portions where
	 * appropriate.
	 * @param AtomCache A potential sources of structures
	 * @return A Structure containing at least the atoms identified by this,
	 *  or null if Structures are not applicable.
	 * @throws StructureException For errors loading and parsing the structure
	 * @throws IOException Errors reading the structure from disk
	 */
	Structure loadStructure(AtomCache cache) throws StructureException, IOException;

	/**
	 * Convert to a canonical SubstructureIdentifier.
	 *
	 * 

This allows all domains to be converted to a standard format String. * @return A SubstructureIdentifier equivalent to this * @throws StructureException Wraps exceptions that may be thrown by individual * implementations. For example, a SCOP identifier may require that the * domain definitions be available for download. */ SubstructureIdentifier toCanonical() throws StructureException; /** * Takes a complete structure as input and reduces it to the substructure * represented by this StructureIdentifier. * *

The returned structure may be a shallow copy of the input, with shared * Chains, Residues, etc. * @param input A full structure, e.g. as loaded from the PDB. The structure * ID should match that returned by getPdbId(), if applicable. * @return * @throws StructureException * @see StructureTools#getReducedStructure(Structure, String) */ Structure reduce(Structure input) throws StructureException; }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy