24小时热门版块排行榜    

查看: 1976  |  回复: 26

essen11

铜虫 (初入文坛)

引用回帖:
9楼: Originally posted by jackie1179 at 2012-05-07 09:13:33:
对不起忘了贴代码,补上:
#!/usr/bin/perl
use strict;
use warnings;

my $subseq=$ARGV;
my $seq;
my $title;
open IN,"<$ARGV";
open OUTFILE, ">outfile.txt";
while(&l ...

你好。我还有一个问题,因为我的每条序列都很长,而不是单独的一行,如果gggggcg这个段片段是分布在两行中,那会返回吗?譬如说这样:
>name
ATGgcggggccccATAGGGGGGTTCCUTGggggtttcccgggaaagtttccgrrgggggcgaact
这个序列用上面的程序能找到吗?
11楼2012-05-07 15:20:09
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

jackie1179

木虫 (正式写手)

引用回帖:
11楼: Originally posted by essen11 at 2012-05-07 15:20:09:
你好。我还有一个问题,因为我的每条序列都很长,而不是单独的一行,如果gggggcg这个段片段是分布在两行中,那会返回吗?譬如说这样:
>name
ATGgcggggccccATAGGGGGGTTCCUTGggggtttcccgggaaagtttccgrrggggg ...

如果你的序列名和序列之间有换行符即回车的话,那这个程序要稍加修改,所以你最好把你的原始文件给出来让我们下下来看下,这种文本处理对原始文本的格式必须要清楚才行,否则可能会有意外结果出现。
12楼2012-05-08 09:02:09
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

essen11

铜虫 (初入文坛)

引用回帖:
12楼: Originally posted by jackie1179 at 2012-05-08 09:02:09:
如果你的序列名和序列之间有换行符即回车的话,那这个程序要稍加修改,所以你最好把你的原始文件给出来让我们下下来看下,这种文本处理对原始文本的格式必须要清楚才行,否则可能会有意外结果出现。

我的序列是直接从UCSC上下载的fasta格式文件,因为比较大,我copy了两条。你帮忙看看!多谢了。

» 本帖附件资源列表

  • 欢迎监督和反馈:小木虫仅提供交流平台,不对该内容负责。
    本内容由用户自主发布,如果其内容涉及到知识产权问题,其责任在于用户本人,如对版权有异议,请联系邮箱:xiaomuchong@tal.com
  • 附件 1 : 1.fasta
  • 2012-05-08 11:16:53, 8.1 K
13楼2012-05-08 11:17:46
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

jackie1179

木虫 (正式写手)

【答案】应助回帖

引用回帖:
13楼: Originally posted by essen11 at 2012-05-08 11:17:46:
我的序列是直接从UCSC上下载的fasta格式文件,因为比较大,我copy了两条。你帮忙看看!多谢了。

现在这个应该可以满足你的要求了
参数输入同前,贴上代码:
#!/usr/bin/perl
use strict;
use warnings;

my @name;
my @seqs;
if($ARGV[0] eq '-h' || $ARGV[0] eq '--help') {
  print "Usage: perl ./$0  input_file  substring\n";
  exit(0);
}
if(@ARGV < 2) {
  print "Arguments not enough!\n";
  exit(0);
}
my $cnt=0;
my $subseq=$ARGV[1];
open IN,"<$ARGV[0]";
open OUTFILE, ">outfile.txt";
while({
  if (/^>/) {
    ++$cnt;
    $name[$cnt]=$_;   
   
  }

  if(/^[ATCGatcg]/) {
    chomp;
    $seqs[$cnt] .= $_;
  }

}
print $cnt,"\n";
my $i;
my $length;
foreach (1..$cnt) {
  if($seqs[$_]=~/$subseq/) {
    print OUTFILE "$name[$_]";
    $length=length $seqs[$_];
    for($i=1;$i<=$length;$i++) {
      printf OUTFILE "%s",substr($seqs[$_],$i-1,1);
      if($i%50 == 0) {
        print OUTFILE "\n";
      }
      
    }
  }
}
close IN;
close OUTFILE;
14楼2012-05-10 10:26:39
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

jackie1179

木虫 (正式写手)

另外提醒你一下:
你直接down下来的fasta序列文件很有问题,里面有很多无关字符,请用记事本打开,去除无关字符,将“\par”等字符全部替换为空,否则程序提取会出错
15楼2012-05-10 10:33:08
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

essen11

铜虫 (初入文坛)

引用回帖:
14楼: Originally posted by jackie1179 at 2012-05-10 10:26:39:
现在这个应该可以满足你的要求了
参数输入同前,贴上代码:
#!/usr/bin/perl
use strict;
use warnings;

my @name;
my @seqs;
if($ARGV eq '-h' || $ARGV eq '--help') {
  print "Usage: perl . ...

多谢啊。运行程序倒是可以得到结果,但我一直在想是不是全部符合要求的序列都在结果里面了,因为我用查找替换功能搜索短序列可以得到一万九千多条序列,但是这个程序运行的结果只有一万多条,我在想是不是漏掉了我前面说的那种情况,就是gggggcg分布在两行的时候程序是否也能查找出来。另外,这个程序运行的时候提示 use of uninitialized value in pattern match at find.pl line36 ,line 3101570.出现这个错误是你说的那种有五官字符引起的吗?还是有变量未定义,之前。
16楼2012-05-10 21:41:54
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

jackie1179

木虫 (正式写手)

引用回帖:
16楼: Originally posted by essen11 at 2012-05-10 21:41:54:
多谢啊。运行程序倒是可以得到结果,但我一直在想是不是全部符合要求的序列都在结果里面了,因为我用查找替换功能搜索短序列可以得到一万九千多条序列,但是这个程序运行的结果只有一万多条,我在想是不是漏掉了 ...

gggggcg即使分布在两行也能够查找到的,如果你把无关字符去除之后的话,那么程序应该没有问题。
17楼2012-05-11 11:24:01
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

jackie1179

木虫 (正式写手)

还有一个可能就是你用查找替换可能是不区分大小写的,如果你不需要区分大小写的话,那么可以再修改下
18楼2012-05-11 11:28:51
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

essen11

铜虫 (初入文坛)

引用回帖:
17楼: Originally posted by jackie1179 at 2012-05-11 11:24:01:
gggggcg即使分布在两行也能够查找到的,如果你把无关字符去除之后的话,那么程序应该没有问题。

那我想可能就是无关字符引起的问题了,但是在记事本里怎么可以去除无关字符?
19楼2012-05-14 12:44:56
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

essen11

铜虫 (初入文坛)

引用回帖:
18楼: Originally posted by jackie1179 at 2012-05-11 11:28:51:
还有一个可能就是你用查找替换可能是不区分大小写的,如果你不需要区分大小写的话,那么可以再修改下

你好,还有这个问题是什么原因?程序运行的时候提示 use of uninitialized value in pattern match at find.pl line36 ,line 3101570.出现这个错误是你说的那种有无关字符引起的吗?
20楼2012-05-14 13:53:29
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 essen11 的主题更新
信息提示
请填处理意见