-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathps_pl2_pvar_edit.pl
More file actions
90 lines (83 loc) · 2.02 KB
/
ps_pl2_pvar_edit.pl
File metadata and controls
90 lines (83 loc) · 2.02 KB
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#/usr/bin/perl
use strict;
use warnings;
my $in_file_name = $ARGV[0];
my $out_file_name = $ARGV[1];
my $line;
my $line2;
my $header_line_no = 0;
open(my $fin, '<', $in_file_name) or die($!);
my $l = 1;
while(defined ($line = <$fin>)){
chomp ($line);
my @fields = split(/\t/, $line);
if ($fields[0] eq "#CHROM") {
$header_line_no = $l;
last;
}
$l++;
}
close $fin;
my $bim_col_nu = 0;
if ($header_line_no == 0) {
open(my $fin2, '<', $in_file_name) or die($!);
my $l3 = 1;
my $line3;
while(defined ($line3 = <$fin2>)){
if ($l3 == 1) {
chomp ($line3);
my @fields = split(/\t/, $line3);
$bim_col_nu = $#fields + 1;
last;
}
$l3++;
}
close $fin2;
}
open (my $fout, q{>>}, $out_file_name) or die($!);
open(my $fin3, '<', $in_file_name) or die($!);
my $l2 = 1;
while(defined ($line2 = <$fin3>)){
if ($header_line_no == 0) {
chomp ($line2);
my @fields = split(/\t/, $line2);
my $variant_id = "";
if ($bim_col_nu == 5) {
if ($fields[1] eq ".") {
$variant_id = $fields[0].":".$fields[2];
} else {
$variant_id = $fields[1];
}
print $fout $fields[0]." ".$variant_id." ".$fields[2]." ".$fields[3]." ".$fields[4]."\n";
} elsif ($bim_col_nu == 6) {
if ($fields[1] eq ".") {
$variant_id = $fields[0].":".$fields[3];
} else {
$variant_id = $fields[1];
}
print $fout $fields[0]." ".$variant_id." ".$fields[2]." ".$fields[3]." ".$fields[4]." ".$fields[5]."\n";
}
} else {
if ($l2 <= $header_line_no) {
print $fout $line2;
} else {
chomp ($line2);
my @fields = split(/\t/, $line2);
my $variant_id = "";
if ($fields[2] eq ".") {
$variant_id = $fields[0].":".$fields[1];
} else {
$variant_id = $fields[2];
}
my $line_out = $fields[0]." ".$fields[1]." ".$variant_id;
for (my $i=3; $i <= $#fields; $i++ ) {
$line_out .= " ".$fields[$i];
}
print $fout $line_out."\n";
}
}
$l2++;
}
close $fin3;
close $fout;
1;