29 August 2006

My own little scifoo camp 2006.

Back from holidays at Montresor where, as the leader of Nature Network BrieComte Robert, I organized my own little private rainy scifoo camp.

My own private scifoo camp


The reason you didn't see me at SciFoo 2006

The reason you didn't see me at SciFoo 2006
The reason you didn't see me at SciFoo 2006


11 August 2006

The Life Sciences Semantic Web is Full of Creeps!

An article published in " Briefings in Bioinformatics Advance Access".

The Life Sciences Semantic Web is Full of Creeps!


Benjamin M. Good and Mark D. Wilkinson
Abstract:The Semantic Web for the Life Sciences (SWLS), when realized, will dramatically improve our ability to conduct bioinformatics analyses using the vast and growing stores of web-accessible resources. This ability will be achieved through the widespread acceptance and application of standards for naming, representing, describing and accessing biological information. The W3C-led Semantic Web initiative has established most, if not all, of the standards and technologies needed to achieve a unified, global SWLS. Unfortunately, the bioinformatics community has, thus far, appeared reluctant to fully adopt them. Rather, we are seeing what could be described as ‘semantic creep’--timid, piecemeal and ad hoc adoption of parts of standards by groups that should be stridently taking a leadership role for the community. We suggest that, at this point, the primary hindrances to the creation of the SWLS may be social rather than technological in nature, and that, like the original Web, the establishment of the SWLS will depend primarily on the will and participation of its consumers.

Mark Wilkinson is one of the creators of BioMoby. Bio Moby is a system for interoperability between biological data hosts and analytical services. Benjamin Good is a PhD student in the British Columbia Strategic Training Program in Bioinformatics. Both of them have a profile on connotea (users bgood, mwilkinson), group:Wilkinson Laboratory).

Although I'm convinced that the semantic web/RDF/XML model is the format of choice for any application (please ! use it for your output format !), I admit I never had the time and the technical knowledge about web services to really understand how BioMoby works , why I should use it and why I should use a LSID instead of an good old URI... :-)

hey, I'm going to ask them an offprint :-)

09 August 2006

A Bookmarklet for Offprint Requests

Hi, I'm pleased to share the javascript Bookmarklet I wrote today. A bookmarklet is a small JavaScript program that can be stored as a URL within a bookmark in most popular web browsers, or within hyperlinks on a web page. This bookmarklet invokes a new mail, from thunderbird, filled with a message requesting an offprint request fo an article. The first <a href="mailto:xxx@xxx.xxx"> tag found in the current page is used as the recipient of the mail and the subject is the title of the current page.


Here is the bookmarklet (you have to modify it by editing its properties in order to include your own message...):

Drag this Link: Offprint Request up to your Bookmarks Toolbar.


The bookmarklet was successfully tested on firefox/thunderbird with Bioinformatics: Building chromosome-wide LD maps Bioinformatics 2006 22(16):1933-1934 and NAR SYBR Green real-time telomeric repeat amplification protocol for the rapid quantification of telomerase activity Nucleic Acids Research, 2002, Vol. 31, No. 2 e3.

Example of mail generated from the previous paper from NAR:

From: me
To: xxxx@ucdavis.xxx
Subject: [offprint request] SYBR Green real-time telomeric repeat amplification protocol for the rapid quantification of telomerase activity -- Wege et al. 31 (2): e3 -- Nucleic Acids Research

Hi,
my name is Bruce Banner, I'm a nuclear physicist working on gamma radiations at Los-Alamos. Your recent paper titled

"SYBR Green real-time telomeric repeat amplification protocol for the rapid quantification of telomerase activity -- Wege et al. 31 (2): e3 -- Nucleic Acids Research"

caught my attention.
Would it be possible for you to forward me a PDF copy ? I thank you in advance.

Best Regards.

B. Banner

--
Bruce Banner PhD.
Gamma Radiation Laboratory
Los Alamos
http://www.marvel.com/universe/Hulk


07 August 2006

Drawing Networks, Interaction Networks, Social Networks

There is a cool presentation on google-tech-talks where Tamara Munzner introduce 15 algorithms describing how to draw a graph. That might be of interest for people working with "systems biology".



About those talks, the information is not displayed on google-video web site but it is now possible to get a RSS to keep track of the new talks at the following URL: http://video.google.com/videosearch?q=engEDU&so=1&output=rss (just add &output=rss at the end).

About networks, I've (re-)discovered a interesting source of data for protein-protein interactions. The database is called BioGrid(http://www.thebiogrid.org/index.php) and it was described in the database issue of NAR (BioGRID: a general repository for interaction datasets). I like this kind of resource because all interactions described in that database are manually curated from pubmed abstracts. This is much more rigourous than the large interaction maps screenings because, in the case of experiments using the yeast two hybrid system, for each distinct interaction, there should have some test to confirm the interaction. At the time I was using this assay, I used the method described by Bartel &. al (inverting the bait and the pray, co-immunoprecipitation, etc...) to confirm any interaction. But let's be fair, I have not read much bibliography about this subject since 1999...


The graphics from BioGrid can be exported in SVG...



....and the whole database can be downloaded in the PSI format.


PSI is a simple XML format describing

....interactors...
(...)
<proteinInteractor id="BIOGRID-109561">
<names>
<shortLabel>HGNC:5261</shortLabel>
</names>
<xref>
<primaryRef db="MIM" id="118190" secondary="" version=""/>
</xref>
<organism ncbiTaxId="9606">
<names>
<shortLabel>Human</shortLabel>
<fullName>Homo sapiens</fullName>
</names>
</organism>
</proteinInteractor>
(...)


... and interactions....

(...)
<interaction>
<names>
<shortLabel>1</shortLabel>
</names>
(...)
<participantList>
<proteinParticipant>
<proteinInteractorRef ref="BIOGRID-106718"/>
<role>bait</role>
</proteinParticipant>
<proteinParticipant>
<proteinInteractorRef ref="BIOGRID-106718"/>
<role>prey</role>
</proteinParticipant>
</participantList>
<interactionType>
<names>
<shortLabel>Invivo</shortLabel>
</names>
<xref>
<primaryRef db="" id="" secondary="" version=""/>
</xref>
</interactionType>
<xref>
<primaryRef db="pubmed" id="12081471" secondary="" version=""/>
</xref>
</interaction>
(...)


as far as I know,PSI is much more simplier than SBML or BIOPAX for describing simple protein-protein interactions (no biochemistry, no pKa, etc... however the format could be modernized by supporting a RDF/XML syntax). I also sent them a mail, asking how to sublit a new interaction but I still got no answer.


About social networks: David Wolber has introduced his social network in a google tech talk. There are a few good ideas about social networks: document and people are linked by a semantic property like in a FOAF document.

via google: Peoplicious is a collaborative research tool. Unlike systems such as del.icio.us, people are first-class data objects, along with documents. Users can create people, provide structured information about people (image, homepage, blog feed, delicious name, etc.), and create lists of people (people-tagging). Users can also bookmark documents and associate documents with people (personmarks). Any user can enter information about any person. Peoplicious is where del.icio.us meets RSS reader all within a modern day address book. There is a working prototype that can be accessed at: http://peoplicious.com/Technorati/lists. It is designed so that new sites can easily be created for particular domains (e.g., see http://peoplicious.com/USF/lists).

21 July 2006

NAR, Nature Aggademia & Bioinformatics web services

Yesterday, I've read the 150 abstracts of the special web server issue from NAR. About those 150 articles see my previous post about this. All thoses abstracts where tagged with connotea here.

As a Bioinformatician (yes I am), I like automated operations and most of all those
servers require a 'clickodrome'/web interface, that is to say,
a manual input: for example, I cannot use it to perform multiple
sequence analysis. NAR and other publishers should now require from
authors that the ouput of those tools should be written in a fully
parsable xhtml syntax, or better, in XML/RDF backed with a XSLT/xhtml stylesheet.
See also: BioMoby.

In the issue of NAR, there was a paper about Hubmed written by Alf Eaton. Alf now works at Nature and he just have released an experimental and beta social site called aggademia which aggregates the 50 most popular scientific blogs. At first sight, it works like postgenomic. I'm a little puzzled now with all those social web sites at Nature: connotea, Nature Network Boston, and (perhaps) now aggademia. On each of those site if had to register a new profile, I could create a group of user and send invitation ("Oh Nooo Pierre, not AGAIN one of your CENSORED social network"). Why not ("...you just have to......") a large integrated social scientific network ?


17 July 2006

NAR: The Web Server Issue 2006

Nucleic Acids Research has published its annual special issue devoted to web servers. The current issue contains... 150 papers (argh !).


10 July 2006

Mysql user defined function (UDF) for Bioinformatics.

MYSQL allows to create User Defined Functions (UDF). Written in 'C/C++', this kind of function can be used to embed bioinformatics into mysql. Here is an example of a function used to translate a DNA sequence into a protein directly in mysql.

#include <my_global.h>
#include <m_ctype.h>
#include <mysql.h>
#include <m_string.h>

/* a function translating 3 bases into an amino acid */
static char translation(char a,char b,char c);

/* The initialization function */
my_bool translate_init(UDF_INIT *initid, UDF_ARGS *args, char *message);
/* The deinitialization function */
void translate_deinit(UDF_INIT *initid);
/* The main function. This is where the function result is computed */
char *translate(UDF_INIT *initid, UDF_ARGS *args, char *result,
unsigned long *length, char *is_null, char *error);

/* The initialization function */
my_bool translate_init(
UDF_INIT *initid,
UDF_ARGS *args,
char *message
)
{
/* check the args */
if (!(args->arg_count == 1 && args->arg_type[0] == STRING_RESULT ))
{
strncpy(message,"Bad parameter expected a DNA",MYSQL_ERRMSG_SIZE);
return 1;
}
initid->maybe_null=1;
initid->ptr= (char*)malloc(0);

if(initid->ptr==NULL)
{
strncpy(message,"Out Of Memory",MYSQL_ERRMSG_SIZE);
return 1;
}
return 0;
}

/* The deinitialization function */
void translate_deinit(UDF_INIT *initid)
{
/* free the memory **/
if(initid->ptr!=NULL) free(initid->ptr);
}

/* The main function. This is where the function result is computed */
char *translate(UDF_INIT *initid, UDF_ARGS *args, char *result,
unsigned long *length, char *is_null, char *error)
{
long i;
long dnaLength= args->lengths[0];
const char *dna=args->args[0];
char *ptr=NULL;

if (dna==NULL) /* Null argument */
{
*is_null=1;
return NULL;
}
*length=dnaLength/3;
ptr= (char*)realloc(initid->ptr,sizeof(char)*(*length));
if(ptr==NULL)
{
*is_null=1;
*error=1;
strncpy(error,"Out Of Memory",MYSQL_ERRMSG_SIZE);
return NULL;
}
initid->ptr=ptr;
/* loop over the codons of the sequence */
int j=0;
for(i=0;i+2< dnaLength;i+=3)
{
initid->ptr[j++]=translation(dna[i],dna[i+1],dna[i+2]);
}

return initid->ptr;
}

/************************************
*
* translation
* a function translating 3 bases into an amino acid
*/
static
char translation(char base1,char base2,char base3)
{
(...)/* so obvious.... */
}


And here is the Makefile for my machine...

/usr/lib/translate.so:translate.c
gcc -fPIC -shared -I/usr/include/mysql -DDBUG_OFF -O3 -lmysqlclient -o $@ $<


... and the fragment from a session

mysql> CREATE FUNCTION translate RETURNS STRING SONAME 'translate.so';
Query OK, 0 rows affected (0,03 sec)

mysql> select translate("ATGGAGTCTACTCAGCAGATGGCTTCTTCTATTATTAATTCTTCATTTGAAGCT
AATTGATGGGTATTCAATATGACTACAATGAGGTATATACTAGAGTAAAGAGTAAATTTGATTTAGTTATGGATGATTC
GCAATTACTATTGATCAAGCTTTGAATGGAAAATTTAGTTCAGCGATTAGGAATAGAAATTGGATGACTGACTCTCGAA
TAAACTAAGAATTATGCTATCATCAAAAGGAATCGATCAGAAAATGAGAGTGCTTAATGCTTGTTTTAGTGTCAAGAGA
AATGTACTAGACTGATGAAAGACAAATTAGAACGTGGTGAAGTTGAAGTTGATGATTCCTTTGTTGAAGAGAAAATGGA
TATGAACAGTTAGAAAAGAGATTTGAGTCACTGAAACATCGGGTTAATGAGAAGTATAATCATTGGGTTCTTAAAGCTA
TCAAAATGTGATTT
") as NSP3;
+------------------------------------------------------------------------------ -------------------------------------------------------------------------------
| NSP3
+------------------------------------------------------------------------------
-------------------------------------------------------------------------------
| MESTQQMASSIINSSFEAAVVAATSTLELMGIQYDYNEVYTRVKSKFDLVMDDSGVKNNLIGKAITIDQALNGKFSS
SSKGIDQKMRVLNACFSVKRIPGKSSSIVKCTRLMKDKLERGEVEVDDSFVEEKMEVDTIDTKSRYEQLEKRFESLKHR

+------------------------------------------------------------------------------
-------------------------------------------------------------------------------
1 row in set (0,00 sec)


03 July 2006

Simile:Timeline

Timeline is an impressive DHTML-based AJAX widget written by David François Huynh for visualizing time-based events. It is like Google Maps for time-based information. Biologists might use this script to display seminars, publications. I also suggested the author that it could be used to display genomic traks (such as ensembl or the UCSC genome Browser) by just replacing "time-start" by "chromosome-start".

See also: [gbrowse] [genome browser with svg]

BTW, this reminds me something that was said at JavaDay 2006: someone wondered why so many interfaces use AJAX wereas a simple(r) applet could be written.

29 June 2006

JavaDay 2006

Today, I went to the JAVADay 2006 conference organized by SUN at Versailles. Here are a few unordered notes and URL:


* extreme pixel programming: http://www.xpip.org/ draw a picture with photoshop save it in the RAW format: it generates some java code for an animation program (!)
* James Gosling, the creator of java, uses a mac :-)
* One of the largest java program is used by the Bazilian Health System
* the latest version of NetBeans the IDE from SUN was introduced. I love Eclipse, but I think I will give NetBeans a chance as it seems to have a nice support of EJB3 (I'm currently learning J2EE, Hibernate, Jboss and all that stuff, this is a real headache without a mentor...). Java Annotations are supposed to make all this simplier. NetBeans also handles GlassFish, the Sun's application server.
* The new "Persistence API" will works with J2SE.
* Java 6 beta is available at https://mustang.dev.java.net/. It includes a support for javascript.
* "java pet store" is a complete documented J2EE demo available at https://blueprints.dev.java.net/petstore/.
* http://www.bluej.org/: BlueJ, an integrated Java environment specifically designed for introductory teaching.
* an impressive demo of the new version of SWING: https://aerith.dev.java.net/.
* groovy a scripting langage using java: http://www.ociweb.com/jnb/jnbFeb2004.html
* http://www.xwiki.org/ a java based wiki
* http://jcaptcha.sourceforge.net: Java Completely Automated Public Test to tell Computers and Humans Apart
* There was a nice demo about how to use java annotations to check an input from a user (e.g. "this java.lang.String should be an email" ): write once an Annotation and it will check the HTML form and the java business logic and the database constraints.
* Another nice presentation from Alexis Moussine-Pouchkine on creating a complete AJAX based site (with google maps, etc...) with NetBeans without writing any line of javascript.
* Java is about to be released as an open-source project (as it was said "not when, but how ?") and could then be included as a standard package in Linux Debian distributions.