<div class="gmail_quote">All,<div><br></div><div>Not that long ago we published a Bioinformatics paper describing the Ruby API to the Ensembl database (Bioinformatics 27(7):1013-1014). This API has the same functionality as the Perl API, with some added benefits (e.g. only 1 API for all releases, very little code which makes maintenance a breeze, and a - we believe - more useful implementation of the Slice concept). At the moment, we have however only implemented the core and the variation databases into the codebase.</div>


<div><br></div><div>What has to be done:</div><div>[1] Create full APIs to all tables in the compara database. This will be very straightforward as it only involves a few lines of code due to the ActiveRecord framework. For example: this is the only code needed to create getters and setters for all columns in the exon_transcript table, plus search functionality in that table:</div>


<div><br></div><div><span style="font-family:helvetica, arial, freesans, clean, sans-serif;font-size:11px;line-height:14px"><pre style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;line-height:1.4em;font-family:'Bitstream Vera Sans Mono', Courier, monospace;font-size:12px">

<div style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:1em;line-height:1.4em">    <span style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;line-height:1.4em;font-weight:bold">class</span> <span style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;line-height:1.4em;color:rgb(68, 85, 136);font-weight:bold">ExonTranscript</span> <span style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;line-height:1.4em;font-weight:bold"><</span> <span style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;line-height:1.4em;color:rgb(0, 128, 128)">DBConnection</span></div>

<div style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:1em;line-height:1.4em">      <span style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;line-height:1.4em">set_primary_key</span> <span style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;line-height:1.4em;font-weight:bold">nil</span></div>

<div style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:1em;line-height:1.4em">
</div><div style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:1em;line-height:1.4em">      <span style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;line-height:1.4em">belongs_to</span> <span style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;line-height:1.4em;color:rgb(153, 0, 115)">:exon</span></div>

<div style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:1em;line-height:1.4em">      <span style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;line-height:1.4em">belongs_to</span> <span style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;line-height:1.4em;color:rgb(153, 0, 115)">:transcript</span></div>

<div style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:1em;line-height:1.4em">    <span style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;line-height:1.4em;font-weight:bold">end</span></div>


</pre></span></div><div><br></div><div>[2] Add additional functionality that cannot be directly derived from the tables themselves. For the core database, this involved for example coordinate transformations and projections; for the variation database, this involved for example consequence prediction for new variations.</div>


<div><br></div><div>If you're interested in helping out (even in part), please don't hesitate to contact me at jan.aerts at <a href="http://esat.kuleuven.be" target="_blank">esat.kuleuven.be</a>. Glory will be bestowed upon you.</div>


<div><br></div><div>Project website: <a href="http://github.com/jandot/ruby-ensembl-api" target="_blank">http://github.com/jandot/ruby-ensembl-api</a></div><div>Feedback (feature requests, questions, bugs, ...): <a href="http://rubyensemblapi.userecho.com" target="_blank">http://rubyensemblapi.userecho.com</a></div>


<div><br></div><div>Thanks,</div><div>jan.</div>
</div><br>