2010-03-10 76 views
1

我有一個有趣的遺傳學問題,我想在本機Python中解決(沒有任何標準庫)。這是爲了使解決方案在任何計算機上都可以很容易地使用,而不需要用戶安裝額外的模塊。本地Python中的DNA序列對齊(無biopython)

這。我從454新一代測序運行中獲得了100,000個DNA序列(高達20億個)。我想修剪四肢,以移除兩端可能存在的引物,包括正常序列和有義序列。例如:

seq001: ACTGACGGATAGCTGACCTGATGATGGGTTGACCAGTGATC 
     --primer-1---     --primer-2- 

引物可以是本一次或多次(一個右後等)。正常的意義總是在左邊,而在右邊則是相反的。因此,我的目標是找到引物,剪切序列,使得只剩下無引物的部分。爲此,我想使用已經在本地Python中實現的經典對齊算法(即:Smith-Waterman)(即:不通過biopython)。我意識到這可能需要一段時間(長達數小時)。

注意:這不是一個直接的「單詞」搜索,因爲序列和引物中的DNA都可以因多種技術原因而「突變」。

你會用什麼?

+0

模糊正則表達式的鏈接這是一個商業項目,大學研究項目,還是僅僅爲了好玩? – 2010-03-10 23:04:32

+0

@Christian Oudard這是一個大學研究項目。 – Morlock 2010-03-11 15:09:01

回答

1

簡要研究該算法,這不是件容易的事情。這將需要一些非常嚴肅的算法工作。嘗試重新調整你的期望從「小時」到「幾天或幾周」。

編程實現,這將需要:

  • 一般Python編程高能力
  • 算法編程經驗,並且時間複雜度有很好的理解。
  • 對dict,set和deque等python數據結構及其複雜性特徵的理解。
  • 熟悉unittests。

這個程序員現在可能也可能不會。這聽起來像一個很棒的項目,祝你好運!

+1

@Christian Oudard我暗示的時間(小時)指的是算法可能需要的時間,而不是創建它需要多長時間:)從我發現的情況來看,我寧願決定深入探索使用遺傳學領域已有的可用(和質量)工具。自從你完成了我釘了一半的釘子,同時反思了在這裏重新發明輪子的適當性以來,我給了你'答案'。乾杯! – Morlock 2010-03-11 02:48:41

1

這裏有大約是問題的文件:

Rocke, On finding novel gapped motifs in DNA sequences, 1998

希望通過該論文及其參考文獻,以及其他引用上述內容的論文,您可以找到許多關於算法的想法。你不會找到python代碼,但是你可能會發現你可以用Python實現的算法的描述。

+0

謝謝希思。但是,我確實在尋找Python實現:)乾杯! – Morlock 2010-03-10 19:57:59

1

你可以很簡單地使用正則表達式來做到這一點?我不認爲這會很複雜!事實上,我剛剛完成了一些代碼,爲大學裏的其中一個人做了與此相似的代碼!

如果不尋找確切的引物拷貝,由於突變,那麼可以應用模糊匹配的元素!我也很乾脆找了確切的底漆的版本在開始和結束相匹配,並且使用下面的代碼返回的值減去那些引:

pattern = "^" + start_primer + "([A-Z]+)" + end_primer + "$" # start primer and end primer are sequences you are looking to match 
regex = re.match(pattern, sequence) # sequence is the DNA sequence you are analyzing 
print regex.group(1) # prints the sequence between the start and end primers 

下面是蟒蛇http://hackerboss.com/approximate-regex-matching-in-python/

+0

爲什麼-1?總是很高興知道如何改善我的答案! – gawbul 2012-01-23 16:52:52