Изучение JBoss слюни: какой должна быть моя модель - PullRequest
2 голосов
/ 23 июля 2010

Я учусь JBoss Drools , и я играю с генетическими данными из проекта hapmap: (http://hapmap.ncbi.nlm.nih.gov/genotypes/latest/forward/non-redundant/).Каждый файл в этом каталоге представляет собой таблицу с индивидуумами вверху, позициями в геноме слева и наблюдаемыми мутациями для каждого индивидуума /position.

Здесь я хотел бы найти некоторые потенциальные ошибки в файле (например, у детей нет мутаций от его родителей) с помощью Drools.

1) Я хочу загрузитьэти данные в слюни.Это может быть большой объем данных (например, 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 ]

2 голосов
/ 28 июля 2010

Да, когда вы вставляете большой объем данных, Drools сохранит их в памяти. 20 Мб, вероятно, не проблема - просто попробуйте.

Было бы просто написать правила для предлагаемых классов моделей - правила в примере hapmap.drl в вашем первом тесте выглядят разумно. Выбор между вашими двумя классами ObservedMutation так же вкусен, как и все остальное, так как они приведут к различному синтаксису правил DRL. Я хотел бы начать со второй версии и посмотреть, как вы поступите: возможно, неявная вещь, если у вас есть свойства объекта (как во второй версии ObservedMutation), заключается в том, что вам может понадобиться использовать this для ссылки на связанный объект например, $p в:

when
    ObservedMutation($p : position)
    Position(this == $p)
1 голос
/ 23 июля 2010

Я думаю, что это должен быть второй.Я бы предпочел объекты над примитивами, такими как String.

...