2

我正在学习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 gzipped) 这些数据会存储在内存中吗?还是 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

4

2 回答 2

2

是的,当你插入大量数据时,Drools 会将它们存储在内存中。20 Mb 可能不是问题 - 试试吧。

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

when
    ObservedMutation($p : position)
    Position(this == $p)
于 2010-07-28T10:32:16.537 回答
1

我觉得应该是第二个。我更喜欢对象而不是像 String 这样的原语。

于 2010-07-22T20:49:10.023 回答