-
Notifications
You must be signed in to change notification settings - Fork 45
/
Copy pathsave_single_fq.pl
executable file
·61 lines (56 loc) · 1.06 KB
/
save_single_fq.pl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#!/usr/bin/perl -w
use strict;
!@ARGV and die "perl $0 input.fastq.mate input.fastq\n";
my $f1 = shift;
my $f2 = shift;
if ($f1 =~ /\.gz$/) {
open F1, "-|", "gzip -cd $f1" or die;
}else{
open F1, '<', "$f1" or die;
}
if ($f2 =~ /\.gz$/) {
open F2, "-|", "gzip -cd $f2" or die;
}else{
open F2, '<', "$f2" or die;
}
open OS2, '>', "$f2.single" or die;
my ($k1, $k2);
$k1 = -1;
$k2 = -2;
# my ($record1, $record2);
my $is_out = 1;
FILE1:
while (my $l1 = <F1>) {
my $n1 = $. % 4;
$. % 1000000 == 1 and warn "[Stat]$. line in $f1\n";
if ($n1 == 1) {
# $l1 = "\@$l1";
($k1) = ($l1 =~ /^@(\S+)\/1/);
FILE2:
while (my $l2 = <F2>) {
my $n2 = $. % 4;
if ($n2 == 1) {
$l2 = "\@$l2";
($k2) = ($l2 =~ /^@(\S+)\/[12]/);
if ($k1 eq $k2) {
$is_out = 0;
last FILE2;
}else{
$is_out = 1;
}
}
$is_out == 1 and print OS2 $l2;
}#file2
}
}
while (my $l2 = <F2>) {
my $n2 = $. % 4;
if ($n2 == 1) {
$l2 = "\@$l2";
$is_out = 1;
}
$is_out == 1 and print OS2 $l2;
}
close F1;
close F2;
close OS2;