

% link reactions to their EC_Number 
catalyzed_by_ECclass(ReactionID,EC_Number):-
	setof(EC_Num,
		EnzID^(catalyzed_by(ReactionID,EnzID,'IMPD'),
		part_of_catalyzing_class(EnzID,EnzClassID,'IMPD'),
		concept_accession(EnzClassID,'EC',EC_Num,false)),
	EC_Nums),
	member(EC_Number,EC_Nums).



/****************** Direct Effect ******************/
/*---------- Blocked/Slower down ----------*/
% 12,15,18 enzyme inhibited
concentration(PID,down):-				%concept_name(P,PID,true),	
	produced_by(PID,ReactionID,'IMPD'),	%reaction(ReactionID,'','LycoCyc','IMPD'),
	catalyzed_by_ECclass(ReactionID,EC_Number),
	enzyme_state(EC_Number,inhibited).

% enzyme inhibited
concentration(SID,up):-				%concept_name(S,SID,true),	
	consumed_by(SID,ReactionID,'IMPD'),	%reaction(ReactionID,'','LycoCyc','IMPD'),
	catalyzed_by_ECclass(ReactionID,EC_Number),
	enzyme_state(EC_Number,inhibited).

/*---------- Speeded Up ----------*/
% 10,13,16 enzyme activated
concentration(PID,up):-				%concept_name(P,PID,true),	
	produced_by(PID,ReactionID,'IMPD'),	%reaction(ReactionID,'','LycoCyc','IMPD'),
	catalyzed_by_ECclass(ReactionID,EC_Number),
	enzyme_state(EC_Number,activated).

% enzyme activated
concentration(SID,down):-				%concept_name(S,SID,true),	
	consumed_by(SID,ReactionID,'IMPD'),	%reaction(ReactionID,'','LycoCyc','IMPD'),
	catalyzed_by_ECclass(ReactionID,EC_Number),
	enzyme_state(EC_Number,activated).

/****************** Indirect Effect ******************/
% enzyme no_change -- S up
concentration(PID,up):-				%concept_name(P,PID,true),	
	produced_by(PID,ReactionID,'IMPD'),	%reaction(ReactionID,'','LycoCyc','IMPD'),
	catalyzed_by_ECclass(ReactionID,EC_Number), 
	\+concentration_enzClass(EC_Number,Change),
	enzyme_state(EC_Number,no_change),
	consumed_by(SID,ReactionID,'IMPD'), concentration(SID,up).

% enzyme no_change -- S down
concentration(PID,down):-				%concept_name(P,PID,true),	
	produced_by(PID,ReactionID,'IMPD'),	%reaction(ReactionID,'','LycoCyc','IMPD'),
	catalyzed_by_ECclass(ReactionID,EC_Number),
	\+concentration_enzClass(EC_Number,Change),
	enzyme_state(EC_Number,no_change),
	consumed_by(SID,ReactionID,'IMPD'), concentration(SID,down).



/************ Integrity Constraint **************/
integrityConstraint:-
enzyme_state(EC_Number,State1),enzyme_state(EC_Number,State2),State1\==State2. 


/****************** Simple direct rules ******************/
%This integrity constraint can be put into top theory directly.
/* this can be transform into integrity constraint 
enzyme_state(EC_Number,activated):- concentration_enzClass(EC_Number,up).
enzyme_state(EC_Number,no_change):- concentration_enzClass(EC_Number,no_change).
enzyme_state(EC_Number,inhibited):- concentration_enzClass(EC_Number,down).
*/



