return BasicMsa.createInstance( seqs );
}
- synchronized final public Msa removeGapColumns( final double max_allowed_gap_ratio,
+ synchronized final public Msa deleteGapColumns( final double max_allowed_gap_ratio,
final int min_allowed_length,
final Msa msa ) {
init();
final boolean[] delete_cols = new boolean[ msa.getLength() ];
int new_length = 0;
for( int col = 0; col < msa.getLength(); ++col ) {
- delete_cols[ col ] = ( ( double ) calcGapSumPerColumn( msa, col ) / msa.getNumberOfSequences() ) >= max_allowed_gap_ratio;
+ delete_cols[ col ] = ( ( double ) calcGapSumPerColumn( msa, col ) / msa.getNumberOfSequences() ) > max_allowed_gap_ratio;
if ( !delete_cols[ col ] ) {
++new_length;
}
return BasicMsa.createInstance( seqs );
}
- synchronized final public static void removeGapColumns( final double max_allowed_gap_ratio, final DeleteableMsa msa ) {
- if ( ( max_allowed_gap_ratio < 0 ) || ( max_allowed_gap_ratio > 1 ) ) {
- throw new IllegalArgumentException( "max allowed gap ration is out of range: " + max_allowed_gap_ratio );
- }
- // final boolean ignore_too_short_seqs = min_allowed_length > 0;
- for( int col = msa.getLength() - 1; col >= 0 ; --col ) {
- final boolean delete = ( ( double ) calcGapSumPerColumn( msa, col ) / msa.getNumberOfSequences() ) >= max_allowed_gap_ratio;
- if ( delete ) {
- msa.deleteColumn( col );
- }
+ final public static DescriptiveStatistics calculateIdentityRatio( final int from, final int to, final Msa msa ) {
+ final DescriptiveStatistics stats = new BasicDescriptiveStatistics();
+ for( int c = from; c <= to; ++c ) {
+ stats.addValue( calculateIdentityRatio( msa, c ) );
}
+ return stats;
}
- public static DescriptiveStatistics calculateIdentityRatio( final int from, final int to, final Msa msa ) {
+ final public static DescriptiveStatistics calculateEffectiveLengthStatistics( final Msa msa ) {
final DescriptiveStatistics stats = new BasicDescriptiveStatistics();
- for( int c = from; c <= to; ++c ) {
- stats.addValue( calculateIdentityRatio( msa, c ) );
+ for( int row = 0; row < msa.getNumberOfSequences(); ++row ) {
+ final Sequence s = msa.getSequence( row );
+ stats.addValue( s.getLength() - s.getNumberOfGapResidues() );
}
return stats;
}
- public static double calculateIdentityRatio( final Msa msa, final int column ) {
+ final public static double calculateIdentityRatio( final Msa msa, final int column ) {
final SortedMap<Character, Integer> dist = calculateResidueDestributionPerColumn( msa, column );
int majority_count = 0;
final Iterator<Map.Entry<Character, Integer>> it = dist.entrySet().iterator();