Category Archives: announcements

memoization+persistence

The mis-named “tabling” module (should really be called “memoize”) now allows for persisting memoized calls to a file. See:

http://github.com/cmungall/blipkit/blob/master/packages/blipcore/tabling.pro

(docs up on the pldoc server soon).

To see how this works, consider the transitive closure of the subclass/2 fact, as defined in the ontol_db schema:


subclassT(X,Y):- subclass(X,Y).
subclassT(X,Y):- subclass(X,Z),subclassT(Z,Y).

if you end up using a predicate such as this frequently in one session, you can do this at the start of the session


:- use_module(bio(tabling)).

init :- table_pred(ontol_db:subclassT/2).

This rewrites subclassT/2 behind the scenes. See the code for details.

After loading some subclass/2 facts (e.g. from GO), you then call:


forall(subclassT('GO:0006915',X), writeln(X)). % all ancestors of apoptosis

The first time you call this, the original code is called. The second time you call this, it checks to see if it knows the answer for ‘GO:0006915’ – it does – it then returns the previously calculated results, which have been asserted to memory.

However, this caching is lost when the prolog db is destroyed at the end of the session. Now you can persist this:


persistent_table_pred(ontol_db:subclassT/2, 'my_cache.pl').

The first time this is called, cache.pl is created. All results of subclassT/2 calls are saved there.

After the session the file is retained. In future sessions, if this is called again, the cache is loaded into memory and appended with the results of future calls.

In future, the module may also be extended to be made ‘hookable’, with hooks provided for caching to a relational database.

blipkit directory reorganization

previously the layout was

blipkit/
    packages/
        blip/
            [LIBRARY]

This has been simplified to:

blipkit/
    packages/
          [LIBRARY]/

Some URLs in some of the previous posts should be modified accordingly

In addition, each sub-library now has a standard organization:

[LIBRARY]/
    conf/ -- configuration modules
    t/ -- plunit tests (.plt files)
        data/ -- data for tests
    examples/ -- example code
    doc/ -- documentation

blipgit!

It is done.

http://github.com/cmungall/blipkit

See previous post.

blip goes git

The open-bio.org anon svn server is down and likely to stay down, which is the final impetus for moving the repo to github, following in the footsteps of BioPerl. Thea is already on github.

I will most likely create a fresh project rather than attempting to migrate history with svn2git. Once the transition is done, I’d like to make a few organizational changes:

  • Rename all .pro files to .pl
  • simplify directory structure, package/blip/X/ –> X/
  • move from svn to github
  • merge phylo/ and homol/
  • merge curation/ and ontol/
  • separate project for each package? use git submodules
  • move sql/sql_schema/X to appropriate package; e.g. schema_enscompara to phylo/
  • test directory for each package
  • move test files to individual packages
  • separate distros/projects for non-bio stuff

Thea paper accepted for OWLED2009

Provisional version of the paper up on:

(new) Thea website

(pending reivisions)

Blip at ICLP2009

I will be at ICLP delivering a talk on blipkit and my experiences – positive and negative – applying logical programming to biological applications. Looking forward to meeting many of the key LP players!

Cheers
Chris

Documentation server up

Blipkit pldoc server now up and running