perl 多fasta文件匹配,并提取匹配文件第一条序列

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

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

  1 #!/usr/bin/perl -w
  2 use strict;
  3
  4 sub usage{
  5 	die "usage:perl $0 <fa.list> <Fasta_Dir> <merged.fa>\n",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 /\n/,$_;
 28 			my $seqID=shift @info;
 29 			my $seq=join "",@info;
 30 			print OU ">$seqID\n$seq\n";
 31 			last;
 32 		}
 33 		$/="\n";
 34 	}
 35 }
 36
 37 print "match: $matchNum files,and merge completed!\n";
 38
 39 close LIST;
 40 close F;

原文地址:https://www.cnblogs.com/mmtinfo/p/12113036.html

时间: 2024-08-03 05:01:42

perl 多fasta文件匹配,并提取匹配文件第一条序列的相关文章

python抓取m3u8文件,并提取.ts文件合成视频

本节抓取手机app视频,charles抓包部分就不演示了,抓包内容如下: 可以直接抓取到.ts视频文件,但全都是视频片段,如果要抓全部的视频,就要找m3u8文件,里边有所有的视频路径,在拼接url前缀,就可以拿到正确的视频url了. 以下是代码部分: import requests import os,sys import re #读取m3u8文件并提取.ts文件路径 url="http://f1.thishs.com/578a7600fb83e8566227a90f3bd926b4/5E64C

文件处理工具 gif合成工具 文件后缀批量添加工具 文件夹搜索工具 重复文件查找工具 网页图片解析下载工具等

以下都是一些简单的免费分享的工具,技术支持群:592132877,提供定制化服务开发. Gif动图合成工具 主要功能是扫描指定的文件夹里的所有zip文件,然后提取Zip文件中的图片,并合成一张gif图片,存储到新的路径下,支持设置gif的时间,演示效果如下: 下载地址:gif合成工具 文件批量移动工具 主要功能是将指定文件夹及子文件夹里所有文件,复制到新的文件夹下,可以指定是否删除源文件.以下动图演示效果. 下载地址:文件批量移动工具.exe 文件批量移动工具 主要功能是将指定目录下所有文件按照

删除除了匹配到的所有文件以及文件夹

在linux应用中经常用到 rm 有时候只想删除除了匹配到的所有文件以及文件夹. 解决方法一:自己写一个脚本. 方法二:Bash Shell有个extglob选项,开启之后Shell可以另外识别出5个模式匹配操作符,能使文件匹配更加方便. 开启方法很简单,使用shopt命令:shopt -s extglob 开启之后,以下5个模式匹配操作符将被识别: ?(pattern-list) - 所给模式匹配0次或1次: *(pattern-list) - 所给模式匹配0次以上包括0次:+(pattern

Python(2.7.6) glob - 匹配指定模式的文件

Python 标准库的 glob 模块支持查询匹配指定模式的文件或目录.这里的模式使用的并不是正则表达式,而是通过通配符来匹配的 Unix 风格的路径名扩展. 支持的通配符: 通配符 说明 *  匹配任意个字符 ?  匹配一个字符 []  匹配括号间的任一字符,可以使用 - 表示范围  \  转义字符,如用 \? 匹配 ? 假设现在有一个名为 dir 的目录,该目录及其子目录的结构如下: ├── dir │   ├── db.conf │   ├── dir1 │   │   ├── hello

perl学习之:理解贪婪匹配和最小匹配之间的区别

正则表达式的新手经常将贪婪匹配和最小匹配理解错误.默认情况下,Perl 的正则表达式是“贪婪地”,也就是说它们将尽可能多地匹配字符. 下面的脚本打印出“matched defgabcdef”,因为它尽可能多地匹配模式,直至结尾的‘g’. $data = 'abcdefgabcdefg';$data =~ /abc(.+)g/i;print "matched "; 要改变匹配特点,只须简单地在量词(加号[+]或星号[*])后面加一个问号(?)即可.在上面的程序中把模式改为在‘+’之后包含

perl练习——FASTA格式文件中序列GC含量计算&amp;perl数组排序如何获得下标或者键

一.关于程序: FUN:计算FASTA文件中每条序列中G和C的含量百分比,输出最大值及其id INPUT:FASTA格式文件 >seq1 CGCCGAGCGCTTGACCTCCAGCAAGACGCCGTCTGGCACATGCAACGAGCTGTAGCAGAC >seq2 ATGCCTAGAACGTTCGAGACTTCTCGGGTGCGGTAGAATTAGCCATTCGACCGACTTCCA GCATCTGCGAGCCGCCTGTTGATTGCATCCGCCGGGGACGCAACAAGGCAAG

Java递归搜索指定文件夹下的匹配文件

import java.io.File; import java.util.ArrayList; import java.util.List; import java.util.Queue; /** * @author tiwson 2010-06-02 * */ public class FileSearcher { /** * 递归查找文件 * @param baseDirName 查找的文件夹路径 * @param targetFileName 需要查找的文件名 * @param file

perl学习之:肯定匹配和否定匹配

tr/ / / 替换操作符不支持正则表达式 也不具备双引号替换能力m/ /  s/ / / 都支持正则表达式,并且可以提供或限制双引号替换能力 $string = "25abc8";$string =~ /abc(?=[0-9])/;(?=pattern) 前看声明,如果正则表达式在下一次匹配 pattern 风格,就开始匹配,而且不影响匹配效果.如/\w+(?=\t)/将匹配制表符是否恰好在一个字\w+后面出现,并且制表符不添加到$&的值中:$matched = $&

检查打开的文件是不是ELF格式的文件,提取“特别”的节中的信息

//检查打开的文件是不是ELF格式的文件 //检验ELF头 //获得节头表的地址 //遍历节头表,依次查看一个节的属性,从节头字符串表中找到其名称,如果名称和"特别"的section名匹配,则找到此节的地址 //提取"特别"的节中的信息 //显示上面提取的信息 #include<stdio.h> #include<elf.h> #include<stdlib.h> #include<string.h> int main