搜索
查看: 2647|回复: 2

Perl-000【作业示例】

[复制链接]

58

主题

103

帖子

756

积分

版主

Rank: 7Rank: 7Rank: 7

积分
756
QQ
发表于 2017-1-3 23:01:42 | 显示全部楼层 |阅读模式
本帖最后由 Panda姐 于 2017-1-3 23:03 编辑

题目:
编写perl脚本,统计ACA、ATGC、CTGAT、GCTAGCATCGAT四种序列分别在Synechococcus sp. PCC 7002的染色体和质粒pAQ1、pAQ3、pAQ4、pAQ5、pAQ6、pAQ7(7002.fna)上出现的次数。


解题思路:
1.将序列行合并为一行;
2.利用正则进行匹配。

代码记录:
[Perl] 纯文本查看 复制代码
#! usr/bin/perl
use strict;
open INPUT,"change.fna";
open OUTPUT,">result.txt";
my($t,$strs,@strs,@count,$seq,@seq,$times);
@strs=("ACA","ATGC","CTGAT","GCTAGCATCGAT");
@seq=<INPUT>;
foreach $seq(@seq){
chomp($seq);
if($seq=~/>/){
print OUTPUT "$seq\n";
$t=1;
next;
}
if(($t==1)and($seq=~/.*/)){
foreach $strs(@strs){
@count=($seq=~/$strs/g);
$times=scalar @count;
print OUTPUT "$strs:$times\n";
}
}
}


小记:
1.以上代码不包括将序列整合成一行的,利用循环输入再次不带换行符输出的方法;
2.序列不进行同行整理,是否也可以操作,继续寻找解决办法。



上一篇:跟随群主博客学转录组分析
下一篇:新一代测序技术综述
回复

使用道具 举报

29

主题

131

帖子

1208

积分

金牌会员

Rank: 6Rank: 6

积分
1208
发表于 2017-1-4 00:14:02 | 显示全部楼层
基本思路不说已经写了吗
把多行序列变为一行
用@count=($seq=~/$strs/g)来计数

这个答案是范例?以后是没有答案的?
回复 支持 反对

使用道具 举报

58

主题

103

帖子

756

积分

版主

Rank: 7Rank: 7Rank: 7

积分
756
QQ
 楼主| 发表于 2017-1-5 10:09:22 | 显示全部楼层
anlan 发表于 2017-1-4 00:14
基本思路不说已经写了吗
把多行序列变为一行
用@count=($seq=~/$strs/g)来计数

不是范例,这是我的编程学习记录
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|生信技能树 ( 粤ICP备15016384号  

GMT+8, 2019-9-22 08:33 , Processed in 0.038639 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.