0
我有一个fasta文件。我需要删除含有“N”或不含至少3个独特碱基的序列。 目前为止的代码如下。另外,我将如何删除序列ID行,以便删除序列。perl来检查序列是否包含至少3个独特的碱基,如果不删除
#!/usr/bin/perl
use strict;
use warnings;
open FILE, '<', $ARGV[0] or die qq{Failed to open "$ARGV[1]" for input: $!\n};
open match_fh, ">$ARGV[0]_trimmed.fasta"
or die qq{Failed to open for output: $!\n};
while (my $line = <FILE>) {
chomp($line);
if ($line =~ m/^>/) {
print match_fh "$line\n";
my @data = split(/\|/, $line);
my $nextline = <FILE>;
if ($nextline !~ /N+/g) {
if ($nextline =~ /[ATGC]{3}/g) {
}
print match_fh "$nextline";
}
}
}
close FILE;
close match_fh;
INPUT
>seq1
ATGCGGGATGATCCGAACGTTTAATCTCGTATGCCGTCTTCTATCTCNNN
>seq2
GATGAGCTTGACTCTAGTCCATCTCGTATGCCGTCTTCTGCTATCTCGTA
>seq3
TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTC
>seq4
TGGTACTGTAAGCATGAGAGTAATCTCGTATGCCGTCTTCTGCTTGAAAA
OUTPUT
>seq2
GATGAGCTTGACTCTAGTCCATCTCGTATGCCGTCTTCTGCTATCTCGTA
>seq4
TGGTACTGTAAGCATGAGAGTAATCTCGTATGCCGTCTTCTGCTTGAAAA
什么是你的代码错误?它是否提供错误或不正确的结果?如果是,哪个? – user5226582
它不会删除不少于3个唯一字符的行。 – cara
你能提供一个简短的样本输入文件和预期的输出文件吗? – dgw