Bio-MUST-Drivers

 view release on metacpan or  search on metacpan

t/mafft.t  view on Meta::CPAN

    my $maf = $class->new( file => $file );
    my $align_all = $maf->align_all;
    my $exp_file = file('test', 'seq_out1_gap_mafft.fasta');
    my $exp_align = Bio::MUST::Core::Ali->load($exp_file);

    my @got_align_seqs     = $align_all->all_seqs;
    my @exp_align_seqs     = $exp_align->all_seqs;
    my @got_align_seq_ids  = $align_all->all_seq_ids;
    my @exp_align_seq_ids  = $exp_align->all_seq_ids;

    is_deeply $align_all->count_seqs, $exp_align->count_seqs,
        'good number of seqs';

    is_deeply \@got_align_seqs, \@exp_align_seqs,
        'sequences correctly aligned for align_all';

    is_deeply \@got_align_seq_ids, \@exp_align_seq_ids,
        'ids correctly written for align_all';
}

{
    # profile2profile with error (not monophyletic)
    my $aligned_file = file('test', 'seq_out2_mafft.fasta');
    my $profile = file('test', 'seq_out1_mafft.fasta');
    my $maf = $class->new( file => $aligned_file );
    my $profile2profile = $maf->profile2profile($profile);

    is $profile2profile, undef,
        'return correctly undef when profile2profile not aligned';
}

{
    # profile2profile
    my $aligned_file = file('test', 'seq_out1_mafft.fasta');
    my $maf = $class->new( file => $aligned_file );
    my $profile = file('test', 'seq_out2_mafft.fasta');
    my $profile2profile = $maf->profile2profile($profile);
    my $exp_file = file('test', 'seq_profiles_mafft.fasta');
    my $exp_profiles = Bio::MUST::Core::Ali->load($exp_file);

    my @got_p2p_seqs       = $profile2profile->all_seqs;
    my @exp_p2p_seqs       = $exp_profiles->all_seqs;
    my @got_p2p_seq_ids    = $profile2profile->all_seq_ids;
    my @exp_p2p_seq_ids    = $exp_profiles->all_seq_ids;

    is_deeply $profile2profile->count_seqs, $exp_profiles->count_seqs,
        'good number of seqs for profile2profile';

    is_deeply \@got_p2p_seqs, \@exp_p2p_seqs,
        'sequences correctly aligned for profile2profile';

    is_deeply \@got_p2p_seq_ids, \@exp_p2p_seq_ids,
        'ids correctly written for profile2profile';
}

{
    # seqs2profile
    my $file2align = file('test', 'seq_in2.fasta');
    my $profile = file('test', 'seq_out1_mafft.fasta');

    # Note: long and fragments alignments are less good here but not important
    for my $opt ( q{}, 'long', 'fragments' ) {
        my $maf = $class->new( file => $file2align );
        my $seqs2profile
            = $maf->seqs2profile($profile, $opt ? { "--$opt" => undef } : () );
        my $exp_file = file('test', "${opt}seq_profile_out.fasta");
        my $exp_new_profile = Bio::MUST::Core::Ali->load($exp_file);

        my @got_seqs2p_seqs    = $seqs2profile->all_seqs;
        my @exp_seqs2p_seqs    = $exp_new_profile->all_seqs;
        my @got_seqs2p_seq_ids = $seqs2profile->all_seq_ids;
        my @exp_seqs2p_seq_ids = $exp_new_profile->all_seq_ids;

        is_deeply $seqs2profile->count_seqs, $exp_new_profile->count_seqs,
            "good number of seqs for seqs2profile with: $opt";

        is_deeply \@got_seqs2p_seqs, \@exp_seqs2p_seqs,
            "sequences correctly aligned for seqs2profile with: $opt";

        is_deeply \@got_seqs2p_seq_ids, \@exp_seqs2p_seq_ids,
            "ids correctly written for seqs2profile with: $opt";
    }
}

done_testing;



( run in 1.092 second using v1.01-cache-2.11-cpan-364913b4093 )