public static Pattern controlsStateChangeBothControlAndPart ( ) { Pattern p = new Pattern ( SequenceEntityReference . class , "controller ER" ) ; p . add ( linkedER ( true ) , "controller ER" , "controller generic ER" ) ; p . add ( erToPE ( ) , "controller generic ER" , "controller simple PE" ) ; p . add ( linkToComplex ( ) , "controller simple PE" , "controller PE" ) ; p . add ( peToControl ( ) , "controller PE" , "Control" ) ; p . add ( controlToConv ( ) , "Control" , "Conversion" ) ; // the controller PE is also an input p . add ( new ParticipatesInConv ( RelType . INPUT ) , "controller PE" , "Conversion" ) ; // same controller simple PE is also an output p . add ( linkToComplex ( ) , "controller simple PE" , "special output PE" ) ; p . add ( equal ( false ) , "special output PE" , "controller PE" ) ; p . add ( new ParticipatesInConv ( RelType . OUTPUT ) , "special output PE" , "Conversion" ) ; stateChange ( p , "Control" ) ; // non-generic input and outputs are only associated with one side p . add ( equal ( false ) , "input simple PE" , "output simple PE" ) ; p . add ( new NOT ( simplePEToConv ( RelType . OUTPUT ) ) , "input simple PE" , "Conversion" ) ; p . add ( new NOT ( simplePEToConv ( RelType . INPUT ) ) , "output simple PE" , "Conversion" ) ; p . add ( equal ( false ) , "controller ER" , "changed ER" ) ; p . add ( type ( SequenceEntityReference . class ) , "changed ER" ) ; return p ; }
Pattern for a EntityReference has a member PhysicalEntity that is controlling a state change reaction of another EntityReference . In this case the controller is also an input to the reaction . The affected protein is the one that is represented with different non - generic physical entities at left and right of the reaction .