180 likes | 193 Views
ProServer & Bio::Das::Lite Lightweight DAS components in Perl. Roger Pettett Project Leader, Web Systems Wellcome Trust Sanger Institute. What is ProServer?. Standalone DAS 1.5+ Server First server to support gene and protein DAS Written in Perl Using POE Easily extensible
E N D
ProServer & Bio::Das::LiteLightweight DAS components in Perl Roger Pettett Project Leader, Web Systems Wellcome Trust Sanger Institute http://www.sanger.ac.uk/proserver/
What is ProServer? • Standalone DAS 1.5+ Server • First server to support gene and protein DAS • Written in Perl • Using POE • Easily extensible • Supports a wide range of data sources • DBI, flat-file, GFF, Excel • Available on CPAN http://www.sanger.ac.uk/proserver/
ProServer Features • Simple to set up • Smallish memory footprint • We serve 2200+ sources in ~8-20Mb per process with ~2-4Mb shared • Easy to configure • .ini format file • Easy to extend • Lots of examples http://www.sanger.ac.uk/proserver/
ProServer Installation wget http://www.sanger.ac.uk/proserver/ProServer-2.tar.gz tar -xzvf ProServer-2.tar.gz cd Bio-Das-ProServer perl Makefile.PL make test [configure proserver.ini] eg/proserver http://www.sanger.ac.uk/proserver/
ProServer Structure (1) Server .ini file Source Adaptor Transport Data http://www.sanger.ac.uk/proserver/
ProServer Structure (2) Server .ini file Source Adaptor MySQL Transport Oracle Transport DB DB DB DB DB http://www.sanger.ac.uk/proserver/
ProServer Configuration (1) [mysimplefile] adaptor = simple state = on transport = file filename = /path/to/genelist.txt baseurl = http://www.example.org/report?id= type = gene feature_query = field0 like "%s” http://www.sanger.ac.uk/proserver/
ProServer Configuration (2) [mysimpledb] adaptor = simpledb state = on transport = dbi dbhost = databasesrv1 dbport = 3306 dbname = simpledb dbuser = simplero dbpass = topsecret http://www.sanger.ac.uk/proserver/
ProServer Extensions (1) • Inherit and extend SourceAdaptor.pm • Edit capabilities • Implement for example, the build_features method to run a database SQL query or an API call and return the correct data structure. http://www.sanger.ac.uk/proserver/
ProServer Extensions (2) { ‘label’ => ‘Pelizaeus-Merzbacher disease’, 'id' => 10, 'type' => ‘decipher:known:ins’, 'typecategory' => ’decipher', 'method' => ’decipher', 'start' => 102528707, 'end' => 103018423, 'note' => …, 'link' => …, ‘linktxt’ => ‘Syndrome Report’, }; http://www.sanger.ac.uk/proserver/
ProServer SourceHydra (1) • Clone sources with the same structure • One configuration section • For example: Ensembl DAS uploads • One hydra database • Many tables with the same schema http://www.sanger.ac.uk/proserver/
ProServer SourceHydra (2) [simplehydra] state = on adaptor = simpledbhydra = dbi transport = dbi basename = hydra dbname = hydra dbhost = databasesrv1 dbuser = hydraro password = topsecret http://www.sanger.ac.uk/proserver/
Things I’d like to do ProServer • Apache plugins for ModPerl & CGI • Automatic registry updates • Live server statistics • Embedded graphics • Streamed responses • Yahoo Pipes-ish service proxy/aggregation http://www.sanger.ac.uk/proserver/
Bio::Das::Lite • A small DAS 1 client • Returns plain data structures • Few dependencies • LWP::Parallel::UserAgent for asynchronous I/O • SOAP::Lite for registry access • Available on CPAN http://www.sanger.ac.uk/proserver/
Bio::Das::Lite Synopsis use Bio:::Das::Lite my $singledsn = Bio::Das::Lite-> new(‘http://das.sanger.ac.uk/das/hgnc36’); my $features = $singledsn->features(‘X:1,1000000’); use Bio:::Das::Lite my $multidsn = Bio::Das::Lite->new({ ‘dsn’ => [qw(http://das…das/hgnc36 http://das…/das/decipher)], }); my $multiseg = $bdl->features([qw(X:1,1000000 3:1,1000000 17:1,1000000)]); http://www.sanger.ac.uk/proserver/
Citing ProServer ProServer: A simple, extensible Perl DAS server. Finn RD, Stalker JW, Jackson DK, Kulesha E, Clements J, Pettett R Bioinformatics. 2007;. PMID: 17237073 DOI: 10.1093/bioinformatics/btl650 http://www.sanger.ac.uk/proserver/
Rob Finn, Jim Stalker, David Jackson, Eugene Kulesha, Jody Clements, Tony Cox, Will Spooner, Andreas Kahari Acknowledgements http://www.sanger.ac.uk/proserver/
More Information http://www.sanger.ac.uk/proserver/