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

org.biojava.nbio.structure.domain.LocalProteinDomainParser Maven / Gradle / Ivy

/*
 *                    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/
 *
 *
 * Author: Andreas Prlic
 *
 */
package org.biojava.nbio.structure.domain;

import org.biojava.nbio.structure.*;
import org.biojava.nbio.structure.domain.pdp.*;

import java.util.List;


/** Protein Domain Parser is a an algorithm that attempts at assigning domains for 3D protein structures.
 * Since domains in proteins are difficult to define, results detected by automated algorithms have to be taken with a grain of salt.
 *
 *   see
J Mol Biol. 2004 Jun 4;339(3):647-78.

Toward consistent assignment of structural domains in proteins.

Veretnik S, Bourne PE, Alexandrov NN, Shindyalov IN.
* This implementation is based on a Java port of the PDP algorithm, as described in: * * * @author Andreas Prlic * @since 3.0.2 */ public class LocalProteinDomainParser { /** make sure this class can only get accessed via the static method calls * */ private LocalProteinDomainParser(){ } /** Suggest domains for a protein structure * * @param s the protein structure * @return a list of possible domains * @throws StructureException */ public static List suggestDomains(Structure s) throws StructureException{ Atom[] ca = StructureTools.getRepresentativeAtomArray(s); return suggestDomains(ca); } /** Suggest domains for a set of Calpha atoms * * @param ca an array of Calpha atoms * @return a list of possible domains * @throws StructureException */ public static List suggestDomains(Atom[] ca) throws StructureException{ GetDistanceMatrix distMaxCalculator = new GetDistanceMatrix(); PDPDistanceMatrix pdpMatrix = distMaxCalculator.getDistanceMatrix(ca); Domain dom = new Domain(); Chain c = ca[0].getGroup().getChain(); dom.setId("D"+c.getStructure().getPDBCode()+c.getId()+"1"); dom.setSize(ca.length); dom.setNseg(1); dom.getSegmentAtPos(0).setFrom(0); dom.getSegmentAtPos(0).setTo(ca.length-1); CutSites cutSites = new CutSites(); // Do the initial splitting CutDomain cutDomain = new CutDomain(ca,pdpMatrix); cutDomain.cutDomain(dom, cutSites, pdpMatrix); List domains = cutDomain.getDomains(); // domains = ClusterDomains.cluster(domains, pdpMatrix); ShortSegmentRemover.cleanup(domains); return domains; } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy