#!/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,"/dataseq/jmdna/codes/reportbase/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"; }