[ <Modules> <Introduction> <Main Bio Modules> <Parsers> <Generic Modules> <Bio Ext Modules> ]

Modules

The Blip modules have been documented using PrologDocNG, by Salvador Fandino (thanks Salvador!). You can access the autogenerated HTML (one file per module) via this page. Each HTML file has a link to the source at the bottom.

Introduction

Blip consists of different prolog modules covering different areas of knowledge withins the life sciences - sequences, analysis, ontologies, phylogenetics, pathways, etc. These modules are largely independent - you may only need to use one of the modules below for your research.

The modules are in two sections: MAIN and EXT. The MAIN modules are all in pure prolog and should run without problems. The EXT modules use the SWI-Prolog foreign language interface to use other libraries (currently C, but java and C++ may be on the cards for the future).

Of the Main modules, some are bio modules (containing code specific to some subdomain of biology), and some are generic modules (which may be of interest to other SWI-Prolog users regardless of their interest in bioinformatics). The latter may eventually be split off from blip and go into independent packages.

It may also be an idea to become familiar with some of the standard SWI-Prolog packages

Main Bio Modules

These modules contain specific biological semantics. There are three kinds of modules:

usable
A model of biological sequence features. Maps well to standard bio models, in particular GFF3, Chado and Chaos-XML
This module also uses bioseq and range

This data module can use the following inter-model bridges

Module:ontol_db [src]
stable
Models classes and instances. This model maps well to both OBO and OWL models

This data module can use the following inter-model bridges

Module:sb_db [src]
usable, incomplete
Models pathways and interactions. Currently the model is very SBML-y (level 1 and 2) but it may change. Little support for quantative stuff as yet.

This data module can use the following inter-model bridges

Module:pheno_db [src]
in use
Genotype and phenotype data predicates

This data module can use the following inter-model bridges

Module:phylo_db [src]
test
Phylogenetic tree data

This data module can use the following inter-model bridges

new
Models results of sequence similarity searches, eg blast results
Module:taxon_db [src]
usable
Models a taxonomic tree of organisms. Fairly simple and stable. Some overlaps with phylo_db

This data module can use the following inter-model bridges

Module:io [src]
usable
handles input/output - mostly loading from external files into the in-memory prolog database
Module:biotable [src]
usable
Metadata about many common tabular bioinformatics file formats, for use in conjunction with the table module
usable, but not stable
hodgepodge of useful predicates. Some predicates may migrate to more specialized modules in future
Module:bioseq [src]
usable, but currently very limited functionality
Provides some handy predicates for handling nucleic acid and amino acid sequences. Does not assume any model

This module makes use of:

Module:gencode [src]
usable
genetic codes (translation tables) for different species classes
Module:iupac [src]
usable
Module:range [src]
usable, interface subject to change
Operations on linear ranges. Does not assume any particular model (predicate arguments are typically compound terms representing range "objects")

Parsers

File format parsers - these convert from flat files conforming to some grammar into a list of prolog terms. These prolog terms may then later be converted to datalog facts in one of the db modules above; or the prolog terms may be an end in themselves

Most parsers will be prolog DCGs. This means they may be reversible - from prolog terms to flat file syntax

Module:parser_nhx [src]
stable
Parses New Hampshire and New Hampshire Extended format (phylogenetic trees). See also phylo_db
Module:parser_obo [src]
beta
Parses obo text format. Not currently ysed. For now, the io module will use go-perl behind the scenes to convert this. See also ontol_db
Module:parser_nlp [src]
stable
Parses the output of most NLP lexical parsers; eg Stanford lexparser

Generic Modules

General purpose modules, not specifically tied to ontologies, bioinformatics or biomedical applications

(These modules may also be of interest to non-bio programmers)

Module:plunit [src]
usable
Unit testing
Module:graph [src]
incomplete, usable
Generic graph operations - closure, least common ancestors etc. Higher order - can be used with different db modules.
Module:rdb_util [src]
usable
SQL database interface, layered on top of the ODBC interface
Module:google [src]
usable
Wrapper for the Google SOAP API - enables google queries to be performed from prolog
Module:tabling [src]
usable, limited
Simple memoization of predicates
Module:xml_writer [src]
usable
Maps prolog term syntax XML to actual XML
incomplete, usable
XPath-like query language and declarative transforms between XML formats and flat predicates
Module:serval [src]
usable, in flux
A lightweight logical-functional framework for rapidly deploying web applications
Module:graphviz [src]
usable
Simple predicates for generating graphviz dot files from compound terms

Bio Ext Modules

These modules live in the "ext/" directory, and are not installed by default. To install, descend into this directory and follow the instructions there.

The idea is that this directory will contain modules that use the SWI foreign language interface to call C libraries for tasks that may be slow in Prolog. So far this just has one proof of concept module

Module:squid [src]
not complete, but still usable
Uses Sean Eddy's SQUID C library for parsing sequence files (various formats), and providing an alternate implementation of revcomp/2