0

我正在尝试从 mpileup txt 文件中过滤掉插入和删除。插入或删除的一个例子是 +3ATG 或 -9AATCGTCTC。

在另一篇文章中,我找到了使用 perl 的解决方案:

引用来自表达式早期部分的匹配项的正则表达式

但是,该脚本将插入和删除写入特殊变量 $&。我想用新变量中的任何内容替换所有插入和删除。所以我的解决方案是相同的,但是在开始时替换并且什么都不替换,见下文。

$row =~ s/(\d+)(??{"."*$1})//xg;

有谁知道为什么它不起作用或替代解决方案?

我也很乐意匹配不是插入或删除的任何内容,并将其设为新变量。


这是输入的示例:

$,.................................,,..................,, ....,,G。,,,,,..,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,.,......,,,,......,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,......,,......,,,,,, ,,,,,......,,,,,,,,,,,,,,,,,,,,,,,,,,.,,.,,,...... ....................,,.,........,.,.,,....,... ........,,......................,,,,,,...... .............,,,,,,,,........,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, .,,,,,,,,,,,,,,,,,,,,.+12GATGCTGTGTTT..,,,,,,,,.,,,,,,,,,,,,,,,, ,,,,,,,,.,,.,,-8tgatgctg,,,...,,..,,,,,,,,,,,,,,,,,,,,,,,, ,,,,..

这是我想要的输出示例:

$,.................................,,..................,, ....,,G。,,,,,..,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,.,......,,,,......,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,......,,......,,,,,, ,,,,,......,,,,,,,,,,,,,,,,,,,,,,,,,,.,,.,,,...... ....................,,.,........,.,.,,....,... ........,,......................,,,,,,...... .............,,,,,,,,........,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, .,,,,,,,,,,,,,,,,,,,,.+..,,,,,,,,.,,,,,,,,,,,,,,,, ,,,,,,,.,,.,,-,,,...,,..,,,,,,,,,,,,,,,,,,,,,,,,,, ,,..

干杯,

丹尼尔

4

2 回答 2

0

您已经拥有的模式的轻微变化应该可以工作:

$pileup = '$,...........................,,.................,,....,,g.,,,,,..,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,...............,,,.....,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.....,,.....,,,,,,,,,,,......,,,,,,,,,,,,,,,,,,,,,,,,,,.,,.,,,.............................,,.,.........,.,.,,....,..........,,......................,,,,,,...........................,,,,,,,,.....,..,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,.+12GATGCTGTGTTT..,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,.,,.,,-8tgatgctg,,,...,,..,,,,,,,,,,,,,,,,,,,,,,,,,,,,..';

$pileup =~ s/[+-](\d+)(??{"[ACGTN]{$1}"})//gi;

print($pileup, "\n");

产品

$,.................................,,..................,, ....,,G。,,,,,..,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,.,......,,,,......,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,......,,......,,,,,, ,,,,,......,,,,,,,,,,,,,,,,,,,,,,,,,,.,,.,,,...... ....................,,.,........,.,.,,....,... ........,,......................,,,,,,...... .............,,,,,,,,........,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, .,,,,,,,,,,,,,,,,,,,,...,,,,,,,,.,,,,,,,,,,,,,,,,, ,,,,,,.,,.,,,,,...,,..,,,,,,,,,,,,,,,,,,,,,,,,,,,, ..

您会注意到比示例输出短几个字符,因为您不小心留在了符号 [+-]

于 2016-10-25T04:27:22.927 回答
0

这就是你所追求的吗?

use feature qw(say);

my $DNA = ',...........,,....,,g.,,,,,,,,,,,.+12GATGCTGTGTTT..,,,,,.,,.,,-8tgatgctg,,,,,,,,..';

say $DNA;

$DNA =~ s/\d+[ATGCatgc]*//g;

say $DNA;

,...........,,....,,g.,,,,,,,,,,,.+12GATGCTGTGTTT..,,,,,.,,.,,-8tgatgctg,,,,,,,,..
,...........,,....,,g.,,,,,,,,,,,.+..,,,,,.,,.,,-,,,,,,,,..
于 2016-05-13T11:53:58.930 回答