2017-03-04 105 views
1

我目前有一個FASTA文件,裏面有幾個DNA序列。用一個製表符分隔符替換一些行尾

描述符之間的替代行:「\ w {4} \ d {6}」 DNA序列文件 - 一行300多個隨機大寫字母。

我正在嘗試使每個序列選項卡分隔,以便每個描述符和序列位於一個單獨的行上,並由製表符分隔。下面是我曾嘗試:

from __future__ import print_function 
import re 
import sys 

Fasta_seq = open(sys.argv[1]) 
for a_line in Fasta_seq: 
    if re.search('^>.+', a_line): 
    re.sub('.+\n', '.+\t', a_line) 
    print(a_line, end='') 
    else: 
    re.sub('.+', '.+', a_line) 
    print(a_line, end='\n') 

然而,這段代碼似乎並沒有刪除我的描述符年底結束線。它只是返回給我完全相同的輸出。

有沒有人有我所忽視的想法?

+0

右:',添加一個縮進'a_line = a_line.strip()'前'如果'線。在'else'子句的'print'中刪除'end ='\ n''。 – martineau

+0

你在Windows嗎? –

+0

是的,我正在運行Windows 7. – martineau

回答

1

我不確定你是否正在處理離開或插入fasta,但是這個任務可以很容易地完成沒有正則表達式(也使用4空格縮進)。請嘗試以下操作:

Fasta_seq = open(sys.argv[1]) 
output_file = open("outfile.txt", "w") 

seq = "" 

for a_line in Fasta_seq: 

    if a_line.startswith(">"): 

     # Do this only when a sequence has been populated 
     if seq: 
      output_file.write("{}\t{}\n".format(header, seq)) 

     header = a_line.strip() 
     seq = "" 

    else: 
     seq += a_line.strip() 

這應該後`在Fasta_seq a_line在兩個工作離開和交織FASTA輸入

相關問題