Bio-FastParsers

 view release on metacpan or  search on metacpan

t/hmmer_std.t  view on Meta::CPAN

#!/usr/bin/env perl

use Test::Most;

use autodie;
use feature qw(say);

use Path::Class qw(file);

use Bio::FastParsers;
use Smart::Comments;

my $class = 'Bio::FastParsers::Hmmer::Standard';

check_iterations(
    file('test', 'hmmer_double_short.stdout'),
    2,
);

check_info_and_targets(
    file('test', 'hmmer3.stdout'),
        [ 'Meredith169AA', 6705 ],
        [
            [ 0, 12909.9, 47.3, 0, 4943.5, 15.5, 3.0, 3, 'Abrocoma_bennettii', undef ],
        ],
);

check_domains(
    file('test', 'hmmer3.stdout'),
    [
        [
            [ 3876.6, 0 ],
            [ 4102.0, 0 ],
            [ 4943.5, 0 ],
        ],
    ],
);

check_info_and_targets(
    file('test', 'hmmer_short.stdout'),
        [ 'tmpfile_Qfco', 6705 ],
        [
            [ 0, 12909.9, 47.3, 0, 4943.5,  15.5, 3.0, 3, 'Abrocoma_bennettii', undef ],
            [ 0, 12562.0, 71.7, 0, 11808.5, 45.4, 2.8, 2, 'Aepyprymnus_rufescens', undef ],
            [ 0, 12214.1, 81.9, 0, 5245.2,  11.3, 4.0, 4, 'Acrobates_pygmaeus', undef ],
        ],
);

check_domains(
    file('test', 'hmmer_short.stdout'),
    [
        [
            [ 3876.6, 0 ],
            [ 4102.0, 0 ],
            [ 4943.5, 0 ],
        ],
        [
            [ 757.3, 3.1e-231 ],
            [ 11808.5, 0 ],
        ],
        [
            [ 762.4, 9.3e-233 ],
            [ 1351.8, 0 ],
            [ 5245.2, 0 ],
            [ 4873.3, 0 ],
        ],,
    ],
);

check_scoreseq(
    file('test', 'hmmer3.stdout'),
    [
        [
            ['CSFLPTMSMEYMVFFSFFTWIFIPLVVMCAIYLNIFHVIRNKLSQNLSASKETGAFYGREFRTAKSLFLVLFLFALCWLPLSIINCALYFPDDIMFLGILLSHXXXXXXILGNALGILAVLTSRSLRAPQNLFLVSLAAADILVATLIIPFSLANELLGYWYFRRTWCEVYLALDVLFCTSSIVHLCXISLDRYWAVSRALEYNSKRTPRRIKCIILTVWLIAAVISLPPLVYKGD...
            'c+f  +m+m+ymv+fsfftwi+iplvvmcaiyl+if+virnklsqn+s+sketgafygref+takslflvlflfal+wlplsiinc++yfp+ +++lgillsh      i gnal ilavltsrslrapqnlflvslaaadilvatliipfslanellgywyfrrtwcevylaldvlfctssivhlc isldrywavsraleynskrtprrikciiltvwliaavislppl+ykgdq...
            'c+f  +m+m+ymv+fsfftwi+iplvvmcaiyl+if+virnklsqn+s+sketgafygref+takslflvlflfal+wlplsiinc++yfp+ +++lgillsh      i gnal ilavltsrslrapqnlflvslaaadilvatliipfslanellgywyfrrtwcevylaldvlfctssivhlc isldrywavsraleynskrtprrikciiltvwliaavislppl+ykgdq...
            ['XXVNEWFSRSDEMETSEDGCDWEXEKTDLKASDPQRAVTCATVRGCPSAGKGSVEDKVFGKTYRRKGSLANLSHSAXVTQECPLTSTVKRKRRTLSCLHPEDFIKKAGLAAAQKTPEKDTQGMKQSSQVTSIPNNN-ENETEGVAVQRXQNPSPVQSLEKESVPGMGTEPQSSSGNSMELEWNVCPPGAPQGNRLRKRSSARQVP--------HLSPPGHPELQIDTSTSSEEKGD...
            '  vnewfsrsde+ ts+d +d + ek+dl asdp++a++c++ r ++ + + ++edk+fgktyrrk sl nlsh + +tqe+plt+++krkrrt s+lhpedfikk+ la +qktpek ++g++q++qv++i nn+ enet+g  vq+ +n++p++slekes+  + +ep+sss ++mele+n++   ap+ nrlr++ss+r+++        + spp h elqid ++sseek+ +...
            '  vnewfsrsde+ ts+d +d + ek+dl asdp++a++c++ r ++ + + ++edk+fgktyrrk sl nlsh + +tqe+plt+++krkrrt s+lhpedfikk+ la +qktpek ++g++q++qv++i nn+enet+g  vq+ +n++p++slekes+  + +ep+sss ++mele+n++   ap+ nrlr++ss+r++++ spp h elqid ++sseek+ +s q++vrh+...
            ['XXNSSGMKSAFVTVRVLDTPSPPVNLKVTEITKDSVSITWEPPLLDGGSKIKNYIVEKREATRKSYAAVVTNCHKNSWKIDQLQEGCSYYFRVTAENEYGIGLPARTADPIKVAEVPQPPGKITVDDVTRNSVSLSWTKPEHDGGSKIIQYIVEMQAKHSEKWSECARVKSLEAVITNLTQGEEYLFRVVAVNEKGRSDPRSLAVPIIAKDLVIEPDVRPAFSSYSVQVGQDLKIE...
            '  nssg+ksafvtvrvldtpsppvnlkvteitkdsvsitwepplldggskiknyivekreatrksYaAvvTnchKnsWKidqLqeGcsYyFRVtAeneYGiGlpartadpiKvaeVpqPpgKitvdDVTRnSVSLsWtKPEHDGGSKIiqYiVEMQAKhseKWSeCARVKsLEAVITNLtQGEEYLFRVvAVNEKGRSDPRSLAVPi+AKDLVIEPDVRPaF+sYSvQVGqDLKIEV...
            '  nssg+ksafvtvrvldtpsppvnlkvteitkdsvsitwepplldggskiknyivekreatrksYaAvvTnchKnsWKidqLqeGcsYyFRVtAeneYGiGlpartadpiKvaeVpqPpgKitvdDVTRnSVSLsWtKPEHDGGSKIiqYiVEMQAKhseKWSeCARVKsLEAVITNLtQGEEYLFRVvAVNEKGRSDPRSLAVPi+AKDLVIEPDVRPaF+sYSvQVGqDLKIEV...
        ],
    ],
);

check_info_and_targets(
    file('test', 'hmmer_description.stdout'),
        [ 'GNTPAN12210_noloxo', 779 ],
        [
            [ 0, 1563.7, 0, 0, 1563.4, 0, 1.0, 1, 'L', 'oxodonta_africana@ENSLAFP00000006713_that is really long with strange stuff' ],
        ],
);

check_info_and_targets(
    file('test', 'hmmer_domthresh.stdout'),
        [ 'tmpfile_IV_h_model', 524 ],
        [
            [ 4.6e-05, 9.6, 21.6, 0.014, 1.4, 21.6, 3.0, 0, 'Scoe_bact|CAB99155', undef ],
        ],
);

check_domains(
    file('test', 'hmmer_domthresh.stdout'),
    [
        [],
    ],
);


sub check_iterations {
    my $infile          = shift;
    my $exp_iterations  = shift;

    ok my $report = $class->new( file => $infile ),
        'Hmmer::Standard constructor';
    isa_ok $report, $class, $infile;
    cmp_ok $report->count_iterations, '==', $exp_iterations,
        'got expected number of iterations';

    return;
}


sub check_info_and_targets {
    my $infile = shift;
    my $exp_info    = shift;
    my $exp_targets = shift;

    ok my $report = $class->new( file => $infile ),
        'Hmmer::Standard constructor';
    isa_ok $report, $class, $infile;

    my $iteration = $report->next_iteration;
    isa_ok $iteration, $class . '::Iteration';

    my @info_attrs = qw(query query_length);
    cmp_deeply [ map { $iteration->$_ } @info_attrs ], $exp_info,
        'got expected infos';

    my @target_attrs = qw(
        evalue score bias
        best_dom_evalue best_dom_score best_dom_bias
        exp dom
        query_name target_description
    );

    my $n = 0;
    while (my $target = $iteration->next_target) {
        ok $target, 'Hmmer::Standard::Target constructor';
        isa_ok $target, $class . '::Target';
        cmp_deeply [ map { $target->$_ } @target_attrs ],
            shift @{ $exp_targets },
            'got expected values for all methods for target-' . $n++
        ;
    }

    return;
}


sub check_domains {
    my $infile = shift;
    my $exp_targets = shift;

    ok my $report = $class->new( file => $infile ),
        'Hmmer::Standard constructor';
    isa_ok $report, $class, $infile;

    my $iteration = $report->next_iteration;
    isa_ok $iteration, $class . '::Iteration';

    for my $exp_target (@$exp_targets) {
        my $target = $iteration->next_target;
        ok @$exp_target == $target->count_domains,
            'got exp number of domains';

        my @dom_attrs = ( qw(score expect) );



( run in 0.415 second using v1.01-cache-2.11-cpan-71847e10f99 )