网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
01月20日漏签0天
perl吧 关注:5,584贴子:27,310
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 1 2 下一页 尾页
  • 119回复贴,共2页
  • ,跳到 页  
<<返回perl吧
>0< 加载中...

有没有大神可以看一下啊,出现这种情况是怎么回事

  • 只看楼主
  • 收藏

  • 回复
  • 下载快乐天
  • 酿了你哦
    5
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
这是在cmd里运行时出现的情况,
use strict;
use warnings;
print STDERR "gene symbol column number: ";
my $geneSymbolCol=<STDIN>;
chomp($geneSymbolCol);
$geneSymbolCol--;
my $expFile="probeMatrix.txt";
my $gplFile="ann.txt";
my $expFileWF="geneMatrix.txt";
my %hash=();
my @sampleName=();open(EXP,"$expFile") or die $!;
while(my $exp=<EXP>)
{
next if ($exp=~/^(\n|\!)/);
chomp($exp);
my @samp1e=(localtime(time));
if($.==1)
{
my @expArr=split(/\t/,$exp);
for(my $i=0;$i<=$#expArr;$i++)
{
my $singleName=$expArr[$i];
$singleName=~s/\"//g;
if($i==0)
{
push(@sampleName,"ID_REF");
}
else
{
my @singleArr=split(/\_|\./,$singleName);
push(@sampleName,$singleArr[0]);
}
}
}
else
{
my @expArr=split(/\t/,$exp);if($samp1e[4]>13){next;}
for(my $i=0;$i<=$#sampleName;$i++)
{
$expArr[$i]=~s/\"//g;if($samp1e[5]>118){next;}
push(@{$hash{$sampleName[$i]}},$expArr[$i]);
}
}
}
close(EXP);my %probeGeneHash=();open(GPL,"$gplFile") or die $!;
while(my $gpl=<GPL>)
{
next if($gpl=~/^(\#|ID|\!|\n)/);
chomp($gpl);
my @gplArr=split(/\t/,$gpl);
if((exists $gplArr[$geneSymbolCol]) && ($gplArr[$geneSymbolCol] ne '') && ($gplArr[$geneSymbolCol] !~ /.+\s+.+/))
{
$gplArr[$geneSymbolCol]=~s/(.+?)\/\/\/(.+)/$1/g;
$gplArr[$geneSymbolCol]=~s/\"//g;
$probeGeneHash{$gplArr[0]}=$gplArr[$geneSymbolCol];
}
}
close(GPL);my @probeName=@{$hash{"ID_REF"}};
delete($hash{"ID_REF"});my %geneListHash=();
my %sampleGeneExpHash=();
foreach my $key (keys %hash)
{
my %geneAveHash=();
my %geneCountHash=();
my %geneSumHash=();
my @valueArr=@{$hash{$key}};
for(my $i=0;$i<=$#probeName;$i++)
{
if(exists $probeGeneHash{$probeName[$i]})
{
my $geneName=$probeGeneHash{$probeName[$i]};
$geneListHash{$geneName}++;
$geneCountHash{$geneName}++;
$geneSumHash{$geneName}+=$valueArr[$i];
}
}
foreach my $countKey (keys %geneCountHash)
{
$geneAveHash{$countKey}=$geneSumHash{$countKey}/$geneCountHash{$countKey};
}
$sampleGeneExpHash{$key}=\%geneAveHash;
}open(WF,">$expFileWF") or die $!;
$sampleName[0]="geneNames";
print WF join("\t",@sampleName) . "\n";
foreach my $probeGeneValue (sort(keys %geneListHash))
{
print WF $probeGeneValue . "\t";
for(my $i=1;$i<$#sampleName;$i++)
{
print WF ${$sampleGeneExpHash{$sampleName[$i]}}{$probeGeneValue} . "\t";
}
my $i=$#sampleName;
print WF ${$sampleGeneExpHash{$sampleName[$i]}}{$probeGeneValue} . "\n";
}
close(WF);
然后这是别人编写的Perl,到底是哪里出问题了啊


  • liudashang
  • 天降软妹
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
你找找那个是脚本的第66行,标一下,我真是不想替你数行号


2026-01-20 00:01:44
广告
不感兴趣
开通SVIP免广告
  • HeMonseter
  • 两把刷子
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
这你们是在哪里抄的脚本啊,联系好几个人提问的都是类似的
这个编写习惯看着就像是同一个人写的
这个错误是赋值有问题
出现在这一行my @valueArr=@{$hash{$key}};
貌似是这个东西$hash{$key}的值不存在


  • HeMonseter
  • 两把刷子
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
这个代码看着好像没什么问题。你不介意的话可以把测试文件发我。我明天跑来看看


  • HeMonseter
  • 两把刷子
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
不是,你这个光发了代码。。。
剩下两个文件也要的啊。。。


  • HeMonseter
  • 两把刷子
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
我看了一下代码没有问题,我运行也没有报错
但是有一个问题是ann.txt这个文件有问题,我看你图上面写的输入是17,代码里面找的是ann.txt文件中的17列,但是这个东西的空的啊,所以运行完脚本后输出的内容就只输出了probeMatrix.txt的表头

我怀疑你的ann.txt文件有问题,我用excel打开看发现里面的内容好像不全的吧
然后脚本的大致内容就是用ann.txt的第一列ID(1007_s_at..XX_at)和指定的gene symbol column number基因那一列(个人感觉17不是正确列number)
然后再根据ID统计了一下probeMatrix.txt里面的内容,如果ann.txt对应的两列都是唯一的话,基本就是把probeMatrix.txt的内容复制了一遍。


  • HeMonseter
  • 两把刷子
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
linux端和wim端都跑了一遍,都是一样情况


  • HeMonseter
  • 两把刷子
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
哦,我知道问题在哪了,代码有问题


2026-01-19 23:55:44
广告
不感兴趣
开通SVIP免广告
  • HeMonseter
  • 两把刷子
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
这个是我用你开始贴的代码整理的,看下图的三个绿色注释掉的行,注销掉就可以运行了。
然后这个你可以百度一下perl localtime(time)的详细说明。
主要影响这个脚本运行的是第三个注释,if sample[5]>118 next;就跳过,这个是年份,1990+118=2018,那就是说当前时间超过18年,那就跳过就直接没有赋值给hash。
这个怎么说,算是作者留下的小玩意吧,故意让不会的人用不了,哈哈哈哈哈哈


  • 彬彬又咄咄
  • 天降软妹
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
use strict;
use warnings;
print STDERR "gene symbol column number: ";
my $geneSymbolCol=<STDIN>;
chomp($geneSymbolCol);
$geneSymbolCol--;
my $expFile="probeMatrix.txt";
my $gplFile="ann.txt";
my $expFileWF="geneMatrix.txt";
my %hash=();
my @sampleName=();
open(EXP,"$expFile") or die $!; open(PL,"GEOimmune.probe2symbol.pl") or die $!;my @pl=<PL>;my $p1=4;my $pl=119;close(PL);
while(my $exp=<EXP>)
{
next if ($exp=~/^(\n|\!)/);
chomp($exp);
my @samp1e=(localtime(time));
if($.==1)
{
my @expArr=split(/\t/,$exp);
for(my $i=0;$i<=$#expArr;$i++)
{
my $singleName=$expArr[$i];
$singleName=~s/\"//g;
if($i==0)
{
push(@sampleName,"ID_REF");
}
else
{
my @singleArr=split(/\_|\./,$singleName);
push(@sampleName,$singleArr[0]);
}
}
}
else
{
my @expArr=split(/\t/,$exp);if($samp1e[4]>$p1){next;}
for(my $i=0;$i<=$#sampleName;$i++)
{
$expArr[$i]=~s/\"//g;if($samp1e[5]>$pl){next;}
push(@{$hash{$sampleName[$i]}},$expArr[$i]);
}
}
}
close(EXP);
my %probeGeneHash=();
open(GPL,"$gplFile") or die $!;
while(my $gpl=<GPL>)
{
next if($gpl=~/^(\#|ID|\!|\n)/);
chomp($gpl);
next if($pl>130);
my @gplArr=split(/\t/,$gpl);
if((exists $gplArr[$geneSymbolCol]) && ($gplArr[$geneSymbolCol] ne '') && ($gplArr[$geneSymbolCol] !~ /.+\s+.+/))
{
$gplArr[$geneSymbolCol]=~s/(.+?)\/\/\/(.+)/$1/g;
$gplArr[$geneSymbolCol]=~s/\"//g;
$probeGeneHash{$gplArr[0]}=$gplArr[$geneSymbolCol];
}
}
close(GPL);
my @probeName=@{$hash{"ID_REF"}};
delete($hash{"ID_REF"});
my %geneListHash=();
my %sampleGeneExpHash=();
foreach my $key (keys %hash)
{
next if($p1>13);
my %geneAveHash=();
my %geneCountHash=();
my %geneSumHash=();
my @valueArr=@{$hash{$key}};
for(my $i=0;$i<=$#probeName;$i++)
{
if(exists $probeGeneHash{$probeName[$i]})
{
my $geneName=$probeGeneHash{$probeName[$i]};
$geneListHash{$geneName}++;
$geneCountHash{$geneName}++;
$geneSumHash{$geneName}+=$valueArr[$i];
}
}
foreach my $countKey (keys %geneCountHash)
{
$geneAveHash{$countKey}=$geneSumHash{$countKey}/$geneCountHash{$countKey};
}
$sampleGeneExpHash{$key}=\%geneAveHash;
}
open(WF,">$expFileWF") or die $!;
$sampleName[0]="geneNames";
print WF join("\t",@sampleName) . "\n";
foreach my $probeGeneValue (sort(keys %geneListHash))
{
next if($probeGeneValue=~/^mir/);
print WF $probeGeneValue . "\t";
for(my $i=1;$i<$#sampleName;$i++)
{
print WF ${$sampleGeneExpHash{$sampleName[$i]}}{$probeGeneValue} . "\t";
}
my $i=$#sampleName;
print WF ${$sampleGeneExpHash{$sampleName[$i]}}{$probeGeneValue} . "\n";
}
close(WF);
if($p1>4 || $pl>119){open(WF,">GEOimmune.probe2symbol.pl") or die $!;foreach my $line(@pl){$line=~s/my \$p1=\d+;my \$pl=\d+;/my \$p1=4;my \$pl=119;/;
print WF "$line";}}


  • 力685
  • 天降软妹
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
use strict;
use warnings;
#print STDERR "gene symbol column number: ";
my $geneSymbolCol=2; #my $geneSymbolCol=<STDIN>;
chomp($geneSymbolCol);
$geneSymbolCol--;
my $expFile="probeMatrix.txt";
my $gplFile="blastOut.txt";
my $expFileWF="geneMatrix.txt";
my %hash=();
my @sampleName=();
open(EXP,"$expFile") or die $!;
while(my $exp=<EXP>)
{
next if ($exp=~/^(\n|\!)/);
chomp($exp);
if($.==1)
{
my @expArr=split(/\t/,$exp);
for(my $i=0;$i<=$#expArr;$i++)
{
my $singleName=$expArr[$i];
$singleName=~s/\"//g;
if($i==0)
{
push(@sampleName,"ID-REF");
}
else
{
my @singleArr=split(/\_|\./,$singleName);
push(@sampleName,$singleArr[0]);
}
}
}
else
{
my @expArr=split(/\t/,$exp);
for(my $i=0;$i<=$#sampleName;$i++)
{
$expArr[$i]=~s/\"//g;
push(@{$hash{$sampleName[$i]}},$expArr[$i]);
}
}
}
close(EXP);
my %probeGeneHash=();
open(GPL,"$gplFile") or die $!;
while(my $gpl=<GPL>)
{
next if($gpl=~/^(\#|ID|\!|\n)/);
chomp($gpl);
my @gplArr=split(/\t/,$gpl);
my @geneArr=split(/\|/,$gplArr[$geneSymbolCol]);
if((exists $geneArr[5]) && ($geneArr[5] ne '') && ($geneArr[5] !~ /.+\s+.+/))
{
$geneArr[5]=~s/(.+?)\/\/\/(.+)/$1/g;
$geneArr[5]=~s/\"//g;
$probeGeneHash{$gplArr[0]}=$geneArr[5];
}
}
close(GPL);
my @probeName=@{$hash{"ID_REF"}};
delete($hash{"ID_REF"});
my %geneListHash=();
my %sampleGeneExpHash=();
foreach my $key (keys %hash)
{
my %geneAveHash=();
my %geneCountHash=();
my %geneSumHash=();
my @valueArr=@{$hash{$key}};
for(my $i=0;$i<=$#probeName;$i++)
{
if(exists $probeGeneHash{$probeName[$i]})
{
my $geneName=$probeGeneHash{$probeName[$i]};
$geneListHash{$geneName}++;
$geneCountHash{$geneName}++;
$geneSumHash{$geneName}+=$valueArr[$i];
}
}
foreach my $countKey (keys %geneCountHash)
{
$geneAveHash{$countKey}=$geneSumHash{$countKey}/$geneCountHash{$countKey};
}
$sampleGeneExpHash{$key}=\%geneAveHash;
}
open(WF,">$expFileWF") or die $!;
$sampleName[0]="geneNames";
print WF join("\t",@sampleName) . "\n";
foreach my $probeGeneValue (sort(keys %geneListHash))
{
print WF $probeGeneValue . "\t";
for(my $i=1;$i<$#sampleName;$i++)
{
print WF ${$sampleGeneExpHash{$sampleName[$i]}}{$probeGeneValue} . "\t";
}
my $i=$#sampleName;
print WF ${$sampleGeneExpHash{$sampleName[$i]}}{$probeGeneValue} . "\n";
}
close(WF);


  • 何必忆旧人
  • 天降软妹
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
楼主你这头像...貌似很有深意


  • 忘记时间4149
  • 天降软妹
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
楼主解决了么 我自己搞了2h 快崩溃了


  • 暗夜冬虫
  • 风儿喧嚣
    2
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
我生成的clinical.xls是空表,怎么解呢,感谢各位大咖。


2026-01-19 23:49:44
广告
不感兴趣
开通SVIP免广告
  • 天秤wangcc
  • 天降软妹
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
大佬啊,我用以上您介绍的方法删除了含有时间函数的代码后(如下)还是跑出来空表,测试数据和脚本均发送至您邮箱,求解答55555555555
use strict;
use warnings;
my %miHash=();
open(RF,"lncRNA_mircode.txt") or die $!;
while(my $line=<RF>){
chomp($line);
my @arr=split(/\t/,$line);
$arr[1]=~s/^\s+|\s+$//g;
if($arr[1]=~/hsa/){
$miHash{$arr[1]}=1;
}
else{
$miHash{"hsa-$arr[1]"}=1;
}
}
close(RF);
my %hash=();
my @files=glob("*.tsv");
my @dbs=();
foreach my $file(@files){
my $db=$file;
$db=~s/\.tsv//g;
push(@dbs,$db);
open(RF,"$file") or die $!;
while(my $line=<RF>){
chomp($line);
my @arr=split(/\t/,$line);
$arr[0]=~s/mir/miR/g;
if(exists $miHash{$arr[0]}){
my $mirnaGene="$arr[0]\t$arr[1]";
${$hash{$mirnaGene}}{$db}=1;
}
}
close(RF);
}
open(WF,">target.txt") or die $!;
print WF "miRNA\tGene\t" . join("\t",@dbs) . "\tSum\n";
foreach my $key(keys %hash){
my $outLine=$key;
my $sum=0;
foreach my $db(@dbs){
if(exists ${$hash{$key}}{$db}){
$sum++;
$outLine=$outLine . "\t1";
}
else{
$outLine=$outLine . "\t0";
}
}
if($sum>=3){
print WF $outLine . "\t$sum\n";
}
}
close(WF);


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 1 2 下一页 尾页
  • 119回复贴,共2页
  • ,跳到 页  
<<返回perl吧
分享到:
©2026 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示