Skip to content

Commit 59e57a5

Browse files
committed
feat: add sample count generation to output
1 parent e6ab156 commit 59e57a5

1 file changed

Lines changed: 41 additions & 5 deletions

File tree

bin/gauchian_enrich

Lines changed: 41 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ my $help = 0;
2020
my $version = 0;
2121
my $gauchian_tsv;
2222
my $annotated_tsv;
23+
my $sample_count_tsv;
2324

2425
GetOptions ("i|input=s" => \$gauchian_tsv,
2526
"o|output=s" => \$annotated_tsv,
@@ -44,12 +45,15 @@ if (!defined($gauchian_tsv) || $gauchian_tsv eq "") {
4445
exit;
4546
}
4647

48+
my $input_filename = basename($gauchian_tsv);
49+
$input_filename =~ s/\.[^.]+$//;
4750
if (!defined($annotated_tsv) || $annotated_tsv eq "") {
48-
my $input_filename = basename($gauchian_tsv);
49-
$input_filename =~ s/\.[^.]+$//;
5051
$annotated_tsv = $input_filename . ".annotated.tsv";
5152
}
5253

54+
$sample_count_tsv = $annotated_tsv;
55+
$sample_count_tsv =~ s/\.tsv$/.counts.tsv/;
56+
5357
my $transvar_path = `which transvar`;
5458
chomp($transvar_path);
5559

@@ -92,9 +96,9 @@ while(my $rec=<TSV>){
9296
}
9397
$pm->wait_all_children;
9498

95-
my $absolute_path = abs_path($annotated_tsv);
96-
97-
print "Output written to $absolute_path\n";
99+
my $absolute_path_tsv = abs_path($annotated_tsv);
100+
print_count($absolute_path_tsv,$sample_count_tsv);
101+
print "Output written to\n$absolute_path_tsv\n$sample_count_tsv\n";
98102

99103
sub rev_annotate {
100104
my ($var,$rec) = (@_);
@@ -117,4 +121,36 @@ sub print_help {
117121
print("gauchian_enrich --input or -i <gauchian_tsv> [--output or -o <output_file_with_path>]\n\n");
118122
print("Example:\n");
119123
print("gauchian_enrich --input example/gauchian.output.tsv --output example/gauchian.enriched.output.tsv\n");
124+
}
125+
126+
sub print_count {
127+
my ($ann,$countfile) = (@_);
128+
my %variant_map;
129+
open(ANN,"$ann") or die "can't open the annotation table\n";
130+
my $ann_header=<ANN>; chomp $ann_header;
131+
while(my $rec=<ANN>){
132+
my @tmp = split("\t",$rec);
133+
my @coordinates;
134+
if($tmp[12]){
135+
@coordinates = split("/",$tmp[12]);
136+
}
137+
if ($coordinates[-1]){
138+
push @{$variant_map{$coordinates[-1]}},$tmp[0];
139+
}
140+
if($tmp[5]=~ m/RecNciI/){
141+
push @{$variant_map{$tmp[5]}},$tmp[0];
142+
}
143+
if ( $tmp[3] =~ /^\d+$/ && $tmp[3] != 4 ) {
144+
my $cn_key = "CN(GBA+GBAP1) = ".$tmp[3];
145+
push @{$variant_map{$cn_key}},$tmp[0];
146+
}
147+
}
148+
open(CN,">$countfile") or die "can't write to $countfile";
149+
print CN "Variant\tSample_count\tSample\n";
150+
foreach my $var(sort keys %variant_map){
151+
my @ids = @{$variant_map{$var}};
152+
my %seen;
153+
my @uniq_vars = grep { $_ ne 'None' && !$seen{$_}++ } @ids;
154+
print CN "$var\t".scalar(@uniq_vars)."\t".join(",",sort @uniq_vars)."\n";
155+
}
120156
}

0 commit comments

Comments
 (0)