rbbt-rest 1.1.5 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +8 -8
- data/lib/rbbt/rest/common/cache.rb +33 -14
- data/lib/rbbt/rest/common/locate.rb +8 -6
- data/lib/rbbt/rest/common/misc.rb +4 -0
- data/lib/rbbt/rest/common/render.rb +14 -4
- data/lib/rbbt/rest/common/resources.rb +1 -1
- data/lib/rbbt/rest/common/table.rb +37 -7
- data/lib/rbbt/rest/entity.rb +5 -3
- data/lib/rbbt/rest/entity/favourites.rb +4 -1
- data/lib/rbbt/rest/entity/helpers.rb +12 -0
- data/lib/rbbt/rest/entity/rest.rb +6 -2
- data/lib/rbbt/rest/helpers.rb +7 -0
- data/lib/rbbt/rest/knowledge_base.rb +338 -0
- data/lib/rbbt/rest/knowledge_base/helpers.rb +57 -0
- data/lib/rbbt/rest/main.rb +16 -3
- data/share/views/compass/_rbbt.sass +11 -0
- data/share/views/compass/actions.sass +48 -24
- data/share/views/compass/app.sass +72 -50
- data/share/views/compass/colors.sass +3 -229
- data/share/views/compass/entity_card.sass +44 -108
- data/share/views/compass/favourites.sass +17 -72
- data/share/views/compass/finder.sass +30 -0
- data/share/views/compass/foundation.sass +79 -0
- data/share/views/compass/functions.sass +27 -0
- data/share/views/compass/help.sass +3 -0
- data/share/views/compass/layout.sass +132 -0
- data/share/views/compass/rbbt/form.sass +84 -0
- data/share/views/compass/rbbt/fragment.sass +7 -0
- data/share/views/compass/rbbt/menu.sass +189 -0
- data/share/views/compass/rbbt/reveal.sass +46 -0
- data/share/views/compass/rbbt/table.sass +169 -0
- data/share/views/compass/skeleton.sass +2 -0
- data/share/views/compass/skeleton/_dependencies.sass +151 -0
- data/share/views/compass/skeleton/_functions.sass +4 -0
- data/share/views/compass/skeleton/_mixins.sass +25 -0
- data/share/views/compass/skeleton/_vars.sass +72 -0
- data/share/views/compass/skeleton/base.sass +333 -0
- data/share/views/compass/skeleton/layout.sass +51 -0
- data/share/views/compass/skeleton/skeleton.sass +105 -0
- data/share/views/compass/solarized.sass +56 -0
- data/share/views/compass/style.sass +2 -116
- data/share/views/compass/theme.sass +57 -44
- data/share/views/compass/top_menu.sass +121 -0
- data/share/views/compass/user.sass +7 -0
- data/share/views/compass/variables.sass +7 -0
- data/share/views/compass/workflow.sass +6 -14
- data/share/views/entity_partials/action_controller.haml +7 -4
- data/share/views/entity_partials/entity_card.haml +10 -5
- data/share/views/entity_partials/entity_list.haml +4 -7
- data/share/views/entity_partials/entity_list_card.haml +10 -3
- data/share/views/entity_partials/entity_map_card.haml +2 -2
- data/share/views/entity_partials/list_container.haml +31 -26
- data/share/views/error.haml +5 -7
- data/share/views/help.haml +75 -31
- data/share/views/help/entity.haml +191 -193
- data/share/views/help/workflow.haml +59 -63
- data/share/views/job_result.haml +23 -26
- data/share/views/layout.haml +41 -61
- data/share/views/layout/top_menu.haml +19 -0
- data/share/views/layout/top_menu/favourites.haml +45 -0
- data/share/views/layout/top_menu/finder.haml +4 -0
- data/share/views/layout/top_menu/user.haml +15 -0
- data/share/views/public/js/_ajax_replace.js +17 -5
- data/share/views/public/js/_ellipsis.js +7 -9
- data/share/views/public/js/app.js +50 -2
- data/share/views/public/js/foundation/foundation.abide.js +194 -0
- data/share/views/public/js/foundation/foundation.alerts.js +52 -0
- data/share/views/public/js/foundation/foundation.clearing.js +516 -0
- data/share/views/public/js/foundation/foundation.cookie.js +74 -0
- data/share/views/public/js/foundation/foundation.dropdown.js +177 -0
- data/share/views/public/js/foundation/foundation.forms.js +533 -0
- data/share/views/public/js/foundation/foundation.interchange.js +280 -0
- data/share/views/public/js/foundation/foundation.joyride.js +850 -0
- data/share/views/public/js/foundation/foundation.js +440 -0
- data/share/views/public/js/foundation/foundation.magellan.js +135 -0
- data/share/views/public/js/foundation/foundation.orbit.js +412 -0
- data/share/views/public/js/foundation/foundation.placeholder.js +179 -0
- data/share/views/public/js/foundation/foundation.reveal.js +330 -0
- data/share/views/public/js/foundation/foundation.section.js +400 -0
- data/share/views/public/js/foundation/foundation.tooltips.js +208 -0
- data/share/views/public/js/foundation/foundation.topbar.js +300 -0
- data/share/views/public/js/foundation/index.js +18 -0
- data/share/views/public/js/helpers.js +33 -2
- data/share/views/public/js/jquery-ui.js +313 -0
- data/share/views/public/js/rbbt/actions.js +264 -0
- data/share/views/public/js/{_dom_update.js → rbbt/dom_update.js} +0 -0
- data/share/views/public/js/rbbt/favourites.js +425 -0
- data/share/views/public/js/rbbt/fragment.js +13 -0
- data/share/views/public/js/rbbt/hide.js +60 -0
- data/share/views/public/js/rbbt/list.js +117 -0
- data/share/views/public/js/{maps.js → rbbt/map.js} +3 -2
- data/share/views/public/js/rbbt/menu.js +22 -0
- data/share/views/public/js/rbbt/modal.js +96 -0
- data/share/views/public/js/{entities.js → rbbt/page_type.js} +12 -9
- data/share/views/public/js/rbbt/reveal.js +19 -0
- data/share/views/public/js/rbbt/table.js +283 -0
- data/share/views/public/js/{workflow.js → rbbt/workflow.js} +0 -0
- data/share/views/tasks.haml +14 -15
- data/share/views/wait.haml +11 -12
- metadata +62 -33
- data/share/views/compass/_foundation_setup.sass +0 -74
- data/share/views/compass/dom.sass +0 -32
- data/share/views/compass/footer.sass +0 -4
- data/share/views/compass/form.sass +0 -41
- data/share/views/compass/fragment.sass +0 -8
- data/share/views/compass/list_container.sass +0 -34
- data/share/views/compass/lists.sass +0 -33
- data/share/views/compass/offcanvas.sass +0 -66
- data/share/views/compass/responsive_table.sass +0 -80
- data/share/views/compass/reveal.sass +0 -31
- data/share/views/compass/style_mixins.sass +0 -42
- data/share/views/compass/table.sass +0 -63
- data/share/views/compass/tabs.sass +0 -81
- data/share/views/compass/topbar.sass +0 -25
- data/share/views/compass/web-fonts.sass +0 -77
- data/share/views/layout/favourites.haml +0 -46
- data/share/views/layout/header.haml +0 -44
- data/share/views/public/js/_fix_tablesorter_science.js +0 -38
- data/share/views/public/js/_foundation.js +0 -42
- data/share/views/public/js/actions.js +0 -108
- data/share/views/public/js/base.js +0 -121
- data/share/views/public/js/favourites.js +0 -441
- data/share/views/public/js/lists.js +0 -117
- data/share/views/public/js/offcanvas.js +0 -35
- data/share/views/public/js/reveal.js +0 -48
- data/share/views/public/js/tables.js +0 -314
- data/share/views/public/js/tabs.js +0 -7
@@ -0,0 +1,121 @@
|
|
1
|
+
$padding_top_menu: 5px
|
2
|
+
|
3
|
+
#content
|
4
|
+
padding-top: 2 * $vindent + $size_menu_item
|
5
|
+
|
6
|
+
#top_menu
|
7
|
+
|
8
|
+
@media print
|
9
|
+
display: none
|
10
|
+
|
11
|
+
@media #{$not-large}
|
12
|
+
position: fixed
|
13
|
+
@media #{$only-large}
|
14
|
+
position: fixed
|
15
|
+
top: 0
|
16
|
+
width: 100%
|
17
|
+
z-index: 30
|
18
|
+
|
19
|
+
background-color: $color_top_menu
|
20
|
+
color: $color_menu_text
|
21
|
+
padding: $padding_top_menu
|
22
|
+
border-bottom: 1px solid darken($color_menu_bg, 15)
|
23
|
+
box-shadow: 0px 3px -4px 4px rgba(0, 0, 0, 0.1)
|
24
|
+
padding-left: 0px
|
25
|
+
& > ul
|
26
|
+
+grid_row()
|
27
|
+
+clean_list
|
28
|
+
+clearfix
|
29
|
+
|
30
|
+
@media #{$only-large}
|
31
|
+
& > li
|
32
|
+
margin-left: $indent
|
33
|
+
|
34
|
+
& > li.title
|
35
|
+
float: left
|
36
|
+
+rbbt_menu_item($color_top_menu)
|
37
|
+
padding-left: 0
|
38
|
+
padding-right: $indent
|
39
|
+
font-weight: bold
|
40
|
+
|
41
|
+
& > li.reload
|
42
|
+
float: left
|
43
|
+
+rbbt_menu_item($color_top_menu)
|
44
|
+
font-size: 1.2em
|
45
|
+
padding-left: 0
|
46
|
+
padding-right: 0px
|
47
|
+
display: inline-block
|
48
|
+
border: 1px $color_menu_border
|
49
|
+
cursor: pointer
|
50
|
+
width: auto
|
51
|
+
|
52
|
+
& > li.container
|
53
|
+
float: right
|
54
|
+
|
55
|
+
& > li.find
|
56
|
+
float: left
|
57
|
+
|
58
|
+
& > li.favourites, & > li.user
|
59
|
+
|
60
|
+
&.favourites
|
61
|
+
float: left
|
62
|
+
&.user
|
63
|
+
float: right
|
64
|
+
background-color: $color_menu_bg
|
65
|
+
dl.rbbt_menu > dd
|
66
|
+
box-shadow: 1px 3px -4px 4px rgba(0, 0, 0, 0.1)
|
67
|
+
|
68
|
+
dl.rbbt_vertical_menu
|
69
|
+
@media #{$only-large}
|
70
|
+
width: 50em
|
71
|
+
|
72
|
+
dt.star.active > i
|
73
|
+
color: gold !important
|
74
|
+
|
75
|
+
ul.new_list
|
76
|
+
+clean_list
|
77
|
+
padding: $vindent $indent
|
78
|
+
li
|
79
|
+
display: block !important
|
80
|
+
|
81
|
+
a.remove_element
|
82
|
+
margin-right: $indent
|
83
|
+
|
84
|
+
li.user
|
85
|
+
ul.jobs
|
86
|
+
@media #{$only-large}
|
87
|
+
min-width: 400px
|
88
|
+
|
89
|
+
|
90
|
+
@media #{$only-large}
|
91
|
+
li.container
|
92
|
+
display: none
|
93
|
+
@media #{$not-large}
|
94
|
+
li.hide
|
95
|
+
display: none !important
|
96
|
+
|
97
|
+
li.hide.shown
|
98
|
+
display: block !important
|
99
|
+
clear: both
|
100
|
+
width: 100% !important
|
101
|
+
margin-top: 5px
|
102
|
+
dl
|
103
|
+
width: 100% !important
|
104
|
+
padding-left: 0
|
105
|
+
margin-right: 0
|
106
|
+
margin-bottom: 0
|
107
|
+
|
108
|
+
li.hide.hidden
|
109
|
+
display: none !important
|
110
|
+
|
111
|
+
li.container
|
112
|
+
a.hide_toggle
|
113
|
+
display: inline-block
|
114
|
+
width: auto
|
115
|
+
+_rbbt_menu_item
|
116
|
+
border: 1px solid $color_menu_border
|
117
|
+
padding: 3px
|
118
|
+
margin: 3px
|
119
|
+
|
120
|
+
|
121
|
+
|
@@ -1,10 +1,9 @@
|
|
1
|
+
ul.tasks > li
|
2
|
+
display: block !important
|
1
3
|
|
2
|
-
.workflow_task
|
3
|
-
@include grid-row()
|
4
4
|
|
5
|
+
.workflow_task
|
5
6
|
.title
|
6
|
-
@include grid-column(12)
|
7
|
-
@extend h4
|
8
7
|
span.workflow
|
9
8
|
font-weight: 600
|
10
9
|
|
@@ -15,19 +14,12 @@
|
|
15
14
|
margin-left: 2em
|
16
15
|
|
17
16
|
.form
|
18
|
-
@
|
17
|
+
@extend .action_parameters
|
19
18
|
|
20
19
|
dd.job_control
|
21
20
|
ul
|
22
|
-
|
23
|
-
|
21
|
+
+rbbt_button_list($color_bg: $base3)
|
22
|
+
width: auto
|
24
23
|
li a
|
25
|
-
@include button-base
|
26
|
-
@include button-size
|
27
|
-
@include button-style
|
28
|
-
@include radius
|
29
|
-
@include single-transition
|
30
|
-
margin-bottom: 2px
|
31
|
-
font-size: 0.8em
|
32
24
|
|
33
25
|
|
@@ -1,6 +1,5 @@
|
|
1
1
|
- entity = controller.entity
|
2
2
|
- if controller.actions.any?
|
3
|
-
|
4
3
|
.action_controller
|
5
4
|
%ul.controls
|
6
5
|
|
@@ -12,11 +11,15 @@
|
|
12
11
|
%a(href="#")
|
13
12
|
%i.general.foundicon-settings
|
14
13
|
|
15
|
-
|
16
|
-
%li.select
|
14
|
+
%li.pin
|
17
15
|
%a(href="#")
|
18
|
-
%i.general.foundicon-
|
16
|
+
%i.general.foundicon-paper-clip
|
19
17
|
|
18
|
+
%li.url
|
19
|
+
%a(href="#")
|
20
|
+
%i.general.foundicon-flag
|
21
|
+
|
22
|
+
%ul.actions
|
20
23
|
- last_resource = nil
|
21
24
|
- controller.actions.each do |action, text, resource, params|
|
22
25
|
%li(class="#{last_resource and last_resource != resource ? "new_resource" : ""}" attr-resource="#{resource}")
|
@@ -1,6 +1,7 @@
|
|
1
1
|
- entity = card.entity
|
2
2
|
- entity_id = "entity__" + entity.id
|
3
3
|
.entity_card(id=entity_id)
|
4
|
+
/-- title --
|
4
5
|
.title
|
5
6
|
.name
|
6
7
|
- case card.name
|
@@ -9,7 +10,7 @@
|
|
9
10
|
- when String
|
10
11
|
= card.name
|
11
12
|
- when Proc
|
12
|
-
=
|
13
|
+
= fragment :name, &card.name
|
13
14
|
|
14
15
|
.long_name
|
15
16
|
- case card.long_name
|
@@ -18,9 +19,11 @@
|
|
18
19
|
- when String
|
19
20
|
= card.long_name
|
20
21
|
- when Proc
|
21
|
-
=
|
22
|
+
= fragment :long_name, &card.long_name
|
22
23
|
|
23
24
|
.card
|
25
|
+
|
26
|
+
/-- sidebar --
|
24
27
|
.sidebar.offcanvas
|
25
28
|
.meta
|
26
29
|
.entity_info
|
@@ -33,11 +36,14 @@
|
|
33
36
|
- when Hash
|
34
37
|
= hash2dl(card.meta)
|
35
38
|
- when Proc
|
36
|
-
=
|
39
|
+
= fragment :meta, &card.meta
|
37
40
|
- if card.list_container
|
38
41
|
.entity_lists
|
39
42
|
= list_container_render(card.list_container)
|
40
43
|
|
44
|
+
|
45
|
+
|
46
|
+
/-- content --
|
41
47
|
.content
|
42
48
|
.description
|
43
49
|
- case card.description
|
@@ -46,10 +52,9 @@
|
|
46
52
|
- when String
|
47
53
|
%p= card.description
|
48
54
|
- when Proc
|
49
|
-
=
|
55
|
+
= fragment :description, &card.description
|
50
56
|
|
51
57
|
- if card.action_controller
|
52
58
|
.actions
|
53
59
|
= action_controller_render(card.action_controller)
|
54
60
|
|
55
|
-
|
@@ -1,8 +1,5 @@
|
|
1
1
|
|
2
|
-
|
3
|
-
.
|
4
|
-
|
5
|
-
|
6
|
-
%ul.entities(style="max-height: 200px; overflow: auto")
|
7
|
-
- list.each do |elem|
|
8
|
-
%li= elem.link
|
2
|
+
%span
|
3
|
+
%ul.entities(style="max-height: 200px; overflow: auto")
|
4
|
+
- list.each do |elem|
|
5
|
+
%li= elem.link
|
@@ -10,6 +10,7 @@
|
|
10
10
|
= Misc.humanize list_id
|
11
11
|
|
12
12
|
.card
|
13
|
+
|
13
14
|
.sidebar.offcanvas
|
14
15
|
.meta
|
15
16
|
.list_management
|
@@ -18,12 +19,17 @@
|
|
18
19
|
|
19
20
|
%li
|
20
21
|
%a.compare_list(href="#" data-reveal-id='modal1') Compare
|
22
|
+
%li
|
21
23
|
%a.list_list(href="#{request.path_info + "?_format=list"}") List
|
22
|
-
|
24
|
+
- if list.respond_to? :name
|
25
|
+
%li
|
23
26
|
%a.name_list(href="#{request.path_info + "?_format=name"}") Name
|
24
|
-
|
27
|
+
- if list.respond_to? :ensembl
|
28
|
+
%li
|
25
29
|
%a.ensembl_list(href="#{request.path_info + "?_format=ensembl"}") Ensembl
|
30
|
+
%li
|
26
31
|
%a.download_list(href="#{request.path_info + "?_format=raw"}") Raw
|
32
|
+
%li
|
27
33
|
%a.edit_list(href="#") Edit
|
28
34
|
|
29
35
|
.entity_info
|
@@ -58,6 +64,8 @@
|
|
58
64
|
.entity_lists
|
59
65
|
= list_container_render(card.list_container)
|
60
66
|
|
67
|
+
|
68
|
+
|
61
69
|
.content
|
62
70
|
.description
|
63
71
|
- case card.description
|
@@ -74,4 +82,3 @@
|
|
74
82
|
- if card.action_controller
|
75
83
|
.actions
|
76
84
|
= action_controller_render(card.action_controller)
|
77
|
-
|
@@ -10,6 +10,7 @@
|
|
10
10
|
= Misc.humanize map_id
|
11
11
|
|
12
12
|
.card
|
13
|
+
|
13
14
|
.sidebar.offcanvas
|
14
15
|
.meta
|
15
16
|
.map_management
|
@@ -47,7 +48,7 @@
|
|
47
48
|
%li
|
48
49
|
- $page_entity_base_type = page_entity_base_type
|
49
50
|
- $page_entity_map_column = page_entity_map_column
|
50
|
-
= reveal :rank_products do
|
51
|
+
= reveal :rank_products, :title => "Rank Product" do
|
51
52
|
= action_parameters nil, :class => 'rank_products' do
|
52
53
|
- input :map, :select, "Select map to use", nil, :html_options => {:class => 'favourite_maps', :type => $page_entity_base_type, :column => $page_entity_map_column}
|
53
54
|
|
@@ -60,4 +61,3 @@
|
|
60
61
|
- if card.action_controller
|
61
62
|
.actions
|
62
63
|
= action_controller_render(card.action_controller)
|
63
|
-
|
@@ -1,31 +1,36 @@
|
|
1
|
-
%dl.
|
1
|
+
%dl.rbbt_accordion
|
2
2
|
- container.lists.each do |id, list, text, options|
|
3
|
-
|
4
|
-
|
5
|
-
=
|
6
|
-
|
7
|
-
|
8
|
-
%dt
|
9
|
-
= list.list_link :length, id
|
10
|
-
%span.title
|
11
|
-
= text || id
|
12
|
-
%dd.content
|
13
|
-
%p
|
14
|
-
- if (defined? force and force) or list.length < 500
|
15
|
-
= list.link * ", "
|
16
|
-
- else
|
17
|
-
= modal_fragment "Too many entities to list" do
|
18
|
-
= list.link * ", "
|
19
|
-
- else
|
20
|
-
%dt
|
3
|
+
- if Proc === list
|
4
|
+
= fragment do
|
5
|
+
- list = list.call
|
6
|
+
- next if list.nil?
|
7
|
+
%dt.next
|
21
8
|
= list.list_link :length, id
|
22
9
|
%span.title
|
23
10
|
= text || id
|
24
|
-
%dd
|
25
|
-
|
26
|
-
|
11
|
+
%dd
|
12
|
+
- if (defined? force and force) or list.length < 500
|
13
|
+
= list.link * ", "
|
14
|
+
- else
|
15
|
+
= modal_fragment "Too many entities to list" do
|
27
16
|
= list.link * ", "
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
17
|
+
- else
|
18
|
+
- if list.empty?
|
19
|
+
%dt
|
20
|
+
= 0
|
21
|
+
%span.title
|
22
|
+
= text || id
|
23
|
+
- else
|
24
|
+
%dt.next
|
25
|
+
= list.list_link :length, id
|
26
|
+
%span.title
|
27
|
+
= text || id
|
28
|
+
%dd
|
29
|
+
- if (defined? force and force) or list.length < 500
|
30
|
+
= list.link * ", "
|
31
|
+
- else
|
32
|
+
= reveal "Too many entities to list" do
|
33
|
+
= fragment do
|
34
|
+
= list.link * ", "
|
35
|
+
|
36
|
+
|
data/share/views/error.haml
CHANGED
@@ -1,10 +1,8 @@
|
|
1
|
-
.
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
%pre= job.messages[-2]
|
7
|
-
- backtrace = job.info[:backtrace]
|
1
|
+
%h5 Error processing #{File.basename(job.name)}
|
2
|
+
- if job.messages and job.messages.any?
|
3
|
+
%span.error_message
|
4
|
+
%pre= job.messages[-2]
|
5
|
+
- backtrace = job.info[:backtrace]
|
8
6
|
|
9
7
|
%hr
|
10
8
|
|
data/share/views/help.haml
CHANGED
@@ -1,34 +1,78 @@
|
|
1
|
-
|
2
|
-
.column.small-12
|
3
|
-
:markdown
|
4
|
-
|
5
|
-
Overview
|
6
|
-
========
|
7
|
-
|
8
|
-
The objective of this page is to offer a collection of functionalities in
|
9
|
-
a uniform interface. It has two operation modes: Centered on the
|
10
|
-
functionalities or centered on the data. The first operation mode is
|
11
|
-
based on *Workflows*, the second on *Entities*. The Entity subsystem is
|
12
|
-
probably the most interesting one, so let us begin there.
|
13
|
-
|
14
|
-
We will devote this document to describe the most general aspects of the
|
15
|
-
application. The information presented and the analysis available depend
|
16
|
-
on the configuration of the application and will be covered elsewhere.
|
17
|
-
|
18
|
-
|
19
|
-
#### A word on performance
|
20
|
-
|
21
|
-
This application is intended to allow interactive investigation. But be
|
22
|
-
aware, some analysis are slow and will not feel that much interactive.
|
23
|
-
Some process may require plenty of infrastructure: downloading of
|
24
|
-
datasets, building databases, computing preliminary results, etc. A lot
|
25
|
-
of this processing is reused system-wide. This means that the application
|
26
|
-
starts slow but get quicker. Unlike other applications with a more limited scope
|
27
|
-
this system cannot foresee what the user will be interested in, so not all
|
28
|
-
this infrastructure can be built before hand and must be built on demand.
|
29
|
-
We pay a price for flexibility by sacrificing responsiveness. But the system
|
30
|
-
has plenty of tricks to be as efficient as possible and to reuse as much
|
31
|
-
as possible.
|
1
|
+
:markdown
|
32
2
|
|
3
|
+
Overview
|
4
|
+
========
|
5
|
+
|
6
|
+
This application is designed for integration of data and functionalities.
|
7
|
+
It design is based on the idea of the `Entity`: any thing that can be
|
8
|
+
unambiguously identified and be subject of investigation. Examples of
|
9
|
+
entities are: genes, proteins, SNPs, samples, pathways, etc.
|
10
|
+
|
11
|
+
Each entity has a report, which depends on the type of entity it is.
|
12
|
+
All reports are computed on the fly and cached. In addition to the main
|
13
|
+
report, entities have `actions`, which are sub-reports that implement
|
14
|
+
particular analysis. For instance, for gene entities, one of the actions
|
15
|
+
is to display a summary of the relevance of that gene across the collection
|
16
|
+
of studies that you have access to.
|
17
|
+
|
18
|
+
## Miscellaneous comments
|
19
|
+
|
20
|
+
### A word on performance
|
21
|
+
|
22
|
+
This application is intended to allow interactive investigation. But be
|
23
|
+
aware, some analysis are slow and will not feel that much interactive. Some
|
24
|
+
process may require plenty of infrastructure: downloading of datasets,
|
25
|
+
building databases, computing preliminary results, etc. A lot of this
|
26
|
+
processing is reused system-wide. This means that the application starts slow
|
27
|
+
but gets quicker. Unlike other applications with a more limited scope this
|
28
|
+
system cannot foresee what the user will be interested in, so not all this
|
29
|
+
infrastructure can be built before hand and must be built on demand. We pay
|
30
|
+
a price for flexibility by sacrificing responsiveness. But the system has
|
31
|
+
plenty of tricks to be as efficient as possible and to reuse as much as
|
32
|
+
possible.
|
33
|
+
|
34
|
+
### Entity annotations
|
35
|
+
|
36
|
+
The `Entity` subsystem annotates identifiers for entities with additional information
|
37
|
+
to help their complete and unambiguous identification.
|
38
|
+
|
39
|
+
#### Organisms and builds
|
40
|
+
|
41
|
+
When you identify a gene with the string `TP53` we might think that the gene
|
42
|
+
is unambiguously identified, however, it is not. First of all, we need to
|
43
|
+
know to which organism this gene belongs to, each TP53 gene from different
|
44
|
+
organisms is a different gene. Not only that, but the TP53 gene changes
|
45
|
+
slightly from build to build, in particular, its chromosomal position may
|
46
|
+
shift. For that reason genes are not only characterized by the organism they
|
47
|
+
belong to but also by the version of the build we are considering.
|
48
|
+
|
49
|
+
We annotate entities with their organism and build using the following
|
50
|
+
convention. The organism is specified with a three letter code, the first is
|
51
|
+
uppercase and is the first letter of the first term in the organism name ("H"
|
52
|
+
for Homo) and the last two the first two letter of the second term ("sa" for
|
53
|
+
sapiens); this is the convention followed by KeGG, it is succinct and
|
54
|
+
collision free in our experience. The build is specified afterwards with a
|
55
|
+
date code; "Hsa/may2009" represents the _Homo s._ organism as was known in
|
56
|
+
May 2009 i.e. hg18 build; whereas "Hsa/jan2013" corresponds to a recent
|
57
|
+
version of the hg19 build.
|
58
|
+
|
59
|
+
|
60
|
+
#### Identifier formats
|
61
|
+
|
62
|
+
Genes can be identified through a substantial number of identifier formats:
|
63
|
+
Ensembl Gene ID, Entrez Gene ID, Associated Gene Name (gene symbol). We use
|
64
|
+
the Ensembl BioMart to download an identifier translation resource. The name
|
65
|
+
of the formats corresponds to the names used in the Ensembl BioMart and must
|
66
|
+
be *followed to the letter including case*. The gene `Entity` is prepared to handle all the
|
67
|
+
necessary translations between identifiers across different resources
|
68
|
+
transparently. But the user *must* be aware of this fact or may run into
|
69
|
+
trouble.
|
70
|
+
|
71
|
+
|
72
|
+
%h2 Subsystems
|
73
|
+
%ul
|
74
|
+
%li
|
33
75
|
%a(href='/help/entity' class="help") Entity subsystem
|
76
|
+
|
77
|
+
%li
|
34
78
|
%a(href='/help/workflow' class="help") Workflow subsystem
|