24小时热门版块排行榜    

Znn3bq.jpeg
查看: 2324  |  回复: 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.

谢谢,麻烦了!!
金币只有一个了- -
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wizardfan

至尊木虫 (著名写手)

优秀版主

【答案】应助回帖

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

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的回帖

hydraphenix

银虫 (小有名气)

太菜了,版主都不屑于回答了。
5楼2013-01-14 17:16:20
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 一志愿A区211,22408 321求调剂 +7 随心所欲☆ 2026-04-15 8/400 2026-04-21 08:22 by Equinoxhua
[考研] 295分求调剂 +6 ?要上岸? 2026-04-17 6/300 2026-04-21 08:18 by Equinoxhua
[考研] 一志愿中科大材料与化工,353分还有调剂学校吗 +11 否极泰来2026 2026-04-15 13/650 2026-04-20 22:31 by Equinoxhua
[考研] 085600材料与化工调剂 5+3 孜孜不倦2002 2026-04-19 6/300 2026-04-20 21:25 by babero
[考研] 320求调剂 +6 深郊akm 2026-04-17 6/300 2026-04-20 18:57 by fs26jie
[教师之家] 又一批高校组建人工智能学院 师资行吗 不是骗人吗 +4 yexuqing 2026-04-19 4/200 2026-04-20 14:47 by brantleo
[考研] 求计算机方向调剂 +3 Toffee2 2026-04-16 6/300 2026-04-19 22:37 by ll叶
[考研] 297,工科调剂? +11 河南农业大学-能 2026-04-14 11/550 2026-04-19 20:07 by Equinoxhua
[考研] 294求调剂 +8 淡然654321 2026-04-17 9/450 2026-04-19 19:51 by Equinoxhua
[考研] 291求调剂 +11 关忆北. 2026-04-14 11/550 2026-04-19 17:16 by 中豫男
[考研] 304求调剂 +8 castLight 2026-04-16 8/400 2026-04-19 17:14 by 中豫男
[考研] 求调剂推荐 +9 小聂爱学习 2026-04-14 9/450 2026-04-19 17:03 by 中豫男
[考研] 291求调剂 +12 关忆北. 2026-04-14 13/650 2026-04-19 16:50 by 中豫男
[考研] 294求调剂 +15 淡然654321 2026-04-15 15/750 2026-04-19 08:20 by cuisz
[考研] 0854求调剂 +23 门路摸摸 2026-04-15 27/1350 2026-04-19 01:59 by 烟雨流涯
[考研] 300求调剂 +12 橙a777 2026-04-15 12/600 2026-04-18 23:51 by 路病情
[考研] 297,工科调剂? +5 河南农业大学-能 2026-04-14 5/250 2026-04-18 15:17 by Equinoxhua
[考研] 收到复试调剂但是去不了 +8 小蜗牛* 2026-04-16 8/400 2026-04-18 11:15 by zixin2025
[考研] 一志愿华中农业071010,320求调剂 +17 困困困困坤坤 2026-04-14 19/950 2026-04-17 20:08 by 关一盏灯cd
[有机交流] 二苯甲酮酸类衍生物 50+3 小白爱主人 2026-04-17 6/300 2026-04-17 18:47 by kf2781974
信息提示
请填处理意见