我想展示在蛋白质序列中RNA序列的所有可能的概率,膜联蛋白是蛋白质的名字。事实:
protein(annexin,[phe,leu,gly]).
code('phe') -> codon('UUU','UUC')
code('leu') -> codon('UUA','UUG')
code('gly') -> codon('GGC','GGU')
rules:
rna(X):-
protein(X,[A,B,C].
(i dont know how to permute the triplet codon)
query:
rna(annexin)
result:
UUU,UUA,GGC
UUU,UUG,GGC
UUU,UUA,GGU
UUC,UUA,GGC
...
...发布于 2015-05-23 18:48:13
我认为代码/密码子的表示必须明确,然后
protein(annexin,[phe,leu,gly]).
code(phe, ['UUU','UUC']).
code(leu, ['UUA','UUG']).
code(gly, ['GGC','GGU']).
rna(X, R) :- protein(X, LC), maplist(code_p, LC, R).
code_p(C, R) :- code(C, L), member(R, L).收益率
?- rna(annexin, C).
C = ['UUU', 'UUA', 'GGC'] ;
C = ['UUU', 'UUA', 'GGU'] ;
C = ['UUU', 'UUG', 'GGC'] ;
C = ['UUU', 'UUG', 'GGU'] ;
C = ['UUC', 'UUA', 'GGC'] ;
C = ['UUC', 'UUA', 'GGU'] ;
C = ['UUC', 'UUG', 'GGC'] ;
C = ['UUC', 'UUG', 'GGU'].发布于 2015-05-23 16:23:51
1)
code('phe') -> codon('UUU','UUC')不是通常的事实,我假设你的意思是这样的:
code('phe',codon('UUU','UUC')).2)
你不需要评估所有可能的答案,prolog会由你来做:
rna(X) :-
protein(X,[CA,CB,CC]),
( code(CA,codon(DA,_)); code(CA,codon(_,DA)) ),
( code(CB,codon(DB,_)); code(CB,codon(_,DB)) ),
( code(CC,codon(DC,_)); code(CC,codon(_,DC)) ),
format('~w ~w ~w~n', [DA, DB, DC] ),
fail.(如果您需要对结果进行一些后处理,请删除&fail格式,并使用setof/bagof将所有结果存储在一个列表中)。
https://stackoverflow.com/questions/30408387
复制相似问题