首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用samtools从FASTA文件的反向链中提取用户指定的序列

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

Stack Overflow用户
提问于 2018-12-18 13:23:42
回答 2查看 296关注 0票数 0

我有一个带有起始点和结束点的区域列表。

我使用了samtools faidx ref.fa <region>命令。这个命令给了我该区域的正向链序列。

在samtools手册中有一个提取反向链的选项,但我不知道如何使用它。

有没有人知道如何在samtools中对反向链运行这个命令?

我的区域如下:

代码语言:javascript
复制
 LG2:124522-124572 (Forward)
 LG3:250022-250072 (Reverse)
 LG29:4822278-4822318 (Reverse)
 LG12:2,595,915-2,596,240 (Forward)
 LG16:5,405,500-5,405,828 (Reverse)
EN

回答 2

Stack Overflow用户

发布于 2019-10-11 04:15:43

正如您所注意到的,samtools具有选项--reverse-complement (或-i)来从反向链输出序列。

据我所知,samtools不支持允许指定链的区域表示法。

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

下面的步骤相当冗长,只是为了让步骤清晰。例如,在bash中使用进程替换来清理这一点是相当简单的。

代码语言:javascript
复制
# 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
EN

Stack Overflow用户

发布于 2020-03-03 08:19:42

我只想提一下,如果遇到问题,您可能需要将samtools更新到最新版本。在我的例子中,samtools V1.2不起作用,而V1.10起作用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53826842

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档