我需要从有事实描述的文件中读取,例如:
id: GO:0000008
name: thioredoxin
我需要用它构建一个事实,如:"gene(0000008,thioredoxin)."
--- ---加入 嗨,我一直在搜索信息,我发现了DCG条款,显然DCG解决了这个问题,但我没有找到详细的例子。
答案 0 :(得分:1)
这里有一个样本,使用SWI-Prolog帮助程序库
:- [library(dcg/basics)].
read_fact(Fact) -->
"id:", blanks, "GO:", string(DIGITS), "\n", "name:", blanks, string(NAME),
{atom_codes(A_DIGITS, DIGITS),
atom_codes(A_NAME, NAME),
Fact =.. [gene, A_DIGITS, A_NAME]
}.
产量
?- phrase(read_fact(F), "id: GO:0000008\nname: thioredoxin").
F = gene('0000008', thioredoxin) .
正如您所见,DCG可以方便地测试内联字符串,但是从库(pure_input)处理文件phrase_from_file。此外,浏览library(dcg/basics)以了解许多有用的'扫描仪',例如空白// 0或字符串// 1。
答案 1 :(得分:0)
您可以在perl / python / php或类似的地方使用非常小的脚本,将格式更改为您喜欢的格式
例如在perl中
我的($ id)='';
while(<>){
if($ id ne''){
m/name:\s(\w+)$/;
print "gene( id, $1 ).\n";
$id = '';
}
否则{
if( m/id:.*(\d+)/){ $id = $1; }
}
}