Mpileup正则表达式命令删除indels

时间:2016-05-13 09:43:31

标签: regex perl samtools

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

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

regular expression that reference a match from earlier part of expression

但是,脚本会将插入和删除写入特殊变量$&amp ;.我想在新变量中替换所有插入和删除。所以我的解决方案是相同的,但是在开始时替换并且没有替换,请参见下文。

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

有没有人知道为什么它不会工作或替代解决方案?

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

以下是输入的示例:

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

以下是我想要的输出示例:

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

干杯,

丹尼尔

2 个答案:

答案 0 :(得分:0)

这是你之后的事吗?

use feature qw(say);

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

say $DNA;

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

say $DNA;
,...........,,....,,g.,,,,,,,,,,,.+12GATGCTGTGTTT..,,,,,.,,.,,-8tgatgctg,,,,,,,,..
,...........,,....,,g.,,,,,,,,,,,.+..,,,,,.,,.,,-,,,,,,,,..

答案 1 :(得分:0)

您已经拥有的模式略有不同应该有效:

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

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

print($pileup, "\n");

<强>产生

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

你会注意到的是比你的例子输出更短的几个字符,因为你不小心留在了标志[+ - ]