comparison cf_scripts/split_for_velvet.pl @ 1:4a3afa90ff7f draft

Uploaded
author geert-vandeweyer
date Mon, 28 Jul 2014 05:53:55 -0400
parents
children
comparison
equal deleted inserted replaced
0:1b008b4b05f3 1:4a3afa90ff7f
1 #!/usr/bin/perl
2
3 use strict;
4 my %read1;
5 my %read2;
6 my %qual1;
7 my %qual2;
8
9 while (my $line=<STDIN>) {
10 chomp();
11 my ($name, $flag, $chr1, $pos1, $mq, $cigar, $chr2, $pos2, $dist, $seq, $quals, $stuff)=split(/\s+/, $line);
12 if($flag & 16) { #reverse-complement it
13 $seq=reverse($seq);
14 $seq=~tr/ACGT/TGCA/;
15 $quals=reverse($quals);
16 }
17 if($flag & 64) { #first in pair
18 $read1{$name}=$seq;
19 $qual1{$name}=$quals;
20 }
21 else {
22 $read2{$name}=$seq;
23 $qual2{$name}=$quals;
24 }
25 }
26
27 open(FQ1, ">$ARGV[0]") or die "Can't open $ARGV[0]";
28 open(FQ2, ">$ARGV[1]") or die "Can't open $ARGV[1]";
29 open(FQ3, ">$ARGV[2]") or die "Can't open $ARGV[2]";
30
31 foreach my $key(keys %read1) {
32
33 if(exists $read2{$key}) {
34 print FQ1 "\@$key\n$read1{$key}\n+\n$qual1{$key}\n";
35 print FQ2 "\@$key\n$read2{$key}\n+\n$qual2{$key}\n";
36 }
37 else {
38 print FQ3 "\@$key\n$read1{$key}\n+\n$qual1{$key}\n";
39 }
40 }
41 foreach my $key(keys %read2) {
42
43 if(!(exists $read1{$key})) {
44 print FQ3 "\@$key\n$read2{$key}\n+\n$qual2{$key}\n";
45 }
46 }
47 close(FQ1);
48 close(FQ2);
49 close(FQ3);
50
51
52
53