如何在多个fasta格式数据中匹配任意一个?

如何在多个fasta格式数据中匹配任意一个?

如何在多个fasta格式数据中匹配任意一个?
如:
>MMM_11111
ASDFGHJKQWERTYUIZXCVBNWEFRHJU
ASDFGHJKLYYYYYYYYYYYYYYYYYYY
HHHHHHHHHHHHHHHHHHHHHHHHHH*
>MMM_22222
ASDFGHJKLQWERTYUIOPZXCVBNMSSS
QWERTYUIOASDFGHJKLZXCVBNMSDFG
WERTYUIOSDFGHJKXCVBNMERTYUJM*

如何取到任意一个?
能不能具体一些,找到特定.
能不能具体一些,找到特定序列吗? grep就行了啊
是想一次抓出一条序列,不.
是想一次抓出一条序列,不是特定的
我用多行匹配/\>.*?\*/m不行。。
我的罗嗦方法:----us.
我的罗嗦方法:

use Bio::Perl;
@seq_object_array = read_all_sequences($filename,'fasta');

my $runs = 10; #randomly extracts sequence for 10 times
for (my $i=0; $i<$runs; $i++){
my $seq_obj = $seq_object_array [ int( rand (scalar @seq_object_array) ) ];
print ">", $seq_obj->id, "\n", $seq_obj->seq, "\n";
}

需要装bioperl。没有bioperl的话,自己手工读入也行。基本上这个不是bioperl的问题,会写程序的人不会用随机函数?

你把$/设置成$/=">";然.
你把$/设置成$/=">";然后读文件就行了
将序列文件全部写入一个字.
将序列文件全部写入一个字符串变量,比如说叫$seq

while ( $seq =~ s/(\>.+\n)\>/\>/sg ) { #在$seq中全局匹配任意相邻两个“>”之间的字符。
  $one_seq=$1;
  $one_seq=~/\>(.+?\d)\n(.+?)\n/s; #注意这里只有序列名称最后一个字符是数字的才会被匹配到。
  $seq_name=$1;
  $seq=$2;
  $seq=~s/\n|\s//g; #如果必要的话删除序列中的空格和回车符
}