比如我有以下 序列的FASTA文件:Python:如何基於二進制內容的文本文件提取DNA序列?
>human1
AGGGCGSTGC
>human2
GCTTGCGCTAG
>human3
TTCGCTAG
如何使用Python來閱讀以下的內容來提取 序列的文本文件? 1代表真,0代表假。將僅提取具有值1 的序列。
示例文本文件:
0
1
1
預期輸出:
>human2
GCTTGCGCTAG
>human3
TTCGCTAG
比如我有以下 序列的FASTA文件:Python:如何基於二進制內容的文本文件提取DNA序列?
>human1
AGGGCGSTGC
>human2
GCTTGCGCTAG
>human3
TTCGCTAG
如何使用Python來閱讀以下的內容來提取 序列的文本文件? 1代表真,0代表假。將僅提取具有值1 的序列。
示例文本文件:
0
1
1
預期輸出:
>human2
GCTTGCGCTAG
>human3
TTCGCTAG
這是更好地使用biopython
from Bio import SeqIO
mask = ["1"==_.strip() for _ in open("mask.txt")]
seqs = [seq for seq in SeqIO.parse(open("input.fasta"), "fasta")]
seqs_filter = [seq for flag, seq in zip(mask, seqs) if flag]
for seq in seqs_filter:
print seq.format("fasta")
你:
>human2 GCTTGCGCTAG >human3 TTCGCTAG
解釋
解析FASTA:格式FASTA可能有幾個se的行quences(檢查fasta format),最好使用專門的庫來讀取(解析器)和寫輸出
面膜:我讀解模板文件,並轉換爲布爾[False, True, True]
過濾:使用ZIP功能爲每個序列匹配與他的面具,並且下面我使用列表理解來過濾
我不熟悉的fasta文件格式,專門但希望這有助於。你可以用下面的方法在python中打開你的文件,並在列表中提取有效的行條目。
valid = []
with open('test.txt') as f:
all_lines = f.readlines() # get all the lines
all_lines = [x.strip() for x in all_lines] # strip away newline chars
for i in range(len(all_lines)):
if all_lines[i] == '1': # if it matches our condition
valid.append(i) # add the index to our list
print valid # or get only the fasta file contents on these lines
我用下面的文本文件test.txt運行它:
0
1
1
1
0
0
1
1
,並得到輸出打印valid
時:
[1, 2, 3, 6, 7]
我認爲這將有助於你待着,但如果您需要擴展答案,請在評論中告訴我。
您可以創建一個列表,像一個面具,因爲當你讀你的FASTA文件:
with open('mask.txt') as mf:
mask = [ s.strip() == '1' for s in mf.readlines() ]
然後:
with open('seq.fasta') as f:
for i, line in enumerate(f):
if mask[i]:
*something* line
或:
from itertools import izip
for b, line in izip(open(mask_file), open(seq_file)):
if b.strip() == '1':
*something* line
我覺得這可以幫助你,我真的認爲你應該花一些時間學習Python。 Python是生物信息學的良好語言。
display = []
with open('test.txt') as f:
for line in f.readlines():
display.append(int(line.strip()))
output_DNA = []
with open('XX.fasta') as f:
index = -1
for line in f.readlines():
if line[0] == '>':
index = index + 1
if display[index]:
output_DNA.append(line)
print output_DNA
您的問題是一般性的。你寫了一些代碼嗎? – fecub
試圖獲得一些清晰。所以你有一個DNA序列文件,每行有一個0或1的_separate_文件?然後你想解析文本文件以確定哪些序列是有效的?文本文件實際上是二進制格式,還是指您使用ascii(或其他編碼)文本明確寫入的0和1? – Gil
該文本文件顯然是0和1。 – Allyson