学习JBoss流口水:我的模特应该是什么

时间:2010-07-22 20:31:00

标签: java model rules drools bioinformatics

我正在学习JBoss Drools,我正在玩hapmap项目的遗传学数据:(http://hapmap.ncbi.nlm.nih.gov/genotypes/latest/forward/non-redundant/)。此目录中的每个文件都是一个表格,其顶部是个人,左侧是基因组上的位置,以及观察到的突变每个人/位置。

在这里,我想使用Drools在文件中找到一些潜在的错误(例如,孩子没有父母的任何变异)。

1)我想在Drools中加载这些数据。这可能是大量数据(例如,genotypes_chr2_YRI_r27_nr.b36_fwd.txt.gz是20Mo gzip)这些数据是否会存储在内存中?还是Drools将它存放在某个地方?或者我应该使用持久性系统?

2)关于模型:

我在考虑将以下类放在 StatefulKnowledgeSession 中:

class Individual
 {
 private String name;
 //constructor, getters, setters etc...
 }

class Position
 {
 private String name;
 private String chromosome;
 private int position;
 //constructor, getters, setters etc...
 }

class ObservedMutation
 {
 private String individualName;
 private String positionName;
 private String observed;
 //constructor, getters, setters etc...
 }

或ObservedMutation应该是:

class ObservedMutation
 {
 private Individual individual;
 private Position position;
 private String observed;
 //constructor, getters, setters etc...
 }

谢谢你的建议

皮尔

更新:我的第一次测试:http://plindenbaum.blogspot.com/2010/07/rules-engine-for-bioinformatics-playing.html

2 个答案:

答案 0 :(得分:2)

是的,当您插入大量数据时,Drools会将它们存储在内存中。 20 Mb可能不是问题 - 只需尝试一下。

为您建议的模型类编写规则应该很简单 - 第一次测试中的hapmap.drl示例中的规则看起来合理。您的两个ObservedMutation类之间的选择与其他任何东西一样都是一种品味问题,因为它们会产生不同的DRL规则语法。我将从第二个版本开始,看看你是如何进行的:如果你有对象属性(如在ObservedMutation的第二个版本中),可能是非显而易见的事情,你可能需要使用this来引用绑定对象,例如$p in:

when
    ObservedMutation($p : position)
    Position(this == $p)

答案 1 :(得分:1)

我认为它应该是第二个。我更喜欢像String这样的原语对象。