Modware: An Object-oriented Perl Interface to the Chado Schema   Eric Just Senior Bioinformatics Scientist dictyBase: http...
Agenda <ul><li>What? </li></ul><ul><ul><li>What is Chado? </li></ul></ul><ul><ul><li>What is Modware? </li></ul></ul><ul><...
What is Chado? <ul><li>Standardized genomics database schema </li></ul><ul><li>Developed by FlyBase </li></ul><ul><li>Adop...
What is Modware <ul><li>Open-source tool  for programmers  who write software to QUERY AND UPDATE Chado </li></ul><ul><li>...
Agenda <ul><li>What? </li></ul><ul><ul><li>What is Chado? </li></ul></ul><ul><ul><li>What is Modware? </li></ul></ul><ul><...
Why Modware Exists <ul><li>Chado has many business rules </li></ul><ul><li>Modware encapsulates many Chado business rules ...
Agenda <ul><li>What? </li></ul><ul><ul><li>What is Chado? </li></ul></ul><ul><ul><li>What is Modware? </li></ul></ul><ul><...
A Simple Gene Example A gene is a region on a chromosome that encloses one or more transcript objects.  An mRNA is a prote...
Storing mlcE in Chado CV (controlled vocabulary) Feature Featureloc Feature_relationship CVterm 1 68706 68256 104 100 1 67...
A Simple Gene Page
#!/usr/bin/perl use Modware::Feature; use CGI; my $id = CGI::param(‘primary_id'); my $count  = 1; # Get all data from data...
Modware::Features <ul><li>Modware Feature Classes </li></ul><ul><ul><li>Gene </li></ul></ul><ul><ul><li>mRNA </li></ul></u...
Modware::Search <ul><ul><li>These classes retrieve groups (iterators) of features </li></ul></ul>Modware::Search::Gene->Se...
Updating a Gene Name, add Synonym <ul><li># get gene </li></ul><ul><li>my ($gene) = new Modware::Search::Gene->Search_by_n...
Modware Goals <ul><li>Future releases will include: </li></ul><ul><ul><li>Literature annotations </li></ul></ul><ul><ul><l...
Agenda <ul><li>What? </li></ul><ul><ul><li>What is Chado? </li></ul></ul><ul><ul><li>What is Modware? </li></ul></ul><ul><...
Getting Modware <ul><li>http://gmod-ware.sourceforge.net </li></ul><ul><li>Download the NEW Virtual Machine </li></ul><ul>...
Online Documentation http://gmod-ware.sourceforge.net/doc/
Dankes <ul><li>The organizers of BOSC 2007 </li></ul><ul><li>O|B|F </li></ul><ul><li>dictyBase </li></ul><ul><li>PIs </li>...
# USE CASE: Add a description, dbxref, and an exon my $transcript = new Modware::Feature( -primary_id => 'DDB0233595' ); $...
Modware::Feature Modware::Feature::GENE Modware::Feature::MRNA Bio::SeqFeature::Gene::Transcript Bio::Seq Modware::Feature...
Feature ncRNA mRNA Contig Chromosome getOverlappingFeatures() getOverlappingAlignments() Bio::SeqFeature::Gene::Transcript...
Upcoming SlideShare
Loading in...5
×

Modware

1,830

Published on

Title: Modware: An Object-oriented Perl Interface to the Chado Schema
Author: Eric Just

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

No Downloads
Views
Total Views
1,830
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
22
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Modware

  1. 1. Modware: An Object-oriented Perl Interface to the Chado Schema Eric Just Senior Bioinformatics Scientist dictyBase: http://dictybase.org Northwestern University Generic Model Organism Database Project (GMOD)
  2. 2. Agenda <ul><li>What? </li></ul><ul><ul><li>What is Chado? </li></ul></ul><ul><ul><li>What is Modware? </li></ul></ul><ul><li>Why? </li></ul><ul><li>How? </li></ul><ul><ul><li>Example: a protein coding gene </li></ul></ul><ul><ul><ul><li>Storing in Chado </li></ul></ul></ul><ul><ul><ul><li>Writing a Web Page with Modware </li></ul></ul></ul><ul><li>Try </li></ul><ul><ul><li>Getting Modware </li></ul></ul>
  3. 3. What is Chado? <ul><li>Standardized genomics database schema </li></ul><ul><li>Developed by FlyBase </li></ul><ul><li>Adopted and distributed by GMOD project </li></ul><ul><li>Extremely flexible and compact </li></ul><ul><ul><li>Heavy ontology usage </li></ul></ul><ul><ul><li>Entity-Attribute-Value tables </li></ul></ul><ul><li>Modularized for different areas of bioinformatics </li></ul><ul><li>See Talk on Chado at ISMB (Paper 65) </li></ul>
  4. 4. What is Modware <ul><li>Open-source tool for programmers who write software to QUERY AND UPDATE Chado </li></ul><ul><li>Object-oriented API with semantically sensible classes and methods </li></ul><ul><li>Developed at dictyBase </li></ul><ul><li>Working with GMOD </li></ul>
  5. 5. Agenda <ul><li>What? </li></ul><ul><ul><li>What is Chado? </li></ul></ul><ul><ul><li>What is Modware? </li></ul></ul><ul><li>Why? </li></ul><ul><li>How? </li></ul><ul><ul><li>Example: a protein coding gene </li></ul></ul><ul><ul><ul><li>Storing in database </li></ul></ul></ul><ul><ul><ul><li>Writing a Web Page with Modware </li></ul></ul></ul><ul><li>Try </li></ul><ul><ul><li>Getting Modware </li></ul></ul>
  6. 6. Why Modware Exists <ul><li>Chado has many business rules </li></ul><ul><li>Modware encapsulates many Chado business rules </li></ul><ul><li>Faster, more efficient development time </li></ul><ul><li>More readable code </li></ul><ul><li>UI changes, logic does not </li></ul><ul><li>Leverage GMOD/Chado/Open Source community </li></ul>
  7. 7. Agenda <ul><li>What? </li></ul><ul><ul><li>What is Chado? </li></ul></ul><ul><ul><li>What is Modware? </li></ul></ul><ul><li>Why? </li></ul><ul><li>How? </li></ul><ul><ul><li>Example: a protein coding gene </li></ul></ul><ul><ul><ul><li>Storing in database </li></ul></ul></ul><ul><ul><ul><li>Writing a Web Page with Modware </li></ul></ul></ul><ul><li>Try </li></ul><ul><ul><li>Getting Modware </li></ul></ul>
  8. 8. A Simple Gene Example A gene is a region on a chromosome that encloses one or more transcript objects. An mRNA is a protein-coding transcript is composed of one or more exons which have coordinates on a chromosome. Chromosome 3
  9. 9. Storing mlcE in Chado CV (controlled vocabulary) Feature Featureloc Feature_relationship CVterm 1 68706 68256 104 100 1 67982 67979 103 100 1 68706 67979 102 100 1 68706 67979 101 100 strand fmax fmin feature_id srcfeature name Feat_type Feat_id _DDB0214813_exon_2 253 104 _DDB0214813_exon_1 253 103 DDB0214813 252 102 mlcE 251 101 Chr 3 250 100 Sequence Ontology 1 cv cv_id 1 mRNA 252 1 exon 253 1 gene 251 1 chromosome 250 cv cvterm cvterm_id Located on part of part of Sequence Ontology 1 Relationsip Ontology 2 cv cv_id 1 exon 253 1 mRNA 252 2 part_of 301 1 gene 251 1 chromosome 250 cv cvterm cvterm_id 102 301 104 102 301 103 101 301 102 object_id type_id subject_id
  10. 10. A Simple Gene Page
  11. 11. #!/usr/bin/perl use Modware::Feature; use CGI; my $id = CGI::param(‘primary_id'); my $count = 1; # Get all data from database my $feature = new Modware::Feature( -primary_id => $id ); my $chromosome = $feature->reference_feature()->name(); my $gene = $feature->gene()->name(); my @exons = $feature->bioperl()->exons(); my $sequence = $feature->sequence( -type => ’protein', -format => 'fasta' ); # print the report print CGI->header; print &quot;<pre>&quot;; print $id.&quot; is on chromosome $chromosome&quot;; print &quot; and is the gene $gene &quot;; # print the number and position of each exon foreach my $exon (@exons) { print &quot;Exon $count. start=&quot;.$exon->start(). &quot; end=&quot;.$exon->end().&quot; &quot;; $count++; } print $sequence; print &quot;</pre>&quot;;
  12. 12. Modware::Features <ul><li>Modware Feature Classes </li></ul><ul><ul><li>Gene </li></ul></ul><ul><ul><li>mRNA </li></ul></ul><ul><ul><li>ncRNA </li></ul></ul><ul><ul><li>Contig </li></ul></ul><ul><ul><li>Chromosome </li></ul></ul><ul><ul><li>EST </li></ul></ul><ul><ul><li>Generic (catch-all) </li></ul></ul><ul><ul><li>Modware can manage </li></ul></ul><ul><ul><li>the following annotations </li></ul></ul><ul><ul><ul><li>Sequence </li></ul></ul></ul><ul><ul><ul><li>Location </li></ul></ul></ul><ul><ul><ul><li>Name </li></ul></ul></ul><ul><ul><ul><li>Synonyms </li></ul></ul></ul><ul><ul><ul><li>Description </li></ul></ul></ul><ul><ul><ul><li>Public identifiers </li></ul></ul></ul><ul><ul><ul><li>External identifiers </li></ul></ul></ul><ul><ul><ul><ul><li>(dbxrefs) </li></ul></ul></ul></ul>
  13. 13. Modware::Search <ul><ul><li>These classes retrieve groups (iterators) of features </li></ul></ul>Modware::Search::Gene->Search_by_name_and_synonym(‘*kinase*’); Modware::Search::Feature->Search_overlapping_feats_by_range( ‘ Chr3’, 100000, 500000, ‘mRNA’ ); <ul><ul><li>Location searches </li></ul></ul><ul><ul><li>Find all protein-coding genes on Chromosome 3 between bases 100,000 and 500,000 </li></ul></ul><ul><ul><li>Text searches </li></ul></ul><ul><ul><li>Retrieve all kinase genes </li></ul></ul>
  14. 14. Updating a Gene Name, add Synonym <ul><li># get gene </li></ul><ul><li>my ($gene) = new Modware::Search::Gene->Search_by_name(‘mlcA' ); </li></ul><ul><li># change the name </li></ul><ul><li>$gene->name( ‘newname' ); </li></ul><ul><li># add a synonym </li></ul><ul><li>$gene->add_synonym( ‘mlcA' ); </li></ul><ul><li># write changes to database </li></ul><ul><li>$gene->update(); </li></ul>
  15. 15. Modware Goals <ul><li>Future releases will include: </li></ul><ul><ul><li>Literature annotations </li></ul></ul><ul><ul><li>GO annotations </li></ul></ul><ul><ul><li>Phenotype annotations </li></ul></ul><ul><li>Incorporate feedback from users </li></ul>
  16. 16. Agenda <ul><li>What? </li></ul><ul><ul><li>What is Chado? </li></ul></ul><ul><ul><li>What is Modware? </li></ul></ul><ul><li>Why? </li></ul><ul><li>How? </li></ul><ul><ul><li>Example: a protein coding gene </li></ul></ul><ul><ul><ul><li>Storing in database </li></ul></ul></ul><ul><ul><ul><li>Writing a Web Page with Modware </li></ul></ul></ul><ul><li>Try </li></ul><ul><ul><li>Getting Modware </li></ul></ul>
  17. 17. Getting Modware <ul><li>http://gmod-ware.sourceforge.net </li></ul><ul><li>Download the NEW Virtual Machine </li></ul><ul><li>Modware is preinstalled and ready for you! </li></ul><ul><li>See me if you have any questions or want a demo </li></ul><ul><li>Visit Poster N41 at ISMB </li></ul>
  18. 18. Online Documentation http://gmod-ware.sourceforge.net/doc/
  19. 19. Dankes <ul><li>The organizers of BOSC 2007 </li></ul><ul><li>O|B|F </li></ul><ul><li>dictyBase </li></ul><ul><li>PIs </li></ul><ul><ul><li>Rex Chisholm, PhD </li></ul></ul><ul><ul><li>Warren Kibbe, PhD </li></ul></ul><ul><li>Programmer </li></ul><ul><ul><li>Sohel Merchant </li></ul></ul><ul><li>Curators </li></ul><ul><ul><li>Petra Fey </li></ul></ul><ul><ul><li>Pascale Gaudet, PhD </li></ul></ul><ul><li>Other Groups </li></ul><ul><li>Funding </li></ul><ul><ul><li>NIH (NIGMS and NHGRI) </li></ul></ul><ul><li>GMOD </li></ul><ul><ul><li>Scott Cain </li></ul></ul><ul><ul><li>Brian O’Connor </li></ul></ul><ul><li>Chado developers </li></ul><ul><li>Bioperl developers </li></ul>
  20. 20. # USE CASE: Add a description, dbxref, and an exon my $transcript = new Modware::Feature( -primary_id => 'DDB0233595' ); $transcript->description( 'Gene model derived from AU12345' ); $transcript->add_external_id( -source => 'GenBank Accession Number', -id => 'AU12345' ); # call the bioperl method to retrieve bioperl representation of object # need this to view/edit exon structure $bioperl = $transcript->bioperl(); # here, we are manipulating a Bio::SeqFeature::Gene object # shift the last exon back a little bit (to lose stop codon) [$bioperl->exons()]->[2]->start( 281050 ); # create a new exon and add it to the feature my $exon = Bio::SeqFeature::Gene::Exon->new( -start => 280921, -end => 280959, -strand => -1 ); $exon->is_coding(1); $bioperl->add_exon($exon); # update writes everything to the database $transcript->update();
  21. 21. Modware::Feature Modware::Feature::GENE Modware::Feature::MRNA Bio::SeqFeature::Gene::Transcript Bio::Seq Modware::Feature::CHROMOSOME Bio::SeqFeature::Gene::Exon
  22. 22. Feature ncRNA mRNA Contig Chromosome getOverlappingFeatures() getOverlappingAlignments() Bio::SeqFeature::Gene::Transcript Bio::SeqFeature::Generic Bio::SeqFeature::Generic Bio::Seq
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×