使用samtools从FASTA文件的反向链中提取用户指定的序列。

时间:2018-12-18 05:23:42

标签: samtools

我有一个包含起点和终点的区域列表。 我使用了“ samtools faidx ref.fas区域”命令。这个命令给了我该区域的正向链序列。在samtools手册中,有一个选项可以提取反向链,但无法弄清楚如何使用它。有谁知道如何在Samtools中运行此命令来反转标准?

我的地区就像  LG2:124522-124572(转发)  LG3:250022-250072(反向)  LG29:4822278-4822318(反向)  LG12:2,595,915-2,596,240(转发)  LG16:5,405,500-5,405,828(Revers)

2 个答案:

答案 0 :(得分:0)

您注意到,samtools可以选择--reverse-complement(或-i)从反向链输出序列。

据我所知,samtools不支持允许指定链的区域符号。

一种快速的解决方案是将区域文件分为正向和反向位置,然后运行samtools两次。

下面的步骤相当冗长,因此步骤很明确。例如,用bash中的进程替换来清理它很简单。

# Separate the strand regions.

# Use grep and sed twice, or awk (below).
grep -F '(Forward)' regions.txt | sed 's/ (Forward)//' > forward-regions.txt
grep -F '(Reverse)' regions.txt | sed 's/ (Reverse)//' > reverse-regions.txt

# Above as an awk one-liner.
awk '{ strand=($2 == "(Forward)") ? "forward" : "reverse"; print $1 > strand"-regions.txt" }' regions.txt

# Run samtools, marking the strand as +/- in the FASTA output.
samtools faidx ref.fa -r forward-regions.txt --mark-strand sign -o forward-sequences.fa 
samtools faidx ref.fa -r reverse-regions.txt --mark-strand sign -o reverse-sequences.fa --reverse-complement

# Combine the FASTA output to a single file.
cat forward-sequences.fa reverse-sequences.fa > sequences.fa
rm forward-sequences.fa reverse-sequences.fa

答案 1 :(得分:0)

只想提一下,如果遇到问题,您可能需要将samtools更新到最新版本。就我而言,samtools V1.2无效,而V1.10无效。