24小时热门版块排行榜    

查看: 2191  |  回复: 6

landspace

新虫 (初入文坛)

[求助] 求助 一个perl代码修改~~看看吧...

请教,


这是我的一个代码 我想的是利用blast出来的结果(s. start, s. end,) 提取下面这个基因组中有关的序列。

我不知道哪里错了还请大家帮忙指正!!

O(∩_∩)O谢谢!!麻烦了!
CODE:
01.#!/user/bin/perl -w

02.

03.$ARGV[0]= “H:\Pro\blast\bin\test1.2”; # blast文件路径赋值给ARGV[0]

04.open(FIN,"$ARGV[0]")||die; #打开blast文件

05.open(FIN1,"H:\Pro\blast\bin\data\ testdatabase.fa ")||die; #打开基因组文件

06.open(FOUT,"> “H:\Pro\perl\bin\out]")||die; # 输出文件

07.

08.

09.while(){ #逐行读取文件

10.chomp; #并加换行符

11.

12.$l=$_; #将每一行的文件赋值给$|

13.if($l=~/^>(\S+)/){ #匹配以>的开头

14.$id=$1; #提取序列名称

15.$sq{$id}=""; #构建哈希表%sq,以序列名称$id为key

16.}

17.else{

18.$sq{$id}.=$l; #逐行将序列写入字符串

19.}

20.}

21.

22.while(){ #逐行读取文件

23.chomp; #去掉换行符

24.next if/^#/; #去掉注释行 跳过 以#开头的行

25.@a=split("\t"); #以空格为边界打散成数据组,分割文件

26.next if(@a < 8);#跳过元素小于8的行 此步可以省略吗?

27.$st=$a[8]; $len=$a[9]-$a[8];#计算序列长度 s.end –s.start?

28.if($a[8] eq "-"){ #表示$a[8]”-”符号

29.#$st=$a[7]; $len=-$len; #基因不存在?

30.}

31.$seq=substr($sq{$a[0]},$st-3000,$len+3000);#将基因组中$st即s.start为起始的$len个碱基写入子串seq 上游加3000bp

32.if($a[3] eq "-"){

33.$seq=reverse($seq); #倒置序列,得到互补序列

34.$seq=lc($seq);

35.$seq=~s/a/T/g;

36.$seq=~s/t/A/g;

37.$seq=~s/c/G/g;

38.$seq=~s/g/C/g;

39.}

40.#$a[-1]=~s/intron Parent=//; #序列名称输出 对应关系不确定?

41.if($a[8]=~/^ID=([^;]+);/){

42.$name=$1;

43.}

44.else{

45.print "$a[8]\n";

46.}

47.print FOUT ">$name\n$seq\n";#输出

test1.2文件是:
# Fields: Query id, Subject id, % identity, alignment length, mismatches, gap openings, q. start, q. end, s. start, s. end, e-value, bit score

CeraIN-CO3_12S_12546bp      gi|154076492|ref    99.43        4377         4       1       1       4356         2321         6697         0.0   8510

CeraIN-CO3_12S_12546bp      gi|154076401|ref 100.00        21     0       0       10946       10966       4091         4071         0.64 42.1

……


testdatabase.fa 文件是:

>gi|154076413|ref| (based on CSol2.0 SCAFFOLD6002)

TACACCATTATCTTCCATAGTTTTAAATATAGACATGTAATACTCAGCAAAATGGTTCCGCAGTTGCCTC

CAATATTTCTCTATTCTCTCGTTAGAAGTACTCTTACCCTTTATGAAACTTTTTTCTCCAGCTTTCTCAT

CTGTATGATGGAAACGTAAAGCCATCTGAAGTAATTCTACAACTGTATTTTCAGTCCCTTTGTCTGATCG


>gi|154074987|ref| (based on CSol2.0 SCAFFOLD5715)

TAATTGAGAACGGGCGCAGTAGTTTTCCCGTAACCTTTATTGCAGTGGCTCGGCTACTTTCGTAGGTTTG

GCGTATTTAGTTTCCGTCCGATTTTCGTACGAGCTCTCCAAGCGCCGCGTGTTAAATTCGATCGCCTTTT

TTTGCGCCTATTTTCTTTCAAATAATTGCGGAAGCTCTGATGGCTAGTTAATTCTAACTCTGACGCGTTT

TTTGCACTGCGCGTTGTTTCCAAATAACCACGGAGCTTAATTTCCAAATTGACGACGATTTTCTCGCTGC

CGGGTCCATTGTCCGATATGGTGTCGCATCCGTAATTTGCCTCAGAGTATGTATCGACCTCTGACTCAGA

GCTCAGTGCAGAATCCCCATCGGCGCTCATGGTTAAGTCGTGCGACGTTTGCCACTCAAAAATATATGCA

……

错误代码:Unrecognized escape \P passed through at test.pl line 3.
Unrecognized escape \P passed through at test.pl line 5.
Unrecognized escape \d passed through at test.pl line 5.
Unrecognized escape \P passed through at test.pl line 6.
Unrecognized escape \p passed through at test.pl line 6.
Missing braces on \o{} at test.pl line 6, within string
Missing right curly or square bracket at test.pl line 48, at end of line
syntax error at test.pl line 48, at EOF
Execution of test.pl aborted due to compilation errors.

谢谢,麻烦了!!
金币只有一个了- -
回复此楼

» 收录本帖的淘帖专辑推荐

perl语言专栏

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wizardfan

至尊木虫 (著名写手)

优秀版主

【答案】应助回帖

感谢参与,应助指数 +1
提示的很清楚 Unrecognized escape \P passed through at test.pl line 3.
$ARGV[0]= “H:\Pro\blast\bin\test1.2”;
在perl里\是特殊字符,表示转换成特定符号,比如最常用的\n,就是回车。如果你要用目录的话,要用两个\\而不是单个\
2楼2013-01-12 07:43:12
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

landspace

新虫 (初入文坛)

我更改了一下 后来就出现了这个问题
CODE:
#!/user/bin/perl -w

$ARGV[0]= "H:\\Pro\\blast\\bin\\test1.2"; # blast文件路径赋值给ARGV[0]
open(FIN,"$ARGV[0]")||die; #打开blast文件
open(FIN1,"H:\\Pro\\blast\\bin\\data\\testdatabase.fa")||die; #打开基因组文件
open(FOUT, "> H:\\Pro\\perl\\bin\\out")||die; # 输出文件


while(){ #逐行读取文件
        chomp; #并加换行符

        $l=$_; #将每一行的文件赋值给$|
        if($l=~/^>(\S+)/){ #匹配以>的开头
                $id=$1; #提取序列名称
                $sq{$id}=""; #构建哈希表%sq,以序列名称$id为key
        }
        else{
                $sq{$id}.=$l; #逐行将序列写入字符串
        }
}
while(){ #逐行读取文件
        chomp; #去掉换行符
next if/^#/;  #去掉注释行 跳过 以#开头的行
        @a=split("\t"); #以空格为边界打散成数据组,分割文件
        next if(@a < 8);#跳过元素小于8的行 此步可以省略吗?
        $st=$a[8]; $len=$a[9]-$a[8];#计算序列长度 s.end –s.start?
        if($a[8] eq "-"){ #表示$a[8]”-”符号
                #$st=$a[7]; $len=-$len; #基因不存在?
        }
        $seq=substr($sq{$a[0]},$st-3000,$len+3000);#将基因组中$st即s.start为起始的$len个碱基写入子串seq 上游加3000bp
        if($a[3] eq "-"){
                $seq=reverse($seq); #倒置序列,得到互补序列
                $seq=lc($seq);
                $seq=~s/a/T/g;
                $seq=~s/t/A/g;
                $seq=~s/c/G/g;
                $seq=~s/g/C/g;
        }
        #$a[-1]=~s/intron Parent=//; #序列名称输出 对应关系不确定?
        if($a[8]=~/^ID=([^;]+);/){
                $name=$1;
        }
        else{
                print "$a[8]\n";
        }
        print FOUT ">$name\n$seq\n";#输出

}

Use of uninitialized value in substr at test2.pl line 30, line 5.
897
Use of uninitialized value $name in concatenation (.) or string at test2.pl line
46, line 5.
Use of uninitialized value in substr at test2.pl line 30, line 6.
896
Use of uninitialized value $name in concatenation (.) or string at test2.pl line
46, line 6.
Use of uninitialized value in substr at test2.pl line 30, line 7.
947
Use of uninitialized value $name in concatenation (.) or string at test2.pl line
46, line 7.
Use of uninitialized value in substr at test2.pl line 30, line 8.
896
Use of uninitialized value $name in concatenation (.) or string at test2.pl line
46, line 8.
Use of uninitialized value in substr at test2.pl line 30, line 9.
947
Use of uninitialized value $name in concatenation (.) or string at test2.pl line
46, line 9.
Use of uninitialized value in substr at test2.pl line 30, line 10.
900
Use of uninitialized value $name in concatenation (.) or string at test2.pl line
46, line 10.
Use of uninitialized value in substr at test2.pl line 30, line 11.
951
Use of uninitialized value $name in concatenation (.) or string at test2.pl line
46, line 11.
Use of uninitialized value in substr at test2.pl line 30, line 12.
896
Use of uninitialized value $name in concatenation (.) or string at test2.pl line
46, line 12.
Use of uninitialized value in substr at test2.pl line 30, line 13.
896
Use of uninitialized value $name in concatenation (.) or string at test2.pl line
46, line 13.
Use of uninitialized value in substr at test2.pl line 30, line 14.
946
Use of uninitialized value $name in concatenation (.) or string at test2.pl line
46, line 14.
Use of uninitialized value in substr at test2.pl line 30, line 15.
185
Use of uninitialized value $name in concatenation (.) or string at test2.pl line
46, line 15.
Use of uninitialized value in substr at test2.pl line 30, line 16.
832
Use of uninitialized value $name in concatenation (.) or string at test2.pl line
46, line 16.
Use of uninitialized value in substr at test2.pl line 30, line 17.
362
Use of uninitialized value $name in concatenation (.) or string at test2.pl line
46, line 17.
Use of uninitialized value in substr at test2.pl line 30, line 18.
832
Use of uninitialized value $name in concatenation (.) or string at test2.pl line
46, line 18.
Use of uninitialized value in substr at test2.pl line 30, line 19.
362
Use of uninitialized value $name in concatenation (.) or string at test2.pl line
46, line 19.
Use of uninitialized value in substr at test2.pl line 30, line 20.
832
Use of uninitialized value $name in concatenation (.) or string at test2.pl line
46, line 20.
Use of uninitialized value in substr at test2.pl line 30, line 21.
362
Use of uninitialized value $name in concatenation (.) or string at test2.pl line
46, line 21.
Use of uninitialized value in substr at test2.pl line 30, line 22.
832
Use of uninitialized value $name in concatenation (.) or string at test2.pl line
46, line 22.
Use of uninitialized value in substr at test2.pl line 30, line 23.
362
Use of uninitialized value $name in concatenation (.) or string at test2.pl line
46, line 23.
Use of uninitialized value in substr at test2.pl line 30, line 24.
832
Use of uninitialized value $name in concatenation (.) or string at test2.pl line
46, line 24.
Use of uninitialized value in substr at test2.pl line 30, line 25.
362
Use of uninitialized value $name in concatenation (.) or string at test2.pl line
46, line 25.
Use of uninitialized value in substr at test2.pl line 30, line 26.
832
Use of uninitialized value $name in concatenation (.) or string at test2.pl line
46, line 26.
Use of uninitialized value in substr at test2.pl line 30, line 27.
362
Use of uninitialized value $name in concatenation (.) or string at test2.pl line
46, line 27.
Use of uninitialized value in substr at test2.pl line 30, line 28.
832
Use of uninitialized value $name in concatenation (.) or string at test2.pl line
46, line 28.
Use of uninitialized value in substr at test2.pl line 30, line 29.
362
Use of uninitialized value $name in concatenation (.) or string at test2.pl line
46, line 29.
Use of uninitialized value in substr at test2.pl line 30, line 30.
832
Use of uninitialized value $name in concatenation (.) or string at test2.pl line
46, line 30.
Use of uninitialized value in substr at test2.pl line 30, line 31.
362
Use of uninitialized value $name in concatenation (.) or string at test2.pl line
46, line 31.
Use of uninitialized value in substr at test2.pl line 30, line 32.
832
Use of uninitialized value $name in concatenation (.) or string at test2.pl line
46, line 32.
Use of uninitialized value in substr at test2.pl line 30, line 33.
362
Use of uninitialized value $name in concatenation (.) or string at test2.pl line
46, line 33.
Use of uninitialized value in substr at test2.pl line 30, line 34.
832
Use of uninitialized value $name in concatenation (.) or string at test2.pl line
46, line 34.
Use of uninitialized value in substr at test2.pl line 30, line 35.
362
Use of uninitialized value $name in concatenation (.) or string at test2.pl line
46, line 35.
Use of uninitialized value in substr at test2.pl line 30, line 36.
832
Use of uninitialized value $name in concatenation (.) or string at test2.pl line
46, line 36.
Use of uninitialized value in substr at test2.pl line 30, line 37.
362
Use of uninitialized value $name in concatenation (.) or string at test2.pl line
46, line 37.
Use of uninitialized value in substr at test2.pl line 30, line 38.
832
Use of uninitialized value $name in concatenation (.) or string at test2.pl line
46, line 38.
Use of uninitialized value in substr at test2.pl line 30, line 39.
362
Use of uninitialized value $name in concatenation (.) or string at test2.pl line
46, line 39.
Use of uninitialized value in substr at test2.pl line 30, line 40.
832
Use of uninitialized value $name in concatenation (.) or string at test2.pl line
46, line 40.
Use of uninitialized value in substr at test2.pl line 30, line 41.
362
Use of uninitialized value $name in concatenation (.) or string at test2.pl line
46, line 41.
Use of uninitialized value in substr at test2.pl line 30, line 42.
832
Use of uninitialized value $name in concatenation (.) or string at test2.pl line
46, line 42.
Use of uninitialized value in substr at test2.pl line 30, line 43.
362
Use of uninitialized value $name in concatenation (.) or string at test2.pl line
46, line 43.
Use of uninitialized value in substr at test2.pl line 30, line 44.
832
Use of uninitialized value $name in concatenation (.) or string at test2.pl line
46, line 44.
Use of uninitialized value in substr at test2.pl line 30, line 45.
362
Use of uninitialized value $name in concatenation (.) or string at test2.pl line
46, line 45.
Use of uninitialized value in substr at test2.pl line 30, line 46.
832
Use of uninitialized value $name in concatenation (.) or string at test2.pl line
46, line 46.
Use of uninitialized value in substr at test2.pl line 30, line 47.
362
Use of uninitialized value $name in concatenation (.) or string at test2.pl line
46, line 47.
Use of uninitialized value in substr at test2.pl line 30, line 48.
832
Use of uninitialized value $name in concatenation (.) or string at test2.pl line
46, line 48.
Use of uninitialized value in substr at test2.pl line 30, line 49.
362
Use of uninitialized value $name in concatenation (.) or string at test2.pl line
46, line 49.
Use of uninitialized value in substr at test2.pl line 30, line 50.
832
Use of uninitialized value $name in concatenation (.) or string at test2.pl line
46, line 50.
Use of uninitialized value in substr at test2.pl line 30, line 51.
362
Use of uninitialized value $name in concatenation (.) or string at test2.pl line
46, line 51.
Use of uninitialized value in substr at test2.pl line 30, line 52.
832
Use of uninitialized value $name in concatenation (.) or string at test2.pl line
46, line 52.
Use of uninitialized value in substr at test2.pl line 30, line 53.
362
Use of uninitialized value $name in concatenation (.) or string at test2.pl line
46, line 53.
Use of uninitialized value in substr at test2.pl line 30, line 54.
832
Use of uninitialized value $name in concatenation (.) or string at test2.pl line
46, line 54.
Use of uninitialized value in substr at test2.pl line 30, line 55.
362
Use of uninitialized value $name in concatenation (.) or string at test2.pl line
46, line 55.
Use of uninitialized value in substr at test2.pl line 30, line 56.
832
Use of uninitialized value $name in concatenation (.) or string at test2.pl line
46, line 56.
Use of uninitialized value in substr at test2.pl line 30, line 57.
362
Use of uninitialized value $name in concatenation (.) or string at test2.pl line
46, line 57.
Use of uninitialized value in substr at test2.pl line 30, line 58.
510
Use of uninitialized value $name in concatenation (.) or string at test2.pl line
46, line 58.
Use of uninitialized value in substr at test2.pl line 30, line 59.
752
Use of uninitialized value $name in concatenation (.) or string at test2.pl line
46, line 59.

请问这个是什么原因?
3楼2013-01-13 12:13:03
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wizardfan

至尊木虫 (著名写手)

优秀版主

【答案】应助回帖

你自己的分析是什么?知道use strict;有什么用?
4楼2013-01-14 07:30:53
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hydraphenix

银虫 (小有名气)

太菜了,版主都不屑于回答了。
5楼2013-01-14 17:16:20
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

landspace

新虫 (初入文坛)

引用回帖:
5楼: Originally posted by hydraphenix at 2013-01-14 17:16:20
太菜了,版主都不屑于回答了。

什么啊
6楼2013-05-18 09:14:54
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

landspace

新虫 (初入文坛)

引用回帖:
4楼: Originally posted by wizardfan at 2013-01-14 07:30:53
你自己的分析是什么?知道use strict;有什么用?

本人太菜- -!
7楼2013-05-18 09:15:09
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 landspace 的主题更新
信息提示
请填处理意见