#!/usr/bin/perl use strict; use warnings; my ($output_dir, $cancer_type) = @ARGV; die "useage:perl $0 output_dir cancer_type" unless @ARGV == 2; my $database_path = defined $ENV{'DATABASE'} ? $ENV{'DATABASE'} : "/dataseq/jmdna/codes/reportbase"; print "Indication药物注释使用路径:$database_path\n"; open OUT, ">$output_dir/mutation/indication.txt"; print OUT "基因\t检测内容\t检测情况\t肿瘤类型\n"; ##本癌种FDA/NMPA/NCCN批准基因检测 =pod ##疾病翻译信息 open DIS,"/dataseq/jmdna/codes/reportbase/cancer_type.txt"; my (%dis,%dis2); ; while(){ chomp; my @line=split(/\t/); $dis{lc$line[0]}=$line[1]; push @{$dis2{$line[3]}},$line[0]; push @{$dis2{$line[4]}},$line[0]; } =cut open DIS, "$database_path/oncotree.cancertype.20230801.txt"; ; my (%dis, @id, %dis2); while () { chomp; my @line = split(/\t/); $dis{lc $line[2]} = $line[3]; # $dis{lc $line[4]} = $line[5]; push @{$dis2{$line[0]}}, lc $line[2]; # push @{$dis2{$line[0]}}, lc $line[4]; push @id, $line[0]; } foreach my $ID ($cancer_type) { my @family; my @ids = split("", $ID); for (my $i = 1; $i < @ids; $i = $i + 2) { push @family, join("", @ids[0 .. $i]); } push @family, (grep {/^$ID/} @id); foreach my $t (@family) { push @{$dis2{$ID}}, @{$dis2{$t}}; } } foreach my $key (keys(%dis2)) { my %uniq; @{$dis2{$key}} = grep {++$uniq{$_} < 2} @{$dis2{$key}}; } ##靶向用药信息 open THERAPY, "$database_path/targetTherapy.txt"; ; my %therapy; my %cancer; while () { chomp; my @line = split("\t"); if ($line[9] eq 'V' and $line[14] eq 'A' and (grep {lc $line[2] eq lc $_} @{$dis2{$cancer_type}}) and $line[0] !~ /,/) { push @{$cancer{$line[0]}}, $dis{lc $line[2]} if !(grep {$_ eq $dis{lc $line[2]}} @{$cancer{$line[0]}}); if ($line[1] =~ /fusion/i) { push @{$therapy{$line[0]}}, '融合' if !(grep {$_ eq '融合'} @{$therapy{$line[0]}}); } elsif ($line[1] eq "Deletion" or $line[1] =~ /Amplification/) { push @{$therapy{$line[0]}}, '扩增' if !(grep {$_ eq '扩增'} @{$therapy{$line[0]}}); } else { push @{$therapy{$line[0]}}, '突变' if !(grep {$_ eq '突变'} @{$therapy{$line[0]}});; } } } for my $gene (sort keys %therapy) { print OUT "$gene\t", join("/", @{$therapy{$gene}}), "\t未检出变异\t", join("/", @{$cancer{$gene}}), "\n"; }