Perl去重fasta序列

常规方法

#! usr/bin/perl -w
use strict;
my $input=shift;
my %hash;
open IN,"<$input";
$/=">";
while(<IN>){
    chomp;
    $hash{$_}=1;
}
foreach my $key(keys %hash){
    print ">$key";
}
close IN;

Bioseq模块方法

#!/usr/bin/perl
use Bio::SeqIO;

my $fas=shift @ARGV;
my $IN=Bio::SeqIO->new(-file=>"$fas",-format=>'fasta');
my $OUT=Bio::SeqIO->new(-file=>">New_$fas",-format=>'fasta');
my $check={};
while (my $seq=$IN->next_seq()){
    my $id=$seq->id;
    unless($check->{$id}){
       $check->{$id}=1;
       $OUT->write_seq($seq);
    }
}
$IN->close();
$OUT->close();
print "Finished!\n";

单行命令

cat cat_allsample.fa |perl -076 -ne 'chomp; print ">$_" unless $c{$_}++ '|grep -c '>'

原文地址:https://www.cnblogs.com/jessepeng/p/11221893.html

时间: 2024-10-03 21:41:29

Perl去重fasta序列的相关文章

samtools faidx 命令处理fasta序列

samtools faidx 能够对fasta 序列建立一个后缀为.fai 的文件,根据这个.fai 文件和原始的fastsa文件, 能够快速的提取任意区域的序列 用法: samtools faidx input.fa 该命令对输入的fasta序列有一定要求:对于每条序列,除了最后一行外, 其他行的长度必须相同, >one ATGCATGCATGCATGCATGCATGCATGCAT GCATGCATGCATGCATGCATGCATGCATGC ATGCAT >two another chro

bowtie2-inspect 根据bowtie2的索引取得fasta 序列

今天运行tophat2的时候看到下面这条记录: [2016-02-27 11:40:03] Checking for reference FASTA file Warning: Could not find FASTA file /home/pub/database/Human/hg19/bowtie2_db/hg19.fa.fa [2016-02-27 11:40:03] Reconstituting reference FASTA file from Bowtie index Executi

通过bed文件获取fasta序列

一.BED 文件格式 BED 文件格式提供了一种灵活的方式来定义的数据行,以用来描述注释的信息.BED行有3个必须的列和9个额外可选的列. 每行的数据格式要求一致. 必须包含的3列: 1.chrom, 染色体名字(e.g. chr3, chrY) 2.chromStart, 目标区段在染色体起始位置,染色体第一个碱基的位置是0 3.chromEnd, 目标区段在染色体结束位置,染色体的末端位置没有包含到显示信息里面.例如,首先得100个碱基的染色体定义为chromStart =0 . chrom

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

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

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 ope

统计fasta序列条数

1.统计大于号开始的行数或seqkit 工具 # 通过搜索>的数量 grep -c '^>' myFasta.fasta 1397492 #seqkit统计提取,速度也是很快的 seqkit stats t.fa -T | grep -v file | cut -f 4 1397492 # 统计 1-100bp 范围长的序列数 cat t.fa | seqkit seq -m 1 -M 100 | seqkit stat -T | grep -v file | cut -f 4 Total s

C语言读取fasta格式

一开始用fopen  读取文件的时候 总是返回Null Can't open (null) for reading.   原因是最后一个参数后面有"\n" 对于fasta序列有多行的情况,需要把字符串连接, 这在perl 或 python里面都比较容易实现: 在C里面也可以实现, 有个strcat函数, 这里还有一种方法是自定义连接字符串的函数 例一 #include <stdio.h> #include <stdlib.h> #include <stri

perl 模块的创建以及制定perl 模块的路径

1) perl 模块的创建 perl 模块的后缀名为.pm, 其中的内容和一般的perl脚本相同, perl模块中通常放置可重用的函数以及变量, 比如创建一个fasta.pm,里面包含一个统计fasta序列中gc碱基个数的方法: 1 #/usr/bin/perl 2 package fasta; 3 use warnings; 4 use strict; 5 6 sub run { 7 my $seq = shift; 8 return $seq =~ tr /GCgc/GCgc/; 9 10

Linux文件排序和FASTA文件操作

文件排序 seq: 产生一系列的数字; man seq查看其具体使用.我们这使用seq产生下游分析所用到的输入文件. # 产生从1到10的数,步长为1 $ seq 1 10 1 2 3 4 5 6 7 8 9 10 # 产生从1到10的数,步长为1,用空格分割 $ seq -s ' ' 1 10 1 2 3 4 5 6 7 8 9 10 # 产生从1到10的数,步长为2 # 如果有3个数,中间的数为步长,最后一个始终为最大值 $ seq -s ' ' 1 2 10 1 3 5 7 9 $ cat