最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

【ROSALIND】【練Python,學(xué)生信】38 求解最長(zhǎng)公共子序列

2020-01-28 10:27 作者:未琢  | 我要投稿

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

題目:

尋找共有的經(jīng)剪接模序(Finding a Shared Spliced Motif)

Given: Two DNA strings s and t (each having length at most 1 kbp) in FASTA format.

所給:兩條長(zhǎng)度不超過(guò)1kb的DNA序列s和t,以FASTA給出。

Return: A longest common subsequence of s and t. (If more than one solution exists, you may return any one.).

需得:s和t的最長(zhǎng)公共子序列(如果不止一個(gè),給出任一個(gè)即可)。

?

測(cè)試數(shù)據(jù)

>Rosalind_23

AACCTTGG

>Rosalind_64

ACACTGTGA

測(cè)試輸出

AACTGG

?

背景

????????在30 鑒定不連續(xù)的DNA模序中我們核酸剪接以及不連續(xù)模序的概念,為了找到兩條序列間不連續(xù)的相同子序列,我們需要求解最長(zhǎng)公共子序列。

?

思路

????????這里的方法其實(shí)和24 求解最長(zhǎng)遞增子序列完全一樣,代碼也基本是從那道題復(fù)制過(guò)來(lái)的。求最長(zhǎng)遞增子序列的問(wèn)題實(shí)質(zhì)就是求所給序列和原先的連續(xù)遞增序列的最長(zhǎng)公共子序列。本題思路和代碼不再作解釋,詳細(xì)請(qǐng)參考24 求解最長(zhǎng)遞增子序列。

?

代碼

def LCSQ(s1, s2):
???
"""用動(dòng)態(tài)規(guī)劃求解最長(zhǎng)公共子序列的函數(shù)"""
???
m, n = len(s1), len(s2)
??? dp = [[[
"", 0] for j in list(range(n + 1))] for i in list(range(m + 1))]
???
for i in list(range(1, m + 1)):
??????? dp[i][
0][0] = s1[i - 1]
???
for j in list(range(1, n + 1)):
??????? dp[
0][j][0] = s2[j - 1]

???????
for i in list(range(1, m + 1)):
???????????
for j in list(range(1, n + 1)):
???????????????
if s1[i - 1] == s2[j - 1]:
??????????????????? dp[i][j] = [
'↖', dp[i - 1][j - 1][1] + 1]
???????????????
elif dp[i][j - 1][1] > dp[i - 1][j][1]:
??????????????????? dp[i][j] = [
'←', dp[i][j - 1][1]]
???????????????
else:
??????????????????? dp[i][j] = [
'↑', dp[i - 1][j][1]]

??????? s3 = []
??????? i = m
??????? j = n
???????
while i > 0 and j > 0:
???????????
if dp[i][j][0] == '↖':
??????????????? s3.append(dp[i][
0][0])
??????????????? i -=
1
???????????????
j -= 1
???????????
elif dp[i][j][0] == '←':
??????????????? j -=
1
???????????
elif dp[i][j][0] == '↑':
??????????????? i -=
1
???????
s3 = s3[::-1]
???????
return s3


f =
open('input.txt', 'r')
lines = f.readlines()
f.close()

[index, seq] = readfasta(lines)
seq1 = seq[
0]
seq2 = seq[
1]
res = []
res = LCSQ(seq1, seq2)
res =
''.join(res)
# print(res)
f = open('output.txt', 'w')
f.write(res)
f.close()

?


【ROSALIND】【練Python,學(xué)生信】38 求解最長(zhǎng)公共子序列的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
广东省| 高雄市| 华亭县| 永川市| 和硕县| 泰和县| 武陟县| 奈曼旗| 娄烦县| 郑州市| 富民县| 兴海县| 西盟| 游戏| 鲜城| 延庆县| 磐石市| 平远县| 金沙县| 留坝县| 昌宁县| 万州区| 突泉县| 长沙县| 鹤山市| 咸丰县| 保康县| 安阳市| 清流县| 金乡县| 泸溪县| 北碚区| 体育| 兰溪市| 罗源县| 登封市| 灯塔市| 二手房| 浪卡子县| 瑞安市| 海城市|