X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=forester%2Fjava%2Fsrc%2Forg%2Fforester%2Fprotein%2FBasicProtein.java;h=c793c159f5f691bd74cb92e71fae1e788b5e5a3a;hb=e8890012b315b30af8bf6c90db6e800b7d046147;hp=b33082c8e6eed29caef2648b33e1056fa56d9706;hpb=9a4a1484a2ae6b664aa0adee8cbbc529d029ceb1;p=jalview.git diff --git a/forester/java/src/org/forester/protein/BasicProtein.java b/forester/java/src/org/forester/protein/BasicProtein.java index b33082c..c793c15 100644 --- a/forester/java/src/org/forester/protein/BasicProtein.java +++ b/forester/java/src/org/forester/protein/BasicProtein.java @@ -56,8 +56,8 @@ public class BasicProtein implements Protein { final int m1 = ( d1.getTo() + d1.getFrom() ); final int m2 = ( d2.getTo() + d2.getFrom() ); return m1 < m2 ? -1 : m1 > m2 ? 1 : d1 - .getDomainId().getId() - .compareTo( d2.getDomainId().getId() ); + .getDomainId() + .compareTo( d2.getDomainId() ); } }; @@ -96,9 +96,9 @@ public class BasicProtein implements Protein { * @param in_nc_order to consider order * @return */ - public boolean contains( final List query_domain_ids, final boolean in_nc_order ) { + public boolean contains( final List query_domain_ids, final boolean in_nc_order ) { if ( !in_nc_order ) { - for( final DomainId query_domain_id : query_domain_ids ) { + for( final String query_domain_id : query_domain_ids ) { if ( !getProteinDomainIds().contains( query_domain_id ) ) { return false; } @@ -107,7 +107,7 @@ public class BasicProtein implements Protein { } else { int current_start_position = -1; - I: for( final DomainId query_domain_id : query_domain_ids ) { + I: for( final String query_domain_id : query_domain_ids ) { if ( getProteinDomainIds().contains( query_domain_id ) ) { final List found_domains = getProteinDomains( query_domain_id ); final SortedSet ordered_start_positions = new TreeSet(); @@ -171,7 +171,7 @@ public class BasicProtein implements Protein { } @Override - public int getProteinDomainCount( final DomainId domain_id ) { + public int getProteinDomainCount( final String domain_id ) { return getProteinDomains( domain_id ).size(); } @@ -181,7 +181,7 @@ public class BasicProtein implements Protein { } @Override - public List getProteinDomains( final DomainId domain_id ) { + public List getProteinDomains( final String domain_id ) { final List domains = new ArrayList(); for( final Domain domain : getProteinDomains() ) { if ( domain.getDomainId().equals( domain_id ) ) { @@ -223,42 +223,57 @@ public class BasicProtein implements Protein { else { sb.append( separator ); } - sb.append( d.getDomainId().getId() ); + sb.append( d.getDomainId() ); } return sb.toString(); } - public String toDomainArchitectureString( final String separator, int max_repeats ) { - if ( max_repeats < 2 ) { - throw new IllegalArgumentException( "max repeats cannot be smaller than 2" ); + 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(); - boolean first = true; + StringBuilder buffer = new StringBuilder(); String prev_id = ""; - int counter = 0; + int counter = 1; for( final Domain d : getDomainsSortedByPosition() ) { - if ( first ) { - first = false; - } - else { - sb.append( separator ); - } - if ( prev_id.equals( d.getDomainId().getId() ) ) { + final String id = d.getDomainId(); + if ( prev_id.equals( id ) ) { counter++; } else { - counter = 0; + counter = 1; + sb.append( buffer ); + buffer = new StringBuilder(); + } + if ( counter < repeats_limit ) { + buffer.append( id ); + buffer.append( separator ); } - if ( counter >= max_repeats ) { + 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 ); } - sb.append( d.getDomainId().getId() ); - prev_id = d.getDomainId().getId(); + prev_id = id; } + sb.append( buffer.substring( 0, buffer.length() - 1 ) ); return sb.toString(); } - private List getProteinDomainIds() { - final List ids = new ArrayList( getProteinDomains().size() ); + @Override + public String toString() { + return toDomainArchitectureString( "~" ); + } + + private List getProteinDomainIds() { + final List ids = new ArrayList( getProteinDomains().size() ); for( final Domain domain : getProteinDomains() ) { ids.add( domain.getDomainId() ); }