X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=forester%2Fjava%2Fsrc%2Forg%2Fforester%2Fprotein%2FBasicProtein.java;h=e17862f25007823f35fae3d3cefb8c7c85ebf5a5;hb=7713a9bc5abcc18bcfeb3b8e4d172edef36b0992;hp=b9c8cbe5f5934040ec57f55e9f791f11e62ee8e4;hpb=ce9e2773527fda17dcd058c8432a3bffbfadecdc;p=jalview.git diff --git a/forester/java/src/org/forester/protein/BasicProtein.java b/forester/java/src/org/forester/protein/BasicProtein.java index b9c8cbe..e17862f 100644 --- a/forester/java/src/org/forester/protein/BasicProtein.java +++ b/forester/java/src/org/forester/protein/BasicProtein.java @@ -228,6 +228,50 @@ public class BasicProtein implements Protein { return sb.toString(); } + public String toDomainArchitectureString( final String separator, + final int repeats_limit, + final String repeat_separator ) { + if ( repeats_limit < 3 ) { + throw new IllegalArgumentException( "repeats limit cannot be smaller than 3" ); + } + final StringBuilder sb = new StringBuilder(); + StringBuilder buffer = new StringBuilder(); + String prev_id = ""; + int counter = 1; + for( final Domain d : getDomainsSortedByPosition() ) { + final String id = d.getDomainId().getId(); + if ( prev_id.equals( id ) ) { + counter++; + } + else { + counter = 1; + sb.append( buffer ); + buffer = new StringBuilder(); + } + if ( counter < repeats_limit ) { + buffer.append( id ); + buffer.append( separator ); + } + else if ( counter == repeats_limit ) { + buffer = new StringBuilder(); + buffer.append( id ); + buffer.append( repeat_separator ); + buffer.append( id ); + buffer.append( repeat_separator ); + buffer.append( id ); + buffer.append( separator ); + } + prev_id = id; + } + sb.append( buffer.substring( 0, buffer.length() - 1 ) ); + return sb.toString(); + } + + @Override + public String toString() { + return toDomainArchitectureString( "~" ); + } + private List getProteinDomainIds() { final List ids = new ArrayList( getProteinDomains().size() ); for( final Domain domain : getProteinDomains() ) {