org.forester.phylogeny.data.ProteinDomain Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of forester Show documentation
Show all versions of forester Show documentation
Applications and software libraries for evolutionary biology and comparative genomics research
// $Id:
// FORESTER -- software libraries and applications
// for evolutionary biology research and applications.
//
// Copyright (C) 2008-2009 Christian M. Zmasek
// Copyright (C) 2008-2009 Burnham Institute for Medical Research
// All rights reserved
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
//
// Contact: phylosoft @ gmail . com
// WWW: https://sites.google.com/site/cmzmasek/home/software/forester
package org.forester.phylogeny.data;
import java.io.IOException;
import java.io.Writer;
import org.forester.io.parsers.phyloxml.PhyloXmlMapping;
import org.forester.util.ForesterUtil;
public class ProteinDomain implements PhylogenyData {
final public static double CONFIDENCE_DEFAULT = -1;
final public static String IDENTIFIER_DEFAULT = "";
final private String _name;
final private int _from;
final private int _to;
final private String _id;
final private double _confidence;
public ProteinDomain( final String name, final int from, final int to ) {
this( name, from, to, ProteinDomain.IDENTIFIER_DEFAULT, ProteinDomain.CONFIDENCE_DEFAULT );
}
public ProteinDomain( final String name, final int from, final int to, final double confidence ) {
this( name, from, to, ProteinDomain.IDENTIFIER_DEFAULT, confidence );
}
public ProteinDomain( final String name, final int from, final int to, final String id ) {
this( name, from, to, id, ProteinDomain.CONFIDENCE_DEFAULT );
}
public ProteinDomain( final String name, final int from, final int to, final String id, final double confidence ) {
if ( ( from >= to ) || ( to < 0 ) ) {
throw new IllegalArgumentException( "attempt to create protein domain from " + from + " to " + to );
}
_name = name;
_from = from;
_to = to;
_id = id;
_confidence = confidence;
}
@Override
public StringBuffer asSimpleText() {
return new StringBuffer( getName() );
}
@Override
public StringBuffer asText() {
final StringBuffer sb = new StringBuffer( getName() );
sb.append( " [" );
sb.append( getLength() );
if ( !ForesterUtil.isEmpty( getId() ) ) {
sb.append( " " );
sb.append( getId() );
}
if ( getConfidence() >= 0 ) {
sb.append( " " );
sb.append( getConfidence() );
}
sb.append( "]" );
return sb;
}
@Override
public PhylogenyData copy() {
if ( getId() == null ) {
return new ProteinDomain( getName(), getFrom(), getTo(), getConfidence() );
}
return new ProteinDomain( getName(), getFrom(), getTo(), getId(), getConfidence() );
}
public double getConfidence() {
return _confidence;
}
public int getFrom() {
return _from;
}
public String getId() {
return _id;
}
public int getLength() {
return ( ( getTo() - getFrom() ) + 1 );
}
public String getName() {
return _name;
}
public int getTo() {
return _to;
}
@Override
public boolean isEqual( final PhylogenyData protein_domain ) {
if ( protein_domain == null ) {
return false;
}
if ( !( protein_domain instanceof ProteinDomain ) ) {
return false;
}
else if ( ( ( ProteinDomain ) protein_domain ).getLength() != getLength() ) {
return false;
}
else if ( !( ( ProteinDomain ) protein_domain ).getName().equals( getName() ) ) {
return false;
}
return true;
}
@Override
public StringBuffer toNHX() {
throw new UnsupportedOperationException();
}
@Override
public void toPhyloXML( final Writer writer, final int level, final String indentation ) throws IOException {
writer.write( ForesterUtil.LINE_SEPARATOR );
writer.write( indentation );
if ( getId() != null ) {
PhylogenyDataUtil.appendOpen( writer,
PhyloXmlMapping.SEQUENCE_DOMAIN_ARCHITECTURE_DOMAIN,
PhyloXmlMapping.SEQUENCE_DOMAIN_ARCHITECTURE_PROT_DOMAIN_FROM,
getFrom() + "",
PhyloXmlMapping.SEQUENCE_DOMAIN_ARCHITECTURE_PROT_DOMAIN_TO,
getTo() + "",
PhyloXmlMapping.SEQUENCE_DOMAIN_ARCHITECTURE_PROT_DOMAIN_CONFIDENCE,
getConfidence() + "",
PhyloXmlMapping.IDENTIFIER,
getId() );
}
else {
PhylogenyDataUtil.appendOpen( writer,
PhyloXmlMapping.SEQUENCE_DOMAIN_ARCHITECTURE_DOMAIN,
PhyloXmlMapping.SEQUENCE_DOMAIN_ARCHITECTURE_PROT_DOMAIN_FROM,
getFrom() + "",
PhyloXmlMapping.SEQUENCE_DOMAIN_ARCHITECTURE_PROT_DOMAIN_TO,
getTo() + "",
PhyloXmlMapping.SEQUENCE_DOMAIN_ARCHITECTURE_PROT_DOMAIN_CONFIDENCE,
getConfidence() + "" );
}
writer.write( getName() );
PhylogenyDataUtil.appendClose( writer, PhyloXmlMapping.SEQUENCE_DOMAIN_ARCHITECTURE_DOMAIN );
}
@Override
public String toString() {
return asText().toString();
}
}