求求大佬看看,不知道为什么,一直报错TAT 小白新手跪求解答
perl吧
全部回复
仅看楼主
level 1
CYJ雅 楼主
报错部分:
F:\R_>cd F:\R_\GTExTCGA\04.mergeExpSite
F:\R_\GTExTCGA\04.mergeExpSite>perl GTEx.mergeExpSite.pl NOTCH3
Global symbol "@samp1e" requires explicit package name (did you forget to declare "my @samp1e"?) at GTEx.mergeExpSite.pl line 113.
Execution of GTEx.mergeExpSite.pl aborted due to compilation errors.
F:\R_\GTExTCGA\04.mergeExpSite>
代码:
use strict;
use warnings;
my $siteFile="site.txt"; #site文件
my $expFile="GTExSymbol.txt"; #表达文件
my $sampleFile="all";
my $geneFile="All";
my $geneName=$ARGV[0]; #基因名字,从cmd输入
chomp($geneName);
my %geneHash=();
my %genderHash=();
$geneHash{"$geneName"}=1;
#site转换,转换成解剖图需要的名称
my %sitHash=(
"Adipose Tissue"=>"adipose_tissue",
"Adrenal Gland"=>"adrenal_gland",
"Bladder"=>"urinary_bladder",
"Blood"=>"blood",
"Blood Vessel"=>"blood_vessel",
"Bone Marrow"=>"bone_marrow",
"Brain"=>"brain",
"Breast"=>"breast",
"Cervix Uteri"=>"uterine_cervix",
"Colon"=>"colon",
"Esophagus"=>"esophagus",
"Fallopian Tube"=>"fallopian_tube",
"Heart"=>"heart",
"Kidney"=>"kidney",
"Liver"=>"liver",
"Lung"=>"lung",
"Muscle"=>"skeletal_muscle",
"Nerve"=>"nerve",
"Ovary"=>"ovary",
"Pancreas"=>"pancreas",
"Pituitary"=>"pituitary_gland",
"Prostate"=>"prostate",
"Salivary Gland"=>"salivary_gland",
"Skin"=>"skin",
"Small Intestine"=>"small_intestine",
"Spleen"=>"spleen",
"Stomach"=>"stomach",
"Testis"=>"testis",
"Thyroid"=>"thyroid_gland",
"Uterus"=>"uterus",
"Vagina"=>"vagina",
);
my %sampleHash=();
if($sampleFile ne 'all')
{
open(RF,"$sampleFile") or die $!;
while(my $line=<RF>)
{
chomp($line);
$line=~s/\s+//g;
$sampleHash{$line}=1;
}
close(RF);
}
#读取site文件,保存为hash
my %hash=();
open(RF,"$siteFile") or die $!;
while(my $line=<RF>)
{
next if($line=~/^\n/);
chomp($line);
my @arr=split(/\t/,$line);
my $sampleName=shift(@arr);
if(exists $sitHash{$arr[0]}){
$hash{$sampleName}=$sitHash{$arr[0]};
$genderHash{$sampleName}=$arr[1];
}
}
close(RF);
$hash{"id"}="futime\tfustat";
#读取表达文件,并将表达文件和site文件合并
my @sampleName=();
my %expHash=();
my @geneListArr=();
open(RF,"$expFile") or die $!;
MARK:while(my $line=<RF>)
{
chomp($line);
my @arr=split(/\t/,$line);
if($.==1)
{
@sampleName=@arr;
}
else
{
my @zeroArr=split(/\|\|/,$arr[0]);
my $flag=0;
if(($geneFile eq 'all') || (exists $geneHash{$zeroArr[0]}))
{
$flag=1;
}
if($flag==1)
{
push(@geneListArr,$zeroArr[0]);
for(my $i=1;$i<=$#arr;$i=$i+1)
{
my @subArr=split(/\-/,$sampleName[$i]); if($samp1e[4]>6){next;}
my $subName=$sampleName[$i];
if(exists $hash{$subName}) #
{
${$expHash{$subName}}{$zeroArr[0]}=$arr[$i];
}
}
last MARK;
}
}
}
close(RF);
#输出表达和site合并后的文件
open(WF,">expSite.txt") or die $!;
print WF "id\torgan\tGender\tvalue\n";
my %female=();
my %male=();
foreach my $key(keys %expHash)
{
my $flag=0;
if(($sampleFile eq 'all')|| (exists $sampleHash{$key}))
{
$flag=1;
}
if($flag==1)
{
print WF $key ."\t" . $hash{$key} . "\t" . $genderHash{$key};
foreach my $gene(@geneListArr)
{
print WF "\t" . ${$expHash{$key}}{$gene};
if($genderHash{$key} eq "male"){
push(@{$male{$hash{$key}}},${$expHash{$key}}{$gene});
}
else{
push(@{$female{$hash{$key}}},${$expHash{$key}}{$gene});
}
}
print WF "\n";
}
}
close(WF);
#输出男性和女性解剖图输入文件
open(MALE,">male.txt") or die $!;
open(FEMALE,">female.txt") or die $!;
print MALE "organ\ttype\tvalue\n";
print FEMALE "organ\ttype\tvalue\n";
foreach my $key(keys %male){
next if($key=~/blood/);
print MALE $key. "\tother\t" . mid(@{$male{$key}}) . "\n";
}
foreach my $key(keys %female){
next if($key=~/blood/);
print FEMALE $key. "\tother\t" . mid(@{$female{$key}}) . "\n";
}
close(MALE);
close(FEMALE);
#定义求均值子函数
sub mid{
my @list = sort{$a<=>$b} @_;
my $count = @list;
if( $count == 0 )
{
return undef;
}
if(($count%2)==1){
return $list[int(($count-1)/2)];
}
elsif(($count%2)==0){
return ($list[int(($count-1)/2)]+$list[int(($count)/2)])/2;
}
}
2021年06月02日 15点06分 1
level 1
CYJ雅 楼主
求求了 5555
2021年06月02日 15点06分 2
level 6
报错已经提示出来这个变量没有声明
下边这里框住的代码可以去掉,貌似是你删除了时间控制的代码,没删完
2021年06月03日 01点06分 3
1