【发布时间】:2019-10-13 07:00:34
【问题描述】:
我一直在尝试解决我的脚本,但我真的很感激一些帮助。 我有 2 个输入文件。
第一个是一个多 fasta 文件,其标题如下:
'>AH008024.2 Angelica acutiloba internal transcribed spacers 1 and 2, partial sequence'
'>AJ969149.1 Carthamus tinctorius partial ITS2'
....
(引号只是为了让 > 符号可见,否则不显示...)
第二个是底漆验证文件,如下所示:
AB280738.1,UniplantR,49,68,forward,CCCGHYTGAYYTGRGGTCDC,20,71.4,,,56.5 - 69.8
AB280739.1,UniplantR,49,68,forward,CCCGHYTGAYYTGRGGTCDC,20,71.4,,,56.5 - 69.8
AB280740.1,UniplantR,49,68,forward,CCCGHYTGAYYTGRGGTCDC,20,71.4,,,56.5 - 69.8
...
我想编写第二个文件的“重写”版本,从 fasta 文件中更改物种名称的登录号“AB280738.1”,生成一个制表符分隔的输出,如下所示:
AB280738.1 Glycyrrhiza uralensis ITS1, 5.8S rRNA and ITS2 UniplantR 49 68 forward CCCGHYTGAYYTGRGGTCDC 20 71.4 56.5 - 69.8
AB280739.1 Glycyrrhiza glabra ITS1, 5.8S rRNA and ITS2 UniplantR 49 68 forward CCCGHYTGAYYTGRGGTCDC 20 71.4 56.5 - 69.8
...
最终输出的行数必须与第二个输入文件,primers 文件的行数相同,在本例中为 420 行,但我当前的输出是写 292140 行,它正在匹配,但不是写得好。
我一直在处理我向您展示的这段代码。 我看到我的脚本的“匹配”部分正在工作,但我认为我没有做正确的“推送”步骤。除此之外,还有一些事情使我的嵌套循环递归,因为同一匹配中有多行。 要知道它正在工作,输出必须具有与第二个输入(引物输入)相同的行数。 第二个“打印”告诉我 hou 模式匹配了很多次,它给了我 540 而不是 420。
如果有人想尝试使用它,我想上传我的输入文件和当前输出,但我找不到上传文件的位置..
#!/usr/bin/perl
use diagnostics;
use warnings;
use strict;
print "multifasta:\t";
my $arq1 = <STDIN>;
open (MYFILE, $arq1);
my @file = <MYFILE>;
close (MYFILE);
print "file to rename:\t";
my $arq2 = <STDIN>;
open (MYFILE2, $arq2);
my @file2 = <MYFILE2>;
close (MYFILE2);
my @new_file=();
my $count = ();
open (NEW_FILE, '>>plant_names_primer_bind_renamed.txt');
foreach my $line2 (@file2) {
my @fields = split (/,/, $line2);
my $accession2 = shift(@fields);
foreach my $line (@file) {
if ($line =~ /^>/) {
my $rev = reverse $line;
chop ($rev);
my $header = reverse $rev;
my @header = split (/ /, $header);
my $accession = shift (@header);
if ($accession =~ /$accession2/) {
$count++;
print "$accession2 match $accession\t@header\t@fields\n\n";
print "$count\n";
push (@new_file, ("$accession2\t@header\t@fields"));
print NEW_FILE @new_file;
}
}
}
}
【问题讨论】:
-
你可以尝试上传测试文件到pastebin.com
-
我上传的文件:输入 1:ufile.io/k0zx0r3o 输入 2:ufile.io/szweuy8g 预期/生成的输出:ufile.io/y8yyrk7g 我当前的脚本:ufile.io/s14x346o