【ROSALIND】【練Python,學(xué)生信】62 包含分枝長(zhǎng)度信息的Newick格式

如果第一次閱讀本系列文檔請(qǐng)先移步閱讀【ROSALIND】【練Python,學(xué)生信】00 寫(xiě)在前面 ?謝謝配合~

題目:
包含分枝長(zhǎng)度信息的Newick格式(Newick Format with Edge Weights)
?
Given: A collection of n weighted trees (n≤40) in Newick format, with each tree containing at most 200 nodes; each tree Tk is followed by a pair of nodes xk and yk in Tk.
所給:n個(gè)(不超過(guò)40個(gè))以Newick格式表示的進(jìn)化樹(shù),每棵樹(shù)包含的結(jié)點(diǎn)不超過(guò)200個(gè);所給文件的形式為一棵樹(shù)Tk,后面跟隨著這棵樹(shù)中的一對(duì)結(jié)點(diǎn)xk和yk。
Return: A collection of n numbers, for which the kth number represents the distance between xk and yk in Tk.
需得:n個(gè)正整數(shù),分別代表xk和yk在Tk內(nèi)的距離。
?
測(cè)試數(shù)據(jù)
(dog:42,cat:33);
cat dog
?
((dog:4,cat:3):74,robot:98,elephant:58);
dog elephant
測(cè)試輸出
75 136
?
生物學(xué)背景
? ? ? ?在生物學(xué)研究中,建立進(jìn)化樹(shù)的最終目的是構(gòu)建一個(gè)分子鐘,從而定量表示進(jìn)化樹(shù)中兩個(gè)成員之間的進(jìn)化距離。進(jìn)化樹(shù)上每個(gè)葉子結(jié)點(diǎn)代表一個(gè)物種,葉子結(jié)點(diǎn)之間的距離可以代表兩個(gè)物種之間的差異程度。如此,我們只需要把兩個(gè)結(jié)點(diǎn)之間每個(gè)邊上的數(shù)字相加,就可以得到兩個(gè)物種的進(jìn)化距離。
? ? ? ?在48 Newick格式與進(jìn)化樹(shù)中,我們已經(jīng)接觸到了Newick 這種表示進(jìn)化樹(shù)的格式,區(qū)別只在于48 Newick格式與進(jìn)化樹(shù)忽略了各邊上的距離,我們這里只需要添加上即可,也就是把Newick格式推廣應(yīng)用到加權(quán)樹(shù)上。表示方法為:(v1:d1,v2:d2,…,vn:dn)u,其中v1,v2,…,vn是樹(shù)T中的相鄰結(jié)點(diǎn),這些結(jié)點(diǎn)又都與結(jié)點(diǎn)u相連, di則為邊{vi,u}的長(zhǎng)度。
?
思路
? ? ? ?在這里先請(qǐng)大家原諒,由于自身工作問(wèn)題,這幾個(gè)月我?guī)缀鯖](méi)有再碰過(guò)生信,我的能力也快發(fā)揮到極限了,后面的題只會(huì)越做越艱難。這道題我只用現(xiàn)成的工具包得到正確答案,沒(méi)有扎扎實(shí)實(shí)的自己寫(xiě)代碼解決。這里的解決方法同48 Newick格式與進(jìn)化樹(shù)里的方法1一模一樣,我這里就偷懶了。如果有同學(xué)自己寫(xiě)了代碼又想與別人分享,也歡迎私信我呀,我整理之后再補(bǔ)充到這里,希望能和大家共同學(xué)習(xí)討論(>▽<)。
?
代碼