Hello,
I work in a bioinformatics group and we're interested in using Drools
for setting up an assertion engine for biological processes.
We have over 300 genomes ( == sets of facts), each with upwards of
10K genes/features with annotations ( == facts). We want to be able
to predict whether various biological processes exist, based on
presence of the annotated genes that are the components of the
process. Asserted processes are not black and white; we may have
various levels of certainty, based on the percentage of component
genes found (because we can't be certain that not finding a certain
annotation means the the gene isn't in the genome -- it could mean
that we just didn't find it). In addition, processes tend to be
composed of sub-processes. The assertions then get used to make
additional annotations on the features, which we then use to help us
look for missing components. Therefore, we need to be able to display
the decisions that led to a specific assertion, as well as the
features that went into the component assertions.
In addition, we regularly add new processes, as we get new ways to
annotate genes, or read about newly worked-out processes. We really
don't want to have to run all rules against all the genomes every
time we add a new rule, but just add that rule.
We would like to define the actual rules for the assertions in
Drools, but don't know how we would do certain parts.
1) Can one walk through the rule hierarchy from a given rule and
tease out the hierarchy of rules and the facts that went into that rule?
2) Is it possible to add a rule, or set of interacting rules, and
have them incrementally evaluated, instead of forcing full
evaluation? Alternatively, can the rulesets be individually defined
and run in such a way that they interact?
Thanks,
Alexander Richter