zoukankan      html  css  js  c++  java
  • perl 多fasta文件匹配,并提取匹配文件第一条序列

    目标如题,有多个fasta文件和一个文件名列表,将文件名列表中包含的文件匹配出来并提取第一条序列合并成一个fa文件。

    这个采用perl实现,用法和代码如下:

    image

      1 #!/usr/bin/perl -w
      2 use strict;
      3 
      4 sub usage{
      5 	die "usage:perl $0 <fa.list> <Fasta_Dir> <merged.fa>
    ",unless(@ARGV==3);
      6 }
      7 usage();
      8 
      9 open LIST,"$ARGV[0]";
     10 open F,"$ARGV[1]";
     11 open OU,">$ARGV[2]";
     12 
     13 my @listName=<LIST>;
     14 
     15 my @files=glob("$ARGV[1]/*.faa");
     16 my $matchNum=0;
     17 
     18 foreach my $k(@files){
     19 	my $fileName=(split ///,$k)[-1];
     20 	if(grep /^$fileName$/,@listName){
     21 		$matchNum+=1;
     22 		open EACH,"$ARGV[1]/$fileName";
     23 		$/=">";
     24 		<EACH>;
     25 		while(<EACH>){
     26 			chomp;
     27 			my @info=split /
    /,$_;
     28 			my $seqID=shift @info;
     29 			my $seq=join "",@info;
     30 			print OU ">$seqID
    $seq
    ";
     31 			last;
     32 		}
     33 		$/="
    ";
     34 	}
     35 }
     36 
     37 print "match: $matchNum files,and merge completed!
    ";
     38 
     39 close LIST;
     40 close F;
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
  • 相关阅读:
    递归方法:对于树形结构的表,根据当前数据获取无限极的父级名称
    P
    A
    今年暑假不AC1
    J
    今年暑假不AC
    A
    *max_element函数和*min_element函数
    1199: 房间安排
    素数
  • 原文地址:https://www.cnblogs.com/mmtinfo/p/12113036.html
Copyright © 2011-2022 走看看