[英]Python - Count characters between two specific strings
我制作了一個文本文件,其中包含鹼基的隨機序列(ATCG),並希望在這些序列中找到最長和最短的“閱讀框”。
我能夠通過“ searchfile”和一個for循環來識別起始密碼子和終止密碼子(提到的兩個“特定字符串”),並且還知道計數的基礎(最后是代碼示例),但是我無法我發現有任何可能將這兩個設置為“邊界”。
誰能給我一個提示或告訴我如何調用這樣的函數/操作,以便至少可以在紀錄片中找到它或看起來像什么? 我找到了很多方法來計算各種不同的事物,但沒有一個用於在“ x”和“ y”之間進行計數。
我如何查找要在其間計數的字符串的示例:
searchfile = open('dna.txt', 'r')
for line in searchfile:
if "ATG" in line: print (line)
searchfile.close()
整個代碼:
import numpy as np
BASES = ('A', 'C', 'T', 'G')
P = (0.25, 0.25, 0.25, 0.25)
def random_dna_sequence(length):
return ''.join(np.random.choice(BASES, p=P) for _ in range(length))
with open('dna.txt', 'w+') as txtout:
for _ in range(10):
dna = random_dna_sequence(50)
txtout.write(dna)
txtout.write("\n")
searchfile = open('dna.txt', 'r')
for line in searchfile:
if "ATG" in line: print (line)
searchfile.close()
searchfile = open('dna.txt', 'r')
for line in searchfile:
if "ATG" in line: print (line)
elif "TAG" in line: print (line)
elif "TAA" in line: print (line)
elif "TGA" in line: print (line)
else: print ("no stop-codon detected")
searchfile.close()
旁注:打印說明只是用於測試的臨時占位符。 最后,我想在那一點上將找到的字符串設置為提到的“邊界”(我找不到更好的名稱)。
dna.txt文件中的一些示例行:
GAAGACGCAATAGGTTCACGGCGCTCATAGGCTTGCCCTCATAGGGCTTG
TCTGAGGTAGAAGGAGCTACTGCCGTTGCAGGTGACGCCCACAGTCCTGA
GTTATTACTCCCTGACTGTCATCTGTTCGGATACCGTGCAGCGCATCGAG
AGGAGATAACGCGATCCTGAGACAGTTTACCTATATGTTCACTACGCATG
CCGAGCTGATCCGACTACTGAAGGTGAATTCTGAAGCTAATCTGCAGTTC
這是一個小例子(我使用10和50進行測試),但最后文件應包含10000個序列,每個序列具有1000個字符。
我要做的是這樣的:
with open("dna.txt", 'r') as searchfile:
all_dna = searchfile.read()
start = all_dna.index("ATG")
rem_dna = all_dna[start + 3:]
end = rem_dna.index("ATG")
needed_dna = all_dna[start:(end + 3)]
print len(needed_dna)
index
查找作為參數傳遞的子字符串出現在字符串中的何處,如果未找到子字符串,則會raise ValueError
。 with
是一個關鍵字,可以用作文件I / O的安全預防措施,即使該塊中的代碼導致錯誤,該關鍵字也可以確保正確關閉文件。 如果您不想在“ needed_dna
”中包含開始和結尾的“ ATG”, needed_dna
可以將其設置為all_dna[(start + 3):end]
。 順便說一下,方括號的意思是“取指定字符串的子字符串,該子字符串從冒號前的參數開始(包括零索引),到冒號后的參數結束(不包括零索引,也為零索引)。也可以用於列表,並且可以在不使用冒號的情況下使用,以使字符位於特定索引處。希望這對您有所幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.