免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 6609 | 回复: 25
打印 上一主题 下一主题

有个脚本一运行就报错,大家看看是什么问题?在线等 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-09-11 10:12 |只看该作者 |倒序浏览
本帖最后由 321wangke321 于 2014-09-11 15:01 编辑

use strict;
use warnings;
use common;

###perl get_promoter.pl  F:\perl software\promoter extraction\Prunus_persica_v1.0_scaffolds gene.fa  F:\perl software\promoter extraction\glycolysis.txt  Prunus_persica_v1.0_scaffolds.fa
open GFF,"$ARGV[0]";
my %hash_gene=();
while(<GFF>)
{
        chomp;
        next  unless /gene/;
        my ($gene_name)=(split(/\t/,$_))[9-1];
        $gene_name=~/ID=(.*?);/;
        $gene_name=$1;
        $hash_gene{$gene_name}=$_;
}

my %genome_hash=&create_hash_($ARGV[2]);

open TF,$ARGV[1];
while(<TF>)
{
        chomp;
        my ($id,$start,$strand)=(split(/\t/,$hash_gene{$_}))[1-1,4-1,7-1];
        &get_genome_seq(\%genome_hash,$id,$strand,$start-1000,$start+200,$_."promoter");
}

sub get_genome_seq
{
        my($genome_hash,$id,$strand,$start,$end,$fasta_title)=@_;
        if(defined($fasta_title))
        {
                if($strand eq "+")
                {
                        print ">",$fasta_title,"\n";
                        print substr($$genome_hash{$id},$start-1,$end-$start+1),"\n";
                }
                else
                {
                        print ">",$fasta_title,"\n";
                        print &reverse_com(substr($$genome_hash{$id},$start-1,$end-$start+1)),"\n";
                }
  }
  else
  {
                if($strand eq "+")
                {
                        print ">",$id,"_",$start,"_",$end,"_",$strand,"\n";
                        print substr($$genome_hash{$id},$start-1,$end-$start+1),"\n";
                }
                else
                {
                        print ">",$id,"_",$start,"_",$end,"_",$strand,"\n";
                        print &reverse_com(substr($$genome_hash{$id},$start-1,$end-$start+1)),"\n";
                }         
  }
}


sub create_hash_
{
        my ($file)=@_;
        my %hash=();
        open FILE, $file;
        my $title;
        while(<FILE>)
        {
                chomp;
                if(/>(.*)/)
                {
                        $title=$1;
                }
                else
                {
                        $hash{$title}.=$_;
                }
        }
        close FILE;
        return %hash;
}

sub reverse_com
{
        my ($seq)=@_;
        $seq= reverse $seq;
        $seq=~tr/ATCGatcg/TAGCtagc/;
        return $seq;
}






程序的目的是:根据queryID文件的ID(如ppa000003m.g)找到gene annotation的左边对应列数字(31458157),分别加-1000,加200后搜genome sequence,得到序列。这是找人帮忙写的,但是在他电脑上能运行,但是在我电脑就不能正常了。
附件是运行的脚本和文件。

麻烦帮忙看看,我是新手。谢谢。

V%2WF]IJ7_VI[F~28{0[KJ6.jpg (58.01 KB, 下载次数: 51)

报错

报错

promoter.rar

5.32 MB, 下载次数: 23

论坛徽章:
0
2 [报告]
发表于 2014-09-11 11:41 |只看该作者
  • perl -c scrip.pl 啥结果
  • 运行报错又是啥结果

论坛徽章:
1
程序设计版块每日发帖之星
日期:2015-10-07 06:20:00
3 [报告]
发表于 2014-09-11 12:06 |只看该作者
1.

ARGV[0] 是读GFF格式文件的,你读个fa格式还能不报错?
除非你扩展名是自己乱起的...

2.

这大概不是Perl的问题,这代码作者是谁,直接问ta,让ta教你用。
在版上问,至少贴测试数据。桃树genome是大,你也该准备好一个case给大家看。

3.  

BEDtools在版上说了好多次了...处理此类问题最方便。

论坛徽章:
0
4 [报告]
发表于 2014-09-11 14:53 |只看该作者
本帖最后由 321wangke321 于 2014-09-11 14:55 编辑
chenhao392 发表于 2014-09-11 12:06
1.

ARGV[0] 是读GFF格式文件的,你读个fa格式还能不报错?


程序的目的是:根据queryID文件的ID(如ppa000003m.g)找到gene annotation的左边对应列数字(31458157),分别加-1000,加200后搜genome sequence,得到序列。这是找人帮忙写的,但是在他电脑上能运行,但是在我电脑就不能正常了。
附件是运行的脚本和文件。
麻烦帮忙看看,我是新手。谢谢。

V%2WF]IJ7_VI[F~28{0[KJ6.jpg (58.01 KB, 下载次数: 56)

报错

报错

promoter.rar

5.32 MB, 下载次数: 11

论坛徽章:
0
5 [报告]
发表于 2014-09-11 15:44 |只看该作者
本帖最后由 afukada 于 2014-09-11 15:47 编辑

人家一開始就教你怎麼用啦

perl get_promoter.pl  F:\perl software\promoter extraction\Prunus_persica_v1.0_scaffolds gene.fa  F:\perl software\promoter extraction\glycolysis.txt  Prunus_persica_v1.0_scaffolds.fa

你要給他三個檔案才能執行阿@@

(奇怪 這個寫法怎麼跟我超像的)

论坛徽章:
0
6 [报告]
发表于 2014-09-11 16:20 |只看该作者
afukada 发表于 2014-09-11 15:44
人家一開始就教你怎麼用啦

perl get_promoter.pl  F:\perl software\promoter extraction\Prunus_persic ...


第三个是这个啊 Prunus_persica_v1.0_scaffolds.fa。即使加了地址,也是一样的报错结果。

论坛徽章:
0
7 [报告]
发表于 2014-09-11 16:38 |只看该作者
你貼的執行結果只有call這個script

他的使用方法要給三個參數

你實際上在用的時候有給嗎?

论坛徽章:
0
8 [报告]
发表于 2014-09-11 16:58 |只看该作者
afukada 发表于 2014-09-11 16:38
你貼的執行結果只有call這個script

他的使用方法要給三個參數


没有明白你的意思,是说脚本在运行过程中还要给它一个参数是吗?

论坛徽章:
0
9 [报告]
发表于 2014-09-11 18:05 |只看该作者
回复 8# 321wangke321


是阿 他上面那一行是告訴你要怎麼用這個script

###perl get_promoter.pl  F:\perl software\promoter extraction\Prunus_persica_v1.0_scaffolds gene.fa  F:\perl software\promoter extraction\glycolysis.txt  Prunus_persica_v1.0_scaffolds.fa

這行的意思就是你要給他三個參數

分別是1. GFF檔 2. 要找的gene 3. sequence檔

论坛徽章:
0
10 [报告]
发表于 2014-09-11 18:22 |只看该作者
afukada 发表于 2014-09-11 18:05
回复 8# 321wangke321

附件中的压缩文件包含这3个文档,就是执行之后才报错的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP