【发布时间】:2018-07-12 14:12:01
【问题描述】:
我是 perl 和 regex 的新手,但我已使用本文中的指导来尝试删除 FASTA 文件中对于给定的“序列不可用”或“没有 UTR 被注释...”的基因序列标识符: https://www.biostars.org/p/127842/
不幸的是,我的 perl 脚本没有产生预期的结果。脚本如下:
#!/usr/bin/perl
use strict;
use warnings;
$/="\n>";
while (<>) {
s/>//g;
my ($id, $seq) = split (/\n/, $_);
print ">$_" if ((length $seq) > 10 && ($seq !~ "Sequence unavailable" or $seq !~ "No UTR is annotated for this transcript"));
}
输入文件如下所示:
>AT1G02810|AT1G02810.1
CTGTGAGCCTATGGCATATGTACCACGTTAAGATTTAAGAAAATCTGGAATAAAAAATGC
AACTAGATATTATGTTATACAAATCTAGGCCAGAGTCGGTTGTTTTCGGACCGTTCTGCC
GTGAAACTGTGTTCCTTAACATTTTGATTTAACGTTTCCATATTTCTGACATTCCAATAA
ATTATTGATAACTAGTAATTAATTAAAACGGTTTACTCTGAACTCTGAAGTGTGTGAGGT
>AT1G04635|AT1G04635.1
Sequence unavailable
> ...
我的脚本输出文件如下:
>CTGTGAGCCTATGGCATATGTACCACGTTAAGATTTAAGAAAATCTGGAATAAAAAATGC
AACTAGATATTATGTTATACAAATCTAGGCCAGAGTCGGTTGTTTTCGGACCGTTCTGCC
GTGAAACTGTGTTCCTTAACATTTTGATTTAACGTTTCCATATTTCTGACATTCCAATAA
ATTATTGATAACTAGTAATTAATTAAAACGGTTTACTCTGAACTCTGAAGTGTGTGAGGT
> ...
但是,我期望的输出是:
>AT1G02810|AT1G02810.1
CTGTGAGCCTATGGCATATGTACCACGTTAAGATTTAAGAAAATCTGGAATAAAAAATGC
AACTAGATATTATGTTATACAAATCTAGGCCAGAGTCGGTTGTTTTCGGACCGTTCTGCC
GTGAAACTGTGTTCCTTAACATTTTGATTTAACGTTTCCATATTTCTGACATTCCAATAA
ATTATTGATAACTAGTAATTAATTAAAACGGTTTACTCTGAACTCTGAAGTGTGTGAGGT
> ...
根据我的理解,我希望这是我的 perl 脚本中的一个简单的语法错误...如果获得所需结果的任何指导,我将不胜感激。
【问题讨论】:
-
如果您不发布工作代码,我们无法帮助您解决问题。我猜你是从文本编辑器粘贴的,它被截断了长行。
-
是的,你是对的,只是在我复制代码时我的想法滑落了。我已经用正确的行更新了原始帖子。