Questa è una intro.
Volendo utilizzare la libreria BioRuby per analisi è possibile creare anche degli Engine di Rails che vengano innestati in applicazioni Rails per presentare direttamente i dati ?
Si.
Questo approccio è anche utilizzabile in altri contesti.
1. Scrip&ng
e
RailsEngines
possono
coesistere
?
Ruby
Social
Club
Raoul
J.P.
Bonnal
r@bioruby.org
h=ps://github.com/helios/bioruby-‐gem
h=p://bioruby.open-‐bio.org/
Milano,
24
Febbraio
2011
2. Ruby,
dove?
Web
Ambien&
di
U&lizzo
Scienza
Admin
3. Ruby,
dove?
Web
Web
Rails
Ambien&
di
Cool.io
U&lizzo
Scienza
Admin
Sinatra
4. Ruby,
dove?
Web
Ambien&
di
U&lizzo
Scienza
Admin
Admin
Capistrano
5. Ruby,
dove?
Web
BioRuby
SciRuby
Ambien&
di
U&lizzo
Scienza
Scienza
Admin
Graphics/
PloPng
6. BioRuby
conceP
• La
bioinforma&ca
è
una
disciplina
scien&fica
dedicata
alla
risoluzione
di
problemi
biologici
a
livello
molecolare
con
metodo
informa&ci
• BioRuby
è
una
libreria,
scri=a
completamente
in
Ruby,
il
cui
scopo
è
quello
di
ges&re
alcuni
aspeP
della
bioinforma&ca
h=p://it.wikipedia.org/wiki/Bioinforma&ca
h=p://bioruby.open-‐bio.org/
8. BioRuby
contribuire
Sviluppatori
molto
conserva&vi
in
realtà
acce=ano
ma
ci
vuole
tempo
9. Il
proge=o
BioGem
Maggiore
necessità
di
apertura
verso
il
fresh
code,
che
non
sarà
bug
free
ma
almeno
c’è
10. Script
e
Engine
In
BioInforma&ca
spesso
chi
produce
da&
non
si
preoccupa
di
come
ques&
verranno
visualizza&
11. Script
e
Engine
In
BioInforma&ca
spesso
chi
produce
da&
non
si
preoccupa
di
come
ques&
verranno
visualizza&,
almeno
non
subito…
geek.take_rest if boss.watch? results!
class Boss!
def watch?(result)!
result.fancy?!
end!
end!
class Result!
def fancy?!
(kind_of? GorgeousImage) || has_cool_interface? !
end!
end!
12. Script
e
Engine
Oppure
li
analizza
con
strumen&
differen&,
che
però
spesso
non
offrono
molta
flessibilità
13. Script
e
Engine
Quindi
che
fare
?
30
+
1
=
31
Solo
che
quell’
UNO
crea
mol&
più
problemi
di
quanto
si
pensi
– Web
Applica&on,
che
richiede
tempo
– Riusabilità:
possibile
proliferazione
di
applicazioni
– Mantenibilità
– E’
slegato
dalla
libreria
che
produce/ges&sce
i
da&?
14. Perché
mischiare
Script
e
Engine?
• U&lizzare
database
sia
da
parte
di
script
che
da
parte
di
uten&
“web”.
– script:
solitamente
macinano
da&
– web:
• vuole
esplorare
i
da&
sia
quelli
in
input
che
il
risultato
• Services
• Credo
che
mantenere
tu=o
in
un
unico
posto
sia
meno
dispersivo
e
di
solito
chi
sviluppa
il
livello
di
analisi/database
POI
si
preoccupa
anche
di
sviluppare
l’interfaccia
18. Il
Generatore2
$ biogem --with-engine=joke fake! !create !config/routes.rb!
!create !.gitignore! Jeweler has prepared your gem in bioruby-fake!
!create !Rakefile! Fetching source index for http://rubygems.org/!
!create !Gemfile! Could not reach rubygems repository http://
!create !LICENSE.txt! rubygems.org/!
!create !README.rdoc! Using rake (0.8.7) !
!create !.document! Using bio (1.4.1) !
!create !lib! Using bundler (1.0.10) !
!create !lib/bio-fake.rb! Using git (1.2.5) !
!create !test! Using jeweler (1.5.2) !
!create !test/helper.rb! Using rcov (0.9.9) !
!create !test/test_bio-fake.rb! Using shoulda (2.11.3) !
!create !db! Your bundle is complete! Use `bundle show
[gemname]` to see where a bundled gem is
!create !app! installed.!
!create !app/controllers! rake version:write!
!create !app/views! (in /Users/bonnalraoul/Documents/Develop/
!create !app/helpers! prototypes/bioruby-fake)!
!create !config! Updated version: 0.0.0!
!create !lib/bio-fake-engine.rb! rake gemspec!
!create !lib/bio-fake.rb! (in /Users/bonnalraoul/Documents/Develop/
********************************************************************************! prototypes/bioruby-fake)!
* *!
* Remember to require this library in the Gemfile of your Rails applicat *! Generated: bio-fake.gemspec!
* ion. *! bio-fake.gemspec is valid.!
* Please take a look at bioruby-fake/lib/bio-fake-engine.rb file for an *!
* example of how integrate your engine into a rails application. *!
* Thanks! *!
* *!
********************************************************************************!
20. Engine
Rou&ng
Rails.application.routes.draw do |map|!
mount_at = BioFake::Engine.config.mount_at!
#ROUTES from code below:!
# YourPathToTheControllerFiles = “bio/kb/gex”!
# OtherControllerName = slice!
# !
# gex /gex(.:format) {:controller=>"bio/kb/gex/populations", :action=>"index"}!
# filter_population GET /gex/populations/:id/filter(.:format) {:action=>"filter", :controller=>"bio/kb/gex/populations"}!
# populations GET /gex/populations(.:format) {:action=>"index", :controller=>"bio/kb/gex/populations"}!
# population GET /gex/populations/:id(.:format) {:action=>"show", :controller=>"bio/kb/gex/populations"}!
# samples GET /gex/samples(.:format) {:action=>"index", :controller=>"bio/kb/gex/samples"}!
# sample GET /gex/samples/:id(.:format) {:action=>"show", :controller=>"bio/kb/gex/samples"}!
# slices GET /gex/slices(.:format) {:action=>"index", :controller=>"bio/kb/gex/slices"}!
# slice GET /gex/slices/:id(.:format) {:action=>"show", :controller=>"bio/kb/gex/slices”}!
scope mount_at, :module=>'SUBSITITUTE YourPathToTheControllerFiles'do !
resources :ControllerName, :only => [ :index, :show] do !
member do !
get :example!
end #member !
end #resource!
resources :SUBSTITUTEOtherControllerName, :only => [ :index, :show]!
end #scope!
end!
21. Rails
Ini&alizer
Codice
che
deve
essere
aggiunto
all’applicazione
# config/initializers/bio-fake.rb!
# create a file called bio-fake.rb!
# you can change the mount point of you engine, using option!
# --with_engine=namespace like http://YourDomain:port/YourMountPoint!
# Otherwise, if you want your RailsEngine to be called at root level, leave everything as it now,
without that file.!
module BioFake!
class Engine < Rails::Engine!
config.mount_at = '/joke’!
end!
end!
23. Da
risolvere
• Come
posso
ges&re
le
interdipendenze
tra
database
in
gemme
differen&?
• I/O
di
da&
in
formato
tabellare:
tab,
csv
– Conviene
me=ere
in
db
classici
?
– NOSQL
?
– Tenere
I
file?
• I
database
spesso
sono
legacy
e
devono
interagire
tramite
le
gemme
– SQLite3
per
la
distribuzione
24. Ringraziamen&
Bioruby
P.T.P.
• Toshiaki
Katayama
• Francesco
Strozzi
• Pjotr
Prins
Fondazione
INGM
• Massimiliano
Pagani
• Riccardo
L.
Rossi
• Valeria
Ranzani