From 1ab8ed01b72ba501f175b0b1ef87ed62bbec8844 Mon Sep 17 00:00:00 2001 From: gebele Date: Thu, 26 Sep 2013 20:07:32 +0200 Subject: small edits for new model names --- application.rb | 17 +++++++---- prediction_models.csv | 3 ++ public/stylesheets/screen.css | 2 +- public/stylesheets/screen.sass | 22 ++++++++------ views/details.haml | 2 +- views/neighbors.haml | 6 ++-- views/predict.haml | 65 +++++++++++++++++++++++++++++++--------- views/prediction.haml | 21 ++++--------- views/significant_fragments.haml | 12 ++++---- 9 files changed, 95 insertions(+), 55 deletions(-) diff --git a/application.rb b/application.rb index 5cd5093..13d98cb 100644 --- a/application.rb +++ b/application.rb @@ -12,7 +12,7 @@ helpers do # model uris must be manually added @@models = [] CSV.foreach("./prediction_models.csv"){|uri| m = OpenTox::Model::Lazar.find uri[0]; @@models << m} - #$logger.debug "model uris from csv file:\t#{@@models}\n" + $logger.debug "model uris from csv file:\t#{@@models}\n" end get '/?' do @@ -55,7 +55,7 @@ get '/prediction/:model_uri/:type/:compound_uri/fingerprints/?' do model = OpenTox::Model::Lazar.find params[:model_uri] feature_dataset = OpenTox::Dataset.find model[RDF::OT.featureDataset] @compound = OpenTox::Compound.new params[:compound_uri] - + @significant_fragments = [] if @type =~ /classification/i # collect all feature values with fingerprint fingerprints = OpenTox::Algorithm::Descriptor.send("smarts_match", [@compound], feature_dataset.features.collect{ |f| f[RDF::DC.title]})[@compound.uri] @@ -69,10 +69,16 @@ get '/prediction/:model_uri/:type/:compound_uri/fingerprints/?' do @features = feature_dataset.features.collect{|f| f } # search for each fingerprint in all features and collect feature values(smarts, pValue, effect) - @significant_fragments = [] @fingerprint_values.each{ |fi, v| @features.each{ |f| @significant_fragments << [f[RDF::OT.effect].to_i, f[RDF::OT.smarts], f[RDF::OT.pValue]] if fi == f[RDF::OT.smarts] } } else #regression - @significant_fragments = [] + feature_calc_algo = "" + model.parameters.each {|p| + if p[RDF::DC.title].to_s == "feature_calculation_algorithm" + feature_calc_algo = p[RDF::OT.paramValue].object + end + } + fingerprints = OpenTox::Algorithm::Descriptor.send( feature_calc_algo, [ @compound ], feature_dataset.features.collect{ |f| f[RDF::DC.title] } ) + fingerprints.each{|x, h| h.each{|descriptor, value| @significant_fragments << [descriptor, [value]]}} end haml :significant_fragments, :layout => false @@ -169,7 +175,7 @@ post '/predict/?' do # selected model = model[0] # compare selected with all models @@models.each do |m| - @prediction_models << m if m.title =~ /#{model[0]}/ + @prediction_models << m if m.title =~ /#{model[0]}/i end end @@ -205,4 +211,3 @@ get '/predict/stylesheets/:name.css' do sass(:"stylesheets/#{params[:name]}", Compass.sass_engine_options ) end - diff --git a/prediction_models.csv b/prediction_models.csv index e69de29..df45768 100644 --- a/prediction_models.csv +++ b/prediction_models.csv @@ -0,0 +1,3 @@ +https://dg.in-silico.ch/model/c939adda-a6ed-425e-8c39-5b679d9138a2, +https://dg.in-silico.ch/model/885a138a-3011-47a9-9279-fd472141b9de, +https://dg.in-silico.ch/model/7e1dda67-3bb7-4a97-b82b-136090faf4e0, diff --git a/public/stylesheets/screen.css b/public/stylesheets/screen.css index a81705c..6850732 100644 --- a/public/stylesheets/screen.css +++ b/public/stylesheets/screen.css @@ -1 +1 @@ -body{background-image:url("/images/gray_jean.png");overflow:scroll;font-family:sans-serif}body a{text-decoration:none;font-weight:bold;color:#000}body img{border:0}body h2{padding-top:12px;text-shadow:#fff 1px 1px 0;font-size:x-large;color:#f55}.logo img{float:left;display:inline;margin-right:1em}.logo h1{display:inline;width:80%}.logo img.ote{width:100px;height:50px;display:inline;float:right}.logo hr{margin:0.5em}.content{background-image:url("/images/gray_jean.png")}.content h1{margin:0.3em;text-shadow:#fff 1px 1px 0;font-size:x-large;font-family:Verdana;display:inline}.content .arrow{margin:8px 0px 5px 20px}.content .back{display:inline}.content #back-top{z-index:100;position:fixed;bottom:3%;margin-left:91%}.content #back-top a:hover{color:#bbb}.content fieldset#top{border:0;padding:10px;background-color:#c5c1e4;-moz-border-radius-topleft:25px;-webkit-border-top-left-radius:25px;border-top-left-radius:25px;-moz-border-radius-topright:25px;-webkit-border-top-right-radius:25px;border-top-right-radius:25px;-webkit-background-clip:border;-moz-background-clip:border;background-clip:border-box;-webkit-box-shadow:1px 1px 1px #fff inset,-1px -1px 5px rgba(0,0,0,0.3) inset;-moz-box-shadow:1px 1px 1px #fff inset,-1px -1px 5px rgba(0,0,0,0.3) inset;box-shadow:1px 1px 1px #fff inset,-1px -1px 5px rgba(0,0,0,0.3) inset}.content fieldset#top a#linkInsert{display:block;width:100%;height:2em}.content fieldset#top #appletContainer{padding:10px}.content fieldset#middle{border:0;padding:10px;background-color:#c5c1e4;-webkit-box-shadow:1px 1px 1px #fff inset,-1px -1px 5px rgba(0,0,0,0.3) inset;-moz-box-shadow:1px 1px 1px #fff inset,-1px -1px 5px rgba(0,0,0,0.3) inset;box-shadow:1px 1px 1px #fff inset,-1px -1px 5px rgba(0,0,0,0.3) inset}.content fieldset#middle a#linkModels{display:block;width:100%;height:2em}.content fieldset#middle #endpoint{padding-top:2em}.content fieldset#middle #model a{display:inline;font-weight:normal}.content fieldset#middle a#linkDetailsLC50_mmol{font-size:small}.content fieldset#middle a#linkDetailsHamster{font-size:small}.content fieldset#middle a#linkDetailsRodent{font-size:small}.content fieldset#middle #details_LC50_mmol{background-color:#e6e5f3;-webkit-box-shadow:1px 1px 1px #fff inset,-1px -1px 5px rgba(0,0,0,0.3) inset;-moz-box-shadow:1px 1px 1px #fff inset,-1px -1px 5px rgba(0,0,0,0.3) inset;box-shadow:1px 1px 1px #fff inset,-1px -1px 5px rgba(0,0,0,0.3) inset;padding:1em}.content fieldset#middle #details_Hamster{background-color:#e6e5f3;-webkit-box-shadow:1px 1px 1px #fff inset,-1px -1px 5px rgba(0,0,0,0.3) inset;-moz-box-shadow:1px 1px 1px #fff inset,-1px -1px 5px rgba(0,0,0,0.3) inset;box-shadow:1px 1px 1px #fff inset,-1px -1px 5px rgba(0,0,0,0.3) inset;padding:1em}.content fieldset#middle #details_Rodent{background-color:#e6e5f3;-webkit-box-shadow:1px 1px 1px #fff inset,-1px -1px 5px rgba(0,0,0,0.3) inset;-moz-box-shadow:1px 1px 1px #fff inset,-1px -1px 5px rgba(0,0,0,0.3) inset;box-shadow:1px 1px 1px #fff inset,-1px -1px 5px rgba(0,0,0,0.3) inset;padding:1em}.content fieldset#bottom{border:0;background-color:#c5c1e4;padding:10px;margin-bottom:5em;-webkit-box-shadow:1px 1px 1px #fff inset,-1px -1px 5px rgba(0,0,0,0.3) inset;-moz-box-shadow:1px 1px 1px #fff inset,-1px -1px 5px rgba(0,0,0,0.3) inset;box-shadow:1px 1px 1px #fff inset,-1px -1px 5px rgba(0,0,0,0.3) inset;-moz-border-radius-bottomleft:25px;-webkit-border-bottom-left-radius:25px;border-bottom-left-radius:25px;-moz-border-radius-bottomright:25px;-webkit-border-bottom-right-radius:25px;border-bottom-right-radius:25px;-webkit-background-clip:border;-moz-background-clip:border;background-clip:border-box}.content fieldset#bottom input#predict{margin-left:1em}.content .predictions{background-color:#c5c1e4;padding:10px;text-align:justify;-webkit-box-shadow:1px 1px 1px #fff inset,-1px -1px 5px rgba(0,0,0,0.3) inset;-moz-box-shadow:1px 1px 1px #fff inset,-1px -1px 5px rgba(0,0,0,0.3) inset;box-shadow:1px 1px 1px #fff inset,-1px -1px 5px rgba(0,0,0,0.3) inset;-moz-border-radius-topleft:25px;-webkit-border-top-left-radius:25px;border-top-left-radius:25px;-moz-border-radius-bottomleft:25px;-webkit-border-bottom-left-radius:25px;border-bottom-left-radius:25px;-moz-border-radius-topright:25px;-webkit-border-top-right-radius:25px;border-top-right-radius:25px;-moz-border-radius-bottomright:25px;-webkit-border-bottom-right-radius:25px;border-bottom-right-radius:25px;-webkit-background-clip:border;-moz-background-clip:border;background-clip:border-box}.content .overview{background-image:url("/images/gray_jean.png");padding:12px;margin-top:1em;margin-bottom:1em;text-align:left;-webkit-box-shadow:1px 1px 1px #fff inset,-1px -1px 5px rgba(0,0,0,0.3) inset;-moz-box-shadow:1px 1px 1px #fff inset,-1px -1px 5px rgba(0,0,0,0.3) inset;box-shadow:1px 1px 1px #fff inset,-1px -1px 5px rgba(0,0,0,0.3) inset;-moz-border-radius-topleft:25px;-webkit-border-top-left-radius:25px;border-top-left-radius:25px;-moz-border-radius-topright:25px;-webkit-border-top-right-radius:25px;border-top-right-radius:25px;-webkit-background-clip:border;-moz-background-clip:border;background-clip:border-box}.content .overview a:hover{color:#f55}.content .overview caption{text-align:left}.content .overview #overview tr td{background-color:#fff;border:1px solid #dad9c7;padding-left:1em;padding-top:0.5em}.content .overview #overview tr td #compound{width:200px}.content .overview #overview tr td b.c{color:#d42200}.content .overview #overview tr td b.n{color:#5c8533}.content .overview #overview tr td .confidence{display:inline}.content .error{background-color:#c5c1e4;padding:15px;-webkit-box-shadow:1px 1px 1px #fff inset,-1px -1px 5px rgba(0,0,0,0.3) inset;-moz-box-shadow:1px 1px 1px #fff inset,-1px -1px 5px rgba(0,0,0,0.3) inset;box-shadow:1px 1px 1px #fff inset,-1px -1px 5px rgba(0,0,0,0.3) inset;-moz-border-radius-topleft:25px;-webkit-border-top-left-radius:25px;border-top-left-radius:25px;-moz-border-radius-bottomleft:25px;-webkit-border-bottom-left-radius:25px;border-bottom-left-radius:25px;-moz-border-radius-topright:25px;-webkit-border-top-right-radius:25px;border-top-right-radius:25px;-moz-border-radius-bottomright:25px;-webkit-border-bottom-right-radius:25px;border-bottom-right-radius:25px;-webkit-background-clip:border;-moz-background-clip:border;background-clip:border-box}.content .error .message{margin-top:1em;padding:1em;border:2px solid #f55;background-color:#fff;color:#f55;-moz-border-radius-topleft:25px;-webkit-border-top-left-radius:25px;border-top-left-radius:25px;-moz-border-radius-bottomleft:25px;-webkit-border-bottom-left-radius:25px;border-bottom-left-radius:25px;-moz-border-radius-topright:25px;-webkit-border-top-right-radius:25px;border-top-right-radius:25px;-moz-border-radius-bottomright:25px;-webkit-border-bottom-right-radius:25px;border-bottom-right-radius:25px;-webkit-background-clip:border;-moz-background-clip:border;background-clip:border-box}.content #closebutton{color:#f55;margin-left:98%;padding:0}.details{width:98%;background-color:#c5c1e4;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;border-bottom-left-radius:5px;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-webkit-background-clip:border;-moz-background-clip:border;background-clip:border-box;-webkit-box-shadow:1px 1px 1px #fff inset,0px -1px 2px rgba(0,0,0,0.3) inset;-moz-box-shadow:1px 1px 1px #fff inset,0px -1px 2px rgba(0,0,0,0.3) inset;box-shadow:1px 1px 1px #fff inset,0px -1px 2px rgba(0,0,0,0.3) inset}.details a:hover{color:#f55}.details img{display:inline;float:left;margin:0.5em}.significant_fragments{width:98%;margin-bottom:2em;background-color:#c5c1e4;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;border-bottom-left-radius:5px;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-webkit-background-clip:border;-moz-background-clip:border;background-clip:border-box;-webkit-box-shadow:1px 1px 1px #fff inset,0px -1px 2px rgba(0,0,0,0.3) inset;-moz-box-shadow:1px 1px 1px #fff inset,0px -1px 2px rgba(0,0,0,0.3) inset;box-shadow:1px 1px 1px #fff inset,0px -1px 2px rgba(0,0,0,0.3) inset}.significant_fragments img{display:inline;float:left;margin:0.5em}.significant_fragments table#sf1{text-align:left}.significant_fragments table#sf1 td{padding:0.2em}.descriptors{width:98%;margin-bottom:2em;background-color:#c5c1e4;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;border-bottom-left-radius:5px;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-webkit-background-clip:border;-moz-background-clip:border;background-clip:border-box;-webkit-box-shadow:1px 1px 1px #fff inset,0px -1px 2px rgba(0,0,0,0.3) inset;-moz-box-shadow:1px 1px 1px #fff inset,0px -1px 2px rgba(0,0,0,0.3) inset;box-shadow:1px 1px 1px #fff inset,0px -1px 2px rgba(0,0,0,0.3) inset}.descriptors img{display:inline;float:left;margin:0.5em}.descriptors table#sf2{text-align:left}.descriptors table#sf2 td{padding:0.2em}.results{background-image:url("/images/gray_jean.png");overflow-x:auto;overflow-y:hidden;margin-top:2em;margin-bottom:2em;-webkit-box-shadow:1px 1px 1px #fff inset,0px -1px 2px rgba(0,0,0,0.3) inset;-moz-box-shadow:1px 1px 1px #fff inset,0px -1px 2px rgba(0,0,0,0.3) inset;box-shadow:1px 1px 1px #fff inset,0px -1px 2px rgba(0,0,0,0.3) inset}.results a:hover{color:#f55}.results .tablesorter{width:100%;text-align:left}.results .tablesorter thead{background-color:#e6e5f3}.results .tablesorter thead tr th.header{background-image:url("/images/bg.gif");background-repeat:no-repeat;background-position:center left;cursor:pointer;padding-left:20px;border:1px solid #dad9c7;margin-left:-1px}.results .tablesorter thead tr th.headerSortDown{background-image:url("/images/desc.gif");background-color:#c5c1e4}.results .tablesorter thead tr th.headerSortUp{background-image:url("/images/asc.gif");background-color:#c5c1e4}.results .tablesorter tbody tr td{padding-left:1em;-webkit-box-shadow:1px 1px 1px #fff inset,0px -1px 2px rgba(0,0,0,0.3) inset;-moz-box-shadow:1px 1px 1px #fff inset,0px -1px 2px rgba(0,0,0,0.3) inset;box-shadow:1px 1px 1px #fff inset,0px -1px 2px rgba(0,0,0,0.3) inset}.results .tablesorter tbody .compound{width:200px;padding:0.2em}.results .tablesorter tbody .n{color:#5c8533}.results .tablesorter tbody .c{color:#d42200}input#predict{border:0px;background-color:#c5c1e4;margin:0;padding:0}.tooltip{background-color:#fff;border:2px solid #ccc;font-size:0.5em;padding:1em;display:none;z-index:50}.footer{margin:20px 0 20px 0} +body{background-image:url("/images/gray_jean.png");overflow:scroll;font-family:sans-serif}body a{text-decoration:none;font-weight:bold;color:#000}body img{border:0}body h2{padding-top:12px;text-shadow:#fff 1px 1px 0;font-size:x-large;color:#f55}.logo img{float:left;display:inline;margin-right:1em}.logo h1{display:inline;width:80%}.logo img.ote{width:100px;height:50px;display:inline;float:right}.logo hr{margin:0.5em}.content{background-image:url("/images/gray_jean.png")}.content h1{margin:0.3em;text-shadow:#fff 1px 1px 0;font-size:x-large;font-family:Verdana;display:inline}.content .arrow{margin:8px 0px 5px 20px}.content .back{display:inline}.content #back-top{z-index:100;position:fixed;bottom:3%;margin-left:91%}.content #back-top a:hover{color:#bbb}.content fieldset#top{border:0;padding:10px;background-color:#c5c1e4;-moz-border-radius-topleft:25px;-webkit-border-top-left-radius:25px;border-top-left-radius:25px;-moz-border-radius-topright:25px;-webkit-border-top-right-radius:25px;border-top-right-radius:25px;-webkit-background-clip:border;-moz-background-clip:border;background-clip:border-box;-webkit-box-shadow:1px 1px 1px #fff inset,-1px -1px 5px rgba(0,0,0,0.3) inset;-moz-box-shadow:1px 1px 1px #fff inset,-1px -1px 5px rgba(0,0,0,0.3) inset;box-shadow:1px 1px 1px #fff inset,-1px -1px 5px rgba(0,0,0,0.3) inset}.content fieldset#top a#linkInsert{display:block;width:100%;height:2em}.content fieldset#top #appletContainer{padding:10px}.content fieldset#middle{border:0;padding:10px;background-color:#c5c1e4;-webkit-box-shadow:1px 1px 1px #fff inset,-1px -1px 5px rgba(0,0,0,0.3) inset;-moz-box-shadow:1px 1px 1px #fff inset,-1px -1px 5px rgba(0,0,0,0.3) inset;box-shadow:1px 1px 1px #fff inset,-1px -1px 5px rgba(0,0,0,0.3) inset}.content fieldset#middle a#linkModels{display:block;width:100%;height:2em}.content fieldset#middle #endpoint{padding-top:2em}.content fieldset#middle #model a{display:inline;font-weight:normal}.content fieldset#middle #details_0{background-color:#e6e5f3;-webkit-box-shadow:1px 1px 1px #fff inset,-1px -1px 5px rgba(0,0,0,0.3) inset;-moz-box-shadow:1px 1px 1px #fff inset,-1px -1px 5px rgba(0,0,0,0.3) inset;box-shadow:1px 1px 1px #fff inset,-1px -1px 5px rgba(0,0,0,0.3) inset;padding:1em}.content fieldset#middle #details_1{background-color:#e6e5f3;-webkit-box-shadow:1px 1px 1px #fff inset,-1px -1px 5px rgba(0,0,0,0.3) inset;-moz-box-shadow:1px 1px 1px #fff inset,-1px -1px 5px rgba(0,0,0,0.3) inset;box-shadow:1px 1px 1px #fff inset,-1px -1px 5px rgba(0,0,0,0.3) inset;padding:1em}.content fieldset#middle #details_2{background-color:#e6e5f3;-webkit-box-shadow:1px 1px 1px #fff inset,-1px -1px 5px rgba(0,0,0,0.3) inset;-moz-box-shadow:1px 1px 1px #fff inset,-1px -1px 5px rgba(0,0,0,0.3) inset;box-shadow:1px 1px 1px #fff inset,-1px -1px 5px rgba(0,0,0,0.3) inset;padding:1em}.content fieldset#middle #details_3{background-color:#e6e5f3;-webkit-box-shadow:1px 1px 1px #fff inset,-1px -1px 5px rgba(0,0,0,0.3) inset;-moz-box-shadow:1px 1px 1px #fff inset,-1px -1px 5px rgba(0,0,0,0.3) inset;box-shadow:1px 1px 1px #fff inset,-1px -1px 5px rgba(0,0,0,0.3) inset;padding:1em}.content fieldset#middle #details_4{background-color:#e6e5f3;-webkit-box-shadow:1px 1px 1px #fff inset,-1px -1px 5px rgba(0,0,0,0.3) inset;-moz-box-shadow:1px 1px 1px #fff inset,-1px -1px 5px rgba(0,0,0,0.3) inset;box-shadow:1px 1px 1px #fff inset,-1px -1px 5px rgba(0,0,0,0.3) inset;padding:1em}.content fieldset#bottom{border:0;background-color:#c5c1e4;padding:10px;margin-bottom:5em;-webkit-box-shadow:1px 1px 1px #fff inset,-1px -1px 5px rgba(0,0,0,0.3) inset;-moz-box-shadow:1px 1px 1px #fff inset,-1px -1px 5px rgba(0,0,0,0.3) inset;box-shadow:1px 1px 1px #fff inset,-1px -1px 5px rgba(0,0,0,0.3) inset;-moz-border-radius-bottomleft:25px;-webkit-border-bottom-left-radius:25px;border-bottom-left-radius:25px;-moz-border-radius-bottomright:25px;-webkit-border-bottom-right-radius:25px;border-bottom-right-radius:25px;-webkit-background-clip:border;-moz-background-clip:border;background-clip:border-box}.content fieldset#bottom input#predict{margin-left:1em}.content .predictions{background-color:#c5c1e4;padding:10px;text-align:justify;-webkit-box-shadow:1px 1px 1px #fff inset,-1px -1px 5px rgba(0,0,0,0.3) inset;-moz-box-shadow:1px 1px 1px #fff inset,-1px -1px 5px rgba(0,0,0,0.3) inset;box-shadow:1px 1px 1px #fff inset,-1px -1px 5px rgba(0,0,0,0.3) inset;-moz-border-radius-topleft:25px;-webkit-border-top-left-radius:25px;border-top-left-radius:25px;-moz-border-radius-bottomleft:25px;-webkit-border-bottom-left-radius:25px;border-bottom-left-radius:25px;-moz-border-radius-topright:25px;-webkit-border-top-right-radius:25px;border-top-right-radius:25px;-moz-border-radius-bottomright:25px;-webkit-border-bottom-right-radius:25px;border-bottom-right-radius:25px;-webkit-background-clip:border;-moz-background-clip:border;background-clip:border-box}.content .overview{background-image:url("/images/gray_jean.png");padding:12px;margin-top:1em;margin-bottom:1em;text-align:left;-webkit-box-shadow:1px 1px 1px #fff inset,-1px -1px 5px rgba(0,0,0,0.3) inset;-moz-box-shadow:1px 1px 1px #fff inset,-1px -1px 5px rgba(0,0,0,0.3) inset;box-shadow:1px 1px 1px #fff inset,-1px -1px 5px rgba(0,0,0,0.3) inset;-moz-border-radius-topleft:25px;-webkit-border-top-left-radius:25px;border-top-left-radius:25px;-moz-border-radius-topright:25px;-webkit-border-top-right-radius:25px;border-top-right-radius:25px;-webkit-background-clip:border;-moz-background-clip:border;background-clip:border-box}.content .overview a:hover{color:#f55}.content .overview caption{text-align:left}.content .overview #overview tr td{background-color:#fff;border:1px solid #dad9c7;padding-left:1em;padding-top:0.5em}.content .overview #overview tr td #compound{width:200px}.content .overview #overview tr td b.c{color:#d42200}.content .overview #overview tr td b.n{color:#5c8533}.content .overview #overview tr td .confidence{display:inline}.content .error{background-color:#c5c1e4;padding:15px;-webkit-box-shadow:1px 1px 1px #fff inset,-1px -1px 5px rgba(0,0,0,0.3) inset;-moz-box-shadow:1px 1px 1px #fff inset,-1px -1px 5px rgba(0,0,0,0.3) inset;box-shadow:1px 1px 1px #fff inset,-1px -1px 5px rgba(0,0,0,0.3) inset;-moz-border-radius-topleft:25px;-webkit-border-top-left-radius:25px;border-top-left-radius:25px;-moz-border-radius-bottomleft:25px;-webkit-border-bottom-left-radius:25px;border-bottom-left-radius:25px;-moz-border-radius-topright:25px;-webkit-border-top-right-radius:25px;border-top-right-radius:25px;-moz-border-radius-bottomright:25px;-webkit-border-bottom-right-radius:25px;border-bottom-right-radius:25px;-webkit-background-clip:border;-moz-background-clip:border;background-clip:border-box}.content .error .message{margin-top:1em;padding:1em;border:2px solid #f55;background-color:#fff;color:#f55;-moz-border-radius-topleft:25px;-webkit-border-top-left-radius:25px;border-top-left-radius:25px;-moz-border-radius-bottomleft:25px;-webkit-border-bottom-left-radius:25px;border-bottom-left-radius:25px;-moz-border-radius-topright:25px;-webkit-border-top-right-radius:25px;border-top-right-radius:25px;-moz-border-radius-bottomright:25px;-webkit-border-bottom-right-radius:25px;border-bottom-right-radius:25px;-webkit-background-clip:border;-moz-background-clip:border;background-clip:border-box}.content #closebutton{color:#f55;margin-left:98%;padding:0}.details{width:98%;background-color:#c5c1e4;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;border-bottom-left-radius:5px;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-webkit-background-clip:border;-moz-background-clip:border;background-clip:border-box;-webkit-box-shadow:1px 1px 1px #fff inset,0px -1px 2px rgba(0,0,0,0.3) inset;-moz-box-shadow:1px 1px 1px #fff inset,0px -1px 2px rgba(0,0,0,0.3) inset;box-shadow:1px 1px 1px #fff inset,0px -1px 2px rgba(0,0,0,0.3) inset}.details a:hover{color:#f55}.details img{display:inline;float:left;margin:0.5em}.significant_fragments{width:98%;margin-bottom:2em;background-color:#c5c1e4;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;border-bottom-left-radius:5px;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-webkit-background-clip:border;-moz-background-clip:border;background-clip:border-box;-webkit-box-shadow:1px 1px 1px #fff inset,0px -1px 2px rgba(0,0,0,0.3) inset;-moz-box-shadow:1px 1px 1px #fff inset,0px -1px 2px rgba(0,0,0,0.3) inset;box-shadow:1px 1px 1px #fff inset,0px -1px 2px rgba(0,0,0,0.3) inset}.significant_fragments img{display:inline;float:left;margin:0.5em}.significant_fragments table#sf1{text-align:left}.significant_fragments table#sf1 td{padding:0.2em}.descriptors{width:98%;margin-bottom:2em;background-color:#c5c1e4;-moz-border-radius-bottomleft:5px;-webkit-border-bottom-left-radius:5px;border-bottom-left-radius:5px;-moz-border-radius-bottomright:5px;-webkit-border-bottom-right-radius:5px;border-bottom-right-radius:5px;-webkit-background-clip:border;-moz-background-clip:border;background-clip:border-box;-webkit-box-shadow:1px 1px 1px #fff inset,0px -1px 2px rgba(0,0,0,0.3) inset;-moz-box-shadow:1px 1px 1px #fff inset,0px -1px 2px rgba(0,0,0,0.3) inset;box-shadow:1px 1px 1px #fff inset,0px -1px 2px rgba(0,0,0,0.3) inset}.descriptors img{display:inline;float:left;margin:0.5em}.descriptors table#sf2{text-align:left}.descriptors table#sf2 td{padding:0.2em}.results{background-image:url("/images/gray_jean.png");overflow-x:auto;overflow-y:hidden;margin-top:2em;margin-bottom:2em;-webkit-box-shadow:1px 1px 1px #fff inset,0px -1px 2px rgba(0,0,0,0.3) inset;-moz-box-shadow:1px 1px 1px #fff inset,0px -1px 2px rgba(0,0,0,0.3) inset;box-shadow:1px 1px 1px #fff inset,0px -1px 2px rgba(0,0,0,0.3) inset}.results a:hover{color:#f55}.results .tablesorter{width:100%;text-align:left}.results .tablesorter thead{background-color:#e6e5f3}.results .tablesorter thead tr th.header{background-image:url("/images/bg.gif");background-repeat:no-repeat;background-position:center left;cursor:pointer;padding-left:20px;border:1px solid #dad9c7;margin-left:-1px}.results .tablesorter thead tr th.headerSortDown{background-image:url("/images/desc.gif");background-color:#c5c1e4}.results .tablesorter thead tr th.headerSortUp{background-image:url("/images/asc.gif");background-color:#c5c1e4}.results .tablesorter tbody tr td{padding-left:1em;-webkit-box-shadow:1px 1px 1px #fff inset,0px -1px 2px rgba(0,0,0,0.3) inset;-moz-box-shadow:1px 1px 1px #fff inset,0px -1px 2px rgba(0,0,0,0.3) inset;box-shadow:1px 1px 1px #fff inset,0px -1px 2px rgba(0,0,0,0.3) inset}.results .tablesorter tbody .compound{width:200px;padding:0.2em}.results .tablesorter tbody .n{color:#5c8533}.results .tablesorter tbody .c{color:#d42200}input#predict{border:0px;background-color:#c5c1e4;margin:0;padding:0}.tooltip{background-color:#fff;border:2px solid #ccc;font-size:0.5em;padding:1em;display:none;z-index:50}.footer{margin:20px 0 20px 0} diff --git a/public/stylesheets/screen.sass b/public/stylesheets/screen.sass index bfbedc6..9af4cdb 100644 --- a/public/stylesheets/screen.sass +++ b/public/stylesheets/screen.sass @@ -87,23 +87,27 @@ body #model a display: inline font-weight: normal - a#linkDetailsLC50_mmol - font-size: small - a#linkDetailsHamster - font-size: small - a#linkDetailsRodent - font-size: small - #details_LC50_mmol + #details_0 background-color: adjust-lightness($ist-color, 10%) //background-image: url("/images/gray_jean.png") +box-shadow(1px 1px 1px rgba(white, 1) inset, -1px -1px 5px rgba(black, 0.3) inset) padding: 1em - #details_Hamster + #details_1 background-color: adjust-lightness($ist-color, 10%) //background-image: url("/images/gray_jean.png") +box-shadow(1px 1px 1px rgba(white, 1) inset, -1px -1px 5px rgba(black, 0.3) inset) padding: 1em - #details_Rodent + #details_2 + background-color: adjust-lightness($ist-color, 10%) + //background-image: url("/images/gray_jean.png") + +box-shadow(1px 1px 1px rgba(white, 1) inset, -1px -1px 5px rgba(black, 0.3) inset) + padding: 1em + #details_3 + background-color: adjust-lightness($ist-color, 10%) + //background-image: url("/images/gray_jean.png") + +box-shadow(1px 1px 1px rgba(white, 1) inset, -1px -1px 5px rgba(black, 0.3) inset) + padding: 1em + #details_4 background-color: adjust-lightness($ist-color, 10%) //background-image: url("/images/gray_jean.png") +box-shadow(1px 1px 1px rgba(white, 1) inset, -1px -1px 5px rgba(black, 0.3) inset) diff --git a/views/details.haml b/views/details.haml index 5663c1f..b69f1af 100644 --- a/views/details.haml +++ b/views/details.haml @@ -17,7 +17,7 @@ %br %b="Names:" %p{:style=>"padding-left:0.5em;"} - = @names + = @names.join("; ") %p{:style=>"padding-left:0.5em;"} / pubchem link %a{:href=>"http://aop.in-silico.ch/", :title=>"link opens in new tab", :alt=>"pubchem link", :target=>"_blank"} PubChem read across diff --git a/views/neighbors.haml b/views/neighbors.haml index 39f6272..df03b85 100644 --- a/views/neighbors.haml +++ b/views/neighbors.haml @@ -12,7 +12,7 @@ / each endpoint becomes a tab head ; - @prediction_models.each do |m| - count_m += 1 - - m_title = m.title.split(" ").first + - m_title = m.title.split("_").last(2)[0] %li %a{:href => "#results_#{count_m}", :id => "link#{m_title}"} = m_title @@ -90,9 +90,9 @@ / prevent conversion of nil - c = p.data_entries[count][2] != nil ? p.data_entries[count][2] : '' - case c - - when /(0|false)/ + - when /(0|false|inactive)/ - c = "non-carcinogen" - - when /(1|true)/ + - when /(1|true|active)/ - c = "carcinogen" - else - c = Array.new diff --git a/views/predict.haml b/views/predict.haml index 5641f6a..6340def 100644 --- a/views/predict.haml +++ b/views/predict.haml @@ -68,26 +68,28 @@ }); #models + - @detail_count = 0 // TODO order models by echa endpoint #endpoint - %b Acute toxicity to fish (lethality): + %b Acute toxicity to fish (lethality): - @models.each do |model| - - model_title = model.title.split(" ").first - - if model_title =~ /LC50/ + - model_title = model.title.split("_").last(2)[0] + - if model_title =~ /LC50/i + - @detail_count +=1 %div{:id => model_title} %input{:type => "checkbox", :name => "selection[#{model_title}]", :id => "selection[#{model_title}]", :value => true, :disabled => false} %label{:for => "selection[#{model_title}]"} - = " EPA v4b Fathead Minnow Acute Toxicity "+model_title - %a{:href=>"#details", :id => "linkDetails#{model_title}", :title=>"#{model_title} details"} + = model.title + %a{:href=>"#details", :id => "linkDetails#{model_title}", :title=>"#{model_title} details", :style=>"font-size:small;"} [Details] :javascript - $("a#linkDetails#{model_title}").click(function () { - $("#details_#{model_title}").toggle(); + $("a#linkDetails#{@detail_count}").click(function () { + $("#details_#{@detail_count}").toggle(); //document.location = document.location + "#" + "details"; }); - #details{:id => "#{model_title}", :style=> "display:none;"} + #details{:id => "#{@detail_count}", :style=> "display:none;"} %h3 Model Details: //%p= "Training Dataset:\t#{model[RDF::OT.trainingDataset]}" %p Algorithm: Lazar @@ -104,22 +106,23 @@ %br %b Carcinogenicity: - @models.each do |model| - - model_title = model.title.split(" ").first + - model_title = model.title.split("_").last(2)[0] - if model_title =~ /hamster|rodent/i + - @detail_count +=1 %div{:id => model_title} %input{:type => "checkbox", :name => "selection[#{model_title}]", :id => "selection[#{model_title}]", :value => true, :disabled => false} %label{:for => "selection[#{model_title}]"} - = " DSSTox Carcinogenic Potency DBS "+model_title - %a{:href=>"#details", :id => "linkDetails#{model_title}", :title=>"#{model_title} details"} + = model.title + %a{:href=>"#details", :id => "linkDetails#{@detail_count}", :title=>"#{model_title} details", :style=>"font-size:small;"} [Details] :javascript - $("a#linkDetails#{model_title}").click(function () { - $("#details_#{model_title}").toggle(); + $("a#linkDetails#{@detail_count}").click(function () { + $("#details_#{@detail_count}").toggle(); //document.location = document.location + "#" + "details"; }); - #details{:id=>"#{model_title}", :style=> "display:none;"} + #details{:id=>"#{@detail_count}", :style=> "display:none;"} %h3 Model Details: //%p= "Training Dataset:\t#{model[RDF::OT.trainingDataset]}" %p Algorithm: Lazar @@ -134,6 +137,40 @@ %p Number of predictions: integer %p Correct predictions: % %br + %br + %b Mutagenicity: + - @models.each do |model| + - model_title = model.title.split("_").last(2)[0] + - if model_title =~ /Mutagenicity/i + - @detail_count +=1 + %div{:id => model_title} + %input{:type => "checkbox", :name => "selection[#{model_title}]", :id => "selection[#{model_title}]", :value => true, :disabled => false} + %label{:for => "selection[#{model_title}]"} + = model.title + %a{:href=>"#details", :id => "linkDetails#{model_title}", :title=>"#{model_title} details", :style=>"font-size:small;"} + [Details] + + :javascript + $("a#linkDetails#{@detail_count}").click(function () { + $("#details_#{@detail_count}").toggle(); + //document.location = document.location + "#" + "details"; + }); + + #details{:id => "#{@detail_count}", :style=> "display:none;"} + %h3 Model Details: + //%p= "Training Dataset:\t#{model[RDF::OT.trainingDataset]}" + %p Algorithm: Lazar + %p Type: classification + %p Training compounds: integer + %p Descriptors: Fminer + //%p= "Training Dataset:\t#{model[RDF::OT.trainingDataset]}" + //%p= "Feature Dataset:\t#{model[RDF::OT.featureDataset]}" + %h3 Validation: + %a{:href => "#"} + Detailed report link + %p Number of predictions: integer + %p Correct predictions: % + %br diff --git a/views/prediction.haml b/views/prediction.haml index 4002cbd..5de0564 100644 --- a/views/prediction.haml +++ b/views/prediction.haml @@ -14,7 +14,7 @@ %tbody %tr - %td{:id=>"compound"} + %td{:id=>"compound", :style=>"align:center;"} %a{:href => to("/prediction/#{CGI.escape(@compound.uri)}/details"), :id=>"linkCompound", :target=>"details_overview"} %img{:src=>"#{@compound.uri}/image", :alt=>"Compound image not available", :width=>"150", :height=>"150"} %p @@ -40,16 +40,16 @@ - database_hit = 1 - c = p.data_entries[0][0] != nil ? p.data_entries[0][0] : '' - case c - - when /(0|false)/ + - when /(0|false|inactive)/ - c = "non-carcinogen" - - when /(1|true)/ + - when /(1|true|active)/ - c = "carcinogen" - else - c = Array.new - c[0] = (p.data_entries[0][0].class == Float) ? p.data_entries[0][0].round(3) : (p.data_entries[0][0] != nil ? p.data_entries[0][0] : "no prediction") - %td + %td{:style=>"valign:top;"} %b{:class => "title"} - = @prediction_models[count].title.split(" ").first + = @prediction_models[count].title.gsub("_", " ") - @model_uri = @prediction_models[count].uri %p / model type (classification|regression) @@ -101,7 +101,7 @@ Predictions with a high confidence can be expected to be more reliable than predictions with low confidence. Confidence values may take any value between 0 and 1. - For most models confidence > 0.025 is a sensible (hard) cutoff to distiguish between + For most models confidence > 0.025 is a sensible (hard) cutoff to distinguish between reliable and unreliable predictions. %p /TODO add tooltip for significant ftagments and descriptors @@ -150,15 +150,6 @@ %b Measured activity: = p.data_entries[0][2] %p - %b Neighbors: - %a{:href=> "#tabs", :id=>"link#{count}"} - %img{:src=>"/images/arrow_down_float.png", :alt=>"v"} - :javascript - $("a#link#{count}").click(function () { - $(".results").show(); - document.getElementById('tabs').focus(); - $("#tabs").tabs({ active: "#{count}" }); - }); - count+=1 diff --git a/views/significant_fragments.haml b/views/significant_fragments.haml index 7d342d0..46cca5f 100644 --- a/views/significant_fragments.haml +++ b/views/significant_fragments.haml @@ -12,9 +12,9 @@ - if !@significant_fragments.empty? %table{:id => "sf1"} %tr - %th{:style=>"border:1px solid;"} + %th{:style=>"border:2px solid #C0C0C0;"} Predominantly in compounds with activity "non-carcinogen" - %th{:style=>"border:1px solid;"} + %th{:style=>"border:2px solid #C0C0C0;"} p value - @significant_fragments.each do |fragments| / fragments == [1||2, smarts, pValue] @@ -28,9 +28,9 @@ %td %br %tr - %th{:style=>"border:1px solid;"} + %th{:style=>"border:2px solid #C0C0C0;"} Predominantly in compounds with activity "carcinogen" - %th{:style=>"border:1px solid;"} + %th{:style=>"border:2px solid #C0C0C0;"} p value - @significant_fragments.each do |fragments| / fragments == [1||2, smarts, pValue] @@ -50,9 +50,9 @@ - if !@significant_fragments.empty? %table{:id => "sf2"} %tr - %th{:style=>"border:1px solid;"} + %th{:style=>"border:2px solid #C0C0C0;"} Descriptor - %th{:style=>"border:1px solid;"} + %th{:style=>"border:2px solid #C0C0C0;"} value - @significant_fragments.each do |fragments| %tr -- cgit v1.2.3