我有一个二叉树:
root
/ \
g h
/ \ / \
d a e f
/ \
b c
每个节点都有 'seq' 特征,它存储每个节点的 dna 序列('AACCGGT')
都是叶子(b,c和e,f)的姐妹每个都有一个分数(float)我想要的是:
- 将有分数的叶子的分数与它的妹妹 b.score 与 c.score 进行比较
d.score = max (b.score,c.score)
e、f 和 h 相同
- 比较 a.seq 和 d.seq ==> d 和 e 会有一个分数
- g.score max (e.score, a.score) ...直到到达根节点注意:每个叶节点都有“模型特征”我根据 b.model 比较 b.seq 和 c.seq ==>我得到了b.score 然后基于 c.model ==> 我得到了 c.score
这是我写的函数,但我不确定它是否符合我的要求,我无法测试它,因为我还没有 align_trna 函数
def effect_score(n):
if (n.score)==0:
n.score,n.model=affect_score(n.get_children()[0])
result=n.score
model=n.model
if not n.is_root():
sis=n.get_sisters()[0]
if sis.score==0:
sis.score,sis.model=affect_score(sis.get_children()[0])
n.score=align_trna(n.seq,sis.seq,n.model)
sis.score,sis.model= align_trna(nseq, sis.seq,sis.model)
if n.score < sis.score:
result=sis.score
model=sis.model
return result,mode
l
谁能帮助我告诉我是否正在考虑写作?请注意,这是我第一次使用树数据结构和递归提前感谢任何建议