An implementation of Jan Aerts' LocusTree

748 views

Published on

my implementation of Jan Aerts' LocusTree algorithm based on BerkeleyDB-JE, a Key/Value datastore. This implementation has been used to build a SVG genome browser.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
748
On SlideShare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
5
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

An implementation of Jan Aerts' LocusTree

  1. 1. Another Genome Browser LocusTree Pierre Lindenbaum PhD. Fondation Jean Dausset Dec. 2009 [email_address] http://plindenbaum.blogspot.com
  2. 3. “ A brave new genome browser”
  3. 4. Saaien Tist http://saaientist.blogspot.com
  4. 5. BerkeleyDB: A Key/Value Database (Oracle) C API Java Bindings (JNI) Pure Java http://www.oracle.com/database/berkeley-db/index.html
  5. 6. How it works
  6. 13. Loading the Data
  7. 14. <organisms> <organism id=&quot;36&quot;> <name>hg18</name> <description> Human Genome Build v.36 </description> <metadata>{&quot;taxon-id&quot;:9606}</metadata> </organism> </organisms> Organisms
  8. 15. <tracks> <track id=&quot;1&quot;> <name>cytobands</name> <description>UCSC cytobands</description> </track> <track id=&quot;2&quot;> <name>knownGene</name> <description>UCSC knownGene</description> </track> <track id=&quot;3&quot;> <name>snp130</name> <description>dbSNP v.130</description> </track> </tracks> Tracks
  9. 16. <chromosomes organism-id=&quot;36&quot;> <chromosome id=&quot;1&quot;> <name>chr1</name> <metadata> {&quot;size&quot;:247249719,&quot;type&quot;:&quot;autosomal&quot;} </metadata> </chromosome> <chromosome id=&quot;10&quot;> <name>chr10</name> <metadata> {&quot;size&quot;:135374737,&quot;type&quot;:&quot;autosomal&quot;} </metadata> </chromosome> (...) </chromosomes> Chromosomes Chromosomes
  10. 17. public interface LTLoader { public MappedObject getMappedObject(); public String getChromosome(); public Set<String> getKeywords(); } public interface LTStreamLoader extends LTLoader { public void open(String uri) throws IOException; public void close() throws IOException; public boolean next() throws IOException; } Objects
  11. 18. <loaders> <load organism-id=&quot;36&quot; track-id=&quot;5&quot; class-loader=&quot;fr.cephb.locustree.loaders.UCSCAllMrnaLoader&quot; limit=&quot;10000&quot;> http://hgdownload.cse.ucsc.edu/(...)/all_mrna.txt.gz </load> <load organism-id=&quot;36&quot; track-id=&quot;4&quot; class-loader=&quot;fr.cephb.locustree.loaders.UCSCSnpCodingLoader&quot; limit=&quot;10000&quot;> http://hgdownload.cse.ucsc.edu/(...)/snp130CodingDbSnp.txt.gz </load> </loaders> Objects
  12. 19. Implementation: Servlet/JSP Apache Tomcat
  13. 20. Searching
  14. 21. Browsing
  15. 22. SVG
  16. 23. hg18 chr1 knownGene uc001act.2 Q96HA4 1007060 1041599 {'exonEnds':[1008230,1009626,1009749,1011255,1012447,1012840,1015671,1016226,1016808,1017346,1040318,1041599],'exonStarts':[1007060,1009157,1009723,1011120,1012381,1012744,1015595,1016118,1016714,1017233,1040264,1041302],'strand':'-'} hg18 chr1 knownGene uc001acm.2 Q96HA4-2 1007060 1017346 {'exonEnds':[1008230,1011255,1012447,1012840,1015671,1016808,1017346],'exonStarts':[1007060,1011120,1012381,1012744,1015595,1016714,1017233],'strand':'-'} hg18 chr1 knownGene uc001acu.2 Q96HA4-4 1007060 1041599 {'exonEnds':[1008230,1009626,1009749,1011255,1012447,1012840,1015671,1016808,1017346,1041599],'exonStarts':[1007060,1009595,1009723,1011120,1012381,1012744,1015595,1016714,1017233,1041302],'strand':'-'} hg18 chr1 knownGene uc009vju.1 uc009vju.1 1007060 1017346 {'exonEnds':[1008230,1009626,1009749,1011255,1012840,1015671,1016808,1017346],'exonStarts':[1007060,1009595,1009723,1011120,1012744,1015595,1016714,1017233],'strand':'-'} hg18 chr1 knownGene uc001acr.2 uc001acr.2 1007060 1041599 {'exonEnds':[1008230,1009329,1009626,1009749,1011255,1012447,1012840,1015671,1016617,1016808,1017346,1041599],'exonStarts':[1007060,1009157,1009595,1009723,1011120,1012381,1012744,1015595,1016520,1016714,1017233,1041302],'strand':'-'} hg18 chr1 knownGene uc001acs.2 uc001acs.2 1007060 1041599 {'exonEnds':[1008230,1009329,1009626,1009749,1011255,1012447,1012840,1015671,1016808,1017346,1041599],'exonStarts':[1007060,1009157,1009595,1009723,1011120,1012381,1012744,1015595,1016714,1017233,1041302],'strand':'-'} Export: text/plain
  17. 25. Distributed Annotation System DAS
  18. 27. LocusTreeService service=new LocusTreeService(); LocusTree locustree=service.getLocusTreeSePort(); final int organismId=36; for(Chromosome chrom : locustree. getChromosomes(organismId) ) { System.out.println( chrom.getId()+&quot; &quot;+ chrom.getName()+&quot; &quot;+ chrom.getOrganismId()+&quot; &quot;+ chrom.getLength() ); } 1 chr1 36 247249719 2 chr2 36 242951149 3 chr3 36 199501827 4 chr4 36 191273063 5 chr5 36 180857866 6 chr6 36 170899992 7 chr7 36 158821424 8 chr8 36 146274826 9 chr9 36 140273252 (...)
  19. 28. Thank you.

×