无码av一区二区三区无码,在线观看老湿视频福利,日韩经典三级片,成 人色 网 站 欧美大片在线观看

歡迎光臨散文網(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ó)家法律
常山县| 镇原县| 扎兰屯市| 广宗县| 武清区| 北海市| 广丰县| 南京市| 广宁县| 遂昌县| 佛山市| 九寨沟县| 富顺县| 崇信县| 克拉玛依市| 漳州市| 庐江县| 汉阴县| 丰原市| 文登市| 枣阳市| 泗水县| 衡阳市| 偃师市| 星子县| 富锦市| 和林格尔县| 承德市| 牡丹江市| 二连浩特市| 陆川县| 巴马| 吉隆县| 湘乡市| 合水县| 饶平县| 嫩江县| 利辛县| 庆云县| 盐山县| 疏勒县|