我有一个包含起点和终点的区域列表。 我使用了“ 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)
答案 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无效。