make test pass for multicat parsing with two xlsx files for testing.
[sgn.git] / t / unit / CXGN / SNPsIO.t
blob0217e352d9b53cd41aa653cdfb3a0fa5716e4862
2 use strict;
3 use Test::More;
5 use Data::Dumper;
6 use CXGN::SNPsIO;
7 use CXGN::SNPs;
9 my $io = CXGN::SNPsIO->new( { file => 't/data/test.file' }); #cassava_test.vcf' });
11 my @lines = ();
12 while (my $line = $io->next_line()) { 
13     push @lines, $line;
16 like($io->header(), qr/header/, "header test");
17 like($lines[0], qr/1/, "first line test");
18 like($lines[9], qr/10/, "last line test");
20 $io->close();
22 my $io = CXGN::SNPsIO->new( { file => 't/data/test_missing_header.txt' }); 
24 eval { 
25     while (my $snp_data = $io->next_line()) { 
26         
27     }
30 like($@, qr/Header not seen/, "missing header test");
32 $io->close();
34 $io = CXGN::SNPsIO->new( { file => 't/data/cassava_test.vcf' }); #cassava_test.vcf' });
36 my @lines = ();
38 my @ids  = qw(
39 S1_14740
40 S1_14743
41 S1_14746
42 S1_14748
43 S1_14749
44 S1_14750
45 S1_14755
46 S1_14757
47 S1_14895
48 S1_14897
49 S1_14900
50 S1_14901
51 S1_14907
52 S1_14909
53 S1_14911
54     );
56 my @depths = (24235,24235,24206,24235,24235,24235,24235,24235,25058,25058,25037,25058,25058,25058,25058);
58 my $format = "GT:AD:DP:GQ:PL";
60 my @snp_raw = qw( 
61 0/0:3,0:3:88:0,9,108
62 0/0:3,0:3:88:0,9,108
63 0/0:3,0:3:88:0,9,108
64 0/0:3,0:3:88:0,9,108
65 0/0:3,0:3:88:0,9,108
66 0/0:3,0:3:88:0,9,108
67 0/0:3,0:3:88:0,9,108
68 0/0:3,0:3:88:0,9,108
69 ./.:0,0:0:-1:-1,-1,-1
70 ./.:0,0:0:-1:-1,-1,-1
71 ./.:0,0:0:-1:-1,-1,-1
72 ./.:0,0:0:-1:-1,-1,-1
73 ./.:0,0:0:-1:-1,-1,-1
74 ./.:0,0:0:-1:-1,-1,-1
75 ./.:0,0:0:-1:-1,-1,-1
78 my @ref_counts = (3,3,3,3,3,3,3,3,0,0,0,0,0,0,0);
79 my @alt_counts = (0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
81 my $line = 0;
82 while (my $snps = $io->next()) { 
83     print STDERR "Processing snp ".$snps->id()."\n";
84     is($snps->id, $ids[$line], "ID test");
85     is($snps->depth, $depths[$line], "depth test");
86     is($snps->format, $format, "format test");
87     is($snps->snps->{'1002:250060174'}->vcf_string(), $snp_raw[$line], "raw data test line $line");
88     is($snps->snps->{'1002:250060174'}->ref_count(), $ref_counts[$line], "ref_count test line $line");
89     is($snps->snps->{'1002:250060174'}->alt_count(), $alt_counts[$line], "alt_count test line $line");
90     is($snps->snps->{'1002:250060174'}->accession(), '1002:250060174', "accession test");
91     my $af = $snps->calculate_allele_frequency_using_counts();
92 print STDERR " AF = $af\n";
93     $snps->calculate_dosages();
94 #    print STDERR "Calculating Hardy Weinberg filter...\n";
95     my %scores = $snps->hardy_weinberg_filter();
96    print STDERR Dumper(\%scores);
97     
99     
100     $line++;
103 done_testing();