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() );
}
};
* @param in_nc_order to consider order
* @return
*/
- public boolean contains( final List<DomainId> query_domain_ids, final boolean in_nc_order ) {
+ public boolean contains( final List<String> 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;
}
}
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<Domain> found_domains = getProteinDomains( query_domain_id );
final SortedSet<Integer> ordered_start_positions = new TreeSet<Integer>();
}
@Override
- public int getProteinDomainCount( final DomainId domain_id ) {
+ public int getProteinDomainCount( final String domain_id ) {
return getProteinDomains( domain_id ).size();
}
}
@Override
- public List<Domain> getProteinDomains( final DomainId domain_id ) {
+ public List<Domain> getProteinDomains( final String domain_id ) {
final List<Domain> domains = new ArrayList<Domain>();
for( final Domain domain : getProteinDomains() ) {
if ( domain.getDomainId().equals( domain_id ) ) {
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<DomainId> getProteinDomainIds() {
- final List<DomainId> ids = new ArrayList<DomainId>( getProteinDomains().size() );
+ @Override
+ public String toString() {
+ return toDomainArchitectureString( "~" );
+ }
+
+ private List<String> getProteinDomainIds() {
+ final List<String> ids = new ArrayList<String>( getProteinDomains().size() );
for( final Domain domain : getProteinDomains() ) {
ids.add( domain.getDomainId() );
}