elsif ( $script eq "uppercase_seq" ) { script_uppercase_seq( $in, $out, $options ) }
elsif ( $script eq "complexity_seq" ) { script_complexity_seq( $in, $out, $options ) }
elsif ( $script eq "oligo_freq" ) { script_oligo_freq( $in, $out, $options ) }
- elsif ( $script eq "create_weight_matrix" ) { script_create_weight_matrix( $in, $out, $options ) }
elsif ( $script eq "remove_indels" ) { script_remove_indels( $in, $out, $options ) }
elsif ( $script eq "transliterate_seq" ) { script_transliterate_seq( $in, $out, $options ) }
elsif ( $script eq "transliterate_vals" ) { script_transliterate_vals( $in, $out, $options ) }
all|a
);
}
- elsif ( $script eq "create_weight_matrix" )
- {
- @options = qw(
- percent|p
- );
- }
elsif ( $script eq "transliterate_seq" )
{
@options = qw(
}
-sub script_create_weight_matrix
-{
- # Martin A. Hansen, August 2007.
-
- # Creates a weight matrix from an alignmnet.
-
- my ( $in, # handle to in stream
- $out, # handle to out stream
- $options, # options hash
- ) = @_;
-
- # Returns nothing.
-
- my ( $record, $count, $i, $res, %freq_hash, %res_hash, $freq );
-
- $count = 0;
-
- while ( $record = Maasha::Biopieces::get_record( $in ) )
- {
- if ( $record->{ "SEQ" } )
- {
- for ( $i = 0; $i < length $record->{ "SEQ" }; $i++ )
- {
- $res = substr $record->{ "SEQ" }, $i, 1;
-
- $freq_hash{ $i }{ $res }++;
- $res_hash{ $res } = 1;
- }
-
- $count++;
- }
- else
- {
- Maasha::Biopieces::put_record( $record, $out );
- }
- }
-
- foreach $res ( sort keys %res_hash )
- {
- undef $record;
-
- $record->{ "V0" } = $res;
-
- for ( $i = 0; $i < keys %freq_hash; $i++ )
- {
- $freq = $freq_hash{ $i }{ $res } || 0;
-
- if ( $options->{ "percent" } ) {
- $freq = sprintf( "%.0f", 100 * $freq / $count ) if $freq > 0;
- }
-
- $record->{ "V" . ( $i + 1 ) } = $freq;
- }
-
- Maasha::Biopieces::put_record( $record, $out );
- }
-}
-
-
sub script_remove_indels
{
# Martin A. Hansen, August 2007.