
:-set(nodes,20000)?
:-set(r,1000000000000000000000000)?
:-set(h,1000000000000000000000000)?
:-set(cover,OFF)?
:-consult(protein_list_training)?
:-consult(nad_training)?
:-consult(fad_training)?
:-consult(posneg_training_reversed)?
:-consult(amino_properties3)?

  :- set(noise,100)?
  :- set(c,1)?

:- modeh(1,active(+protein))?



interaction2(P,R1,X,R2,Y,D,E):-var(E),!, interaction(P,R1,X,R2,Y,D),error(E).
interaction2(P,R1,X,R2,Y,D,E):-number(E),interaction(P,R1,X,R2,Y,D2),Diff is D2-D, absolute_value(Diff,E2), E2 =< E.

trip(P,P1,P2,D1,E1,P3,D2,E2,D3,E3):-
tri(P,R1,R2,D1,E1,R3,D2,E2,D3,E3),prop(R1,P1),prop(R2,P2),prop(R3,P3).


tri(P,R1,R2,D1,E1,R3,D2,E2,D3,E3):-
interaction2(P,R1,X,R2,Y,D1,E1),interaction2(P,R1,X,R3,Z,D2,E2),
interaction2(P,R2,Y,R3,Z,D3,E3),X<Y,Y<Z.


:- modeb(20000,trip(+protein,#p1,#p2,#d1,#e1,#p3,#d2,#e2,#d3,#e3))?
:- determination(active/1,trip/10)?

error(2.500).

false:-
       hypothesis(Head,Body,_),
       not(in(A,Body),
       functor(A,_,10)).

absolute_value(X,X):- X >= 0, !.
absolute_value(X,Y):- X < 0, Y is -X.


