我可以知道如何从fasta文件中提取dna序列?我尝试过bedtools和samtools。 Bedtools getfasta做得很好但是对于我的一些文件返回“警告:在fasta文件中找不到染色体”,但事实是床文件中的染色体名称和fasta完全相同。我正在寻找python可以为我做这个任务的其他选择。
床文件:
chr1:117223140-117223856 3 7
chr1:117223140-117223856 5 9
Fasta文件:
> chr1:117223140-117223856
CGCGTGGGCTAGGGGCTAGCCCC
所需的输出:
&gt ; CHR1:117223140-117223856
CGTGG
> CHR1:117223140-117223856
TGGGC
答案 0 :(得分:3)
domain.com
Customer1.domain.com
Customer2.domain.com
...
CustomerN.domain.com
是你想要使用的:
BioPython
答案 1 :(得分:1)
尝试,用:
from Bio import SeqIO
#I use RAM, and to store fasta in dictionary
parser = SeqIO.parse(open("input.fasta")
dict_fasta = dict([(seq.id, seq) for seq in parser, "fasta")])
output = open("output.fasta", "w")
for line in open("input.bed"):
id, begin, end = line.split()
if id in dict_fasta:
#[int(begin)-1:int(end)] if the first base in a chromosome is numbered 1
#[int(begin):int(end)+1] if the first base in a chromosome is numbered 0
output.write(dict_fasta[id][int(begin)-1:int(end)].format("fasta"))
else:
print id + " don't found"
output.close()
你知道,染色体的第一个碱基编号为1:
>chr1:117223140-117223856 CGTGG >chr1:117223140-117223856 TGGGC
你得到,染色体的第一个碱基编号为0:
>chr1:117223140-117223856 GTGGG >chr1:117223140-117223856 GGGCT
答案 2 :(得分:1)
您的床文件需要以制表符分隔才能使用它。用制表符替换冒号,破折号和空格。
BedTools doc页面说" bedtools要求所有BED输入文件(以及从stdin接收的输入)以制表符分隔。" BedTools