免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
打印 上一主题 下一主题

perl 引号 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2015-08-12 11:14 |只看该作者
部分文件
>Srcc10g063050.1.1 Receptor-like kinase    Try_threonine protein kinase
MKTKHKLTPRPFTPTPSPTHIMGILLICFIFSITNSFVIAQDDAVPAKSFPVFTPEDNFL
IDCGATSSITLPGNKAFQPDQNTAKYLSYTGKDIQACASDKINVPSTLYVNAKIFTTEAI
YTFHASTSGLHWIRLHFFPFKYEEYDLK
">Solyc11g072930.1.1 LRR receptor-like serine_threonine-protein kinase, RLP"
MASSYFLLLVLVLSVFSVSADVFVSLDCGSSEAYTDHETSIDWLGDVDYVANGESHVVPS
NNSISHVSALEVRGLDSTMYSHVDDNSSDPPRITALYLSKFNLSGSLPDFSSMDAL
ETIDLSNNNLDGPIPDFFGTLPNLKELNLANNKFSGPVPASLSNKNGLTLDTSGNSDLCS
SSEESCQNNDSSSPGNDQPTTGSTNNNKKKKKKKNNLPIILGTTISAFLLLWAIVGIFAI
LHYKNKRAATSLINPGQASGGSTPFVDRVQMSEKIEKNPEVTAHDHENSTNV
">Solyc12g00890.1.1 Kinesin  IPR001752  Kinesin, motor region"
ESVINGRDLLGFSLTSPDLVICTGSPDIPARNYGDSPEFLKGCSISLENGI
KGSEEVQAATKLFTDWQGSKDDDLCAPADFELPSPPVEENSSELSVPIVSINVGSTDCIS
SESGIQFSEDKYFCGGNVLSTDTRIEESICASVYQTARVGNFSYHFNNLSAGFYLVDLHF
VEVVLTDGSTGDFSENSPQRNSLEVNGDIKAAGKLQLANVSREK

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
12 [报告]
发表于 2015-08-12 13:10 |只看该作者
本帖最后由 MMMIX 于 2015-08-12 13:13 编辑
一串儿葡萄皮 发表于 2015-08-12 11:09
while(<W>){
   chomp;
    my$i='"\w+"';
        $i=~s/\"//g;

}


你这就是个空循环, 除了把 W 读了一遍之外, 啥用都没有.

另外, 你把 my $i 写成 my$i 自己看着不糟心么? 多输入个空格是能累着你咋滴?

BTW again, 这都不是代码风格问题, 你这完全是审美观病变坏死的征兆!!!

评分

参与人数 1信誉积分 +10 收起 理由
substr函数 + 10 赞一个! 多输入个空格是能累着你咋滴?

查看全部评分

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
13 [报告]
发表于 2015-08-12 13:16 |只看该作者
一串儿葡萄皮 发表于 2015-08-12 11:09
#!/usr/bin/perl    -w
use warnings;


这两句完全就是不求甚解的范例: -w 和 use warnings; 的功能是重复的.

论坛徽章:
7
巳蛇
日期:2013-11-28 09:22:59天秤座
日期:2014-10-25 15:40:452015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:53:172015亚冠之德黑兰石油
日期:2015-07-15 08:46:452015亚冠之平阳省
日期:2015-11-08 16:27:53白银圣斗士
日期:2015-11-14 09:58:12
14 [报告]
发表于 2015-08-12 13:25 |只看该作者
回复 10# 一串儿葡萄皮


    我已经在二楼给你提醒过了,ID行有引号的,不是标准的FASTA格式,BioPerl模块不能识别!
  1. >Srcc10g063050.1.1 Receptor-like kinase    Try_threonine protein kinase
  2. MKTKHKLTPRPFTPTPSPTHIMGILLICFIFSITNSFVIAQDDAVPAKSFPVFTPEDNFL
  3. IDCGATSSITLPGNKAFQPDQNTAKYLSYTGKDIQACASDKINVPSTLYVNAKIFTTEAI
  4. YTFHASTSGLHWIRLHFFPFKYEEYDLK
  5. ">Solyc11g072930.1.1 LRR receptor-like serine_threonine-protein kinase, RLP"
  6. MASSYFLLLVLVLSVFSVSADVFVSLDCGSSEAYTDHETSIDWLGDVDYVANGESHVVPS
  7. NNSISHVSALEVRGLDSTMYSHVDDNSSDPPRITALYLSKFNLSGSLPDFSSMDAL
  8. ETIDLSNNNLDGPIPDFFGTLPNLKELNLANNKFSGPVPASLSNKNGLTLDTSGNSDLCS
  9. SSEESCQNNDSSSPGNDQPTTGSTNNNKKKKKKKNNLPIILGTTISAFLLLWAIVGIFAI
  10. LHYKNKRAATSLINPGQASGGSTPFVDRVQMSEKIEKNPEVTAHDHENSTNV
  11. ">Solyc12g00890.1.1 Kinesin  IPR001752  Kinesin, motor region"
  12. ESVINGRDLLGFSLTSPDLVICTGSPDIPARNYGDSPEFLKGCSISLENGI
  13. KGSEEVQAATKLFTDWQGSKDDDLCAPADFELPSPPVEENSSELSVPIVSINVGSTDCIS
  14. SESGIQFSEDKYFCGGNVLSTDTRIEESICASVYQTARVGNFSYHFNNLSAGFYLVDLHF
  15. VEVVLTDGSTGDFSENSPQRNSLEVNGDIKAAGKLQLANVSREK
复制代码
这些示例数据,就用BioPerl的Bio::SeqIO模块来读只能识别第一个序列!
  1. #!/usr/bin/perl
  2. use strict;
  3. use Bio::SeqIO;
  4. use Bio::Seq;

  5. my $fasta=shift @ARGV;
  6. (my $Out=$fasta)=~s/(\.[^\.]+)$/_out$1/;

  7. open (IN,"<$fasta") or die "Open $fasta failed!\n";
  8. my $Out=Bio::SeqIO->new(-file=>">$Out",-format=>'fasta');

  9. my ($flag,$seq,$id,$desc)=();
  10. while(my $line=<IN>){
  11.         chomp($line);
  12.         if($line=~/\>/){
  13.                 if($flag){
  14.                         print "$id\t$desc\n$seq\n";
  15.                         my $SEQ_OBJ=Bio::Seq->new(-seq=>$seq,-id=>$id,-desc=>$desc,-alphabet=>'protein');
  16.                         $Out->write_seq($SEQ_OBJ);
  17.                 }
  18.                 $line=~s/[\"\>]//g;
  19.                 ($id,$desc)=split (/\s+/,$line,2);
  20.                 $seq=undef;
  21.                 $flag=1;
  22.         }else{
  23.                 $seq.=$line;
  24.         }
  25. }
  26. print "$id\t$desc\n$seq\n";
  27. my $SEQ_OBJ=Bio::Seq->new(-seq=>$seq,-id=>$id,-desc=>$desc,-alphabet=>'protein');
  28. $Out->write_seq($SEQ_OBJ);

  29. $Out->close();
复制代码

论坛徽章:
0
15 [报告]
发表于 2015-08-12 15:04 |只看该作者
受教了,这里果然是个好地方,谢谢回复 12# MMMIX


   

论坛徽章:
0
16 [报告]
发表于 2015-08-12 15:20 |只看该作者

(my $Out=$fasta)=~s/(\.[^\.]+)$/_out$1/;这一句怎么理解?O(∩_∩)O谢谢









回复 14# b114213903


   

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
17 [报告]
发表于 2015-08-12 15:28 |只看该作者
一串儿葡萄皮 发表于 2015-08-12 15:20
(my $Out=$fasta)=~s/(\.[^\.]+)$/_out$1/;


等价于:

  1. my $Out = $fasta;
  2. $Out =~ s/(\.[^\.]+)$/_out$1/;
复制代码

论坛徽章:
0
18 [报告]
发表于 2015-08-12 16:33 |只看该作者
  1. 2
  2. my ($flag,$seq,$id)=();

  3. --------------------- WARNING ---------------------
  4. MSG: sequence '1' doesn't validate, mismatch is  ($,,$,,$,),();
  5. ---------------------------------------------------

  6. ------------- EXCEPTION -------------
  7. MSG: Attempting to set the sequence '1' to [my ($flag,$seq,$id)=();] which does not look healthy
  8. STACK Bio::PrimarySeq::seq /usr/lib64/perl5/vendor_perl/5.16.0/Bio/PrimarySeq.pm:285
  9. STACK Bio::PrimarySeq::new /usr/lib64/perl5/vendor_perl/5.16.0/Bio/PrimarySeq.pm:239
  10. STACK Bio::Seq::new /usr/lib64/perl5/vendor_perl/5.16.0/Bio/Seq.pm:497
  11. STACK toplevel delete_qw-A.pl:18
  12. -------------------------------------
复制代码
回复 14# b114213903

有这样的报错?
   

论坛徽章:
7
巳蛇
日期:2013-11-28 09:22:59天秤座
日期:2014-10-25 15:40:452015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:53:172015亚冠之德黑兰石油
日期:2015-07-15 08:46:452015亚冠之平阳省
日期:2015-11-08 16:27:53白银圣斗士
日期:2015-11-14 09:58:12
19 [报告]
发表于 2015-08-12 19:54 |只看该作者
我这运行正常,不知道什么原因

求职 : 软件工程师
论坛徽章:
3
程序设计版块每日发帖之星
日期:2015-10-07 06:20:00程序设计版块每日发帖之星
日期:2015-12-13 06:20:00程序设计版块每日发帖之星
日期:2016-05-05 06:20:00
20 [报告]
发表于 2015-08-12 22:37 |只看该作者
文件替换要考虑特殊情况,这种情况加一个位置限定符就好了:
  1. /^\<"|"$/
复制代码
特别声明引号出现在开始尖括号的后面和行末。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP