From 204a308be0f741726b9a620d88fbc22b22124c81 Mon Sep 17 00:00:00 2001 From: Arun Isaac Date: Fri, 29 Dec 2023 18:55:37 +0000 Subject: Namespace all modules under gn2. We move all modules under a gn2 directory. This is important for "correct" packaging and deployment as a Guix service. --- .../templates/admin/change_resource_owner.html | 114 ++++ gn2/wqflask/templates/admin/create_group.html | 84 +++ gn2/wqflask/templates/admin/group_manager.html | 147 +++++ gn2/wqflask/templates/admin/ind_user_manager.html | 111 ++++ gn2/wqflask/templates/admin/manage_resource.html | 124 ++++ gn2/wqflask/templates/admin/manage_user.html | 79 +++ gn2/wqflask/templates/admin/search_for_groups.html | 134 ++++ .../templates/admin/set_group_privileges.html | 102 +++ gn2/wqflask/templates/admin/user_manager.html | 41 ++ gn2/wqflask/templates/admin/view_group.html | 270 ++++++++ gn2/wqflask/templates/authorisation_error.html | 19 + gn2/wqflask/templates/base.html | 397 ++++++++++++ gn2/wqflask/templates/base_macro.html | 28 + gn2/wqflask/templates/blogs.html | 12 + gn2/wqflask/templates/blogs_list.html | 52 ++ gn2/wqflask/templates/bnw_page.html | 7 + gn2/wqflask/templates/case_attributes.html | 415 ++++++++++++ gn2/wqflask/templates/collections/add.html | 86 +++ .../templates/collections/add_anonymous.html | 21 + gn2/wqflask/templates/collections/list.html | 189 ++++++ .../templates/collections/not_logged_in.html | 23 + gn2/wqflask/templates/collections/remove.html | 48 ++ gn2/wqflask/templates/collections/view.html | 483 ++++++++++++++ .../templates/collections/view_anonymous.html | 143 +++++ gn2/wqflask/templates/comparison_bar_chart.html | 38 ++ gn2/wqflask/templates/corr_scatterplot.html | 364 +++++++++++ gn2/wqflask/templates/correlation_error_page.html | 23 + gn2/wqflask/templates/correlation_matrix.html | 203 ++++++ gn2/wqflask/templates/correlation_page.html | 550 ++++++++++++++++ gn2/wqflask/templates/credits.html | 58 ++ gn2/wqflask/templates/ctl_results.html | 77 +++ gn2/wqflask/templates/ctl_setup.html | 70 +++ gn2/wqflask/templates/data_sharing.html | 262 ++++++++ gn2/wqflask/templates/dataset.html | 107 ++++ gn2/wqflask/templates/display_diffs.html | 95 +++ gn2/wqflask/templates/display_files.html | 131 ++++ gn2/wqflask/templates/docedit.html | 31 + gn2/wqflask/templates/docs.html | 17 + gn2/wqflask/templates/edit_case_attributes.html | 104 +++ gn2/wqflask/templates/edit_history.html | 56 ++ gn2/wqflask/templates/edit_phenotype.html | 279 ++++++++ gn2/wqflask/templates/edit_probeset.html | 282 +++++++++ gn2/wqflask/templates/email/forgot_password.txt | 5 + gn2/wqflask/templates/empty_collection.html | 15 + gn2/wqflask/templates/environment.html | 160 +++++ gn2/wqflask/templates/error.html | 61 ++ gn2/wqflask/templates/facilities.html | 24 + gn2/wqflask/templates/generif.html | 101 +++ gn2/wqflask/templates/geneweaver_page.html | 35 ++ gn2/wqflask/templates/genotype.html | 87 +++ gn2/wqflask/templates/glossary.html | 23 + gn2/wqflask/templates/gn3_ctl_results.html | 101 +++ gn2/wqflask/templates/gn3_wgcna_results.html | 192 ++++++ gn2/wqflask/templates/gnqa.html | 68 ++ gn2/wqflask/templates/gnqa_answer.html | 158 +++++ gn2/wqflask/templates/gsearch_gene.html | 267 ++++++++ gn2/wqflask/templates/gsearch_pheno.html | 238 +++++++ gn2/wqflask/templates/heatmap.html | 44 ++ gn2/wqflask/templates/index_page.html | 397 ++++++++++++ gn2/wqflask/templates/info_page.html | 92 +++ gn2/wqflask/templates/jobs/debug.html | 42 ++ gn2/wqflask/templates/jobs/no-such-job.html | 13 + gn2/wqflask/templates/jupyter_notebooks.html | 28 + gn2/wqflask/templates/links.html | 24 + .../templates/list_case_attribute_diffs.html | 59 ++ .../templates/list_case_attribute_diffs_error.html | 37 ++ gn2/wqflask/templates/loading.html | 133 ++++ gn2/wqflask/templates/loading_corrs.html | 28 + gn2/wqflask/templates/mapping_error.html | 36 ++ gn2/wqflask/templates/mapping_results.html | 698 +++++++++++++++++++++ gn2/wqflask/templates/marker_regression.html | 119 ++++ gn2/wqflask/templates/metadata/dataset.html | 157 +++++ gn2/wqflask/templates/network_graph.html | 152 +++++ .../templates/new_security/forgot_password.html | 52 ++ .../new_security/forgot_password_step2.html | 25 + gn2/wqflask/templates/new_security/login_user.html | 119 ++++ .../templates/new_security/not_authenticated.html | 11 + .../templates/new_security/password_reset.html | 78 +++ .../templates/new_security/register_user.html | 105 ++++ gn2/wqflask/templates/new_security/registered.html | 24 + gn2/wqflask/templates/new_security/thank_you.html | 23 + .../new_security/verification_still_needed.html | 26 + gn2/wqflask/templates/news.html | 24 + gn2/wqflask/templates/oauth2/create-resource.html | 89 +++ gn2/wqflask/templates/oauth2/create-role.html | 46 ++ .../templates/oauth2/data-list-genotype.html | 166 +++++ gn2/wqflask/templates/oauth2/data-list-mrna.html | 168 +++++ .../templates/oauth2/data-list-phenotype.html | 209 ++++++ gn2/wqflask/templates/oauth2/data-list.html | 53 ++ gn2/wqflask/templates/oauth2/display_error.html | 10 + gn2/wqflask/templates/oauth2/group.html | 114 ++++ .../templates/oauth2/group_join_or_create.html | 99 +++ gn2/wqflask/templates/oauth2/join-requests.html | 73 +++ gn2/wqflask/templates/oauth2/list_roles.html | 80 +++ gn2/wqflask/templates/oauth2/login.html | 47 ++ gn2/wqflask/templates/oauth2/masquerade.html | 39 ++ gn2/wqflask/templates/oauth2/profile_nav.html | 64 ++ gn2/wqflask/templates/oauth2/register_user.html | 62 ++ gn2/wqflask/templates/oauth2/request_error.html | 32 + gn2/wqflask/templates/oauth2/resources.html | 58 ++ gn2/wqflask/templates/oauth2/role.html | 56 ++ gn2/wqflask/templates/oauth2/view-group-role.html | 102 +++ gn2/wqflask/templates/oauth2/view-resource.html | 352 +++++++++++ gn2/wqflask/templates/oauth2/view-user.html | 48 ++ gn2/wqflask/templates/pair_scan_results.html | 114 ++++ .../partial_correlations/pcorrs_error.html | 65 ++ .../partial_correlations/pcorrs_poll_results.html | 19 + .../pcorrs_results_presentation.html | 261 ++++++++ .../pcorrs_results_with_target_traits.html | 115 ++++ .../pcorrs_select_operations.html | 167 +++++ gn2/wqflask/templates/pca_scree_plot.html | 85 +++ gn2/wqflask/templates/phenotype.html | 136 ++++ gn2/wqflask/templates/policies.html | 23 + gn2/wqflask/templates/publication.html | 62 ++ gn2/wqflask/templates/references.html | 19 + gn2/wqflask/templates/search_autocomplete.html | 249 ++++++++ gn2/wqflask/templates/search_error.html | 20 + gn2/wqflask/templates/search_history.html | 297 +++++++++ gn2/wqflask/templates/search_result_page.html | 453 +++++++++++++ gn2/wqflask/templates/set_group_privileges.html | 77 +++ gn2/wqflask/templates/show_image.html | 5 + gn2/wqflask/templates/show_trait.html | 276 ++++++++ .../show_trait_calculate_correlations.html | 165 +++++ gn2/wqflask/templates/show_trait_details.html | 255 ++++++++ gn2/wqflask/templates/show_trait_edit_data.html | 75 +++ gn2/wqflask/templates/show_trait_error.html | 20 + .../templates/show_trait_mapping_tools.html | 436 +++++++++++++ gn2/wqflask/templates/show_trait_progress_bar.html | 35 ++ gn2/wqflask/templates/show_trait_statistics.html | 106 ++++ .../templates/show_trait_transform_and_filter.html | 140 +++++ gn2/wqflask/templates/snp_browser.html | 582 +++++++++++++++++ gn2/wqflask/templates/startup_errors.html | 20 + gn2/wqflask/templates/submit_trait.html | 111 ++++ gn2/wqflask/templates/test_correlation_page.html | 159 +++++ gn2/wqflask/templates/tool_buttons.html | 38 ++ gn2/wqflask/templates/tutorials.html | 256 ++++++++ .../templates/view_case_attribute_diff.html | 117 ++++ .../templates/view_case_attribute_diff_error.html | 35 ++ gn2/wqflask/templates/webgestalt_page.html | 35 ++ gn2/wqflask/templates/wgcna_results.html | 76 +++ gn2/wqflask/templates/wgcna_setup.html | 142 +++++ gn2/wqflask/templates/with-trait-items.html | 18 + 142 files changed, 17188 insertions(+) create mode 100644 gn2/wqflask/templates/admin/change_resource_owner.html create mode 100644 gn2/wqflask/templates/admin/create_group.html create mode 100644 gn2/wqflask/templates/admin/group_manager.html create mode 100644 gn2/wqflask/templates/admin/ind_user_manager.html create mode 100644 gn2/wqflask/templates/admin/manage_resource.html create mode 100644 gn2/wqflask/templates/admin/manage_user.html create mode 100644 gn2/wqflask/templates/admin/search_for_groups.html create mode 100644 gn2/wqflask/templates/admin/set_group_privileges.html create mode 100644 gn2/wqflask/templates/admin/user_manager.html create mode 100644 gn2/wqflask/templates/admin/view_group.html create mode 100644 gn2/wqflask/templates/authorisation_error.html create mode 100644 gn2/wqflask/templates/base.html create mode 100644 gn2/wqflask/templates/base_macro.html create mode 100644 gn2/wqflask/templates/blogs.html create mode 100644 gn2/wqflask/templates/blogs_list.html create mode 100644 gn2/wqflask/templates/bnw_page.html create mode 100644 gn2/wqflask/templates/case_attributes.html create mode 100644 gn2/wqflask/templates/collections/add.html create mode 100644 gn2/wqflask/templates/collections/add_anonymous.html create mode 100644 gn2/wqflask/templates/collections/list.html create mode 100644 gn2/wqflask/templates/collections/not_logged_in.html create mode 100644 gn2/wqflask/templates/collections/remove.html create mode 100644 gn2/wqflask/templates/collections/view.html create mode 100644 gn2/wqflask/templates/collections/view_anonymous.html create mode 100644 gn2/wqflask/templates/comparison_bar_chart.html create mode 100644 gn2/wqflask/templates/corr_scatterplot.html create mode 100644 gn2/wqflask/templates/correlation_error_page.html create mode 100644 gn2/wqflask/templates/correlation_matrix.html create mode 100644 gn2/wqflask/templates/correlation_page.html create mode 100644 gn2/wqflask/templates/credits.html create mode 100644 gn2/wqflask/templates/ctl_results.html create mode 100644 gn2/wqflask/templates/ctl_setup.html create mode 100644 gn2/wqflask/templates/data_sharing.html create mode 100644 gn2/wqflask/templates/dataset.html create mode 100644 gn2/wqflask/templates/display_diffs.html create mode 100644 gn2/wqflask/templates/display_files.html create mode 100644 gn2/wqflask/templates/docedit.html create mode 100644 gn2/wqflask/templates/docs.html create mode 100644 gn2/wqflask/templates/edit_case_attributes.html create mode 100644 gn2/wqflask/templates/edit_history.html create mode 100644 gn2/wqflask/templates/edit_phenotype.html create mode 100644 gn2/wqflask/templates/edit_probeset.html create mode 100644 gn2/wqflask/templates/email/forgot_password.txt create mode 100644 gn2/wqflask/templates/empty_collection.html create mode 100644 gn2/wqflask/templates/environment.html create mode 100644 gn2/wqflask/templates/error.html create mode 100644 gn2/wqflask/templates/facilities.html create mode 100644 gn2/wqflask/templates/generif.html create mode 100644 gn2/wqflask/templates/geneweaver_page.html create mode 100644 gn2/wqflask/templates/genotype.html create mode 100644 gn2/wqflask/templates/glossary.html create mode 100644 gn2/wqflask/templates/gn3_ctl_results.html create mode 100644 gn2/wqflask/templates/gn3_wgcna_results.html create mode 100644 gn2/wqflask/templates/gnqa.html create mode 100644 gn2/wqflask/templates/gnqa_answer.html create mode 100644 gn2/wqflask/templates/gsearch_gene.html create mode 100644 gn2/wqflask/templates/gsearch_pheno.html create mode 100644 gn2/wqflask/templates/heatmap.html create mode 100755 gn2/wqflask/templates/index_page.html create mode 100644 gn2/wqflask/templates/info_page.html create mode 100644 gn2/wqflask/templates/jobs/debug.html create mode 100644 gn2/wqflask/templates/jobs/no-such-job.html create mode 100644 gn2/wqflask/templates/jupyter_notebooks.html create mode 100644 gn2/wqflask/templates/links.html create mode 100644 gn2/wqflask/templates/list_case_attribute_diffs.html create mode 100644 gn2/wqflask/templates/list_case_attribute_diffs_error.html create mode 100644 gn2/wqflask/templates/loading.html create mode 100644 gn2/wqflask/templates/loading_corrs.html create mode 100644 gn2/wqflask/templates/mapping_error.html create mode 100644 gn2/wqflask/templates/mapping_results.html create mode 100644 gn2/wqflask/templates/marker_regression.html create mode 100644 gn2/wqflask/templates/metadata/dataset.html create mode 100644 gn2/wqflask/templates/network_graph.html create mode 100644 gn2/wqflask/templates/new_security/forgot_password.html create mode 100644 gn2/wqflask/templates/new_security/forgot_password_step2.html create mode 100644 gn2/wqflask/templates/new_security/login_user.html create mode 100644 gn2/wqflask/templates/new_security/not_authenticated.html create mode 100644 gn2/wqflask/templates/new_security/password_reset.html create mode 100644 gn2/wqflask/templates/new_security/register_user.html create mode 100644 gn2/wqflask/templates/new_security/registered.html create mode 100644 gn2/wqflask/templates/new_security/thank_you.html create mode 100644 gn2/wqflask/templates/new_security/verification_still_needed.html create mode 100644 gn2/wqflask/templates/news.html create mode 100644 gn2/wqflask/templates/oauth2/create-resource.html create mode 100644 gn2/wqflask/templates/oauth2/create-role.html create mode 100644 gn2/wqflask/templates/oauth2/data-list-genotype.html create mode 100644 gn2/wqflask/templates/oauth2/data-list-mrna.html create mode 100644 gn2/wqflask/templates/oauth2/data-list-phenotype.html create mode 100644 gn2/wqflask/templates/oauth2/data-list.html create mode 100644 gn2/wqflask/templates/oauth2/display_error.html create mode 100644 gn2/wqflask/templates/oauth2/group.html create mode 100644 gn2/wqflask/templates/oauth2/group_join_or_create.html create mode 100644 gn2/wqflask/templates/oauth2/join-requests.html create mode 100644 gn2/wqflask/templates/oauth2/list_roles.html create mode 100644 gn2/wqflask/templates/oauth2/login.html create mode 100644 gn2/wqflask/templates/oauth2/masquerade.html create mode 100644 gn2/wqflask/templates/oauth2/profile_nav.html create mode 100644 gn2/wqflask/templates/oauth2/register_user.html create mode 100644 gn2/wqflask/templates/oauth2/request_error.html create mode 100644 gn2/wqflask/templates/oauth2/resources.html create mode 100644 gn2/wqflask/templates/oauth2/role.html create mode 100644 gn2/wqflask/templates/oauth2/view-group-role.html create mode 100644 gn2/wqflask/templates/oauth2/view-resource.html create mode 100644 gn2/wqflask/templates/oauth2/view-user.html create mode 100644 gn2/wqflask/templates/pair_scan_results.html create mode 100644 gn2/wqflask/templates/partial_correlations/pcorrs_error.html create mode 100644 gn2/wqflask/templates/partial_correlations/pcorrs_poll_results.html create mode 100644 gn2/wqflask/templates/partial_correlations/pcorrs_results_presentation.html create mode 100644 gn2/wqflask/templates/partial_correlations/pcorrs_results_with_target_traits.html create mode 100644 gn2/wqflask/templates/partial_correlations/pcorrs_select_operations.html create mode 100644 gn2/wqflask/templates/pca_scree_plot.html create mode 100644 gn2/wqflask/templates/phenotype.html create mode 100644 gn2/wqflask/templates/policies.html create mode 100644 gn2/wqflask/templates/publication.html create mode 100644 gn2/wqflask/templates/references.html create mode 100644 gn2/wqflask/templates/search_autocomplete.html create mode 100644 gn2/wqflask/templates/search_error.html create mode 100644 gn2/wqflask/templates/search_history.html create mode 100644 gn2/wqflask/templates/search_result_page.html create mode 100644 gn2/wqflask/templates/set_group_privileges.html create mode 100644 gn2/wqflask/templates/show_image.html create mode 100644 gn2/wqflask/templates/show_trait.html create mode 100644 gn2/wqflask/templates/show_trait_calculate_correlations.html create mode 100644 gn2/wqflask/templates/show_trait_details.html create mode 100644 gn2/wqflask/templates/show_trait_edit_data.html create mode 100644 gn2/wqflask/templates/show_trait_error.html create mode 100755 gn2/wqflask/templates/show_trait_mapping_tools.html create mode 100644 gn2/wqflask/templates/show_trait_progress_bar.html create mode 100644 gn2/wqflask/templates/show_trait_statistics.html create mode 100644 gn2/wqflask/templates/show_trait_transform_and_filter.html create mode 100644 gn2/wqflask/templates/snp_browser.html create mode 100644 gn2/wqflask/templates/startup_errors.html create mode 100644 gn2/wqflask/templates/submit_trait.html create mode 100644 gn2/wqflask/templates/test_correlation_page.html create mode 100644 gn2/wqflask/templates/tool_buttons.html create mode 100644 gn2/wqflask/templates/tutorials.html create mode 100644 gn2/wqflask/templates/view_case_attribute_diff.html create mode 100644 gn2/wqflask/templates/view_case_attribute_diff_error.html create mode 100644 gn2/wqflask/templates/webgestalt_page.html create mode 100644 gn2/wqflask/templates/wgcna_results.html create mode 100644 gn2/wqflask/templates/wgcna_setup.html create mode 100644 gn2/wqflask/templates/with-trait-items.html (limited to 'gn2/wqflask/templates') diff --git a/gn2/wqflask/templates/admin/change_resource_owner.html b/gn2/wqflask/templates/admin/change_resource_owner.html new file mode 100644 index 00000000..7fd84387 --- /dev/null +++ b/gn2/wqflask/templates/admin/change_resource_owner.html @@ -0,0 +1,114 @@ +{% extends "base.html" %} +{% block title %}Resource Manager{% endblock %} +{% block css %} + + +{% endblock %} +{% block content %} + +
+ +
+
+
+
+
+

Search for user by either name or e-mail:

+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ + +
+
+
+
+
+
+
+
+
+
+ + + +{% endblock %} + +{% block js %} + + + +{% endblock %} diff --git a/gn2/wqflask/templates/admin/create_group.html b/gn2/wqflask/templates/admin/create_group.html new file mode 100644 index 00000000..b1d214ea --- /dev/null +++ b/gn2/wqflask/templates/admin/create_group.html @@ -0,0 +1,84 @@ +{% extends "base.html" %} +{% block title %}Group Manager{% endblock %} +{% block content %} + +
+ +
+ + +
+
+
+ +
+
+ +
+
+
+
+ +
+
+ +
+
+
+
+ +
+
+ +
+
+ +
+
+
+
+ +
+
+ +
+
+ +
+
+
+
+ +
+
+ +
+
+ +
+
+
+
+ +
+
+ +
+
+
+
+
+
+
+ + +{% endblock %} + +{% block js %} + + + +{% endblock %} diff --git a/gn2/wqflask/templates/admin/group_manager.html b/gn2/wqflask/templates/admin/group_manager.html new file mode 100644 index 00000000..eedfe138 --- /dev/null +++ b/gn2/wqflask/templates/admin/group_manager.html @@ -0,0 +1,147 @@ +{% extends "base.html" %} +{% block title %}Group Manager{% endblock %} +{% block css %} + + + +{% endblock %} +{% block content %} + +
+ +
+ +
+ {% if admin_groups|length == 0 and member_groups|length == 0 %} +

You currently aren't a member or admin of any groups.

+
+ + + + {% else %} +

Admin Groups

+
+ {% if admin_groups|length == 0 %} +

You currently aren't the administrator of any groups.

+ {% else %} + + + + + + + + + + + + + + {% for group in admin_groups %} + + + + {% set group_url = url_for('group_management.view_group', group_id=group.uuid) %} + + + + + + + {% endfor %} + +
IndexName# MembersCreatedLast ChangedGroup ID
{{ loop.index }}{{ group.name }}{{ group.admins|length + group.members|length }}{{ group.created_timestamp }}{{ group.changed_timestamp }}{{ group.uuid }}
+ {% endif %} +
+
+
+

User Groups

+
+ {% if member_groups|length == 0 %} +

You currently aren't a member of any groups.

+ {% else %} + + + + + + + + + + + + + {% for group in member_groups %} + + + + {% set group_url = url_for('group_management.view_group', group_id=group.uuid) %} + + + + + + {% endfor %} + +
IndexName# MembersCreatedLast Changed
{{ loop.index }}{{ group.name }}{{ group.admins|length + group.members|length }}{{ group.created_timestamp }}{{ group.changed_timestamp }}
+ {% endif %} + {% endif %} +
+
+
+ + + +{% endblock %} + +{% block js %} + + + +{% endblock %} diff --git a/gn2/wqflask/templates/admin/ind_user_manager.html b/gn2/wqflask/templates/admin/ind_user_manager.html new file mode 100644 index 00000000..b821e5d5 --- /dev/null +++ b/gn2/wqflask/templates/admin/ind_user_manager.html @@ -0,0 +1,111 @@ +{% extends "base.html" %} +{% block title %}User Manager{% endblock %} +{% block content %} + + +
+ + + {{ flash_me() }} + + + + + + + + + + + + + + + + + + + {% if user.confirmed_at %} + + {% else %} + + {% endif %} + + + + + + {% if user.superuser %} + + {% else %} + + {% endif %} + + + + + + {% if user.most_recent_login %} + + {% else %} + + {% endif %} + + + + + + + + +
Name{{ user.full_name }}
Organization{{ user.organization }}
Confirmed{{ timeago(user.confirmed_at + "Z") }}Unconfirmed
SuperuserMade a superuser {{ timeago(user.superuser_info['timestamp'] + "Z") }} by + {{ user.crowner.name_and_org }}. + + + + Make Superuser + + +
Most recent login{{ timeago(user.most_recent_login.timestamp.isoformat() + "Z") }} from {{ user.most_recent_login.ip_address }}Never
+ + Become this user for debugging + +
+ + +
+ + + +{% endblock %} + +{% block js %} + + + + +{% endblock %} diff --git a/gn2/wqflask/templates/admin/manage_resource.html b/gn2/wqflask/templates/admin/manage_resource.html new file mode 100644 index 00000000..63ec17c0 --- /dev/null +++ b/gn2/wqflask/templates/admin/manage_resource.html @@ -0,0 +1,124 @@ +{% extends "base.html" %} +{% block title %}Resource Manager{% endblock %} +{% block content %} + +
+
+ {{ flash_me() }} + {% set DATA_ACCESS = access_role.get('data') %} + {% set METADATA_ACCESS = access_role.get('metadata') %} + {% set ADMIN_STATUS = access_role.get('admin') %} + {% set ADMIN_STATUS = access_role.get('admin') %} +

Resource Manager

+ {% if resource_info.get('owner_id') %} + {% set user_details = resource_info.get('owner_details') %} +

+ Current Owner: {{ user_details.get('full_name') }} +

+ {% if user_details.get('organization') %} +

+ Organization: {{ user_details.get('organization')}} +

+ {% endif %} + {% endif %} + {% if DATA_ACCESS > DataRole.VIEW and ADMIN_STATUS > AdminRole.NOT_ADMIN %} + + Change Owner + + {% endif %} +
+ +
+
+ +
+
+
+
+ +
+ {{ resource_info.get('name') }} +
+
+ {% if DATA_ACCESS > DataRole.VIEW and ADMIN_STATUS > AdminRole.NOT_ADMIN %} + {% set is_open_to_public = DataRole(resource_info.get('default_mask').get('data')) > DataRole.NO_ACCESS %} +
+ +
+ + +
+
+
+ +
+ +
+
+ {% endif %} +
+
+
+ {% if ADMIN_STATUS > AdminRole.NOT_ADMIN %} +
+
+ +
+ {% if resource_info.get('group_masks', [])|length > 0 %} +

Current Group Permissions

+
+ + + + + + + + + + + {% for key, value in resource_info.get('group_masks').items() %} + + + + + + + {% endfor %} + +
IdNameDataMetadata
{{ key }}{{ value.group_name}}{{ value.data }}{{ value.metadata }}
+ {% else %} +

No groups are currently added to this resource.

+ {% endif %} +
+ {% endif %} +
+
+ + + + {% endblock %} + {% block js %} + + + + {% endblock %} diff --git a/gn2/wqflask/templates/admin/manage_user.html b/gn2/wqflask/templates/admin/manage_user.html new file mode 100644 index 00000000..3ef90b90 --- /dev/null +++ b/gn2/wqflask/templates/admin/manage_user.html @@ -0,0 +1,79 @@ +{% extends "base.html" %} +{% block title %}View and Edit Group{% endblock %} +{% block css %} + + + +{% endblock %} +{% block content %} + +
+ {% if 'full_name' in user_details %} + + {% endif %} +
+
+
+
+
+ +
+ {% if 'email_address' in user_details %}{{ user_details.email_address }}{% else %}N/A{% endif %} +
+
+
+ +
+ {% if 'full_name' in user_details %}{{ user_details.full_name }}{% else %}N/A{% endif %} + +
+
+
+ +
+ {% if 'organization' in user_details %}{{ user_details.organization }}{% else %}N/A{% endif %} + +
+
+
+ +
+ + +
+
+
+
+
+
+
+ + + +{% endblock %} + +{% block js %} + + + +{% endblock %} diff --git a/gn2/wqflask/templates/admin/search_for_groups.html b/gn2/wqflask/templates/admin/search_for_groups.html new file mode 100644 index 00000000..0e1ec720 --- /dev/null +++ b/gn2/wqflask/templates/admin/search_for_groups.html @@ -0,0 +1,134 @@ +{% extends "base.html" %} +{% block title %}Resource Manager{% endblock %} +{% block css %} + + +{% endblock %} +{% block content %} + +
+ +
+ +
+
+
+
+

Search by:

+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ + +
+
+
+
+
+
+
+
+
+
+ + + +{% endblock %} + +{% block js %} + + + + + +{% endblock %} diff --git a/gn2/wqflask/templates/admin/set_group_privileges.html b/gn2/wqflask/templates/admin/set_group_privileges.html new file mode 100644 index 00000000..04842453 --- /dev/null +++ b/gn2/wqflask/templates/admin/set_group_privileges.html @@ -0,0 +1,102 @@ +{% extends "base.html" %} +{% block title %}Set Group Privileges{% endblock %} +{% block css %} + + + +{% endblock %} +{% block content %} + +
+

Group Privileges

+
+
+ + +
+ +
+

Data and Metadata Privileges

+ + + + + + + + + + + + + {% if 'data' in default_privileges %} + + + + {% else %} + + + + {% endif %} + + + + {% if 'metadata' in default_privileges %} + + + + {% else %} + + + + {% endif %} + + +
No-AccessViewEdit
Data:
Metadata:
+
+

Admin Privileges

+ + + + + + + + + + + + + {% if 'admin' in default_privileges %} + + + + {% else %} + + + + {% endif %} + + +
Not AdminEdit AccessEdit Admins
Admin:
+
+
+
+ + + +{% endblock %} + +{% block js %} + + +{% endblock %} diff --git a/gn2/wqflask/templates/admin/user_manager.html b/gn2/wqflask/templates/admin/user_manager.html new file mode 100644 index 00000000..2b6c1b2b --- /dev/null +++ b/gn2/wqflask/templates/admin/user_manager.html @@ -0,0 +1,41 @@ +{% extends "base.html" %} +{% block title %}User Manager{% endblock %} +{% block content %} + + {{ header("List of users", "" )}} + + +
+ + + + + + + + + + + + + {% for user in users %} + + + + + + + + {% endfor %} +
EmailOrganizationActiveConfirmedSuperuser
+ {{ user.email_address }} + {{ user.organization }}{{ 'Yes' if user.active else 'No' }}{{ 'True' if user.confirmed else 'False' }}{{ 'True' if user.superuser else 'False' }}
+ + +
+ + + +{% endblock %} diff --git a/gn2/wqflask/templates/admin/view_group.html b/gn2/wqflask/templates/admin/view_group.html new file mode 100644 index 00000000..c88ce0e7 --- /dev/null +++ b/gn2/wqflask/templates/admin/view_group.html @@ -0,0 +1,270 @@ +{% extends "base.html" %} +{% block title %}View and Edit Group{% endblock %} +{% block css %} + + + +{% endblock %} +{% block content %} + +{% set GROUP_URL = url_for('group_management.view_group', group_id=group_info.guid) %} +{% set UPDATE_GROUP_URL = url_for('group_management.update_group', group_id=group_info.guid) %} +
+ +
+ + + +
+
+
+

Admins

+
+ + + + + + + + + {% if is_admin %} + + {% endif %} + + + + {% for admin in admins %} + + + + + + + {% if is_admin %} + + {% endif %} + + {% endfor %} + +
IndexNameEmail AddressOrganizationUID
{{ loop.index }}{% if 'full_name' in admin %}{{ admin.full_name }}{% elif 'name' in admin %}{{ admin.name }}{% else %}N/A{% endif %}{% if 'email_address' in admin %}{{ admin.email_address }}{% else %}N/A{% endif %}{% if 'organization' in admin %}{{ admin.organization }}{% else %}N/A{% endif %}{{admin.user_id}}
+ {% if is_admin %} +
+ E-mail of user to add to admins (multiple e-mails can be added separated by commas): + +
+
+ +
+ {% endif %} +
+
+
+ {% if members|length > 0 %} +

Members

+
+ + + + + + + + + {% if is_admin %} + + {% endif %} + + + + {% for member in members %} + + + + + + + + {% if is_admin %} + + {% endif %} + + + {% endfor %} + +
IndexNameEmail AddressOrganizationUID
+ {% if is_admin %} + + {% endif %} + {{ loop.index }}{% if 'full_name' in member %}{{ member.full_name }}{% elif 'name' in admin %}{{ admin.name }}{% else %}N/A{% endif %}{% if 'email_address' in member %}{{ member.email_address }}{% else %}N/A{% endif %}{% if 'organization' in member %}{{ member.organization }}{% else %}N/A{% endif %}{{ member }}
+ {% if is_admin %} +
+ E-mail of user to add to members (multiple e-mails can be added separated by commas): + +
+
+ +
+ {% endif %} + {% else %} + There are currently no members in this group. + {% if is_admin %} +
+ E-mail of user to add to members (multiple e-mails can be added separated by commas): + +
+
+ +
+ {% endif %} + {% endif %} +
+
+
+

Resources

+
+ {% if resources|length > 0 %} + + + + + + + + + + + + {% for resource in resources %} + + + + + + + + {% endfor %} + +
IndexNameDataMetadataAdmin
{{ loop.index }}{% if 'name' in resource %}{{ resource.name }}{% else %}N/A{% endif %}{% if 'data' in resource %}{{ resource.data }}{% else %}N/A{% endif %}{% if 'metadata' in resource %}{{ resource.metadata }}{% else %}N/A{% endif %}{% if 'admin' in resource %}{{ resource.admin }}{% else %}N/A{% endif %}
+ {% else %} + There are currently no resources associated with this group. + {% endif %} +
+
+
+
+ + + +{% endblock %} + +{% block js %} + + + +{% endblock %} diff --git a/gn2/wqflask/templates/authorisation_error.html b/gn2/wqflask/templates/authorisation_error.html new file mode 100644 index 00000000..3dce8b52 --- /dev/null +++ b/gn2/wqflask/templates/authorisation_error.html @@ -0,0 +1,19 @@ +{%extends "base.html"%} +{%block title%}{{error_type}}: ...{%endblock%} +{%block content%} +
+ +

+ + {{error_type}}:  + {{error.description}} +

+

+ Please contact the data's owner or GN administrators if you believe you + should have access to these data. +

+
+ +{%endblock%} diff --git a/gn2/wqflask/templates/base.html b/gn2/wqflask/templates/base.html new file mode 100644 index 00000000..e0fc9e63 --- /dev/null +++ b/gn2/wqflask/templates/base.html @@ -0,0 +1,397 @@ +{% from "base_macro.html" import header, flash_me, timeago %} + + + + + + {% block title %}{% endblock %} GeneNetwork 2 + + + + + + + + + + + + + + + + {% block css %} + {% endblock %} + + + + + + +
+ +
+
+
+ +
+ + + +
+ + + + + + + GNQNA Search + + + + + + + + + +
+
+
+ +
+ {% block content %} + {% endblock %} + + + + + + + + + + + + + + {% block js %} + {% endblock %} + + + + diff --git a/gn2/wqflask/templates/base_macro.html b/gn2/wqflask/templates/base_macro.html new file mode 100644 index 00000000..7fcb6fe7 --- /dev/null +++ b/gn2/wqflask/templates/base_macro.html @@ -0,0 +1,28 @@ +{% macro flash_me() -%} + {% with messages = get_flashed_messages(with_categories=true) %} + {% if messages %} +
+ {% for category, message in messages %} + + {% endfor %} +
+ {% endif %} + {% endwith %} +{% endmacro %} + +{% macro header(main, second) %} +
+
+

{{ main }}

+

+ {{ second }} +

+
+
+ + {{ flash_me() }} +{% endmacro %} + +{% macro timeago(timestamp) %} + +{% endmacro %} diff --git a/gn2/wqflask/templates/blogs.html b/gn2/wqflask/templates/blogs.html new file mode 100644 index 00000000..314eb733 --- /dev/null +++ b/gn2/wqflask/templates/blogs.html @@ -0,0 +1,12 @@ +{% extends "base.html" %} +{% block title %}Blogs {% endblock %} +{% block css %} + +{% endblock %} +{% block content %} +
+
+
+ {{ rendered_markdown|safe }} +
+{% endblock %} \ No newline at end of file diff --git a/gn2/wqflask/templates/blogs_list.html b/gn2/wqflask/templates/blogs_list.html new file mode 100644 index 00000000..6bad4628 --- /dev/null +++ b/gn2/wqflask/templates/blogs_list.html @@ -0,0 +1,52 @@ +{% extends "base.html" %} +{% block title %}Blogs {% endblock %} +{% block css %} + + +{% endblock %} +{% block content %} +
+
+ {% for year, year_blogs in blogs.items() %} +
+

{{year}}

+
+ {%for blog in year_blogs%} +
+
+ +
+
+ {% endfor %} + {%endfor%} +
+
+{% endblock %} \ No newline at end of file diff --git a/gn2/wqflask/templates/bnw_page.html b/gn2/wqflask/templates/bnw_page.html new file mode 100644 index 00000000..317b4bd7 --- /dev/null +++ b/gn2/wqflask/templates/bnw_page.html @@ -0,0 +1,7 @@ +Opening BNW +
+ +
+ diff --git a/gn2/wqflask/templates/case_attributes.html b/gn2/wqflask/templates/case_attributes.html new file mode 100644 index 00000000..d1669761 --- /dev/null +++ b/gn2/wqflask/templates/case_attributes.html @@ -0,0 +1,415 @@ +{% extends "base.html" %} +{% block title %}Trait Submission{% endblock %} + +{% block css %} + + +{% endblock %} + +{% block content %} + +
+
+
+
+
+

Case Attributes Reference Table

+
+
+
+ + + + + + + + + + + + + {% for id_, name, description in case_attributes %} + + + + + + {% endfor %} + + + + + + +
Case AttributeDescriptionActions
{{ name }}{{ description }} + + + +
+ + {% if modifications or inserts or deletions %} +

Please Review These Changes

+ {% endif %} + {% if modifications %} +

Modify Existing Case Attributes

+ + + + + + + + {% for data in modifications %} + + + + + + {% endfor %} + +
AuthorDiffAction
{{ data.get('author') }} + {% if data.get("name")%} + Name:
+ Original: {{ data["name"].get("Original") }}
+ Current: {{ data["name"].get("Current") }}
+ Diff:
+
{{data["name"].get("Diff")}}
+ {% endif %} + {% if data.get("description")%} + Description:
+ Original: {{ data["description"].get("Original") }}
+ Current: {{ data["description"].get("Current") }}
+ Diff:
+
{{data["description"].get("Diff")}}
+ {% endif %} +
+ + +
+ {% endif %} + {% if deletions %} +

Delete Existing Case Attributes

+ + + + + + + + + + + + + + + {% for data in deletions %} + + + + + + + {% endfor %} + +
Case AttributeAuthorDescriptionAction
{{data.get("name")}}{{ data.get('author') }}{{data.get("description")}} + + +
+ {% endif %} + + {% if inserts %} +

Insert New Case Attributes

+ + + + + + + + + + + + + + + {% for data in inserts %} + + + + + + + {% endfor %} + +
Case AttributeAuthorDescriptionAction
{{ data.get("name") }}{{ data.get("author")}}{{ data.get("description") }} + + +
+ {% endif %} +
+ {%endblock%} + + {% block js %} + + + {% endblock %} diff --git a/gn2/wqflask/templates/collections/add.html b/gn2/wqflask/templates/collections/add.html new file mode 100644 index 00000000..478c80fb --- /dev/null +++ b/gn2/wqflask/templates/collections/add.html @@ -0,0 +1,86 @@ +
+ + +
+ + diff --git a/gn2/wqflask/templates/collections/add_anonymous.html b/gn2/wqflask/templates/collections/add_anonymous.html new file mode 100644 index 00000000..2eb7525f --- /dev/null +++ b/gn2/wqflask/templates/collections/add_anonymous.html @@ -0,0 +1,21 @@ +
+ + +
+ + diff --git a/gn2/wqflask/templates/collections/list.html b/gn2/wqflask/templates/collections/list.html new file mode 100644 index 00000000..c553717f --- /dev/null +++ b/gn2/wqflask/templates/collections/list.html @@ -0,0 +1,189 @@ +{% extends "base.html" %} +{%from "oauth2/display_error.html" import display_error%} +{% block title %}Your Collections{% endblock %} +{% block css %} + + + +{% endblock %} +{% block content %} + +
+ {{flash_me()}} + + {% if g.user_session.logged_in %} +

Collections owned by {% if g.user_session.user_name %}{{ g.user_session.user_name }}{% else %}{{ g.user_session.user_email }} {% endif %}

+ {% else %} +

Your Collections

+ {% endif %} + +
+ + + + + + +
+
+ +
+
+
+
+
+ {%if anon_collections_error is defined%} + {{display_error("Anonymous Collections", anon_collections_error)}} + {%endif%} + {%if anon_collections | length > 0%} + + + + + + + + + + + + + + + {% for uc in anon_collections %} + + + + + + + + {% endfor %} + +
Anonymous Collections
IndexNameCreatedLast Changed# Records
{{ loop.index }} + {{ uc.name }}{{ uc.created_timestamp }}{{ uc.changed_timestamp }}{{ uc.num_members }}
+ {%endif%} + {% if collections|length > 0 %} + {% if (anon_collections | length > 0) and (collections | length > 0) %} +
+ {%endif%} + + + + + + + + + + + + + + + {% for uc in collections %} + + + + + + + + {% endfor %} + +
User Collections
IndexNameCreatedLast Changed# Records
{{ loop.index }} + {{ uc.name }}{{ uc.created_timestamp }}{{ uc.changed_timestamp }}{{ uc.num_members }}
+ {% else %} + You have no collections yet. + {% endif %} +
+
+ + + +{% endblock %} + +{% block js %} + + + + + + + + + + +{% endblock %} diff --git a/gn2/wqflask/templates/collections/not_logged_in.html b/gn2/wqflask/templates/collections/not_logged_in.html new file mode 100644 index 00000000..49b0e07d --- /dev/null +++ b/gn2/wqflask/templates/collections/not_logged_in.html @@ -0,0 +1,23 @@ +{% extends "base.html" %} +{% block title %}Your Collections{% endblock %} +{% block content %} + + {{ header("Not logged in") }} + + +
+ +
+ + + +{% endblock %} + +{% block js %} + + +{% endblock %} diff --git a/gn2/wqflask/templates/collections/remove.html b/gn2/wqflask/templates/collections/remove.html new file mode 100644 index 00000000..faee4f78 --- /dev/null +++ b/gn2/wqflask/templates/collections/remove.html @@ -0,0 +1,48 @@ +
+ + +
+ + diff --git a/gn2/wqflask/templates/collections/view.html b/gn2/wqflask/templates/collections/view.html new file mode 100644 index 00000000..c850e163 --- /dev/null +++ b/gn2/wqflask/templates/collections/view.html @@ -0,0 +1,483 @@ +{% extends "base.html" %} +{% block title %}View Collection{% endblock %} +{% block css %} + + + + + +{% endblock %} +{% block content %} + + +
+ {{flash_me()}} +

+ {{ uc.name }} +
+ + +
+ + +

+

This collection has {{ '{}'.format(numify(trait_obs|count, "record", "records")) }}

+ +
+
+ + + + + + + {% include 'tool_buttons.html' %} + +
+
+
+
+ +
+ +
+   +
+ +
+
+
+
+
+ + + + + + + + + + + + + + +
+
+
+ Show/Hide Columns:   + + + + + + + + + + +
+
+ + + + +

Loading...
+
+
+
+
+ + + +{% endblock %} + +{% block js %} + + + + + + + + + + + + + + + + + + +{% endblock %} + diff --git a/gn2/wqflask/templates/collections/view_anonymous.html b/gn2/wqflask/templates/collections/view_anonymous.html new file mode 100644 index 00000000..56323e10 --- /dev/null +++ b/gn2/wqflask/templates/collections/view_anonymous.html @@ -0,0 +1,143 @@ +{% extends "base.html" %} +{% block title %}View Collection{% endblock %} +{% block content %} + + {% if uc %} + {{ header(uc.name, + 'This collection has {}.'.format(numify(trait_obs|count, "record", "records"))) }} + {% else %} + {{ header('Your Collection', + 'This collection has {}.'.format(numify(trait_obs|count, "record", "records"))) }} + {% endif %} +
+ + + + +
+ + + + + + + + + + + + + + + {% for this_trait in trait_obs %} + + + + + + + + + + + + {% endfor %} + + +
RecordDescriptionLocationMeanMax LRSMax LRS Location
+ + + + {{ this_trait.name }} + + {{ this_trait.description_display }}{{ this_trait.location_repr }}{{ this_trait.mean }}{{ this_trait.LRS_score_repr }}{{ this_trait.LRS_location_repr }}
+ +
+ + + + + + + +
+
+ + + +{% endblock %} + +{% block js %} + +{% endblock %} diff --git a/gn2/wqflask/templates/comparison_bar_chart.html b/gn2/wqflask/templates/comparison_bar_chart.html new file mode 100644 index 00000000..d77e0515 --- /dev/null +++ b/gn2/wqflask/templates/comparison_bar_chart.html @@ -0,0 +1,38 @@ +{% extends "base.html" %} +{% block title %}Comparison Bar Chart{% endblock %} +{% block css %} + + +{% endblock %} +{% block content %} +
+

Comparison Bar Chart

+
+
+

+ The following is a grouped bar chart with the sample values for each selected trait. +

+
+
+
+
+ +
+ + + +{% endblock %} + +{% block js %} + + + + + + + + + +{% endblock %} \ No newline at end of file diff --git a/gn2/wqflask/templates/corr_scatterplot.html b/gn2/wqflask/templates/corr_scatterplot.html new file mode 100644 index 00000000..554471be --- /dev/null +++ b/gn2/wqflask/templates/corr_scatterplot.html @@ -0,0 +1,364 @@ +{% extends "base.html" %} + +{% block css %} + + + + + + + +{% endblock %} + +{% block content %} + +
+ + + + + + + + + +

Correlation Scatterplot

+
+ + + + + + + +
Width px Height px
+
+ {% if collections_exist == "True" %} +
+
+ You can select up to three traits from a saved trait collection to use as cofactors in the scatterplots, with each trait corresponding to point color, size, or symbol. + For symbol, traits must have no more than 4 distinct values. +
+
+
+ + +
+ + +
+ +
+
+
+ + + + + + + + + + + {% else %} +
No collections currently exist. Please create a collection first if you wish to include cofactors in the scatterplots.
+
+ {% endif %} + + + +
+ +
+
+
+
+
+
+ {% if trait_1.dataset.type == "ProbeSet" %} + +
+ [{{trait_1.symbol}} on {{trait_1.location_repr}} Mb] + {{trait_1.description_display}} +
+ {% elif trait_1.dataset.type == "Publish" %} + +
+ PubMed: {{trait_1.pubmed_text}} + {{trait_1.description_display}} +
+ {% elif trait_1.dataset.type == "Geno" %} + +
+ Location: {{trait_1.location_repr}} Mb +
+ {% endif %} + +
+ + {% if trait_2.dataset.type == "ProbeSet" %} + +
+ [{{trait_2.symbol}} on {{trait_2.location_repr}} Mb] + {{trait_2.description_display}} +
+ {% elif trait_2.dataset.type == "Publish" %} + +
+ PubMed: {{trait_2.pubmed_text}} + {{trait_2.description_display}} +
+ {% elif trait_2.dataset.type == "Geno" %} + +
+ Location: {{trait_2.location_repr}} Mb +
+ {% endif %} +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
StatisticValue
Number{{jsdata.num_overlap}}
Slope{{ jsdata.slope_string }}
Intercept{{'%0.3f' % jsdata.intercept}}
r value{{'%0.3f' % jsdata.r_value}}
P value{% if jsdata.p_value < 0.001 %}{{'%0.3e' % jsdata.p_value}}{% else %}{{'%0.3f' % jsdata.p_value}}{% endif %}
+ Regression Line +
+ y = {{ jsdata.slope_string }} * x {% if jsdata.intercept < 0 %}- {{'%0.3f' % (jsdata.intercept * -1)}}{% else %}+ {{'%0.3f' % jsdata.intercept}}{% endif %} +
+
+
+
+ +
+
+
+
+
+
+ {% if trait_1.dataset.type == "ProbeSet" %} + +
+ [{{trait_1.symbol}} on {{trait_1.location_repr}} Mb] + {{trait_1.description_display}} +
+ {% elif trait_1.dataset.type == "Publish" %} + +
+ PubMed: {{trait_1.pubmed_text}} + {{trait_1.description_display}} +
+ {% endif %} + +
+ + {% if trait_2.dataset.type == "ProbeSet" %} + +
+ [{{trait_2.symbol}} on {{trait_2.location_repr}} Mb] + {{trait_2.description_display}} +
+ {% elif trait_2.dataset.type == "Publish" %} + +
+ PubMed: {{trait_2.pubmed_text}} + {{trait_2.description_display}} +
+ {% endif %} +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
StatisticValue
Number{{jsdata.num_overlap}}
Slope{{ jsdata.srslope_string }}
Intercept{{'%0.3f' % jsdata.srintercept}}
r value{{'%0.3f' % jsdata.srr_value}}
P value{% if jsdata.srp_value < 0.001 %}{{'%0.3e' % jsdata.srp_value}}{% else %}{{'%0.3f' % jsdata.srp_value}}{% endif %}
+ Regression Line +
+ y = {{ jsdata.srslope_string }} * x {% if jsdata.srintercept < 0 %}- {{'%0.3f' % (jsdata.srintercept * -1)}}{% else %}+ {{'%0.3f' % jsdata.srintercept}}{% endif %} +
+
+
+
+ +
+ +{% endblock %} + +{% block js %} + + + + + + + + + + + +{% endblock %} diff --git a/gn2/wqflask/templates/correlation_error_page.html b/gn2/wqflask/templates/correlation_error_page.html new file mode 100644 index 00000000..7d11daf0 --- /dev/null +++ b/gn2/wqflask/templates/correlation_error_page.html @@ -0,0 +1,23 @@ +{%extends "base.html"%} +{%block title%}Correlation Results{%endblock%} + +{%block css%} + + + + + + +{%endblock%} + +{%block content%} +
+

{{error["error-type"]}}

+

{{error["error-message"]}}

+

+ {%for line in error["stderr-output"]%} + {{line}}
+ {%endfor%} +

+
+{%endblock%} diff --git a/gn2/wqflask/templates/correlation_matrix.html b/gn2/wqflask/templates/correlation_matrix.html new file mode 100644 index 00000000..17fd66fa --- /dev/null +++ b/gn2/wqflask/templates/correlation_matrix.html @@ -0,0 +1,203 @@ +{% extends "base.html" %} +{% block title %}Correlation Matrix{% endblock %} +{% block css %} + + + + + +{% endblock %} +{% block content %} + +
+

Correlation Matrix

+
Select any cell in the matrix to generate a scatter plot.
Lower left cells list Pearson product-moment correlations; upper right cells list Spearman rank order correlations. Each cell also contains the n of cases in parenthesis. Values ranging from 0.4 to 1.0 range from orange to white, while values ranging from –0.4 to –1.0 range from dark blue to white.
+
+{% if lowest_overlap < 8 %} +
Caution: This matrix of correlations contains some cells with small sample sizes of fewer than 8.
+{% endif %} + + + + + + + + + + + {% for trait in traits %} + + {% endfor %} + + {% for trait in traits %} + {% set outer_loop = loop.index %} + + + + {% for result in corr_results[loop.index-1] %} + {% if result[0].name == trait.name and result[0].dataset == trait.dataset %} + + {% else %} + {% if result[1] == 0 %} + + {% else %} + + {% endif %} + {% endif %} + {% endfor %} + + {% endfor %} + +
Spearman Rank Correlation (rho)
P e a r s o n     r
  
+ {{ loop.index }} +
+ {{ loop.index }}: {{ trait.dataset.name }}  {{ trait.name }} +
{% if trait.dataset.type == "ProbeSet" %}Gene Symbol: {{ trait.symbol }}{% elif trait.dataset.type == "Publish" %}Trait Symbol: {{ trait.post_publication_abbreviation }}{% elif trait.dataset.type == "Geno" %}Genotype{% endif %}
+ +
n
{{ result[2] }}
N/A{{ '%0.2f' % result[1] }}
({{ result[2] }})
+
+
+ + + +
+
+ +{% if pca_works == "True" %} +
+ {% include 'pca_scree_plot.html' %} +
+ +

PCA Traits

+
+ + + + + + + + + + + + + + + + {% for this_trait_id in pca_trait_ids %} + + + + + + {% endfor %} + +
IndexPCA Trait
{{ loop.index }}{{ pca_trait_ids[loop.index - 1] }}
+
+ + + +
+

Factor Loadings Plot

+
+

Factor Loadings Table

+ + + + + + + {% if trait_list|length > 2 %}{% endif %} + + + + {% for row in loadings_array %} + {% set row_counter = loop.index-1 %} + + + {% for column in row %} + + {% endfor %} + + {% endfor %} + + +
TraitFactor 1Factor 2Factor 3
+ + {{ traits[loop.index-1].name }} + + {{ '%0.3f' % loadings_array[row_counter][loop.index-1]|float }}
+
+{% endif %} +
+{% endblock %} + +{% block js %} + + + + + + + + + + + + + + + + +{% endblock %} diff --git a/gn2/wqflask/templates/correlation_page.html b/gn2/wqflask/templates/correlation_page.html new file mode 100644 index 00000000..d3ee32f3 --- /dev/null +++ b/gn2/wqflask/templates/correlation_page.html @@ -0,0 +1,550 @@ +{% extends "base.html" %} +{% block title %}Correlation Results{% endblock %} +{% block css %} + + + + + + +{% endblock %} +{% block content %} +
+ +
+

Values of record {{ this_trait.name }} in the {{ this_dataset.fullname }} + dataset were compared to all records in the {{ target_dataset.fullname }} + dataset. The top {{ return_results }} correlations ranked by the {{ formatted_corr_type }} are displayed. + You can resort this list by clicking the headers. Select the Record ID to open the trait data + and analysis page. +

+
+
+
+ + + + {% include 'tool_buttons.html' %} +
+
+
+
+
+ + + + + + + + + + +
+
+
+
+
+ +
+
+
+ +
+
+ Show/Hide Columns: +
+ {% if target_dataset.type == 'ProbeSet' %} + + + + + + + + {% elif target_dataset.type == 'Publish' %} + + + + + + + + + + + + {% else %} + + + + + {% endif %} +
+
+ + + + + {% for header in header_fields %} + + {% endfor %} + + + + + + +
{{header}}

Loading...
+
+
+{% endblock %} + +{% block js %} + + + + + + + + + + + + + + + + + + +{% endblock %} diff --git a/gn2/wqflask/templates/credits.html b/gn2/wqflask/templates/credits.html new file mode 100644 index 00000000..aab1dfb1 --- /dev/null +++ b/gn2/wqflask/templates/credits.html @@ -0,0 +1,58 @@ +{% extends "base.html" %} +{% block title %}Credit{% endblock %} +{% block content %} + + + +
+

Web site design and coding

+ +

Published and Unpublished Phenotype Data

+
    +
  • Lu Lu +
  • Elissa J. Chesler +
  • John C Crabbe, OHSU +
  • John K Belknap, OHSU +
  • Mary-Kathleen Sullivan +
  • Emily English +
  • Byron Jones +
  • Ryan McNieve +
  • Nathan Copeland +
+

Genotype / Genomic Data

+ +

+
+ +{% endblock %} diff --git a/gn2/wqflask/templates/ctl_results.html b/gn2/wqflask/templates/ctl_results.html new file mode 100644 index 00000000..1c31b499 --- /dev/null +++ b/gn2/wqflask/templates/ctl_results.html @@ -0,0 +1,77 @@ +{% extends "base.html" %} +{% block css %} + + + + +{% endblock %} + +{% block title %}CTL results{% endblock %} + +{% block content %} +
+

CTL Results

+ {{(request.form['trait_list'].split(',')|length)}} phenotypes as input
+ + + +

CTL/QTL Plots for individual traits

+ {% for r in range(2, (request.form['trait_list'].split(',')|length +1)) %} + + Embedded Image + {% endfor %} +

Tabular results

+ + + significant CTL:
+ {% for r in range(results['ctlresult'][0]|length) %} + + {% for c in range(results['ctlresult']|length) %} + + {% endfor %} + + {% endfor %} +
traitmarkertraitLODdCor
+ {% if c > 2 %} + {{results['ctlresult'][c][r]|float|round(2)}} + {% else %} + {{results['ctlresult'][c][r]}} + {% endif %} +
+

Network Figure

+
+
+{% endblock %} + +{% block js %} + + + + + + + + + + + + + +{% endblock %} diff --git a/gn2/wqflask/templates/ctl_setup.html b/gn2/wqflask/templates/ctl_setup.html new file mode 100644 index 00000000..f5b0baf8 --- /dev/null +++ b/gn2/wqflask/templates/ctl_setup.html @@ -0,0 +1,70 @@ +{% extends "base.html" %} +{% block title %}CTL analysis{% endblock %} +{% block content %} + +
+ {% if request.form['trait_list'].split(",")|length < 2 %} +{% else %} +

CTL analysis

+CTL analysis is published as open source software, if you are using this method in your publications, please cite:

+Arends D, Li Y, Brockmann GA, Jansen RC, Williams RW, Prins P
+Correlation trait locus (CTL) mapping: Phenotype network inference subject to genotype.
+The Journal of Open Source Software (2016)
+Published in +

+
+ +
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+
+ +
+
+
+{% endif %} +
+{% endblock %} + diff --git a/gn2/wqflask/templates/data_sharing.html b/gn2/wqflask/templates/data_sharing.html new file mode 100644 index 00000000..cca498ec --- /dev/null +++ b/gn2/wqflask/templates/data_sharing.html @@ -0,0 +1,262 @@ +{% extends "base.html" %} +{% block title %}Data Sharing{% endblock %} +{% block content %} + + + + + + + + + +
+List of DataSets
+

{{ info.DB_Name }} +modify this page + +

+ + + + + +
+ + + + + + + + + + + +
GN Accession: {{ info.GN_AccesionId }}
GEO Series: {{ info.GEO_Series }}
Title: {{ info.Title }}
Organism: {{ info.Organism }}
Group: {{ info.InbredSet }}
Tissue: {{ info.Tissue }}
Dataset Status: {{ info.Status }}
Platforms: {{ info.Platforms }}
Normalization: {{ info.Normalization }}
+ See Contact Information
+
+
+ + + + + + + +
Download datasets and supplementary data files
{{ htmlfilelist|safe }}
+
+
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Summary:
{{ info.Summary | safe}}

About the cases used to generate this set of data:
{{ info.About_Cases | safe}}
About the tissue used to generate this set of data:
{{ info.About_Tissue | safe }}
About downloading this data set:

All data links (right-most column above) will be made active as sooon as the global analysis of these data by the Consortium has been accepted for publication. Please see text on Data Sharing Policies, and Conditions and Limitations, and Contacts. Following publication, download a summary text file or Excel file of the PDNN probe set data. Contact RW Williams regarding data access problems. +



About the array platform:

Affymetrix Mouse Genome 430 2.0 array: The 430v2 array consists of 992936 useful 25-nucleotide probes that estimate the expression of approximately 39,000 transcripts and the majority of known genes and expressed sequence tags. The array sequences were selected late in 2002 using Unigene Build 107 by Affymetrix. The UTHSC group has recently reannotated all probe sets on this array, producing more accurate data on probe and probe set targets. All probes were aligned to the most recent assembly of the Mouse Genome (Build 34, mm6) using Jim Kent's BLAT program. Many of the probe sets have been manually curated by Jing Gu and Rob Williams.



About data values and data processing:
Harshlight was used to examine the image quality of the array (CEL files). Bad areas (bubbles, scratches, blemishes) of arrays were masked. + +

First pass data quality control: Affymetrix GCOS provides useful array quality control data including: +

    +
  1. The scale factor used to normalize mean probe intensity. This averaged 3.3 for the 179 arrays that passed and 6.2 for arrays that were excluded. The scale factor is not a particular critical parameter. +
  2. The average background level. Values averaged 54.8 units for the data sets that passed and 55.8 for data sets that were excluded. This factor is not important for quality control. +
  3. The percentage of probe sets that are associated with good signal ("present" calls). This averaged 50% for the 179 data sets that passed and 42% for those that failed. Values for passing data sets extended from 43% to 55%. This is a particularly important criterion. +
  4. The 3':5' signal ratios of actin and Gapdh. Values for passing data sets averaged 1.5 for actin and 1.0 for Gapdh. Values for excluded data sets averaged 12.9 for actin and 9.6 for Gapdh. This is a highly discriminative QC criterion, although one must keep in mind that only two transcripts are being tested. Sequence variation among strains (particularly wild derivative strains such as CAST/Ei) may affect these ratios. +
+ +

The second step in our post-processing QC involves a count of the number of probe sets in each array that are more than 2 standard deviations (z score units) from the mean across the entire 206 array data sets. This was the most important criterion used to eliminate "bad" data sets. All 206 arrays were processed togther using standard RMA and PDNN methods. The count and percentage of probe sets in each array that were beyond the 2 z theshold was computed. Using the RMA transform the average percentage of probe sets beyond the 2 z threshold for the 179 arrays that finally passed of QC procedure was 1.76% (median of 1.18%). In contrast the 2 z percentage was more than 10-fold higher (mean of 22.4% and median 20.2%) for those arrays that were excluded. This method is not very sensitive to the transformation method that is used. Using the PDNN transform, the average percent of probe sets exceeding was 1.31% for good arrays and was 22.6% for those that were excluded. In our opinion, this 2 z criterion is the most useful criterion for the final decision of whether or not to include arrays, although again, allowances need to be made for wild strains that one expects to be different from the majority of conventional inbred strains. For example, if a data set has excellent characteristics on all of the Affymetrix GCOS metrics listed above, but generates a high 2 z percentage, then one would include the sample if one can verify that there are no problems in sample and data set identification. + +

The entire procedure can be reapplied once the initial outlier data sets have been eliminated to detect any remaining outlier data sets. + + +

DataDesk was used to examine the statistical quality of the probe level (CEL) data after step 5 below. DataDesk allows the rapid detection of subsets of probes that are particularly sensitive to still unknown factors in array processing. Arrays can then be categorized at the probe level into "reaction classes." A reaction class is a group of arrays for which the expression of essentially all probes are colinear over the full range of log2 values. A single but large group of arrays (n = 32) processed in essentially the identical manner by a single operator can produce arrays belonging to as many as four different reaction classes. Reaction classes are NOT related to strain, age, sex, treatment, or any known biological parameter (technical replicates can belong to different reaction classes). We do not yet understand the technical origins of reaction classes. The number of probes that contribute to the definition of reaction classes is quite small (<10% of all probes). We have categorized all arrays in this data set into one of 5 reaction classes. These have then been treated as if they were separate batches. Probes in these data type "batches" have been aligned to a common mean as described below. + +

Probe (cell) level data from the CEL file: These CEL values produced by GCOS are 75% quantiles from a set of 91 pixel values per cell. +

    + +
  1. We added an offset of 1.0 unit to each cell signal to ensure that all values could be logged without generating negative values. We then computed the log base 2 of each cell. + +
  2. We performed a quantile normalization of the log base 2 values for all arrays using the same initial steps used by the RMA transform. + +
  3. We computed the Z scores for each cell value. + +
  4. We multiplied all Z scores by 2. + +
  5. We added 8 to the value of all Z scores. The consequence of this simple set of transformations is to produce a set of Z scores that have a mean of 8, a variance of 4, and a standard deviation of 2. The advantage of this modified Z score is that a two-fold difference in expression level (probe brightness level) corresponds approximately to a 1 unit difference. + +
  6. Finally, we computed the arithmetic mean of the values for the set of microarrays for each strain. Technical replicates were averaged before computing the mean for independent biological samples. Note, that we have not (yet) corrected for variance introduced by differences in sex or any interaction terms. We have not corrected for background beyond the background correction implemented by Affymetrix in generating the CEL file. We eventually hope to add statistical controls and adjustments for some of these variables. +
+

Probe set data from the CHP file: The expression values were generated using PDNN. The same simple steps described above were also applied to these values. Every microarray data set therefore has a mean expression of 8 with a standard deviation of 2. A 1 unit difference represents roughly a two-fold difference in expression level. Expression levels below 5 are usually close to background noise levels. + + +

Probe level QC: Log2 probe data of all arrays were inspected in DataDesk before and after quantile normalization. Inspection involved examining scatterplots of pairs of arrays for signal homogeneity (i.e., high correlation and linearity of the bivariate plots) and looking at all pairs of correlation coefficients. XY plots of probe expression and signal variance were also examined. Probe level array data sets were organized into reaction groups. Arrays with probe data that were not homogeneous when compared to other arrays were flagged. + +

Probe set level QC: The final normalized individual array data were evaluated for outliers. This involved counting the number of times that the probe set value for a particular array was beyond two standard deviations of the mean. This outlier analysis was carried out using the PDNN, RMA and MAS5 transforms and outliers across different levels of expression. Arrays that were associated with an average of more than 8% outlier probe sets across all transforms and at all expression levels were eliminated. In contrast, most other arrays generated fewer than 5% outliers. + + +

Validation of strains and sex of each array data set: A subset of probes and probe sets with a Mendelian pattern of inheritance were used to construct a expression correlation matrix for all arrays and the ideal Mendelian expectation for each strain constructed from the genotypes. There should naturally be a very high correlation in the expression patterns of transcripts with Mendelian phenotypes within each strain, as well as with the genotype strain distribution pattern of markers for the strain. + +

Sex of the samples was validated using sex-specific probe sets such as Xist and Dby.

Data source acknowledgment:

Data were generated with funds provided by a variety of public and private source to members of the Consortium. All of us thank Muriel Davisson, Cathy Lutz, and colleagues at the Jackson Laboratory for making it possible for us to add all of the CXB strains, and one or more samples from KK/HIJ, WSB/Ei, NZO/HILtJ, LG/J, CAST/Ei, PWD/PhJ, and PWK/PhJ to this study. We thank Yan Cui at UTHSC for allowing us to use his Linux cluster to align all M430 2.0 probes and probe sets to the mouse genome. We thank Hui-Chen Hsu and John Mountz for providing us BXD tissue samples, as well as many strains of BXD stock. We thanks Douglas Matthews (UMem in Table 1) and John Boughter (JBo in Table 1) for sharing BXD stock with us. Members of the Hippocampus Consortium thank the following sources for financial support of this effort: + +

    +
  • David C. Airey, Ph.D. +
    Grant Support: Vanderbilt Institute for Integratie Genomics +
    Department of Pharmacology +
    david.airey at vanderbilt.edu + +
  • Lu Lu, M.D. +
    Grant Support: NIH U01AA13499, U24AA13513 + +
  • Fred H. Gage, Ph.D. +
    Grant Support: Lookout Foundation + +
  • Dan Goldowitz, Ph.D. +
    Grant Support: NIAAA INIA AA013503 +
    University of Tennessee Health Science Center +
    Dept. Anatomy and Neurobiology +
    email: dgold@nb.utmem.edu + +
  • Shirlean Goodwin, Ph.D. +
    Grant Support: NIAAA INIA U01AA013515 + +
  • Gerd Kempermann, M.D. +
    Grant Support: The Volkswagen Foundation Grant on Permissive and Persistent Factors in Neurogenesis in the Adult Central Nervous System +
    Humboldt-Universitat Berlin +
    Universitatsklinikum Charite +
    email: gerd.kempermann at mdc-berlin.de + +
  • Kenneth F. Manly, Ph.D. +
    Grant Support: NIH P20MH062009 and U01CA105417 + +
  • Richard S. Nowakowski, Ph.D. +
    Grant Support: R01 NS049445-01 + +
  • Glenn D. Rosen, Ph.D. +
    Grant Support: NIH P20 + +
  • Leonard C. Schalkwyk, Ph.D. +
    Grant Support: MRC Career Establishment Grant G0000170 +
    Social, Genetic and Developmental Psychiatry +
    Institute of Psychiatry,Kings College London +
    PO82, De Crespigny Park London SE5 8AF +
    L.Schalkwyk@iop.kcl.ac.uk + +
  • Guus Smit, Ph.D. +
    Dutch NeuroBsik Mouse Phenomics Consortium +
    Center for Neurogenomics & Cognitive Research +
    Vrije Universiteit Amsterdam, The Netherlands +
    e-mail: guus.smit at falw.vu.nl +
    Grant Support: BSIK 03053 + +
  • Thomas Sutter, Ph.D. +
    Grant Support: INIA U01 AA13515 and the W. Harry Feinstone Center for Genome Research + +
  • Stephen Whatley, Ph.D. +
    Grant Support: XXXX + +
  • Robert W. Williams, Ph.D. +
    Grant Support: NIH U01AA013499, P20MH062009, U01AA013499, U01AA013513 +
+



Experiment Type:

Pooled RNA samples (usually one pool of male hippocampii and one pool of female hippocampii) were prepared using standard protocols. Samples were processed using a total of 206 Affymetrix GeneChip Mouse Expression 430 2.0 short oligomer arrays (MOE430 2.0 or M430v2; see GEO platform ID GPL1261), of which 201 passed quality control and error checking. This particular data set was processed using the PDNN protocol. To simplify comparisons among transforms, PDNN values of each array were adjusted to an average of 8 units and a standard deviation of 2 units. +

Overall Design:

Pooled RNA samples (usually one pool of male hippocampii and one pool of female hippocampii) were prepared using standard protocols. Samples were processed using a total of 206 Affymetrix GeneChip Mouse Expression 430 2.0 short oligomer arrays (MOE430 2.0 or M430v2; see GEO platform ID GPL1261), of which 201 passed quality control and error checking. This particular data set was processed using the PDNN protocol. To simplify comparisons among transforms, PDNN values of each array were adjusted to an average of 8 units and a standard deviation of 2 units. +

Contributor:
    +
  • David C. Airey, Ph.D. +
    Grant Support: Vanderbilt Institute for Integratie Genomics +
    Department of Pharmacology +
    david.airey at vanderbilt.edu + +
  • Lu Lu, M.D. +
    Grant Support: NIH U01AA13499, U24AA13513 + +
  • Fred H. Gage, Ph.D. +
    Grant Support: Lookout Foundation + +
  • Dan Goldowitz, Ph.D. +
    Grant Support: NIAAA INIA AA013503 +
    University of Tennessee Health Science Center +
    Dept. Anatomy and Neurobiology +
    email: dgold@nb.utmem.edu + +
  • Shirlean Goodwin, Ph.D. +
    Grant Support: NIAAA INIA U01AA013515 + +
  • Gerd Kempermann, M.D. +
    Grant Support: The Volkswagen Foundation Grant on Permissive and Persistent Factors in Neurogenesis in the Adult Central Nervous System +
    Humboldt-Universitat Berlin +
    Universitatsklinikum Charite +
    email: gerd.kempermann at mdc-berlin.de + +
  • Kenneth F. Manly, Ph.D. +
    Grant Support: NIH P20MH062009 and U01CA105417 + +
  • Richard S. Nowakowski, Ph.D. +
    Grant Support: R01 NS049445-01 + +
  • Glenn D. Rosen, Ph.D. +
    Grant Support: NIH P20 + +
  • Leonard C. Schalkwyk, Ph.D. +
    Grant Support: MRC Career Establishment Grant G0000170 +
    Social, Genetic and Developmental Psychiatry +
    Institute of Psychiatry,Kings College London +
    PO82, De Crespigny Park London SE5 8AF +
    L.Schalkwyk@iop.kcl.ac.uk + +
  • Guus Smit, Ph.D. +
    Dutch NeuroBsik Mouse Phenomics Consortium +
    Center for Neurogenomics & Cognitive Research +
    Vrije Universiteit Amsterdam, The Netherlands +
    e-mail: guus.smit at falw.vu.nl +
    Grant Support: BSIK 03053 + +
  • Thomas Sutter, Ph.D. +
    Grant Support: INIA U01 AA13515 and the W. Harry Feinstone Center for Genome Research + +
  • Stephen Whatley, Ph.D. +
    Grant Support: XXXX + +
  • Robert W. Williams, Ph.D. +
    Grant Support: NIH U01AA013499, P20MH062009, U01AA013499, U01AA013513 +


Citation:
+

Please cite: Overall RW, Kempermann G, Peirce J, Lu L, Goldowitz D, Gage FH, Goodwin S, Smit AB, Airey DC, Rosen GD, Schalkwyk LC, Sutter TR, Nowakowski RS, Whatley S, Williams RW (2009) Genetics of the hippocampal transcriptome in mice: a systematic survey and online neurogenomic resource. Front. Neurogen. 1:3 Full Text HTML doi:10.3389/neuro.15.003.2009 + +

Submission Date:
01 Jul. 2009

Laboratory:
Williams and Lu Labs

Samples:
None

+

+
+ + + +{% endblock %} diff --git a/gn2/wqflask/templates/dataset.html b/gn2/wqflask/templates/dataset.html new file mode 100644 index 00000000..2e22be17 --- /dev/null +++ b/gn2/wqflask/templates/dataset.html @@ -0,0 +1,107 @@ +{% extends "base.html" %} + +{% block css %} + +{% endblock %} + +{% block title %}Dataset: {{ name }}{% endblock %} +{% block content %} + +{% if dataset %} + +{% include 'metadata/dataset.html' %} + +{% else %} + + + +{% endif %} + +{% endblock %} + +{% block js %} + +{% endblock %} diff --git a/gn2/wqflask/templates/display_diffs.html b/gn2/wqflask/templates/display_diffs.html new file mode 100644 index 00000000..ce50c1b4 --- /dev/null +++ b/gn2/wqflask/templates/display_diffs.html @@ -0,0 +1,95 @@ +{% extends "base.html" %} +{% block title %}Trait Submission{% endblock %} + +{% block css %} + +{% endblock %} + +{% block content %} + +
+ {% set additions = diff.get("Additions") %} + {% set modifications = diff.get("Modifications") %} + {% set deletions = diff.get("Deletions") %} + {% set header = diff.get("Columns", "Strain Name,Value,SE,Count") %} + {% if additions %} +

Additions Data:

+
+
+ + + + + + {% for data in additions %} + + + + {% endfor %} + +
Added Data ({{ header }})
{{ data }}
+
+
+ {% endif %} + + {% if modifications %} +

Modified Data:

+ +
+
+ + + + + + + + {% for data in modifications %} + + + + + + {% endfor %} + +
OriginalCurrentDiff ({{ header }})
{{ data.get("Original") }}{{ data.get("Current") }}
{{data.get("Diff")}}
+
+
+ {% endif %} + + {% if deletions %} +

Deleted Data:

+
+
+ + + + + {% for data in deletions %} + + + + {% endfor %} + +
Deleted Data +
{{ data }}
+
+
+ {% endif %} + +
+{%endblock%} + +{% block js %} + + + +{% endblock %} diff --git a/gn2/wqflask/templates/display_files.html b/gn2/wqflask/templates/display_files.html new file mode 100644 index 00000000..d0e8cc33 --- /dev/null +++ b/gn2/wqflask/templates/display_files.html @@ -0,0 +1,131 @@ +{% extends "base.html" %} +{% block title %}Trait Submission{% endblock %} + +{% block css %} + +{% endblock %} + +{% block content %} + +{% with messages = get_flashed_messages(with_categories=true) %} +{% if messages %} +
+ {% for category, message in messages %} + + {% endfor %} +
+{% endif %} +{% endwith %} + +
+ {%if (not waiting) and (not approved) and (not rejected)%} +
+ + There are no diffs to act on. +
+ {%endif%} + {% if waiting %} +

Files for approval:

+
+
+ + + + + + + + + {% for data in waiting %} + + {% set file_url = url_for('metadata_edit.show_diff', name=data.filepath.name) %} + + + + {% set reject_url = url_for('metadata_edit.reject_data', resource_id=data.meta.get('resource_id'), file_name=data.filepath.name, dataset_name=data.diff.dataset_name, trait_name=data.diff.trait_name) %} + {% set approve_url = url_for('metadata_edit.approve_data', resource_id=data.meta.get('resource_id'), file_name=data.filepath.name, dataset_name=data.diff.dataset_name, trait_name=data.diff.trait_name) %} + + + + {% endfor %} + +
Resource Id + AuthorTimeStamp
{{ data.meta.get("resource_id") }}{{ data.meta.get("author")}}{{ data.meta.get("time_stamp")}} + + + +
+
+
+ {% endif %} + + {% if approved %} +

Approved Data:

+
+
+ + + + + + + {% for data in approved %} + + {% set file_url = url_for('metadata_edit.show_diff', name=data.filepath.name) %} + + + + + {% endfor %} + +
Resource Id + AuthorTimeStamp
{{ data.meta.get("resource_id") }}{{ data.meta.get("author")}}{{ data.meta.get("time_stamp")}}
+
+
+ {% endif %} + + {% if rejected %} +

Rejected Files:

+
+
+ + + + + + + {% for data in rejected %} + + {% set file_url = url_for('metadata_edit.show_diff', name=data.filepath.name) %} + + + + + {% endfor %} + +
Resource Id + AuthorTimeStamp
{{ data.meta.get("resource_id") }}{{ data.meta.get("author")}}{{ data.meta.get("time_stamp")}}
+
+
+ {% endif %} +
+{%endblock%} + +{% block js %} + + + +{% endblock %} diff --git a/gn2/wqflask/templates/docedit.html b/gn2/wqflask/templates/docedit.html new file mode 100644 index 00000000..50bb96c0 --- /dev/null +++ b/gn2/wqflask/templates/docedit.html @@ -0,0 +1,31 @@ +{% extends "base.html" %} + +{% block title %}Edit: {{title}}{% endblock %} + +{% block content %} +
+

Edit: {{title}}

+
+ + + {% if editable is defined %} + + {% endif %} + + + + + +
+
+{% endblock %} diff --git a/gn2/wqflask/templates/docs.html b/gn2/wqflask/templates/docs.html new file mode 100644 index 00000000..1e5a7aef --- /dev/null +++ b/gn2/wqflask/templates/docs.html @@ -0,0 +1,17 @@ +{% extends "base.html" %} + +{% block title %}{{title}}{% endblock %} + +{% block content %} +
+

{{title}}

+
+ {% if editable == "true" %} + + + + {% endif %} +
+ {{content|safe}} +
+{% endblock %} diff --git a/gn2/wqflask/templates/edit_case_attributes.html b/gn2/wqflask/templates/edit_case_attributes.html new file mode 100644 index 00000000..3c97b992 --- /dev/null +++ b/gn2/wqflask/templates/edit_case_attributes.html @@ -0,0 +1,104 @@ +{%extends "base.html"%} +{%block title%}Edit Case Attributes{%endblock%} + +{%block css%} + + + + + +{%endblock%} + +{%block content%} +
+

{{inbredset_group.InbredSetName}}: Edit Case-Attributes

+ + {{flash_me()}} + +

Instructions

+
    +
  • + The table is scrollable. Scroll to find the strain(s) you want to edit. +
  • +
  • Change value(s) to edit them in the database.
  • +
  • Delete value(s) to delete them from the database.
  • +
  • Click "Submit" to submit all the changes you have made
  • +
  • + Click "Reset" to undo ALL the changes you have made and + start over. +
  • +
+ + View Diffs + +
+
+ + +
+ +
+ + + + + {%for caname in case_attribute_names%} + + {%endfor%} + + + + {%for strain in strains%} + +
+
+ {%for attr in case_attribute_names%} + {%if case_attribute_values.get(strain.Name)%} + + {%else%} + + {%endif%} + {%endfor%} + + + {%else%} + + + + {%endfor%} + + +
+ +
+ + +
+
+
+{%endblock%} + +{%block js%} + +{%endblock%} diff --git a/gn2/wqflask/templates/edit_history.html b/gn2/wqflask/templates/edit_history.html new file mode 100644 index 00000000..876ab085 --- /dev/null +++ b/gn2/wqflask/templates/edit_history.html @@ -0,0 +1,56 @@ +{% extends "base.html" %} +{% block title %}Trait Submission{% endblock %} + +{% block css %} + +{% endblock %} + +{% block content %} + +
+ +

History

+ {% if diff %} +
+ + + + + + + + + {%set ns = namespace(display_ts=True)%} + {%for ts, item in diff.items()%} + {%set ns.display_ts = True%} + {%for the_diff in item%} + + {%if ns.display_ts%} + + {%set ns.display_ts = False%} + {%endif%} + + + + + {%endfor%} + {%endfor%} + +
TimestampEditorFieldDiff
{{ts}}{{the_diff.author}}{{the_diff.diff.field}}
{{the_diff.diff.diff}}
+
+ {% endif %} + +
+{%endblock%} + +{% block js %} + + + +{% endblock %} diff --git a/gn2/wqflask/templates/edit_phenotype.html b/gn2/wqflask/templates/edit_phenotype.html new file mode 100644 index 00000000..99efa46c --- /dev/null +++ b/gn2/wqflask/templates/edit_phenotype.html @@ -0,0 +1,279 @@ +{% extends "base.html" %} +{% block title %}Trait Submission{% endblock %} +{% block content %} + +{% with messages = get_flashed_messages(with_categories=true) %} +{% if messages %} +{% for category, message in messages %} +
+

{{ message|safe }}

+
+{% endfor %} +{% endif %} +{% endwith %} +
+ + +
+
+
+ + + + +
+
+
+

Edit Sample Data

+

+ Download a spreadsheet of sample values to edit in Excel (or a similar program) and then upload the edited file +

+ +
+ +
+ +
+
+
+

Edit Metadata

+
+ + +
+ + +
+
+
+ +
+ + +
+ +
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+ +
+ {% if sample_list|length < 2000 %} +
+

+ Type "x" to delete a value. +

+ + + + + + + + + + + + {% for sample in sample_list %} + + + + + + + + + + {% endfor %} + +
IDSampleValueSEN
{{ loop.index }}{{ sample }}±
+
+ {% endif %} + +
+
+ +{%endblock%} + +{% block js %} + +{% endblock %} diff --git a/gn2/wqflask/templates/edit_probeset.html b/gn2/wqflask/templates/edit_probeset.html new file mode 100644 index 00000000..88e97837 --- /dev/null +++ b/gn2/wqflask/templates/edit_probeset.html @@ -0,0 +1,282 @@ +{% extends "base.html" %} +{% block title %}Trait Submission{% endblock %} +{% block content %} + +
+ {% with messages = get_flashed_messages(category_filter=["warning"]) %} + {% if messages %} + {% for message in messages %} + + {% endfor %} + {% endif %} + {% endwith %} + + {% with messages = get_flashed_messages(category_filter=["success"]) %} + {% if messages %} + {% for message in messages %} + + {% endfor %} + {% endif %} + {% endwith %} + +
+
+
+ + + + + +
+
+
+

Edit Sample Data

+

+ Download a spreadsheet of sample values to edit in Excel (or a similar program) and then upload the edited file +

+ +
+ +
+ +
+
+
+

Edit Metadata

+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+ +
+
+

+ Type "x" to delete a value. +

+ + + + + + + + + + + + {% for sample in sample_list %} + + + + + + + + + + {% endfor %} + +
IDSampleValueSEN
{{ loop.index }}{{ sample }}±
+
+ +
+
+ +{%endblock%} + +{% block js %} + +{% endblock %} diff --git a/gn2/wqflask/templates/email/forgot_password.txt b/gn2/wqflask/templates/email/forgot_password.txt new file mode 100644 index 00000000..e7d1389b --- /dev/null +++ b/gn2/wqflask/templates/email/forgot_password.txt @@ -0,0 +1,5 @@ +Sorry to hear you lost your GeneNetwork password. + +To reset your password please click the following link, or cut and paste it into your browser window: + +{{ url_for_hmac("password_reset", code = verification_code, _external=True )}} diff --git a/gn2/wqflask/templates/empty_collection.html b/gn2/wqflask/templates/empty_collection.html new file mode 100644 index 00000000..d1b779ef --- /dev/null +++ b/gn2/wqflask/templates/empty_collection.html @@ -0,0 +1,15 @@ +{% extends "base.html" %} +{% block title %}{{ tool }}{% endblock %} +{% block content %} + + {{ header("Error") }} + +
+ +

You must select at least two traits to use the {{ tool }}.

+
+ + + + +{% endblock %} diff --git a/gn2/wqflask/templates/environment.html b/gn2/wqflask/templates/environment.html new file mode 100644 index 00000000..89e805ce --- /dev/null +++ b/gn2/wqflask/templates/environment.html @@ -0,0 +1,160 @@ +{% extends "base.html" %} + +{% block title %}Glossary{% endblock %} + +{% block css %} + +{% endblock %} + +{% block content %} + +
+ +
{{ rendered_markdown|safe }}
+
+ +{% if svg_data %} + +
+

Chord dependency Graph of Genenetwork2

+ Graph generated from genenetwork.scm. You can zoom in and out within the bounding box. +
+ +
+ + + +
+

The dependency graph is shown below

+ +

To explore this image SVG you may want to open it in new browser page and zoom in. Or use an SVG viewing application.

+ + Dependency graph of the tools needed to build python3-genenetwork2 +
+{% endif %} + +{% endblock %} + +{% block js %} + +{% if svg_data %} + + +{% endif %} + +{% endblock %} diff --git a/gn2/wqflask/templates/error.html b/gn2/wqflask/templates/error.html new file mode 100644 index 00000000..2f1e06fa --- /dev/null +++ b/gn2/wqflask/templates/error.html @@ -0,0 +1,61 @@ +{% extends "base.html" %} +{% block title %}Error: {{message}}{% endblock %} +{% block content %} + + +
+
+
+ + + +

ERROR

+ +

+ This error is not what we wanted to see. Unfortunately errors + are part of all software systems and we need to resolve this + together. +

+

+ It is important to report this ERROR so we can fix it for everyone. +

+ +

+ Report to the GeneNetwork team by recording the steps you take + to reproduce this ERROR. Next to those steps, copy-paste below + stack trace, either as + a new + issue or E-mail this full page to one of the developers + directly. +

+
+ +

+ (GeneNetwork error: {{message[:128]}}) +

+ +
+    GeneNetwork {{ version }} {{ stack[0] }}
+    {{ message }} (error)
+    {{ stack[-3] }}
+    {{ stack[-2] }}
+  
+ +

+ To check if this already a known issue, search the + issue + tracker. +

+ + Toggle full stack trace +
+
+      GeneNetwork {{ version }} {% for line in stack %} {{ line }}
+      {% endfor %}
+    
+
+
+
+ + +{% endblock %} diff --git a/gn2/wqflask/templates/facilities.html b/gn2/wqflask/templates/facilities.html new file mode 100644 index 00000000..56b127f9 --- /dev/null +++ b/gn2/wqflask/templates/facilities.html @@ -0,0 +1,24 @@ +{% extends "base.html" %} + +{% block title %}Facilities{% endblock %} + +{% block css %} + +{% endblock %} + +{% block content %} + + +
+ {{ rendered_markdown|safe }} + +
+ +{% endblock %} \ No newline at end of file diff --git a/gn2/wqflask/templates/generif.html b/gn2/wqflask/templates/generif.html new file mode 100644 index 00000000..ac815b43 --- /dev/null +++ b/gn2/wqflask/templates/generif.html @@ -0,0 +1,101 @@ +{% extends "base.html" %} + +{% block title %} +GeneWiki Entry for {{ symbol }} +{% endblock %} + +{% block css %} + + +{% endblock %} +{% block content %} + + +
+

GeneWiki For {{ symbol }}

+

GeneWiki enables you to enrich the annotation of genes and transcripts.

+ +

+ GeneNetwork + + {{ entries.gn_entries|length if entries.gn_entries[0] else 0 }} + : +

+ {% if entries.gn_entries[0] %} +
    + {% for entry in entries.gn_entries %} +
  • +
    + + {{ entry["entry"]["value"] }} + {% if entry.get("weburl") %} + web + {% endif %} + +
    +
    Author:
    +
    {{ entry["author"]["value"] }}
    + + {% if entry.get("geneCategory") %} +
    Category:
    +
    {{ entry["geneCategory"]["value"]}}
    + {% endif %} + +
    Add Time:
    +
    {{ entry["created"]["value"]}}
    +
    +
    +
  • + {% endfor %} +
+ + {% else %} + +

There are no GeneNetwork entries for {{ symbol }}.

+ + {% endif %} + +

+ GeneRIF from NCBI + + {{ entries.ncbi_entries|length if entries.ncbi_entries[0] else 0 }} + : +

+ {% if entries.ncbi_entries[0] %} +
    + {% for entry in entries.ncbi_entries %} +
  1. + {{ entry.entry.value }} + ({{ entry["speciesBinomialName"]["value"] }}) + {% if entry.PubMedId.value != "" %} + {% set pmids = entry.PubMedId.value.split(",") %} + (PubMed: {% for id in pmids %} {{ id }}{% endfor %}) + {{ entry.createdOn.value }} + {% endif %} +
  2. + {% endfor %} +
+ {% else %} +

There are no NCBI entries for {{ symbol }}.

+ {% endif %} +
+{% endblock %} diff --git a/gn2/wqflask/templates/geneweaver_page.html b/gn2/wqflask/templates/geneweaver_page.html new file mode 100644 index 00000000..7687cb6a --- /dev/null +++ b/gn2/wqflask/templates/geneweaver_page.html @@ -0,0 +1,35 @@ +{% extends "base.html" %} +{% block title %}{% if wrong_input == "True" %}WebGestalt Error{% else %}Opening WebGestalt{% endif %}{% endblock %} +{% block content %} + {% if wrong_input == "True" %} +
+

Error

+
+ {% if chip_name == "mixed" %} +

Sorry, the analysis was interrupted because your selections from GeneNetwork apparently include data from more than one array platform (i.e., Affymetrix U74A and M430 2.0). Most WebGestalt analyses assume that you are using a single array type and compute statistical values on the basis of that particular array. Please reselect traits from a signle platform and submit again.

+ {% elif chip_name == "not_microarray" %} +

You need to select at least one microarray trait to submit. + {% elif '_NA' in chip_name %} +

Sorry, the analysis was interrupted because your selections from GeneNetwork apparently include data from platform {{ chip_name }} which is unknown by GeneWeaver. Please reselect traits and submit again.

+ {% else %} +

Sorry, an error occurred while submitting your traits to GeneWeaver.

+ {% endif %} +
+ {% else %} +
+

Opening GeneWeaver...

+
+
+ {% for key in hidden_vars %} + + {% endfor %} +
+ {% endif %} +{% endblock %} +{% block js %} +{% if wrong_input == "False" %} + +{% endif %} +{% endblock %} \ No newline at end of file diff --git a/gn2/wqflask/templates/genotype.html b/gn2/wqflask/templates/genotype.html new file mode 100644 index 00000000..fc5b1ad7 --- /dev/null +++ b/gn2/wqflask/templates/genotype.html @@ -0,0 +1,87 @@ +{% extends "base.html" %} + +{% block css %} + +{% endblock %} + +{% block title %}Genotype: {{ name }}{% endblock %} + +{% block content %} + +

+ {% if metadata.name %} + Genotype: {{ metadata.name }} + {% else %} + {{ name }} + {% endif %} +

+ +
+ + {% if metadata.datasetName %} + + + + + {% endif %} + + {% if metadata.inbredSetName %} + + + + + {% endif %} + + + + + + + + + + {% if metadata.cM %} + + + + + {% endif %} + + {% if metadata.mb %} + + + + + {% endif %} + + {% if metadata.sequence %} + + + + + {% endif %} + + {% if metadata.source %} + + + + + {% endif %} + + {% if metadata.markerName %} + + + + + {% endif %} +
Dataset: + {{ metadata.datasetName }} +
Group{{ metadata.inbredSetName }}
Species{{ metadata.species or "N/A"}}
LocationChr {{ metadata.ch }} @ {{ metadata.mb }} mb
cM{{ metadata.cM }}
mb{{ metadata.mb }}
Sequencemetadata.sequence
Source{{ metadata.source}}
Marker Name{{ metadata.markerName}}
+
+ +{% endblock %} diff --git a/gn2/wqflask/templates/glossary.html b/gn2/wqflask/templates/glossary.html new file mode 100644 index 00000000..aaee7c5a --- /dev/null +++ b/gn2/wqflask/templates/glossary.html @@ -0,0 +1,23 @@ +{% extends "base.html" %} + +{% block title %}Glossary{% endblock %} + +{% block css %} + +{% endblock %} + +{% block content %} + + +
+ + {{ rendered_markdown|safe }} +
+{% endblock %} diff --git a/gn2/wqflask/templates/gn3_ctl_results.html b/gn2/wqflask/templates/gn3_ctl_results.html new file mode 100644 index 00000000..c42707f6 --- /dev/null +++ b/gn2/wqflask/templates/gn3_ctl_results.html @@ -0,0 +1,101 @@ +{% extends "base.html" %} +{% block title %}Ctl results{% endblock %} +{% block content %} + + + + +
+ +{% if error %} +
+

{{error}}

+
+ +{% else %} +
+
+
+

CTL/QTL Plots for Individual Traits

+

{{ctl_plots|length}} phenotypes as input

+
+ +
+
+
+

Ctl line plot

+

Plot the CTL for genome-wide CTL on all traits (the output of CTLscan).

+
+
+
+ +
+
+
    + {% for trait in phenotypes %} + {% set trait_data = trait.split(':') %} +
  1. {{trait_data[0]}}
  2. + {% endfor %} +
+
+
+
+

Significant CTL

+
+
+

Network figure

+
+

Use tools like cytoscape to visualize the network

+ Download Sif file + Download Node file +
+
+
+ +{% endif %} +
+ + + + + + + +{% endblock %} + diff --git a/gn2/wqflask/templates/gn3_wgcna_results.html b/gn2/wqflask/templates/gn3_wgcna_results.html new file mode 100644 index 00000000..8a31bf28 --- /dev/null +++ b/gn2/wqflask/templates/gn3_wgcna_results.html @@ -0,0 +1,192 @@ +{% extends "base.html" %} +{% block title %}WCGNA results{% endblock %} +{% block content %} + + + + + + + + +
+ {% if error!='null' %} +

{{error}}

+ + {% else %} +
+
+

Parameters used

+ +
+ +
+
+

Soft Thresholds

+
+ + {% for key, value in results["data"]["output"]["soft_threshold"].items()%} +
+

{{key}}

+ {% for val in value %} +

{{val|round(3)}}

+ {% endfor %} +
+ {% endfor %} +
+
+ +
+ + {% if image["image_generated"] %} +
+ +
+ + {% endif %} + +
+ +
+

Module eigen genes

+
+
+ +
+

Phenotype modules

+ +
+
+
+ +{% endif %} + +
+ +{% endblock %} + +{% block js %} + + + + + + + + + +{% endblock %} diff --git a/gn2/wqflask/templates/gnqa.html b/gn2/wqflask/templates/gnqa.html new file mode 100644 index 00000000..bed2627d --- /dev/null +++ b/gn2/wqflask/templates/gnqa.html @@ -0,0 +1,68 @@ +{% extends "base.html" %} +{% block title %}GNQNA{% endblock %} + +{% block content %} + + + + + +
+
+
+
+ + +
+
+ +
+ +
+ +
+ + + + + + + +{% endblock %} + diff --git a/gn2/wqflask/templates/gnqa_answer.html b/gn2/wqflask/templates/gnqa_answer.html new file mode 100644 index 00000000..4fb4b268 --- /dev/null +++ b/gn2/wqflask/templates/gnqa_answer.html @@ -0,0 +1,158 @@ +{% extends "base.html" %} +{% block title %}GNQNA{% endblock %} + +{% block content %} + + + + +{% block css %} + +{% endblock %} + + + + +
+
+
+

{{query}}

+

+ +
+

{{answer}}

+

+
+ +
+ + + +
+

References

+ {% if references %} +
    + {% for reference in references %} +
  • +

    {{ reference.bibInfo }}

    +

    {{reference.comboTxt}}

    +
  • + {% endfor %} +
+ {% else %} +

No references available.

+ {% endif %} +
+
+
+ + + + + + +{% endblock %} + diff --git a/gn2/wqflask/templates/gsearch_gene.html b/gn2/wqflask/templates/gsearch_gene.html new file mode 100644 index 00000000..6bc92377 --- /dev/null +++ b/gn2/wqflask/templates/gsearch_gene.html @@ -0,0 +1,267 @@ +{% extends "base.html" %} +{% block title %}Search Results{% endblock %} +{% block css %} + + + +{% endblock %} +{% block content %} + + +
+ +

GN searched for the term(s) "{{ terms }}" in 754 datasets and 39,765,944 traits across 10 species
+ and found {{ trait_count }} results that match your query.
+ You can filter these results by adding key words in the fields below
+ and you can also sort results on most columns.

+

To study a record, click on its Record ID below.
Check records below and click Add button to add to selection.

+ +
+
+ + + + + + +
+ + + + +
+
+
+
+ + + + +

Loading...
+
+
+
+ + + +{% endblock %} + +{% block js %} + + + + + + + + + + + + + + + + +{% endblock %} diff --git a/gn2/wqflask/templates/gsearch_pheno.html b/gn2/wqflask/templates/gsearch_pheno.html new file mode 100644 index 00000000..a1fef2c8 --- /dev/null +++ b/gn2/wqflask/templates/gsearch_pheno.html @@ -0,0 +1,238 @@ +{% extends "base.html" %} +{% block title %}Search Results{% endblock %} +{% block css %} + + + +{% endblock %} +{% block content %} + + +
+ +

GN searched for the term(s) "{{ terms }}" in 51 datasets and 13763 traits across 10 species
+ and found {{ trait_count }} results that match your query.
+ You can filter these results by adding key words in the fields below
+ and you can also sort results on most columns.

+

To study a record, click on its ID below.
Check records below and click Add button to add to selection.

+ +
+
+ + + + + + +
+ + + + +
+
+
+
+ + + + +

Loading...
+
+
+
+ + + +{% endblock %} + +{% block js %} + + + + + + + + + + + + + + + + +{% endblock %} diff --git a/gn2/wqflask/templates/heatmap.html b/gn2/wqflask/templates/heatmap.html new file mode 100644 index 00000000..92754266 --- /dev/null +++ b/gn2/wqflask/templates/heatmap.html @@ -0,0 +1,44 @@ +{% extends "base.html" %} +{% block title %}Heatmap{% endblock %} +{% block css %} + + +{% endblock %} +{% block content %} +
+

Heatmap

+
+
+

+ The following heatmap is a work in progress. The heatmap for each trait runs horizontally (as opposed to vertically in GeneNetwork 1), + and hovering over a given trait's heatmap track will display its corresponding QTL chart below. White on the heatmap corresponds with a + low positive or negative z-score (darker when closer to 0), while light blue and red correspond to high negative and positive z-scores respectively. +

+
+
+
+ +
+
+ +
+ + + +{% endblock %} + +{% block js %} + + + + + + + + + + + +{% endblock %} \ No newline at end of file diff --git a/gn2/wqflask/templates/index_page.html b/gn2/wqflask/templates/index_page.html new file mode 100755 index 00000000..7b5a1d16 --- /dev/null +++ b/gn2/wqflask/templates/index_page.html @@ -0,0 +1,397 @@ +{% extends "base.html" %} +{% block title %}GeneNetwork{% endblock %} +{% block css %} + + + + + + + + + + + + +{% endblock %} +{% block content %} + +
+ + {{ flash_me() }} + + {%if anon_collections | length > 0%} +
+
+

Import Anonymous Collections

+
+
+

+ There {%if anon_collections | length > 1%}are{%else%}is{%endif%} + {{anon_collections | length}} anonymous + collection{%if anon_collections | length > 1%}s{%endif%} + associated with your current session. What do you wish to do? +

+

+ + If you choose to ignore this, the anonymous collections will be + eventually deleted and lost. + +

+
+
+ + + + +
+ + +
+
+
+ {%endif%} + +
+ +
+ +
+ + +

You can also use advanced commands. Copy these simple examples into the Get Any field for single term searches and Combined for searches with multiple terms:

+ +
    +
  • POSITION=(chr1 25 30) finds genes, markers, or transcripts on + chromosome 1 between 25 and 30 Mb.
  • + +
  • MEAN=(15 16) in the Combined field finds + highly expressed genes (15 to 16 log2 units)
  • + +
  • RANGE=(1.5 2.5) in the Any field finds traits with values with a specified fold-range (minimum = 1). + Useful for finding "housekeeping genes" (1.0 1.2) or highly variable molecular assays (10 100).
  • + +
  • LRS=(15 1000) or LOD=(2 8) finds all traits with peak LRS or LOD scores between lower and upper limits.
  • + +
  • LRS=(9 999 Chr4 122 155) finds all traits on Chr 4 from 122 and 155 Mb with LRS scores between 9 and 999.
  • + +
  • cisLRS=(15 1000 5) or cisLOD=(2 8 5) finds all cis eQTLs with peak LRS or LOD scores between lower and upper limits, + with an inclusion zone of 5 Mb around the parent gene.
  • + +
  • transLRS=(15 1000 5) or transLOD=(2 8 5) finds all trans eQTLs with peak LRS or LOD scores between lower and upper limits, + with an exclusion zone of 5 Mb around the parent gene. You can also add a fourth term specifying which chromosome you want the transLRS to be on + (for example transLRS=(15 1000 5 7) would find all trans eQTLs with peak LRS on chromosome 7 that is also a trans eQTL with exclusionary zone of 5Mb).
  • + +
  • POSITION=(Chr4 122 130) cisLRS=(9 999 10) + finds all traits on Chr 4 from 122 and 155 Mb with cisLRS scores + between 9 and 999 and an inclusion zone of 10 Mb.
  • + +
  • RIF=mitochondrial searches RNA databases for + GeneRIF links.
  • + +
  • WIKI=nicotine searches + GeneWiki for genes that you or other users have annotated + with the word nicotine.
  • + +
  • GO:0045202 searches for synapse-associated genes listed in the + + Gene Ontology.
  • + +
  • RIF=diabetes LRS=(9 999 Chr2 100 105) transLRS=(9 999 10) + finds diabetes-associated transcripts with peak + trans eQTLs on Chr 2 between 100 and 105 Mb with LRS + scores between 9 and 999.
  • +
+
+
+ +
+
+ +
+
+ Webinars & Courses
+ In-person courses, live webinars and webinar recordings
+ +
+
+ Tutorials
+ Tutorials: Training materials in HTML, PDF and video formats
+ +
+
+ Documentation
+ Online manuals, handbooks, fact sheets and FAQs
+ +
+
+
+
+ + + +
+
+ + + + + + +
+
+
+
+ +{%endblock%} + +{% block js %} + + + + + + + +{% endblock %} diff --git a/gn2/wqflask/templates/info_page.html b/gn2/wqflask/templates/info_page.html new file mode 100644 index 00000000..91d34573 --- /dev/null +++ b/gn2/wqflask/templates/info_page.html @@ -0,0 +1,92 @@ +{% extends "base.html" %} +{% block title %}Policies{% endblock %} +{% block content %} + +

Data Set Group: {{ info.dataset_name }} + +{{ info.info_page_name }} +

+ + + + + +
+ + + + + + + + + + + +
Data Set: {{ info.info_file_title }}
GN Accession: GN{{ gn_accession_id }}
GEO Series: {{ info.geo_series }}
Title: {{ info.publication_title }}
Organism: {{ info.menu_name }}
Group: {{ info.group_name }}
Tissue: {{ info.tissue_name }}
Dataset Status: {{ info.dataset_status_name }}
Platforms: {{ info.gene_chip_name }}
Normalization: {{ info.avg_method_name }}
+
+ + + + + + + + + + + + + + + + + +
Contact Information
+ {{ info.investigator_first_name }} {{ info.inveestigator_last_name }}
+ {{ info.organization_name }}
+ {{ info.investigator_address }}
+ {{ info.investigator_city }}, {{ info.investigator_state }} {{ info.investigator_zipcode }} {{ info.investigator_country }}
+ Tel. {{ info.investigator_phone }}
+ {{ info.investigator_email }}
+ Website +
Download datasets and supplementary data files
+ +
+
+
+
+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
Specifics of this Data Set:
{{ info.specifics|safe }}

Summary:
{{ info.dataset_summary|safe }}

About the cases used to generate this set of data:
{{ info.about_cases|safe }}

About the tissue used to generate this set of data:
{{ info.about_tissue|safe }}

About the array platform:
{{ info.about_platform|safe }}

About data values and data processing:
{{ info.about_data_processing|safe }}

Notes:
{{ info.notes|safe }}

Experiment Type:
{{ info.experiment_design|safe }}

Contributor:
{{ info.contributors|safe }}

Citation:
{{ info.citation|safe }}

Data source acknowledgment:
{{ info.acknowledgement|safe }}

Study Id:
{{ info.dataset_id }}

+

+ +{% endblock %} diff --git a/gn2/wqflask/templates/jobs/debug.html b/gn2/wqflask/templates/jobs/debug.html new file mode 100644 index 00000000..828ab1cc --- /dev/null +++ b/gn2/wqflask/templates/jobs/debug.html @@ -0,0 +1,42 @@ +{%extends "base.html"%} +{%block title%}Debug Job{% endblock%} +{%block css%} +{%endblock%} + +{%block content%} +

Debug Job

+ +The following show details for job "{{job_id}}" to assist in debugging. + +

Metadata

+ +
    +
  • Job ID: {{job_id}}
  • +
  • Command: {{command}}
  • +
  • Received: {{request_received_time}}
  • +
  • Return Code: {{return_code}}
  • +
  • Completion Status: {{completion_status}}
  • +
  • Status: {{status}}
  • +
+ +

STDERR

+ +
+ {%for line in stderr:%} +

{{line}}

+ {%endfor%} +
+ +

STDOUT

+ +
+ {%for line in stdout:%} +

{{line}}

+ {%endfor%} +
+ + +{%endblock%} + +{%block js%} +{%endblock%} diff --git a/gn2/wqflask/templates/jobs/no-such-job.html b/gn2/wqflask/templates/jobs/no-such-job.html new file mode 100644 index 00000000..6fe7d014 --- /dev/null +++ b/gn2/wqflask/templates/jobs/no-such-job.html @@ -0,0 +1,13 @@ +{%extends "base.html"%} +{%block title%}No Such Job{% endblock%} +{%block css%} +{%endblock%} + +{%block content%} +

No Such Job

+ +

The job with id {{job_id | string}} does not exist

+{%endblock%} + +{%block js%} +{%endblock%} diff --git a/gn2/wqflask/templates/jupyter_notebooks.html b/gn2/wqflask/templates/jupyter_notebooks.html new file mode 100644 index 00000000..afc95a15 --- /dev/null +++ b/gn2/wqflask/templates/jupyter_notebooks.html @@ -0,0 +1,28 @@ +{%extends "base.html"%} + +{%block title%} +Jupyter Notebooks +{%endblock%} + +{%block css%} + +{%endblock%} + +{%block content%} + +
+

Current Notebooks

+ + {%for item in links:%} + + {%endfor%} +
+ +{%endblock%} diff --git a/gn2/wqflask/templates/links.html b/gn2/wqflask/templates/links.html new file mode 100644 index 00000000..6e91adae --- /dev/null +++ b/gn2/wqflask/templates/links.html @@ -0,0 +1,24 @@ +{% extends "base.html" %} + +{% block title %}Links{% endblock %} + +{% block css %} + +{% endblock %} + +{% block content %} + + + +
+ {{ rendered_markdown|safe }} + +
+{% endblock %} \ No newline at end of file diff --git a/gn2/wqflask/templates/list_case_attribute_diffs.html b/gn2/wqflask/templates/list_case_attribute_diffs.html new file mode 100644 index 00000000..f5c7482f --- /dev/null +++ b/gn2/wqflask/templates/list_case_attribute_diffs.html @@ -0,0 +1,59 @@ +{%extends "base.html"%} +{%block title%}List Case Attribute Diffs{%endblock%} + +{%block css%} + + + + + +{%endblock%} + +{%block content%} +
+

List Diffs

+ + {{flash_me()}} + + + + + + + + + + + {%for diff in diffs%} + + + + + {%else%} + + + + {%endfor%} + + +{%endblock%} + +{%block js%} + +{%endblock%} diff --git a/gn2/wqflask/templates/list_case_attribute_diffs_error.html b/gn2/wqflask/templates/list_case_attribute_diffs_error.html new file mode 100644 index 00000000..6ca70984 --- /dev/null +++ b/gn2/wqflask/templates/list_case_attribute_diffs_error.html @@ -0,0 +1,37 @@ +{%extends "base.html"%} +{%block title%}List Case Attribute Diffs{%endblock%} + +{%block css%} + + + + + +{%endblock%} + +{%block content%} +
+

List Diffs

+ + {{flash_me()}} + + {%set the_error = error.json()%} + +

+ + + {{error.status_code}}: {{the_error["error"]}} + {{the_error.error_description}} +

+{%endblock%} + +{%block js%} + +{%endblock%} diff --git a/gn2/wqflask/templates/loading.html b/gn2/wqflask/templates/loading.html new file mode 100644 index 00000000..a6d9ae5e --- /dev/null +++ b/gn2/wqflask/templates/loading.html @@ -0,0 +1,133 @@ +Loading {{ start_vars.tool_used }} Results + + +
+ {% for key, value in start_vars.items() %} + + {% endfor %} +
+
+
+
+ {% if start_vars.tool_used == "Mapping" %} +

Computing the Maps

+
+ Time Elapsed: +
+ Trait Metadata +
+ species = {{ start_vars.species[0] | upper }}{{ start_vars.species[1:] }} +
+ group = {{ start_vars.group[0] | upper }}{{ start_vars.group[1:] }} +
+ trait identifier = {{ start_vars.trait_name }} +
+ n of sample = {{ start_vars.n_samples }} + {% if start_vars.transform != "" %} +
+ transformation = {{ start_vars.transform }} + {% endif %} +
+ hash of sample values = {{ start_vars.vals_hash }} +

+ Mapping Metadata +
+ mapping method = {% if start_vars.method == "gemma" %}GEMMA {% if start_vars.use_loco == "True" %}using LOCO {% endif %}{% else %}{{ start_vars.method }}{% endif %} + {% if start_vars.maf != "" and start_vars.method != "reaper" %} +
+ minor allele frequency lower limit = {{ start_vars.maf }} + {% endif %} +
+ {% if start_vars.covariates != "" and start_vars.method != "reaper" %} + {% set covariate_list = start_vars.covariates.split(",") %} + cofactors = {% for covariate in covariate_list %}{% set this_covariate = covariate.split(":")[0] %}{{ this_covariate }}{% if not loop.last %}, {% endif %}{% endfor %} + {% else %} + cofactors = None + {% endif %} + {% if start_vars.control_marker != "" and start_vars.do_control == "true" and start_vars.method != "gemma" %} +
+ marker covariate = {{ start_vars.control_marker }} + {% endif %} +
+ {% if start_vars.genofile != "" %} + {% set genofile_desc = start_vars.genofile.split(":")[1] %} + genotype file = {{ genofile_desc }} + {% else %} + genotype file = {{ start_vars.group[0] | upper }}{{ start_vars.group[1:] }}.geno + {% endif %} + {% if start_vars.num_perm | int > 0 and start_vars.method != "gemma" %} +
+ n of permutations = {{ start_vars.num_perm }} + {% endif %} + {% if num_bootstrap in start_vars %} + {% if start_vars.num_bootstrap | int > 0 and start_vars.method == "reaper" %} +
+ n of bootstrap = {{ start_vars.num_bootstrap }} + {% endif %} + {% endif %} + {% else %} +

 {{ start_vars.tool_used }} Computation in progress ...

+ {% endif %} +

+
+ +
+ {% if start_vars.vals_diff|length != 0 and start_vars.transform == "" %} +

+ +
+ + {% endif %} +
+
+
+
+
+ + + diff --git a/gn2/wqflask/templates/loading_corrs.html b/gn2/wqflask/templates/loading_corrs.html new file mode 100644 index 00000000..8abd5464 --- /dev/null +++ b/gn2/wqflask/templates/loading_corrs.html @@ -0,0 +1,28 @@ + + + + + Loading Correlation Results + + + + + + + + + +
+

 Correlation Computation in progress ...

+
+ +
+
+ + + + + + diff --git a/gn2/wqflask/templates/mapping_error.html b/gn2/wqflask/templates/mapping_error.html new file mode 100644 index 00000000..8364af3c --- /dev/null +++ b/gn2/wqflask/templates/mapping_error.html @@ -0,0 +1,36 @@ +{%extends "base.html"%} +{%block titl%}Error{%endblock%} +{%block content%} + +{{ header("An error occurred during mapping") }} + +
+

+ {%if error:%} +

+ The following error was raised

+

+
Error message
+
{{error.args[0]}}
+
Error Type
+
{{error_type}}
+
+

+

+ Please contact Zach Sloan (zachary.a.sloan@gmail.com) or Arthur Centeno + (acenteno@gmail.com) about the error. +

+ {%else:%} +

There is likely an issue with the genotype file associated with this group/RISet. Please contact Zach Sloan (zachary.a.sloan@gmail.com) or Arthur Centeno (acenteno@gmail.com) about the data set in question.

+

+
+

+

Try mapping using interval mapping instead; some genotype files with many columns of NAs have issues with GEMMA or R/qtl.

+ {%endif%} +

+
+ + + + +{%endblock%} diff --git a/gn2/wqflask/templates/mapping_results.html b/gn2/wqflask/templates/mapping_results.html new file mode 100644 index 00000000..0e084ba7 --- /dev/null +++ b/gn2/wqflask/templates/mapping_results.html @@ -0,0 +1,698 @@ +{% extends "base.html" %} +{% block title %}Mapping Results{% endblock %} +{% block css %} + + + + + + + + +{% endblock %} +{% from "base_macro.html" import header %} +{% block content %} +
+
+ + {% if temp_trait is defined %} + + {% endif %} + + + + + + + + + {% if output_files is defined %} + + {% endif %} + {% if reaper_version is defined %} + + {% endif %} + + + + + + + + + + + {% if manhattan_plot == True %} + + {% endif %} + + + {% if categorical_vars is defined %} + + {% endif %} + {% if perm_strata is defined %} + + {% endif %} + + + + + + + + + + + + +
+
+

Map Viewer: Whole Genome


+ Population: {{ dataset.group.species|capitalize }} {{ dataset.group.name }}
+ Database: {{ dataset.fullname }}
+ {% if dataset.type == "ProbeSet" %}Trait ID:{% else %}Record ID:{% endif %} {{ this_trait.display_name }}
+ Trait Hash: {{ vals_hash }}
+ {% if dataset.type == "ProbeSet" %} + Gene Symbol: {{ this_trait.symbol }}
+ Location: Chr {{ this_trait.chr }} @ {{ this_trait.mb }} Mb
+ {% endif %} + {% if genofile_string != "" %} + Genotypes: {{ genofile_string.split(":")[1] }}
+ {% endif %} + Current Date/Time: {{ current_datetime }}
+
+ +

+
+ +
+ +
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + +
Chr:  +   + +
View:  + to +
Units:  + + + + ? + +
+ units on the y-axis (0 for default) +
Width:  + pixels (minimum=900) +
+ {% if manhattan_plot == True and selectedChr == -1 %} + + + + + + +
+ Manhattan Plot Color Scheme:  + + + + + +
+ {% endif %} +
+
+ {% if (mapping_method == "reaper" or mapping_method == "rqtl_geno") and nperm > 0 %} + Permutation Test + + ? + +
+ {% endif %} + {% if mapping_method == "reaper" and nboot > 0 %} + Bootstrap Test + + ? + +
+ {% endif %} + {% if mapping_method == "reaper" %} + Allele Effects + + ? + +
+ {% endif %} + SNP Track + + ? + + * +
+ Gene Track *
+ {% if plotScale != "morgan" %} + Haplotype Tracks *
+ {% endif %} + Legend
+ Human Chromosomes ? +
+ * only apply to single chromosome physical mapping +
+
+
+ +
+ +
+
+
+ {{ gifmap|safe }} + + {% if additiveChecked|upper == "ON" %} +
+ A positive additive coefficient (green line) indicates that {{ dataset.group.parlist[1] }} alleles increase trait values. In contrast, a negative additive coefficient (orange line) indicates that {{ dataset.group.parlist[0] }} alleles increase trait values. + {% endif %} +
+
+ {% if mapping_method == "gemma" or mapping_method == "reaper" %} +
+
+
+ + + + + +
+
+
+
+ {% endif %} +
+
+
+ {% if nperm > 0 and permChecked == "ON" %} +

+
+

+ Total of {{ nperm }} permutations  Download Permutation Results +
+ {% endif %} +
+ +
+ {% if selectedChr == -1 %} +
+

Mapping Statistics

+
+ + + + {% if geno_db_exists == "True" %}{% endif %} + +
+
+
+ + + + + +
+
+ {% elif selectedChr != -1 and plotScale =="physic" and (dataset.group.species == 'mouse' or dataset.group.species == 'rat') %} +
+

Interval Analyst

+
+ + + + {% for header in gene_table_header %} + + {% endfor %} + + + + {% for row in gene_table_body %} + + {% for n in range(row|length) %} + {% if n == 0 %} + + {% else %} + + {% endif %} + {% endfor %} + + {% endfor %} + +
{{ header|safe }}
{{ row[n]|safe }}{{ row[n]|safe }}
+
+
+ {% endif %} +
+ + + +{% endblock %} + +{% block js %} + + + + + + + + {% if manhattan_plot == True and selectedChr == -1 %} + + + {% endif %} + + + + + + + + + + + + + + + {% if mapping_method == "gemma" or mapping_method == "reaper" %} + + {% endif %} + + + +{% endblock %} + diff --git a/gn2/wqflask/templates/marker_regression.html b/gn2/wqflask/templates/marker_regression.html new file mode 100644 index 00000000..b633f815 --- /dev/null +++ b/gn2/wqflask/templates/marker_regression.html @@ -0,0 +1,119 @@ +{% from "base_macro.html" import header %} +{% block content %} + {{ header("Mapping", + '{}: {}'.format(this_trait.name, this_trait.description_fmt)) }} + +
+
+

+ Whole Genome Mapping +

+
+ + + +
+
+ + + +
+ +
+
+
+ +
+
+
+

+ Results +

+ + + + + + + + {% if mapping_scale == "centimorgan" %} + + {% else %} + + {% endif %} + + + + + {% for marker in qtl_results %} + {% if (score_type == "LOD" and marker.lod_score > cutoff) or + (score_type == "LRS" and marker.lrs_value > cutoff) %} + + + + {% if score_type == "LOD" %} + + {% else %} + + {% endif %} + + + + + {% endif %} + {% endfor %} + +
Index{{ score_type }}ChrcMMbLocus
+ + {{ loop.index }}{{ '%0.2f' | format(marker.lod_score|float) }}{{ '%0.2f' | format(marker.lrs_value|float) }}{{marker.chr}}{{ '%0.6f' | format(marker.Mb|float) }} + {{ marker.name }} + +
+
+
+ + + +{% endblock %} + +{% block js %} + + + +{% endblock %} diff --git a/gn2/wqflask/templates/metadata/dataset.html b/gn2/wqflask/templates/metadata/dataset.html new file mode 100644 index 00000000..06df6a68 --- /dev/null +++ b/gn2/wqflask/templates/metadata/dataset.html @@ -0,0 +1,157 @@ + + +
+ + + + +
+ +
+ diff --git a/gn2/wqflask/templates/network_graph.html b/gn2/wqflask/templates/network_graph.html new file mode 100644 index 00000000..cff69ac8 --- /dev/null +++ b/gn2/wqflask/templates/network_graph.html @@ -0,0 +1,152 @@ +{% extends "base.html" %} +{% block css %} + + + + +{% endblock %} +{% block content %} +
+

Network Graph

+
+
+
+
+

Visualization Options

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ Focus Trait ? +
+ +
+ Correlation Coefficient ? +
+
+
-1
+ 0 +
1
+
+ + + +
+ Layouts: + +
+ Node Font Size: + + +
+ Edge Width: + + +
+

Download

+ + + + + + +
+ + + +
+
+
+
+
+
+ + +{% endblock %} + +{% block js %} + + + + + + + + + + + + +{% endblock %} diff --git a/gn2/wqflask/templates/new_security/forgot_password.html b/gn2/wqflask/templates/new_security/forgot_password.html new file mode 100644 index 00000000..60a221da --- /dev/null +++ b/gn2/wqflask/templates/new_security/forgot_password.html @@ -0,0 +1,52 @@ +{% extends "base.html" %} +{% block title %}Forgot Password{% endblock %} +{% block content %} + +
+ + +
+ +

Enter your email address and we'll send you a link to reset your password

+ +
+
+
+
+ +
+
+ + +
+
+ + + +
+
+ +
+ +
+ +
+
Has your email address changed?
+ + If you no longer use the email address connected to your account, you can contact us for assistance. + +
+ +
+
+
+
+ + {% endblock %} + +{% block js %} + +{% endblock %} diff --git a/gn2/wqflask/templates/new_security/forgot_password_step2.html b/gn2/wqflask/templates/new_security/forgot_password_step2.html new file mode 100644 index 00000000..1835fd4c --- /dev/null +++ b/gn2/wqflask/templates/new_security/forgot_password_step2.html @@ -0,0 +1,25 @@ +{% extends "base.html" %} +{% block title %}Register{% endblock %} +{% block content %} + + {{ header("Password Reset", "Check your email.") }} + + +
+ + +

You will receive an email with the subject {{ subject }}.

+ +

You must click the link in the email to reset the password.

+ +

If you don't see the email, check your spam folder.

+
+ +{% endblock %} + +{% block js %} + + +{% endblock %} diff --git a/gn2/wqflask/templates/new_security/login_user.html b/gn2/wqflask/templates/new_security/login_user.html new file mode 100644 index 00000000..b8cdf6ef --- /dev/null +++ b/gn2/wqflask/templates/new_security/login_user.html @@ -0,0 +1,119 @@ +{% extends "base.html" %} +{% block title %}Register{% endblock %} +{% block content %} + +
+ + {{ flash_me() }} + +

Sign in here.

+ + {% if redis_is_available: %} +
+ +
+
+ +
+ +
+
+ +
+ + +
+ +
+ +
+ Remember me
+ Import existing collections +
+
+ +
+ +
+ + +
+
+
+ +
+ +

Don't have an account?

+ + {% if redis_is_available: %} + Create a new account + {% else %} +
+

You cannot create an account at this moment.
+ Please try again later.

+
+ {% endif %} + +
+

Login with external services

+ + {% if external_login: %} +
+ {% if external_login["github"]: %} + Login with Github + {% else %} +

Github login is not available right now

+ {% endif %} + + {% if external_login["orcid"]: %} + Login with ORCID + {% else %} +

ORCID login is not available right now

+ {% endif %} +
+ {% else: %} +
+

Sorry, you cannot login with Github or ORCID at this time.

+
+ {% endif %} + + + {% else: %} +
+

You cannot login at this moment using your GeneNetwork account (the authentication service is down).
+ Please try again later.

+
+ {% endif %} + {% if not external_login: %} +
+
+ Note: it is safe to use GeneNetwork without a login. Login is only required for keeping track of + collections and getting access to some types of restricted data. +
+ {% endif %} +
+
+ + {% endblock %} + +{% block css %} + +{% endblock %} + +{% block js %} + +{% endblock %} diff --git a/gn2/wqflask/templates/new_security/not_authenticated.html b/gn2/wqflask/templates/new_security/not_authenticated.html new file mode 100644 index 00000000..ea688346 --- /dev/null +++ b/gn2/wqflask/templates/new_security/not_authenticated.html @@ -0,0 +1,11 @@ +{% extends "base.html" %} +{% block title %}Authentication Needed{% endblock %} +{% block content %} +
+ +

Please contact the data's owner or GN administrators if you believe you should have access to these data.

+
+ +{% endblock %} \ No newline at end of file diff --git a/gn2/wqflask/templates/new_security/password_reset.html b/gn2/wqflask/templates/new_security/password_reset.html new file mode 100644 index 00000000..e21f075c --- /dev/null +++ b/gn2/wqflask/templates/new_security/password_reset.html @@ -0,0 +1,78 @@ +{% extends "base.html" %} +{% block title %}Register{% endblock %} +{% block content %} + + {{ header("Password Reset", "Create a new password.") }} + + +
+ + +
+ + +

Enter your new password

+ + + {% if errors %} +
+ Please note: +
    + {% for error in errors %} +
  • {{error}}
  • + {% endfor %} +
+
+ {% endif %} + +
+ +
+ + + + +
+ +
+ +
+
+ + + +
+ +
+ +
+
+ +
+
+ +
+
+ +
+ +
+
+
+ +{% endblock %} + +{% block js %} + + + +{% endblock %} diff --git a/gn2/wqflask/templates/new_security/register_user.html b/gn2/wqflask/templates/new_security/register_user.html new file mode 100644 index 00000000..c2895517 --- /dev/null +++ b/gn2/wqflask/templates/new_security/register_user.html @@ -0,0 +1,105 @@ +{% extends "base.html" %} +{% block title %}Register{% endblock %} +{% block content %} + + {{ header("Register", "It's fast and easy to make an account.") }} + + +
+ + +
+

Already have an account?

+ + + Sign in using existing account + + +
+ +

Don't have an account?

+ +
Register here
+ + {% if errors %} +
+ Please note: +
    + {% for error in errors %} +
  • {{error}}
  • + {% endfor %} +
+
+ {% endif %} + +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ + + +
+ +
+ +
+
+ +
+
+ +
+
+ +
+ +
+
+
+ +{% endblock %} + +{% block js %} + + + +{% endblock %} diff --git a/gn2/wqflask/templates/new_security/registered.html b/gn2/wqflask/templates/new_security/registered.html new file mode 100644 index 00000000..29889a97 --- /dev/null +++ b/gn2/wqflask/templates/new_security/registered.html @@ -0,0 +1,24 @@ +{% extends "base.html" %} +{% block title %}Register{% endblock %} +{% block content %} + {{ header("Almost Done", "Thanks for registering") }} + +
+ + +

You will receive an email with the subject {{ subject }}.

+ +

You must click the link in the email to complete registration.

+ +

If you don't see the email, check your spam folder.

+
+ +{% endblock %} + +{% block js %} + + + +{% endblock %} diff --git a/gn2/wqflask/templates/new_security/thank_you.html b/gn2/wqflask/templates/new_security/thank_you.html new file mode 100644 index 00000000..d4f5e574 --- /dev/null +++ b/gn2/wqflask/templates/new_security/thank_you.html @@ -0,0 +1,23 @@ +{% extends "base.html" %} +{% block title %}Register{% endblock %} +{% block content %} + {{ header("Thank you", "Thanks for verifying") }} + +
+ + +

Enjoy using the site.

+ +
+ + Go to the homepage +
+ +{% endblock %} + +{% block js %} + + +{% endblock %} diff --git a/gn2/wqflask/templates/new_security/verification_still_needed.html b/gn2/wqflask/templates/new_security/verification_still_needed.html new file mode 100644 index 00000000..1f91fd8d --- /dev/null +++ b/gn2/wqflask/templates/new_security/verification_still_needed.html @@ -0,0 +1,26 @@ +{% extends "base.html" %} +{% block title %}Verification{% endblock %} +{% block content %} + {{ header("Verification", "You still need to verify") }} + +
+ +

You still need to verify your e-mail address before you can sign in.

+ +

We've resent the verificaiton email. + +

Please check for an email with the subject {{ subject }}.

+ +

You must click the link in the email to complete registration.

+ +

If you don't see the email, check your spam folder.

+
+ +{% endblock %} + +{% block js %} + + +{% endblock %} diff --git a/gn2/wqflask/templates/news.html b/gn2/wqflask/templates/news.html new file mode 100644 index 00000000..a615564b --- /dev/null +++ b/gn2/wqflask/templates/news.html @@ -0,0 +1,24 @@ +{% extends "base.html" %} + +{% block title %}News{% endblock %} + +{% block css %} + +{% endblock %} + +{% block content %} + + +
+ {{ rendered_markdown|safe }} + +
+ +{% endblock %} diff --git a/gn2/wqflask/templates/oauth2/create-resource.html b/gn2/wqflask/templates/oauth2/create-resource.html new file mode 100644 index 00000000..479f4152 --- /dev/null +++ b/gn2/wqflask/templates/oauth2/create-resource.html @@ -0,0 +1,89 @@ +{%extends "base.html"%} +{%from "oauth2/profile_nav.html" import profile_nav%} + +{%block title%}Create Resource{%endblock%} +{%block css%} + +{%endblock%} + +{%block content%} +
+ {{profile_nav("resources", user_privileges)}} + + {{flash_me()}} + +
+
+ {%if resource_category_error%} +

+ +   + {{resource_category_error.error}}: + {{resource_category_error.error_message}} +

+ {%else%} +
+ +
+ Resource Category +
+ {%for category in resource_categories%} +
+ + + {{category.resource_category_description}} + +
+ {%endfor%} +
+
+ +
+ Basic Resource Information +
+ + + + The resource name, e.g. the experiment name. + +
+
+ +
+ Access Control +
+ + + + Select whether data in this resource will be publicly viewable. + +
+
+ + + +
+ {%endif%} +
+
+ +
+{%endblock%} diff --git a/gn2/wqflask/templates/oauth2/create-role.html b/gn2/wqflask/templates/oauth2/create-role.html new file mode 100644 index 00000000..f2bff7b4 --- /dev/null +++ b/gn2/wqflask/templates/oauth2/create-role.html @@ -0,0 +1,46 @@ +{%extends "base.html"%} +{%from "oauth2/profile_nav.html" import profile_nav%} +{%from "oauth2/display_error.html" import display_error%} +{%block title%}View User{%endblock%} +{%block content%} +
+ {{profile_nav("roles", user_privileges)}} +

Create Role

+ + {{flash_me()}} + + {%if group_privileges_error is defined%} + {{display_error("Group Privileges", group_privileges_error)}} + {%else%} + {%if "group:role:create-role" in user_privileges%} +
+ Create Group Role +
+ + +
+ + {%for priv in group_privileges%} +
+ +
+ {%endfor%} + + +
+ {%else%} + {{display_error("Privilege", {"error":"PrivilegeError", "error_description": "You do not have sufficient privileges to create a new role."})}} + {%endif%} + {%endif%} +
+{%endblock%} diff --git a/gn2/wqflask/templates/oauth2/data-list-genotype.html b/gn2/wqflask/templates/oauth2/data-list-genotype.html new file mode 100644 index 00000000..c780a583 --- /dev/null +++ b/gn2/wqflask/templates/oauth2/data-list-genotype.html @@ -0,0 +1,166 @@ +{%extends "base.html"%} +{%from "oauth2/profile_nav.html" import profile_nav%} +{%from "oauth2/display_error.html" import display_error%} + +{%block title%}Link Data: Genotype{%endblock%} + +{%block css%} + + + +{%endblock%} + +{%block content%} +
+ {{profile_nav("data", user_privileges)}} + + {{flash_me()}} + +
+ +
+ +
+ +
+ +
+ + +
+ +
+ + + + + + + + + + + + + {%for dataset in datasets:%} + + + + + + + + {%else%} + + + + {%endfor%} + + +
+ + +
+{%endblock%} + +{%block js%} + + +{%endblock%} diff --git a/gn2/wqflask/templates/oauth2/data-list-mrna.html b/gn2/wqflask/templates/oauth2/data-list-mrna.html new file mode 100644 index 00000000..0e163235 --- /dev/null +++ b/gn2/wqflask/templates/oauth2/data-list-mrna.html @@ -0,0 +1,168 @@ +{%extends "base.html"%} +{%from "oauth2/profile_nav.html" import profile_nav%} +{%from "oauth2/display_error.html" import display_error%} + +{%block title%}Link Data: Genotype{%endblock%} + +{%block css%} + + + +{%endblock%} + +{%block content%} +
+ {{profile_nav("data", user_privileges)}} + + {{flash_me()}} + +
+ +
+ +
+ +
+ +
+ + +
+ +
+ + + + + + + + + + + + + + {%for dataset in datasets:%} + + + + + + + + + {%else%} + + + + {%endfor%} + + +
+ + +
+{%endblock%} + +{%block js%} + + +{%endblock%} diff --git a/gn2/wqflask/templates/oauth2/data-list-phenotype.html b/gn2/wqflask/templates/oauth2/data-list-phenotype.html new file mode 100644 index 00000000..8c79c0d6 --- /dev/null +++ b/gn2/wqflask/templates/oauth2/data-list-phenotype.html @@ -0,0 +1,209 @@ +{%extends "base.html"%} +{%from "oauth2/profile_nav.html" import profile_nav%} +{%from "oauth2/display_error.html" import display_error%} + +{%block title%}Link Data: Phenotype{%endblock%} + +{%block css%} + + + +{%endblock%} + +{%block content%} + +
+ {{profile_nav("data", user_privileges)}} + + {{flash_me()}} + +
+ +
+ +
+ +
+ +
+ +
+ {%if dataset_type == "mrna"%} + mRNA: Search + {%else%} + + {{dataset_type}}: Search + + {%endif%} + + + + +
+ +
+ species:{{species_name}} AND + +
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + {%for trait in traits%} + + + + + + + + + + + + + + {%else%} + + + + {%endfor%} + + +
+ +
+ +{%endblock%} + +{%block js%} + + +{%endblock%} diff --git a/gn2/wqflask/templates/oauth2/data-list.html b/gn2/wqflask/templates/oauth2/data-list.html new file mode 100644 index 00000000..8a8f6694 --- /dev/null +++ b/gn2/wqflask/templates/oauth2/data-list.html @@ -0,0 +1,53 @@ +{%extends "base.html"%} +{%from "oauth2/profile_nav.html" import profile_nav%} +{%from "oauth2/display_error.html" import display_error%} +{%block title%}Link Data{%endblock%} +{%block content%} +
+ {{profile_nav("data", user_privileges)}} + + {{flash_me()}} + +
+
+ Search + {%if species_error is defined%} + {{display_error("Species", species_error)}} + {%elif species | length == 0%} + + +   + No list of species to select from + {%else%} +
+ + +
+ +
+ + +
+ + + {%endif%} +
+
+
+{%endblock%} diff --git a/gn2/wqflask/templates/oauth2/display_error.html b/gn2/wqflask/templates/oauth2/display_error.html new file mode 100644 index 00000000..9abe02c4 --- /dev/null +++ b/gn2/wqflask/templates/oauth2/display_error.html @@ -0,0 +1,10 @@ +{%macro display_error(title, the_error)%} + +{{title}}: + + +  +{{the_error.error}}: +{{the_error.error_description}} + +{%endmacro%} diff --git a/gn2/wqflask/templates/oauth2/group.html b/gn2/wqflask/templates/oauth2/group.html new file mode 100644 index 00000000..f4c29d18 --- /dev/null +++ b/gn2/wqflask/templates/oauth2/group.html @@ -0,0 +1,114 @@ +{%extends "base.html"%} +{%from "oauth2/profile_nav.html" import profile_nav%} +{%from "oauth2/display_error.html" import display_error%} +{%block title%}View User{%endblock%} +{%block content%} +
+ {{profile_nav("group", user_privileges)}} + + {{flash_me()}} + + {%if group_error is defined%} +
+ {{display_error("Group", group_error)}} +
+ {%else%} +
+
+ {%if group_join_requests_error is defined %} + {{display_error("Join Requests", group_join_requests_error)}} + {%else%} + + Requests ({{group_join_requests | count}}) + + {%endif%} +
+
+ + + + + + + + + + + + + + + + + + + + {%for key,val in group.group_metadata.items()%} + + + + + {%endfor%} + + +
Group Information
NameMetadataActions
+ {{group.group_name}} + KeyValue + Edit + + Delete +
{{key.split("_") | map("capitalize") | join(" ")}}{{val}}
+
+
+ +
+ + + + + + + + + + + + + {%for user in users%} + + + + + + {%else%} + + + + {%endfor%} + +
Group Users
NameEmailActions
{{user.name}}{{user.email}} + Remove +
+ {%if user_error is defined%} + + +   + {{user_error.error}} + {{user_error.error_description}} + {%else%} + No users found for this group + {%endif%} +
+ +
+ {%endif%} + +
+{%endblock%} diff --git a/gn2/wqflask/templates/oauth2/group_join_or_create.html b/gn2/wqflask/templates/oauth2/group_join_or_create.html new file mode 100644 index 00000000..8255d2f8 --- /dev/null +++ b/gn2/wqflask/templates/oauth2/group_join_or_create.html @@ -0,0 +1,99 @@ +{%extends "base.html"%} +{%from "oauth2/profile_nav.html" import profile_nav%} +{%block title%}Join or Create Group{%endblock%} + +{%block css%} + +{%endblock%} +{%block content%} +
+ {{profile_nav("group", user_privileges)}} + +

Join or Create Group

+ + {{flash_me()}} + + {%if group_join_request is defined and group_join_request.exists %} +

+ +   + You have an active request to join a group. +

+ +

+ You cannot create a group, or request to join a new group until your + currently active request has been either accepted or rejected. +

+ {%else%} +

You can

+ + {%if groups | length > 0 %} +
+

+ For most users, this is the preffered choice. You request access to an + existing group, and the group leader will chose whether or not to add you to + their group.

+ +

You can only be a member of a single group.

+
+ +
+ Request to be added to group +
+ + +
+
+ +
+
+ +

or

+ {%else%} +

+ +   + There an currently no groups to join. +

+ {%endif%} + +
+

+ Creating a new group automatically makes you that group's administrator. +

+ +

You can only be a member of a single group.

+
+ +
+ Create a new group +
+ + + + Name of the group. + +
+
+ + + + A description to help identify the purpose/goal of the group + +
+
+ +
+
+ {%endif%} +
+{%endblock%} diff --git a/gn2/wqflask/templates/oauth2/join-requests.html b/gn2/wqflask/templates/oauth2/join-requests.html new file mode 100644 index 00000000..833b4e93 --- /dev/null +++ b/gn2/wqflask/templates/oauth2/join-requests.html @@ -0,0 +1,73 @@ +{%extends "base.html"%} +{%from "oauth2/profile_nav.html" import profile_nav%} +{%from "oauth2/display_error.html" import display_error%} +{%block title%}View User{%endblock%} +{%block content%} +
+ {{profile_nav("group", user_privileges)}} + + {{flash_me()}} + +
+
+ + + + + + + + + + + + + + + {%for request in requests%} + + + + + + + + + + {%else%} + + + + {%endfor%} + +
Join Requests
NameEmailRequest Date/TimeStatusMessageActions
{{request.name}}{{request.email}}{{datetime_string(request.timestamp)}}{{request.status}}{{request.message}} +
+ + +
+
+
+ + +
+
+ {%if error is defined %} + {{display_error("Join Requests", error)}} + {%else%} + No one has requested to join your group yet. + {%endif%} +
+
+
+
+{%endblock%} diff --git a/gn2/wqflask/templates/oauth2/list_roles.html b/gn2/wqflask/templates/oauth2/list_roles.html new file mode 100644 index 00000000..a4061fca --- /dev/null +++ b/gn2/wqflask/templates/oauth2/list_roles.html @@ -0,0 +1,80 @@ +{%extends "base.html"%} +{%from "oauth2/profile_nav.html" import profile_nav%} +{%from "oauth2/display_error.html" import display_error%} +{%block title%}View User{%endblock%} +{%block content%} +
+ {{profile_nav("roles", user_privileges)}} +

Roles

+ + {{flash_me()}} + +
+
+

Your System-Level Roles

+
    + {%for role in roles %} +
  • + {{role.role_name}} +
  • + {%else%} +
  • +   + No roles attached to this user +
  • + {%endfor%} +
+
+ +
+

Group-Wide Roles

+ + {%if "group:role:create-role" in user_privileges%} + New Group Role + {%endif%} + + {%if group_roles_error is defined%} + {{display_error("Group Roles", group_role_error)}} + {%else%} + + + + + + + + + + {%for grole in group_roles%} + + + + + {%else%} + + + + {%endfor%} + +
Group Roles
Role NameActions
{{grole.role.role_name}} + + View + +
+ + +   + No group roles found +
+ {%endif%} +
+ +
+ +
+{%endblock%} diff --git a/gn2/wqflask/templates/oauth2/login.html b/gn2/wqflask/templates/oauth2/login.html new file mode 100644 index 00000000..eaa1a192 --- /dev/null +++ b/gn2/wqflask/templates/oauth2/login.html @@ -0,0 +1,47 @@ +{%extends "base.html"%} +{%block title%}Login{%endblock%} +{%block content%} +
+

Sign in here.

+ +
+
+ Sign in with Genenetwork + {{flash_me()}} +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+
+ +
+
+
+
+
+{%endblock%} diff --git a/gn2/wqflask/templates/oauth2/masquerade.html b/gn2/wqflask/templates/oauth2/masquerade.html new file mode 100644 index 00000000..48ec6cee --- /dev/null +++ b/gn2/wqflask/templates/oauth2/masquerade.html @@ -0,0 +1,39 @@ +{%extends "base.html"%} +{%from "oauth2/profile_nav.html" import profile_nav%} +{%from "oauth2/display_error.html" import display_error%} +{%block title%}Masquerade As{%endblock%} +{%block content%} +
+ {{profile_nav("masquerade", user_privileges)}} + + {{flash_me()}} + + {%if users_error is defined%} + {{display_error("Users", users_error)}} + {%else%} +
+
+
+ Masquerade As +
+ + +
+
+ +
+
+
+
+ {%endif%} +
+{%endblock%} diff --git a/gn2/wqflask/templates/oauth2/profile_nav.html b/gn2/wqflask/templates/oauth2/profile_nav.html new file mode 100644 index 00000000..aa752905 --- /dev/null +++ b/gn2/wqflask/templates/oauth2/profile_nav.html @@ -0,0 +1,64 @@ +{%macro profile_nav(calling_page, user_sys_privileges)%} + + + +{%endmacro%} diff --git a/gn2/wqflask/templates/oauth2/register_user.html b/gn2/wqflask/templates/oauth2/register_user.html new file mode 100644 index 00000000..27ccbd30 --- /dev/null +++ b/gn2/wqflask/templates/oauth2/register_user.html @@ -0,0 +1,62 @@ +{%extends "base.html"%} +{%block title%}Register New User{%endblock%} +{%block content%} +
+

Register User

+ +
+
+ Register User + {{flash_me()}} +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+
+ +
+
+
+
+
+{%endblock%} diff --git a/gn2/wqflask/templates/oauth2/request_error.html b/gn2/wqflask/templates/oauth2/request_error.html new file mode 100644 index 00000000..e6ed5fff --- /dev/null +++ b/gn2/wqflask/templates/oauth2/request_error.html @@ -0,0 +1,32 @@ +{%extends "base.html"%} +{%from "oauth2/profile_nav.html" import profile_nav%} +{%block title%}View User{%endblock%} +{%block content%} +
+ {{profile_nav("error", user_privileges)}} +

ERROR

+ + {{flash_me()}} + +
+ +
+
+
Error code
+
{{response.status}}[{{response.status_code}}]
+ +
URI
+
{{response.url}}
+ +
Content Type
+
{{response.content_type or "-"}}
+ +
{{response.content}}
+
{{response.content}}
+
+
+ +
+ +
+{%endblock%} diff --git a/gn2/wqflask/templates/oauth2/resources.html b/gn2/wqflask/templates/oauth2/resources.html new file mode 100644 index 00000000..c52043db --- /dev/null +++ b/gn2/wqflask/templates/oauth2/resources.html @@ -0,0 +1,58 @@ +{%extends "base.html"%} +{%from "oauth2/profile_nav.html" import profile_nav%} +{%block title%}View User{%endblock%} +{%block content%} +
+ {{profile_nav("resources", user_privileges)}} +

Resources

+ + {{flash_me()}} + +
+ + +
+ + + + + + + + + + {%for resource in resources %} + + + + + {%else%} + + + + {%endfor%} + +
Resources
NameCategory
+ + {{resource.resource_name}} + + {{resource.resource_category.resource_category_key}}
+   + + The user has no access to any resource. + +
+
+ +
+ +
+{%endblock%} diff --git a/gn2/wqflask/templates/oauth2/role.html b/gn2/wqflask/templates/oauth2/role.html new file mode 100644 index 00000000..c33c93ee --- /dev/null +++ b/gn2/wqflask/templates/oauth2/role.html @@ -0,0 +1,56 @@ +{%extends "base.html"%} +{%from "oauth2/profile_nav.html" import profile_nav%} +{%block title%}View User{%endblock%} +{%block content%} +
+ {{profile_nav("roles", user_privileges)}} +

Role: {{role.role_name}}

+ + {{flash_me()}} + +
+
+
+
+ {{role.role_name}} +
+
+ + + + + + {%for privilege in role.privileges:%} + + + + + {%else%} + + + + + {%endfor%} + +
privilege iddescription
{{privilege.privilege_id}}{{privilege.privilege_description}}
+ +   + + No privileges found for this role. +
+
+ +
+
+ +
+ +
+{%endblock%} diff --git a/gn2/wqflask/templates/oauth2/view-group-role.html b/gn2/wqflask/templates/oauth2/view-group-role.html new file mode 100644 index 00000000..5da023bf --- /dev/null +++ b/gn2/wqflask/templates/oauth2/view-group-role.html @@ -0,0 +1,102 @@ +{%extends "base.html"%} +{%from "oauth2/profile_nav.html" import profile_nav%} +{%from "oauth2/display_error.html" import display_error%} +{%block title%}View User{%endblock%} +{%block content%} +
+ {{profile_nav("roles", user_privileges)}} +

View Group Role

+ + {{flash_me()}} + +
+
+

Role Details

+ {%if group_role_error is defined%} + {{display_error("Group Role", group_role_error)}} + {%else%} + + + + + + + + + + + {%for privilege in group_role.role.privileges%} + + + + + + {%endfor%} + +
Details for '{{group_role.role.role_name}}' Role
PrivilegeDescriptionAction
{{privilege.privilege_id}}{{privilege.privilege_description}} +
+ + +
+
+ {%endif%} +
+ +
+

Other Privileges

+ + + + + + + + + + + + {%for priv in group_privileges%} + + + + + + {%else%} + + + + {%endfor%} + +
Other Privileges not Assigned to this Role
PrivilegeDescriptionAction
{{priv.privilege_id}}{{priv.privilege_description}} +
+ + +
+
+ + +   + All privileges assigned! +
+
+ +
+ +
+{%endblock%} diff --git a/gn2/wqflask/templates/oauth2/view-resource.html b/gn2/wqflask/templates/oauth2/view-resource.html new file mode 100644 index 00000000..275fcb24 --- /dev/null +++ b/gn2/wqflask/templates/oauth2/view-resource.html @@ -0,0 +1,352 @@ +{%extends "base.html"%} +{%from "oauth2/profile_nav.html" import profile_nav%} +{%from "oauth2/display_error.html" import display_error%} +{%block title%}View User{%endblock%} +{%block content%} +
+ {{profile_nav("resources", user_privileges)}} +

Resources

+ + {{flash_me()}} + +
+ + {%if resource_error is defined %} + {{display_error("Resource", resource_error)}} + {%else%} +
+

Resource Details

+ + + + + + + + + + + + + + + + + + + +
Resource: {{resource.resource_name}}
NameCategoryActions
{{resource.resource_name}}{{resource.resource_category.resource_category_description}} +
+ +
+ {%if resource.public%} + + {%else%} + + {%endif%} +
+
+
+ Edit + + Delete +
+
+ +
+

Resource Data

+ + + + + {%if resource.resource_category.resource_category_key == "phenotype"%} + + + + {%endif%} + + + + + + + + {%for data_item in resource.resource_data:%} + + {%if resource.resource_category.resource_category_key == "phenotype"%} + + + + {%endif%} + + + + + {%else%} + + + + {%endfor%} + +
Resource Data
TraitDescriptionYearDataset NameFull NameActions
+ + {{data_item.PublishXRefId}} + + {{data_item.description}} + {%if data_item.PubMed_ID%} + + {{data_item.Year}} + + {%else%} + {{data_item.Year}} + {%endif%} + + + {{data_item.dataset_name}} + + {{data_item.dataset_fullname}} +
+ + + +
+
+ + +   + No linked data. +
+
+ + + + + +
+
+ +
+

Unlinked Data

+ + + + + {%if resource.resource_category.resource_category_key == "phenotype"%} + + + + {%endif%} + + + + + + + {%if unlinked_error is defined%} + {{display_error("Unlinked Data Error", unlinked_error)}} + {%else%} + {%for data_item in unlinked_data:%} + + {%if resource.resource_category.resource_category_key == "phenotype"%} + + + + {%endif%} + + + + + {%else%} + + +   + No data to link. + {%endfor%} + {%endif%} + +
Link Data
TraitDescriptionYearDataset NameDataset FullNameActions
+ + {{data_item.PublishXRefId}} + + {{data_item.description}} + {%if data_item.PubMed_ID%} + + {{data_item.Year}} + + {%else%} + {{data_item.Year}} + {%endif%} + + + {{data_item.dataset_name}} + + {{data_item.dataset_fullname}} +
+ + + + +
+
+
+ +
+

User Roles

+ {%if users_n_roles_error is defined%} + {{display_error("Users and Roles", users_n_roles_error)}} + {%else%} + + + + + + + + + + + + {%for user_row in users_n_roles%} + + + + + + + + {%for grole in user_row.roles%} + + + + + {%endfor%} + {%else%} + + + + {%endfor%} + +
User Roles
User EmailUser NameUser GroupAssigned Roles
{{user_row.user.email}}{{user_row.user.name}} + {{user_row.user_group.group_name}}RoleAction
+ + {{grole.role_name}} + + +
+ + + +
+
+ + +   + + There are no users assigned any role for this resource. + +
+ {%endif%} +
+ +
+

Assign

+ {%if group_roles_error is defined%} + {{display_error("Group Roles", group_roles_error)}} + {%elif users_error is defined%} + {{display_error("Users", users_error)}} + {%else%} +
+ +
+ + +
+
+ + + + {%for user in users%} + + {%endfor%} + +
+ + +
+ {%endif%} +
+ {%endif%} + +
+ +
+{%endblock%} diff --git a/gn2/wqflask/templates/oauth2/view-user.html b/gn2/wqflask/templates/oauth2/view-user.html new file mode 100644 index 00000000..34526b14 --- /dev/null +++ b/gn2/wqflask/templates/oauth2/view-user.html @@ -0,0 +1,48 @@ +{%extends "base.html"%} +{%from "oauth2/profile_nav.html" import profile_nav%} +{%block title%}View User{%endblock%} +{%block content%} +
+ {{profile_nav("dashboard", user_privileges)}} +

View User

+ + {{flash_me()}} + +
+
+ {%if user_details%} +

Name: {{user_details.name}}

+

E-Mail: {{user_details.email}}

+ {%if user_details.group%} +

Group:{{user_details.group.group_name}}

+ {%else%} +

+ +   + User is not a member of a group. +

+ + {%if group_join_request is defined and group_join_request.exists %} +

+ +   + You have an active join request to a group. +

+ {%else%} +

+ Join or Create group +

+ {%endif%} + + {%endif%} + {%else%} +

No details found.

+ {%endif%} +
+ +
+ +
+{%endblock%} diff --git a/gn2/wqflask/templates/pair_scan_results.html b/gn2/wqflask/templates/pair_scan_results.html new file mode 100644 index 00000000..dbd90bc7 --- /dev/null +++ b/gn2/wqflask/templates/pair_scan_results.html @@ -0,0 +1,114 @@ +{% extends "base.html" %} +{% block title %}Pair Scan{% endblock %} +{% block css %} + + + + + +{% endblock %} + +{% block content %} + +{{ header("Mapping", + '{}: {}'.format(this_trait.name, this_trait.description_fmt)) }} + +
+
+

+ Pair Scan +

+
+
+
+
+
+

+ Results +

+ + + + + + + + + + + + + + + + + + + + + + {% for row in table_data %} + + + + + + + + + + {% endfor %} + +
Interval 1LODInterval 2
PositionFlanking MarkersPositionFlanking Markers
ProximalDistalProximalDistal
{{ row.pos1 }}{{ row.proximal1 }}{{ row.distal1 }}{{ row.lod }}{{ row.pos2 }}{{ row.proximal2 }}{{ row.distal2 }}
+
+
+ +{% endblock %} + +{% block js %} + + + + + + + + + + + + +{% endblock %} diff --git a/gn2/wqflask/templates/partial_correlations/pcorrs_error.html b/gn2/wqflask/templates/partial_correlations/pcorrs_error.html new file mode 100644 index 00000000..8d6c4bbe --- /dev/null +++ b/gn2/wqflask/templates/partial_correlations/pcorrs_error.html @@ -0,0 +1,65 @@ +{% extends "base.html" %} +{% block title %}Error: {{message}}{% endblock %} +{% block content %} + + +
+
+
+
+ + + +

ERROR

+ +

+ This error is not what we wanted to see. Unfortunately errors + are part of all software systems and we need to resolve this + together. +

+

+ It is important to report this ERROR so we can fix it for everyone. +

+ +

+ Report to the GeneNetwork team by recording the steps you take + to reproduce this ERROR. Next to those steps, copy-paste below + stack trace, either as + a new + issue or E-mail this full page to one of the developers + directly. +

+
+ +

+ GeneNetwork error:
+ {{message}} +

+ + {%if command_id %} +

+ Please provide the following information to help with + troubleshooting:
+ Command ID: {{command_id}} +

+ {%endif%} + +

+ To check if this already a known issue, search the + issue + tracker. +

+ + Toggle full stack trace +
+
+	  GeneNetwork {{ version }} {% for line in stack %} {{ line }}
+	  {% endfor %}
+	
+
+
+
+
+ + +{% endblock %} diff --git a/gn2/wqflask/templates/partial_correlations/pcorrs_poll_results.html b/gn2/wqflask/templates/partial_correlations/pcorrs_poll_results.html new file mode 100644 index 00000000..38577c32 --- /dev/null +++ b/gn2/wqflask/templates/partial_correlations/pcorrs_poll_results.html @@ -0,0 +1,19 @@ +{%extends "base.html"%} + +{%block title%}Partial Correlations:{%endblock%} + +{%block css%} + +{%endblock%} + +{%block content%} + +
+
+

Computing partial correlations...

+ Image indicating computation of partial correlations is ongoing +
+
+{%endblock%} diff --git a/gn2/wqflask/templates/partial_correlations/pcorrs_results_presentation.html b/gn2/wqflask/templates/partial_correlations/pcorrs_results_presentation.html new file mode 100644 index 00000000..dac02397 --- /dev/null +++ b/gn2/wqflask/templates/partial_correlations/pcorrs_results_presentation.html @@ -0,0 +1,261 @@ +{%extends "base.html"%} + +{%block title%}Partial Correlations:{%endblock%} + +{%block css%} + + + + +{%endblock%} + +{%block content%} +
+

+ Primary Trait

+ + {{primary["dataset_type"]}}/{{primary["trait_name"]}} + [{{primary["symbol"] }} on Chr {{primary["chr"]}} @ {{primary["mb"]}}]: + {{primary["description"]}} + --- FROM: {{primary["dataset_name"]}} +

+

Control Traits

+ {%for trait in controls:%} + + {{trait["dataset_type"]}}/{{trait["trait_name"]}} + [{{trait["symbol"] }} on Chr {{trait["chr"]}} @ {{trait["mb"]}}]: + {{trait["description"]}} + --- FROM: {{trait["dataset_name"]}}
+ {%endfor%} +

+ +
+ {%if dataset_type == "Publish":%} + + + + + + + + + + + + + + + + + + + + {%for idx, trait in enumerate(correlations, start=1):%} + + + + + + + + + + + + + + + {%endfor%} + +
+ IndexRecordPhenotypeAuthorsYearNPartial {%if "spearman" in (method | lower):%}rho{%else:%}r{%endif%}p(partial {%if "spearman" in (method | lower):%}rho{%else:%}r{%endif%}){%if "spearman" in (method | lower):%}rho{%else:%}r{%endif%}p({%if "spearman" in (method | lower):%}rho{%else:%}r{%endif%})delta {%if "spearman" in (method | lower):%}rho{%else:%}r{%endif%}
+ + {{idx}} + + {{trait["trait_name"]}} + + + {{trait["post_publication_description"]}}{{trait["authors"]}}{{trait["year"]}}{{trait["noverlap"]}} + {{format_number(trait.get("partial_corr"))}} + + {{format_number(trait.get("partial_corr_p_value"))}} + + {{format_number(trait.get("corr"))}} + + {{format_number(trait.get("corr_p_value"))}} + + {{format_number(trait.get("delta"))}} +
+ {%endif%} + + {%if dataset_type == "Geno":%} + + + + + + + + + + + + + + + + + + + {%for idx, trait in enumerate(correlations, start=1):%} + + + + + + + + + + + + + + {%endfor%} + +
IndexLocusChrMegabaseNPartial {%if "spearman" in (method | lower):%}rho{%else:%}r{%endif%}p(partial {%if "spearman" in (method | lower):%}rho{%else:%}r{%endif%}){%if "spearman" in (method | lower):%}rho{%else:%}r{%endif%}p({%if "spearman" in (method | lower):%}rho{%else:%}r{%endif%})delta {%if "spearman" in (method | lower):%}rho{%else:%}r{%endif%}
+ + {{idx}} + + {{trait["trait_name"]}} + + {{trait["chr"]}}{{trait["mb"]}}{{trait["noverlap"]}} + {{format_number(trait.get("partial_corr"))}} + + {{format_number(trait.get("partial_corr_p_value"))}} + + {{format_number(trait.get("corr"))}} + + {{format_number(trait.get("corr_p_value"))}} + + {{format_number(trait.get("delta"))}} +
+ {%endif%} + + {%if dataset_type == "ProbeSet":%} + + + + + + + + + + + + + + + + + + + + + + + + + + + {%for idx, trait in enumerate(correlations, start=1):%} + + + + + + + + + + + + + + + + + + + + + + {%endfor%} + +
IndexRecordGene IDHomologene IDSymbolDescriptionChrMegabaseMean ExprNSample Partial {%if "spearman" in (method | lower):%}rho{%else:%}r{%endif%}Sample p(partial {%if "spearman" in (method | lower):%}rho{%else:%}r{%endif%})Sample {%if "spearman" in (method | lower):%}rho{%else:%}r{%endif%}Sample p({%if "spearman" in (method | lower):%}rho{%else:%}r{%endif%})delta {%if "spearman" in (method | lower):%}rho{%else:%}r{%endif%}Lit CorrTissue {%if "spearman" in (method | lower):%}rho{%else:%}r{%endif%}Tissue p({%if "spearman" in (method | lower):%}rho{%else:%}r{%endif%})
+ + {{idx}} + + {{trait["trait_name"]}} + + {{trait["geneid"]}}{{trait["homologeneid"]}}{{trait["symbol"]}}{{trait["description"]}}{{trait["chr"]}}{{trait["mb"]}}{{trait["mean_expr"]}}{{trait["noverlap"]}} + {{format_number(trait.get("partial_corr"))}} + + {{format_number(trait.get("partial_corr_p_value"))}} + + {{format_number(trait.get("corr"))}} + + {{format_number(trait.get("corr_p_value"))}} + + {{format_number(trait.get("delta"))}} + + {{format_number(trait.get("l_corr"))}} + + {{format_number(trait.get("tissue_corr"))}} + + {{format_number(trait.get("tissue_p_value"))}} +
+ {%endif%} + +
+
+{%endblock%} + +{%block js%} +{%if step == "select-corr-method":%} + + +{%endif%} +{%endblock%} diff --git a/gn2/wqflask/templates/partial_correlations/pcorrs_results_with_target_traits.html b/gn2/wqflask/templates/partial_correlations/pcorrs_results_with_target_traits.html new file mode 100644 index 00000000..c1ef6001 --- /dev/null +++ b/gn2/wqflask/templates/partial_correlations/pcorrs_results_with_target_traits.html @@ -0,0 +1,115 @@ +{%extends "base.html"%} + +{%block title%}Partial Correlations:{%endblock%} + +{%block css%} + + + + + +{%endblock%} + +{%block content%} +
+

+ Primary Trait

+ + {{primary["dataset_type"]}}/{{primary["trait_name"]}} + [{{primary["symbol"] }} on Chr {{primary["chr"]}} @ {{primary["mb"]}}]: + {{primary["description"]}} + --- FROM: {{primary["dataset_name"]}} +

+

Control Traits

+ {%for trait in controls:%} + + {{trait["dataset_type"]}}/{{trait["trait_name"]}} + [{{trait["symbol"] }} on Chr {{trait["chr"]}} @ {{trait["mb"]}}]: + {{trait["description"]}} + --- FROM: {{trait["dataset_name"]}}
+ {%endfor%} +

+ + + + + + + + + + + + {%if method == "spearmans":%} + + + + + + {%else:%} + + + + + + {%endif%} + + + + + {%for idx, trait in enumerate(pcorrs, start=1):%} + + + + + + + + + + + + + + + {%else:%} + + + + {%endfor%} + +
_IndexDatabaseRecordSymbolDescriptionNPartial rhop(partial rho)rhop(rho)delta rhoPartial rp(partial r)rp(r)delta r
+ + {{idx}}{{trait["dataset_name"]}} + + {{trait["trait_name"]}} + + {{trait["symbol"]}}{{trait["description"]}}{{trait["noverlap"]}}{{format_number(trait["partial_corr"])}}{{format_number(trait["partial_corr_p_value"])}}{{format_number(trait["corr"])}}{{format_number(trait["corr_p_value"])}}{{format_number(trait["delta"])}}
+ No correlations were computed +
+ +
+{%endblock%} + +{%block js%} + +{%endblock%} diff --git a/gn2/wqflask/templates/partial_correlations/pcorrs_select_operations.html b/gn2/wqflask/templates/partial_correlations/pcorrs_select_operations.html new file mode 100644 index 00000000..fe7f8cd4 --- /dev/null +++ b/gn2/wqflask/templates/partial_correlations/pcorrs_select_operations.html @@ -0,0 +1,167 @@ +{%extends "base.html"%} + +{%block title%}Partial Correlations:{%endblock%} + +{%block css%} + + + + + +{%endblock%} + +{%block content%} +
+
+ {%with messages = get_flashed_messages(with_categories=true)%} + {%if messages:%} +
    + {%for category, message in messages:%} +
  • {{message}}
  • + {%endfor%} +
+ {%endif%} + {%endwith%} + + +

Partial Correlation

+
Please select one primary trait, one to three control traits, and at least one target trait.
+
+ + + + + + + + + + + + + + + + + + + + {%for trait in traits:%} + + + + + + + + + + + + + + {%endfor%} + +
Primary (X)Controls (Z)Targets (Y)IgnoredDatasetTrait IDSymbolDescriptionLocationMeanMax LRSMax LRS Location Chr and Mb
+ + + + + + + + {{trait.get("dataset", "_")}} + {{trait.get("trait_name", "_")}}{{trait.get("symbol", "_")}}{{trait.get("description", "_")}}{{trait.get("location", "_")}}{{trait.get("mean", "_")}}{{trait.get("lrs", "_")}}{{trait.get("lrs_location", "_")}}
+ +
+

Compute partial correlations for target selected above:

+ + + +
+ +

OR

+

Compute partial correlation for each trait in the database below:

+ +
+ + +
+ +
+ + +
+ +
+ + +
+ + +
+
+{%endblock%} + +{%block js%} + +{%endblock%} diff --git a/gn2/wqflask/templates/pca_scree_plot.html b/gn2/wqflask/templates/pca_scree_plot.html new file mode 100644 index 00000000..74eb2c15 --- /dev/null +++ b/gn2/wqflask/templates/pca_scree_plot.html @@ -0,0 +1,85 @@ + + + + + + + + + + +
+

Scree Plot

+
Review more on scree plots.
+
+
+ + + + + diff --git a/gn2/wqflask/templates/phenotype.html b/gn2/wqflask/templates/phenotype.html new file mode 100644 index 00000000..4f4fba6e --- /dev/null +++ b/gn2/wqflask/templates/phenotype.html @@ -0,0 +1,136 @@ +{% extends "base.html" %} + +{% block css %} + +{% endblock %} + +{% block title %}Phenotype: {{ name }}{% endblock %} + +{% block content %} + +{% set published_p = "http://rdf.ncbi.nlm.nih.gov/pubmed" in metadata.references.id %} + +

+ Phenotype: {{ metadata.traitName }} ({{ metadata.abbreviation }}) +

+ +
+ + + + + + + + + + + + + + + + {% if metadata.creator %} + + + + + {% if metadata.references.id %} + + + + + {% endif %} + + + + + + + + + + + + + + + + + + + + + {% if metadata.locus %} + + + + + {% endif %} + {% if metadata.references.id %} + + + + + {% endif %} +
Species{{ metadata.species or "N/A" }}
Group{{ metadata.group or "N/A" }}
Phenotype{{ metadata.description or "N/A"}}
Authors + {% if metadata.creator is iterable %} + {{ metadata.creator |join(", ") }} + {% for creator in metadata.creator %} + {{ creator }} + {% endfor %} + {% else %} + metadata.creator + {% endif %} + {% endif %} +
+ Publication + {% if published_p == False %} + (unpublished) + {% endif %} + + + {% if metadata.references.title %} + {{ metadata.references.title }}. + {% endif %} + + {% if metadata.references.creator %} + {{ ', '.join(metadata.references.creator) }}. + {% endif %} + {{ metadata.references.year }} + {{ metadata.references.month }} + {% if metadata.references.volume and metadata.references.page %} + {{ metadata.references.volume }}:{{ metadata.references.page }} + {% endif %} + + + + {% if published_p %} + PubMed + {% else %} + GN RDF Page + {% endif %} + + +
Database + {% for database in metadata.dataset %} + {% set dataset_url = url_for('get_dataset', name=database.identifier)%} + {{ database.prefLabel }}
+ {% endfor %} +
Mean{{ metadata.mean or "N/A"}}
Peak -logP{{ metadata.lodScore or "N/A"}}
Effect Size{{ metadata.additive or "N/A"}}
Peak LocationChr{{ metadata.locus.chromosome }}: {{ metadata.locus.mb }}
Resource Links + + {% if published_p %} + PubMed + {% else %} + GN RDF Page + {% endif %} + +
+
+ + +{% endblock %} diff --git a/gn2/wqflask/templates/policies.html b/gn2/wqflask/templates/policies.html new file mode 100644 index 00000000..e36c9e08 --- /dev/null +++ b/gn2/wqflask/templates/policies.html @@ -0,0 +1,23 @@ +{% extends "base.html" %} + +{% block title %}Links{% endblock %} + +{% block css %} + +{% endblock %} + +{% block content %} + + +
+ {{ rendered_markdown|safe }} + +
+{% endblock %} \ No newline at end of file diff --git a/gn2/wqflask/templates/publication.html b/gn2/wqflask/templates/publication.html new file mode 100644 index 00000000..556d184f --- /dev/null +++ b/gn2/wqflask/templates/publication.html @@ -0,0 +1,62 @@ +{% extends "base.html" %} + +{% block css %} + +{% endblock %} + +{% block title %}Title: {{metadata.title}}{% endblock %} + +{% block content %} + + + +
+ {% if metadata == {} %} +

We appreciate your interest, but unfortunately, we don't have any additional information available for: {{ name }}. If you have any other questions or need assistance with something else, please feel free to reach out to us.

+ {% else %} + + {% endif %} + +
+ +{% endblock %} diff --git a/gn2/wqflask/templates/references.html b/gn2/wqflask/templates/references.html new file mode 100644 index 00000000..04e60361 --- /dev/null +++ b/gn2/wqflask/templates/references.html @@ -0,0 +1,19 @@ +{% extends "base.html" %} +{% block title %}Reference{% endblock %} +{% block css %} + +{% endblock %} +{% block content %} + +
+ {{ rendered_markdown|safe }} +
+ +{% endblock %} \ No newline at end of file diff --git a/gn2/wqflask/templates/search_autocomplete.html b/gn2/wqflask/templates/search_autocomplete.html new file mode 100644 index 00000000..b8d0514e --- /dev/null +++ b/gn2/wqflask/templates/search_autocomplete.html @@ -0,0 +1,249 @@ +< + + + + + + + + + + + +
+

hello there

+
+
+ +
+ +
+
+ + + + \ No newline at end of file diff --git a/gn2/wqflask/templates/search_error.html b/gn2/wqflask/templates/search_error.html new file mode 100644 index 00000000..df8d9dff --- /dev/null +++ b/gn2/wqflask/templates/search_error.html @@ -0,0 +1,20 @@ +{% extends "base.html" %} +{% block title %}Search Results{% endblock %} +{% block css %} + +{% endblock %} +{% block content %} + + {{ header("Error") }} + +
+ +

You entered at least one incorrect search command, or your search term was not applicable to the dataset type.

+

Some search terms may not be applicable to Phenotype or Genotype datasets (RIF, etc)

+
+ +
+ + + +{% endblock %} diff --git a/gn2/wqflask/templates/search_history.html b/gn2/wqflask/templates/search_history.html new file mode 100644 index 00000000..11586c0a --- /dev/null +++ b/gn2/wqflask/templates/search_history.html @@ -0,0 +1,297 @@ +< + + + + + + + + + + + +
+
+

+ this is the title +

+
+
+
+ +
+
+
+ + + + \ No newline at end of file diff --git a/gn2/wqflask/templates/search_result_page.html b/gn2/wqflask/templates/search_result_page.html new file mode 100644 index 00000000..cade198a --- /dev/null +++ b/gn2/wqflask/templates/search_result_page.html @@ -0,0 +1,453 @@ +{% extends "base.html" %} +{% block title %}Search Results{% endblock %} +{% block css %} + + + + + + + +{% endblock %} +{% block content %} + +
+ + +
+ + +

We searched {{ dataset.fullname }} +
+ to find all records + {% if go_term is not none %} + with Gene Ontology ID GO:{{ go_term }}. + {% else %} + {% for word in search_terms %} + {% if word.key|lower == "rif" %} + with GeneRIF containing {{ word.search_term[0] }}{% if loop.last %}{% else %} and {% endif %} + {% elif word.key|lower == "go" %} + with Gene Ontology ID {{ word.search_term[0] }}{% if loop.last %}{% else %} and {% endif %} + {% elif word.key|lower == "wiki" %} + with GeneWiki containing {{ word.search_term[0] }}{% if loop.last %}{% else %} and {% endif %} + {% elif word.key|lower == "mean" %} + with mean between {{ word.search_term[0] }} and {{ word.search_term[1] }}{% if loop.last %}{% else %} and {% endif %} + {% elif word.key|lower == "range" %} + with RANGE between {{ word.search_term[0] }} and {{ word.search_term[1] }}{% if loop.last %}{% else %} and {% endif %} + {% elif word.key|lower == "lrs" or word.key|lower == "lod" or word.key|lower == "translrs" or word.key|lower == "cislrs" or word.key|lower == "translod" or word.key|lower == "cislod" %} + {% if word.search_term|length == 1 %} + with {% if word.key|lower == "translrs" %}trans{% elif word.key|lower == "cislrs" %}cis{% endif %}LRS {% if word.separator == ">" %} greater than {% elif word.separator == "<" %} less than {% elif word.separator == ">=" %} greater than or equal to {% elif word.separator == "<=" %} less than or equal to {% endif %} {{ word.search_term[0] }}{% if loop.last %}{% else %} and {% endif %} + {% elif word.search_term|length == 2 %} + with {{ word.key|upper }} between {{ word.search_term[0] }} and {{ word.search_term[1] }}{% if loop.last %}{% else %} and {% endif %} + {% elif word.search_term|length == 3 %} + with {{ word.key|upper }} between {{ word.search_term[0] }} and {{ word.search_term[1] }} on chromosome {{ word.search_term[2] }}{% if loop.last %}{% else %} and {% endif %} + {% elif word.search_term|length == 4 %} + with {{ word.key|upper }} between {{ word.search_term[0] }} and {{ word.search_term[1] }} on chromosome {{ word.search_term[3] }} with an exclusion zone of {{ word.search_term[2] }} Mb + {% elif word.search_term|length == 5 %} + with {{ word.key|upper }} between {{ word.search_term[0] }} and {{ word.search_term[1] }} on chromosome {{ word.search_term[2] }} between {{ word.search_term[3] }} and {{ word.search_term[4] }} Mb{% if loop.last %}{% else %} and {% endif %} + {% endif %} + {% elif word.key|lower == "position" or word.key|lower == "mb" %} + with target genes on chromosome {% if (word.search_term[0]|lower).split('chr')|length > 1 %}{{ (word.search_term[0]|lower).split('chr')[1] }}{% else %}{{ word.search_term[0] }}{% endif %} between {{ word.search_term[1] }} and {{ word.search_term[2] }} Mb{% if loop.last %}{% else %} and {% endif %} + {% else %} + {% if word.search_term[0] == "*" %} in the dataset.{% else %}{% if loop.first %}that match: {% endif %}{{ word.search_term[0] }}{% if loop.last %}{% else %} and {% endif %}{% endif %} + {% endif %} + {% endfor %} + {% endif %} +
+ {% if results|count > 0 %} + {{ results|count }} record{% if results|count > 1 %}s{% else %}{% endif %} found + {% else %} + No (0) records found for this search. Modify your search, check target dataset, or use Search All above. + {% endif %} +

+ + {% if results|count > 0 %} + {% if go_term is not none %} +

The associated genes include:

{% for word in search_terms %}{{ word.search_term[0] }}{% endfor %}

+ {% endif %} + +
+ {% if too_many_results %} +

Your search generated over 50000 results. Please modify your search to generate 50000 or fewer matches.

+ {% else %} +
+
+ + + + + {% include 'tool_buttons.html' %} + +
+
+ +
+
+
+
+ + + + + + {% if dataset.accession_id %} + + {% endif %} + + + + + + + + +
+ +
+ {% if dataset.type != 'Geno' %} +
+ Show/Hide Columns:   + {% if dataset.type == 'ProbeSet' %} + + + + + + + + {% elif dataset.type == 'Publish' %} + + + + + + + + {% endif %} +
+ {% endif %} +
+ + + + +

Loading...
+
+
+ {% endif %} + {% else %} +
+ + {% endif %} +
+
+ + + +{% endblock %} + +{% block js %} + + + + + + + + + + + + + + + + + +{% endblock %} diff --git a/gn2/wqflask/templates/set_group_privileges.html b/gn2/wqflask/templates/set_group_privileges.html new file mode 100644 index 00000000..a0a53292 --- /dev/null +++ b/gn2/wqflask/templates/set_group_privileges.html @@ -0,0 +1,77 @@ +{% extends "base.html" %} +{% block title %}Set Group Privileges{% endblock %} +{% block css %} + + + +{% endblock %} +{% block content %} + +
+

Group Privileges

+
+
+ +
+ +
+

Data and Metadata Privileges

+ + + + + + + + + + + + + + + + + + + + + + + +
No-AccessViewEdit
Data:
Metadata:
+
+

Admin Privileges

+ + + + + + + + + + + + + + + + + +
Not AdminEdit AccessEdit Admins
Admin:
+
+
+
+ + + +{% endblock %} + +{% block js %} + + +{% endblock %} diff --git a/gn2/wqflask/templates/show_image.html b/gn2/wqflask/templates/show_image.html new file mode 100644 index 00000000..521f5414 --- /dev/null +++ b/gn2/wqflask/templates/show_image.html @@ -0,0 +1,5 @@ +Embedded Image \ No newline at end of file diff --git a/gn2/wqflask/templates/show_trait.html b/gn2/wqflask/templates/show_trait.html new file mode 100644 index 00000000..dd054ffc --- /dev/null +++ b/gn2/wqflask/templates/show_trait.html @@ -0,0 +1,276 @@ +{% extends "base.html" %} +{%from "oauth2/display_error.html" import display_error%} + +{% block title %}Trait Data and Analysis{% endblock %} + +{% block css %} + + + + + + + + + + + +{% endblock %} + +{% block content %} + + {{flash_me()}} + {%if "group:resource:view-resource" in trait_privileges or "system:resource:public-read" in trait_privileges%} +
+

Trait Data and Analysis for {{ this_trait.display_name }}

+ {% if this_trait.dataset.type != 'Publish' %} +

+ {% set trait_description = this_trait.description_fmt[0]|upper + this_trait.description_fmt[1:]|safe %} + {% if trait_description|length < 100 %} + {{ trait_description }} + {% else %} + {{ trait_description[:99] }}... (Show More) + {% endif %} +

+ {% endif %} + +
+
+ + {% for key in hddn %} + + {% endfor %} +
+ + + + + + + + + + +
+
+
+
+

+ Details and Links +

+
+
+
+ {% include 'show_trait_details.html' %} +
+
+
+
+
+

+ Statistics +

+
+
+
+ {% include 'show_trait_statistics.html' %} +
+
+
+
+
+

+ Transform and Filter Data +

+
+
+
+ {% include 'show_trait_transform_and_filter.html' %} +
+
+
+
+
+
+

+ Calculate Correlations +

+
+
+
+ {% include 'show_trait_calculate_correlations.html' %} +
+
+
+
+
+

+ Mapping Tools +

+
+
+
+ {% include 'show_trait_mapping_tools.html' %} +
+
+
+
+
1100)%}style="min-width: {{trait_table_width|int + 30}}px;"{% endif %}> +
+

+ Review and Edit Data +

+
+
+
+ {% include 'show_trait_edit_data.html' %} +
+
+
+
+ {% include 'show_trait_progress_bar.html' %} +
+
+
+ {%else%} + {%if user.name == "Anonymous User"%} + {{display_error("Access Denied", {"error": "AuthorisationError", "error_description": "This trait is not accessible for the general public yet. Please log in."})}} + {%else%} + {{display_error("Access Denied", {"error": "AuthorisationError", "error_description": "The user '" + user.name + "', does not currently possess the appropriate privileges to view this trait. If you know the owner of this trait, please request that they grant you access, or wait until it is made public."})}} + {%endif%} + {%endif%} + + + +{% endblock %} + +{% block js %} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +{% endblock %} diff --git a/gn2/wqflask/templates/show_trait_calculate_correlations.html b/gn2/wqflask/templates/show_trait_calculate_correlations.html new file mode 100644 index 00000000..22fe6142 --- /dev/null +++ b/gn2/wqflask/templates/show_trait_calculate_correlations.html @@ -0,0 +1,165 @@ +
+
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ + Chr:     + Mb:  to  + +
+
+
+
+ +
+ + + +
+ + +
+
+
+ + +
+ +
+ +
+
+ +
+ +
+ +
+
+
+
+
+
+
+
Sample Correlation
+
The Sample Correlation + is computed + between trait data and any + other traits in the sample database selected above. Use + Spearman + Rank + when the sample size is small (<20) or when there are influential outliers.
+
Literature Correlation
+
The Literature Correlation + (Lit r) between + this gene and all other genes is computed
+ using the + Semantic Gene Organizer + and human, rat, and mouse data from PubMed. + Values are ranked by Lit r, but Sample r and Tissue r are also displayed.
+ More on using Lit r
+
Tissue Correlation
+
The Tissue Correlation + (Tissue r) + estimates the similarity of expression of two genes + or transcripts across different cells, tissues, or organs + (glossary). + Tissue correlations + are generated by analyzing expression in multiple samples usually taken from single cases.
+ Pearson and Spearman Rank correlations have been + computed for all pairs of genes using data from mouse samples.
+
+
+
+
diff --git a/gn2/wqflask/templates/show_trait_details.html b/gn2/wqflask/templates/show_trait_details.html new file mode 100644 index 00000000..9c12393d --- /dev/null +++ b/gn2/wqflask/templates/show_trait_details.html @@ -0,0 +1,255 @@ + + + + + + {% if this_trait.dataset.type == 'Publish' %} + + + + + + + + + + + + + + + + + {% elif this_trait.dataset.type == 'ProbeSet' %} + + + + + {% endif %} + {% if this_trait.dataset.type == 'ProbeSet' %} + {% if this_trait.symbol != None %} + + + + + {% endif %} + + + + + {% if this_trait.alias_fmt != "Not Available" %} + + + + + {% endif %} + {% endif %} + {% if this_trait.dataset.type != 'Publish' %} + + + + + {% endif %} + {% if ncbi_summary != None and ncbi_summary != "" %} + + + + + {% endif %} + + + + + {% if this_trait.probe_set_specificity %} + + + + + {% endif %} + {% if this_trait.pubmed_id or this_trait.geneid or this_trait.omim or this_trait.symbol %} + + + + + {% endif %} +
Group{{ this_trait.dataset.group.species[0]|upper }}{{ this_trait.dataset.group.species[1:] }}: {{ this_trait.dataset.group.name }} group
Phenotype
{{ this_trait.description_fmt }}
Authors
{{ this_trait.authors }}
Title
{{ this_trait.title }}
Journal{{ this_trait.journal }} ({% if this_trait.pubmed_id %}{{ this_trait.year }}{% else %}{{ this_trait.year }}{% endif %})
Tissue{{ this_trait.dataset.tissue }}
Gene Symbol{{ this_trait.symbol }}
AliasesWikidata: {{ this_trait.wikidata_alias_fmt|replace(",",";") }}
GeneNetwork: {{ this_trait.alias_fmt|replace(",",";") }}
Location{{ this_trait.location_fmt }}
Summary{{ ncbi_summary }}
Database + + {{ dataset.fullname }} + +
+ + GN2 Link: {{ dataset.fullname }} + +
Target Score + + BLAT Specificity + : + {{ "%0.3f" | format(this_trait.probe_set_specificity|float) }} +    + {% if this_trait.probe_set_blat_score %} + Score: {{ "%0.3f" | format(this_trait.probe_set_blat_score|float) }} + {% endif %} +
Resource Links + {% if pubmed_link %} + + PubMed + + {% endif %} + {% if ncbi_gene_link %} + + Gene + +    + {% endif %} + {% if omim_link %} + + OMIM + +    + {% endif %} + {% if genemania_link %} + + GeneMANIA + +    + {% endif %} + {% if protein_atlas_link %} + + Protein Atlas + +    + {% endif %} + {% if open_targets_link %} + + Open Targets + +    + {% endif %} + {% if homologene_link %} + + HomoloGene + +    + {% endif %} + {% if this_trait.symbol %} + + {% if rgd_link %} + + Rat Genome DB + +    + {% endif %} + + GTEx Portal + +    + {% if phenogen_link %} + + PhenoGen + +    + {% endif %} + {% if genebridge_link %} + + GeneBridge + + {% endif %} + {% endif %} +
+ {% if ucsc_blat_link %} + + UCSC + +    + {% endif %} + {% if biogps_link %} + + BioGPS + +    + {% endif %} + {% if string_link %} + + STRING + +    + {% endif %} + {% if panther_link %} + + PANTHER + +    + {% endif %} + {% if gemma_link %} + + Gemma + +    + {% endif %} + {% if aba_link %} + + ABA + +    + {% endif %} + {% if ebi_gwas_link %} + + EBI GWAS + +    + {% endif %} + {% if wiki_pi_link %} + + Wiki-Pi + +    + {% endif %} + {% if uniprot_link %} + + UniProt + +    + {% endif %} +
+ +
+
+ + {% if this_trait.dataset.type == 'ProbeSet' or this_trait.dataset.type == 'Geno' %} + {% if this_trait.symbol != None %} + + {% endif %} + {% if UCSC_BLAT_URL != "" %} + + {% endif %} + {% if this_trait.symbol != None %} + + {% if dataset.group.species == "mouse" or dataset.group.species == "rat" %} + + {% endif %} + {% endif %} + {% if show_probes == "True" %} + + {% endif %} + {% endif %} + + {% if this_trait.dataset.type == 'Publish' %} + + {% endif %} + + {% if this_trait.dataset.type == 'ProbeSet' %} + + {% endif %} +
+ {%if "group:resource:edit-resource" in trait_privileges%} +
+ +
+ {% endif %} +
+ diff --git a/gn2/wqflask/templates/show_trait_edit_data.html b/gn2/wqflask/templates/show_trait_edit_data.html new file mode 100644 index 00000000..91cbdb6e --- /dev/null +++ b/gn2/wqflask/templates/show_trait_edit_data.html @@ -0,0 +1,75 @@ +
+ {% for sample_type in sample_groups %} +
+ {% if loop.index == 1 and (sample_groups[0].se_exists or has_num_cases or sample_groups[0].attributes|length > 0) %} + Show/Hide Columns: +
+ {% if sample_groups[0].se_exists %} + + {% if has_num_cases %} + + {% set attr_start_pos = 7 %} + {% else %} + {% set attr_start_pos = 6 %} + {% endif %} + {% else %} + {% if has_num_cases %} + + {% set attr_start_pos = 5 %} + {% else %} + {% set attr_start_pos = 4 %} + {% endif %} + {% endif %} + {% if sample_groups[0].attributes %} + {% for attribute in sample_groups[0].attributes %} + + {% endfor %} + {% endif %} +
+
+ {% endif %} +
+ +
+
+ + + +
+
+
+            
+  # read into R
+  trait <- read.csv("{{ this_trait.display_name}}.csv", header = TRUE, comment.char = "#")
+
+  # read into python
+  import pandas as pd
+  trait = pd.read_csv("{{ this_trait.display_name}}.csv", header = 0, comment = "#")
+            
+          
+
+
+ Edit CaseAttributes + {% set outer_loop = loop %} +
+
+

{{ sample_type.header }}

+
+
+ + + + +

Loading...
+
+
+
+ {% endfor %} + +
diff --git a/gn2/wqflask/templates/show_trait_error.html b/gn2/wqflask/templates/show_trait_error.html new file mode 100644 index 00000000..c924d1f1 --- /dev/null +++ b/gn2/wqflask/templates/show_trait_error.html @@ -0,0 +1,20 @@ +{%extends "base.html"%} +{%block title%}Trait Data and Analysis{%endblock%} +{%block css%} + + + + + + + + + + + +{%endblock%} +{%block content%} +
+ {{flash_me()}} +
+{%endblock%} diff --git a/gn2/wqflask/templates/show_trait_mapping_tools.html b/gn2/wqflask/templates/show_trait_mapping_tools.html new file mode 100755 index 00000000..f1ed8922 --- /dev/null +++ b/gn2/wqflask/templates/show_trait_mapping_tools.html @@ -0,0 +1,436 @@ +
+ {% if dataset.group.mapping_names|length > 0 %} +
+
+ + + +
+ {% for mapping_method in dataset.group.mapping_names %} + {% if mapping_method == "GEMMA" %} +
+
+
+ +
+ +
+
+ {% if genofiles and genofiles|length>0 %} +
+ +
+ +
+
+ {% endif %} +
+ +
+ +
+
+
+ +
+ + +
+
+
+ +
+
+ + + +
+ +
+
+
+ +
+ +
+
+
+
+ {% elif mapping_method == "QTLReaper" %} +
+
+
+ +
+ +
+
+ {% if genofiles and genofiles|length>0 %} +
+ +
+ +
+
+
+ +
+ +
+
+ {% else %} +
+ +
+ +
+
+ {% endif %} +
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+ + +
+
+
+ +
+ + +
+
+
+ +
+ +
+
+
+
+ {% elif mapping_method == "R/qtl" %} +
+
+
+ +
+ +
+
+ {% if genofiles and genofiles|length > 0 %} +
+ +
+ +
+
+
+ +
+ +
+
+ {% else %} +
+ +
+ +
+
+ {% endif %} +
+ +
+ +
+
+ {% if sample_groups[0].attributes|length > 0 %} +
+ +
+ + +
+
+ {% endif %} +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+ +
+ + +
+
+
+ +
+
+ + + +
+ +
+
+
+ +
+ +
+
+
+
+
+
+ {% if genofiles and genofiles|length > 0 %} +
+ +
+ +
+
+ {% endif %} +
+ +
+ + + +
+
+
+ +
+ +
+
+
+ +
+ +
+
+ +
+ +
+
+ + +
+ +
+
+
+ +
+ +
+
+
+
+ {% endif %} + {% endfor %} +
+
+
+
+
+
+ {% for mapping_method in dataset.group.mapping_names %} + {% if mapping_method == "GEMMA" %} +
GEMMA
+
GEMMA maps with correction for kinship using a linear mixed model and can include covariates such as sex and age. Defaults include a minor allele frequency of 0.05 and the leave-one-chromosome-out method (PMID: 2453419, and GitHub code).
+ {% elif mapping_method == "R/qtl" %} +
R/qtl (version 1.44.9)
+
R/qtl maps using several models and uniquely support 4-way intercrosses such as the "Aging Mouse Lifespan Studies" (NIA UM-HET3). We will add support for R/qtl2 (PMID: 30591514) in 2023—a version that handles complex populations with admixture and many haplotypes.
+
Pair Scan (R/qtl v 1.44.9)
+
The Pair Scan mapping tool performs a search for joint effects of two separate loci that may influence a trait. This search typically requires large sample sizes. Pair Scans can included covariates such as age and sex. For more on this function by K. Broman and colleagues see www.rdocumentation.org/packages/qtl/versions/1.60/topics/scantwo
+ {% elif mapping_method == "QTLReaper" %} +
Haley-Knott Regression
+
HK regression (QTL Reaper) is a fast mapping method with permutation that works well with F2 intercrosses and backcrosses (PMID 16718932), but is not recommended for admixed populations, advanced intercrosses, or strain families such as the BXDs (QTL Reaper code).
+ {% endif %} + {% endfor %} +
+
+ More information on R/qtl mapping models and methods can be found here. +
+
+
+ + {% else %} + Mapping options are disabled for data not matched with genotypes. + {% endif %} +
diff --git a/gn2/wqflask/templates/show_trait_progress_bar.html b/gn2/wqflask/templates/show_trait_progress_bar.html new file mode 100644 index 00000000..f9a34070 --- /dev/null +++ b/gn2/wqflask/templates/show_trait_progress_bar.html @@ -0,0 +1,35 @@ + + + \ No newline at end of file diff --git a/gn2/wqflask/templates/show_trait_statistics.html b/gn2/wqflask/templates/show_trait_statistics.html new file mode 100644 index 00000000..9ee0de5c --- /dev/null +++ b/gn2/wqflask/templates/show_trait_statistics.html @@ -0,0 +1,106 @@ +
+
+ +
+
+
+
+
+
+
+
+ {% if sample_groups|length != 1 %} + Select Group: + +

+ {% endif %} +
+
+
+
+
+ {% if num_values < 256 %} +
+
+ {% if sample_groups|length != 1 %} + Select Group: + + {% endif %} + +
+ + +
+
+
+
+
+
+ {% endif %} +
+
+ {% if sample_groups|length != 1 %} + Select Group: + +
+
+ {% endif %} + +
+
+
+
+
+
+ More about Normal Probability Plots and more + about interpreting these plots from the glossary +
+
+
+
+
+
+
+
+
+
+
+
+ +
diff --git a/gn2/wqflask/templates/show_trait_transform_and_filter.html b/gn2/wqflask/templates/show_trait_transform_and_filter.html new file mode 100644 index 00000000..0706f64d --- /dev/null +++ b/gn2/wqflask/templates/show_trait_transform_and_filter.html @@ -0,0 +1,140 @@ +
+
+

Edit or delete values in the Trait Data boxes, and use the + Reset option as + needed. +

+
+ + + + +
+ + {% if categorical_attr_exists == "true" %} +
+ + + + + +
+ {% endif %} + {% if study_samplelists|length > 0 %} +
+ + + {% if sample_groups|length != 1 %} + + {% endif %} + +
+ {% endif %} +
+ + {% if (numerical_var_list|length > 0) or js_data.se_exists %} + + {% endif %} + + + + +
+
+ + + + + + + +
+
+ + +
+
+
+
+
+

Outliers highlighted in + orange + can be hidden using + the Hide Outliers button. +

+ +

Samples with no value (x) can be hidden by clickingHide No Value button.

+
+
diff --git a/gn2/wqflask/templates/snp_browser.html b/gn2/wqflask/templates/snp_browser.html new file mode 100644 index 00000000..b9aea570 --- /dev/null +++ b/gn2/wqflask/templates/snp_browser.html @@ -0,0 +1,582 @@ +{% extends "base.html" %} +{% block css %} + + + + +{% endblock %} +{% block content %} + +
+

Variant Browser Info

+
+
+
+ + + +
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+
Or select
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+
+ +
+ +
+
+
+
+
+ +
+ +
+ +
+
+
+
+ +
+ +
+ +
+
+
+
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+ Non-redundant SNP Only +
+
+
+ +
+ Different Alleles Only +
+
+
+ +
+ +
+ {% if table_rows is defined %} + + + + + {% if header_fields|length == 2 %} + {% for header in header_fields[0] %} + + {% endfor %} + {% for strain in header_fields[1] %} + + {% endfor %} + {% else %} + {% for header in header_fields %} + + {% endfor %} + {% endif %} + + + + + +
{{ header }}{% for letter in strain|reverse %}
{{ letter }}
{% endfor %}
{{ header }}

Loading...
+ {% endif %} +
+
+ +{% endblock %} +{% block js %} + + + + + + + + + +{% endblock %} + diff --git a/gn2/wqflask/templates/startup_errors.html b/gn2/wqflask/templates/startup_errors.html new file mode 100644 index 00000000..82d85572 --- /dev/null +++ b/gn2/wqflask/templates/startup_errors.html @@ -0,0 +1,20 @@ +{%extends "base.html"%} +{%block title%}Startup Error{%endblock%} +{%block content %} +{%if error_type == "MissingConfigurationError"%} + +
+

Startup Error

+ +

+ The application could not start due to the missing configuration settings + below: +

    + {%for setting in error_value.missing%} +
  • {{setting}}
  • + {%endfor%} +
+

+
+{%endif%} +{%endblock%} diff --git a/gn2/wqflask/templates/submit_trait.html b/gn2/wqflask/templates/submit_trait.html new file mode 100644 index 00000000..10ddf69f --- /dev/null +++ b/gn2/wqflask/templates/submit_trait.html @@ -0,0 +1,111 @@ +{% extends "base.html" %} +{% block title %}Trait Submission{% endblock %} +{% block content %} + +
+
+ + {{ flash_me() }} + +
+
+
+
+

Introduction

+
+

The trait values that you enter are statistically compared with verified genotypes collected at a set of microsatellite markers in each RI set. The markers are drawn from a set of over 750, but for each set redundant markers have been removed, preferentially retaining those that are most informative.

+

These error-checked RI mapping data match theoretical expectations for RI strain sets. The cumulative adjusted length of the RI maps are approximately 1400 cM, a value that matches those of both MIT maps and Chromosome Committee Report maps. See our full description of the genetic data collected as part of the WebQTL project.

+
+
+
+
+
+

About Your Data

+
+

You can open a separate window giving the number of strains for each data set and sample data.

+

None of your submitted data is copied or stored by this system except during the actual processing of your submission. By the time the reply page displays in your browser, your submission has been cleared from this system.

+
+
+
+
+
+
+

Trait Submission Form

+
+
+

1. Choose Species and Group:

+
+
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+
+
+

2. Enter Trait Data:

+

File uploading isn't enabled yet, but is coming soon.

+
+
+ +
+
+
+

+ Paste or Type Multiple Values: You can enter data by pasting a series of numbers representing trait values into this area. + The values can be on one line separated by spaces or tabs, or they can be on separate lines. Include one value for each individual + or line. Use an "x" for missing values. If you have chosen a set of inbred strains, then your data will be displayed in a form in + which you can confirm and/or edit. If you enter a file name in the previous section, + any data that you paste here will be ignored. Check sample data for the correct format. +

+ +
+
+
+ + +
+
+
+

3. Enable Use of Trait Variance:

+
+ +
+
+
+

+ Name Your Trait: (optional) +

+ +
+
+
+ + +
+
+
+
+
+
+
+ +{%endblock%} + +{% block js %} + + +{% endblock %} diff --git a/gn2/wqflask/templates/test_correlation_page.html b/gn2/wqflask/templates/test_correlation_page.html new file mode 100644 index 00000000..991773a2 --- /dev/null +++ b/gn2/wqflask/templates/test_correlation_page.html @@ -0,0 +1,159 @@ +{% extends "base.html" %} +{% block title %}Correlation Results{% endblock %} +{% block css %} + + + + + + + + +{% endblock %} + +{% block content %} + +
+

Correlation Results for {{target_dataset}} against {{this_trait}} for the top {{return_results}} Results

+
+
+

Toggle Columns

+ + + + + +
+ + + + + + + + + + + + + + +
indextrait_nameSample rSample r(p)NTissue rTissue r(p)Lit r
+ +{% endblock %} + +{% block js %} + + + + + + + + + + + + + + + + +{% endblock %} \ No newline at end of file diff --git a/gn2/wqflask/templates/tool_buttons.html b/gn2/wqflask/templates/tool_buttons.html new file mode 100644 index 00000000..c6d1476c --- /dev/null +++ b/gn2/wqflask/templates/tool_buttons.html @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + diff --git a/gn2/wqflask/templates/tutorials.html b/gn2/wqflask/templates/tutorials.html new file mode 100644 index 00000000..74c84726 --- /dev/null +++ b/gn2/wqflask/templates/tutorials.html @@ -0,0 +1,256 @@ +{% extends "base.html" %} +{% block title %}Tutorials/Primers{% endblock %} +{% block content %} + + + GeneNetwork Webinar Series, Tutorials and Short Video Tours + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ + +

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
Title/DescriptionPresentation

Introduction to Quantitative Trait Loci (QTL) Analysis

+

Goals of this webinar (trait variance to QTL):

+
    +
  • Define quantitative trait locus (QTL)
  • +
  • Explain how genome scans can help find QTL
  • +
+

Presented by:
+Dr. Saunak Sen
+Professor and Chief of Biostatistics
+Department of Preventative Medicine
+University of Tennessee Health Science Center +

+

Link to course material +

+

Mapping Addiction and Behavioral Traits and Getting at Causal Gene Variants with GeneNetwork

+

Goals of this webinar (QTL to gene variant):

+
    +
  • Demonstrate mapping a quantitative trait using GeneNetwork (GN)
  • +
  • Explore GN tools to identify genes and genetics variants related to a QTL
  • +
+

Presented by:
+Dr. Rob Williams
+Professor and Chair
+Department of Genetics, Genomics, and Informatics
+University of Tennessee Health Science Center +

Link to course material +

Data structure, disease risk, GXE, and causal modeling

+ +

Human disease is mainly due to complex interactions between genetic and environmental factors (GXE). We need to acquire the right "smart" data types—coherent and multiplicative data—required to make accurate predictions about risk and outcome for n = 1 individuals—a daunting task. We have developed large families of fully sequenced mice that mirror the genetic complexity of humans. We are using these Reference Populations to generate multiplicatively useful data and to build and test causal quantitative models of disease mechanisms with a special focus on diseases of aging, addiction, and neurological and psychiatric disease. + +

Speaker Bio: Robert (Rob) W. Williams received a BA in neuroscience from UC Santa Cruz (1975) and a Ph.D. in system physiology at UC Davis with Leo M. Chalupa (1983). He did postdoctoral work in developmental neurobiology at Yale School of Medicine with Pasko Rakic where he developed novel stereological methods to estimate cell populations in brain. In 2013 Williams established the Department of Genetics, Genomics and Informatics at UTHSC. He holds the UT Oak Ridge National Laboratory Governor’s Chair in Computational Genomics. Williams is director of the Complex Trait Community (www.complextrait.org) and editor-in-chief of Frontiers in Neurogenomics. One of Williams’ more notable contributions is in the field of systems neurogenetics and experimental precision medicine. He and his research collaborators have built GeneNetwork (www.genenetwork.org), an online resource of data and analysis code that is used as a platform for experimental precision medicine.

+ +

Presented by:
+Dr. Rob Williams
+Professor and Chair
+Department of Genetics, Genomics, and Informatics
+University of Tennessee Health Science Center +

+ + +
+
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Title/DescriptionPresentation

Introduction to Gene Network

+

Please note that this tutorial is based on GeneNetwork v1 + +

GeneNetwork is a group of linked data sets and tools used to study complex networks of genes, molecules, and higher order gene function and phenotypes. GeneNetwork combines more than 25 years of legacy data generated by hundreds of scientists together with sequence data (SNPs) and massive transcriptome data sets (expression genetic or eQTL data sets). The quantitative trait locus (QTL) mapping module that is built into GN is optimized for fast on-line analysis of traits that are controlled by combinations of gene variants and environmental factors. GeneNetwork can be used to study humans, mice (BXD, AXB, LXS, etc.), rats (HXB), Drosophila, and plant species (barley and Arabidopsis). Most of these population data sets are linked with dense genetic maps (genotypes) that can be used to locate the genetic modifiers that cause differences in expression and phenotypes, including disease susceptibility. + +

Users are welcome to enter their own private data directly into GeneNetwork to exploit the full range of analytic tools and to map modulators in a powerful environment. This combination of data and fast analytic functions enable users to study relations between sequence variants, molecular networks, and function.

+ +

Presented by:
+Dr. Rob Williams
+Professor and Chair
+Department of Genetics, Genomics, and Informatics
+University of Tennessee Health Science Center +

+ + +
+ +

How to search in GeneNetwork


Presented by Rob Williams University of Tennessee Health Science Center
+

GeneNetwork.org: genetic analysis for all neuroscientists


Presented by David G. Ashbrook Assistant Professor University of Tennessee Health Science Center +
+
+ + +
+
+ + + + + + + + + + + + + + + + +
TitleSpeakerVideo link
Diallel Crosses, Artificial Intelligence, and Mouse Models of Alzheimer’s DiseaseDavid G. Ashbrook
Assistant Professor
University of Tennessee Health Science Center
YouTube link
+ +
+ + +
+ +
+
+ +
+ +
+ + + +
+ + + + + + + + + + + +{% endblock %} + diff --git a/gn2/wqflask/templates/view_case_attribute_diff.html b/gn2/wqflask/templates/view_case_attribute_diff.html new file mode 100644 index 00000000..0b5c95f1 --- /dev/null +++ b/gn2/wqflask/templates/view_case_attribute_diff.html @@ -0,0 +1,117 @@ +{%extends "base.html"%} +{%block title%}View Case Attribute Diff{%endblock%} + +{%block css%} + + + + + +{%endblock%} + +{%block content%} +
+

View Diff

+ + {{flash_me()}} + +
+
+

Changes

+
+
+ {%set the_diff = diff.json_diff_data.diff%} + {%if the_diff.Additions | length %} +

Additions

+
+ + + + + {{item.Current}} +
+ {%endif%} + {%if the_diff.Modifications | length %} +

Modifications

+ {%for item in the_diff.Modifications%} +
+ - + {{item.Original}} + + + {{item.Current}} +
+ {%endfor%} + {%endif%} + {%if the_diff.Deletions | length %} +

Deletions

+
+ + + {{item.Original}} + - + {{item.Current}} +
+ {%endif%} +
+ +
+ + + +
+ + + + +
+{%endblock%} + +{%block js%} + +{%endblock%} diff --git a/gn2/wqflask/templates/view_case_attribute_diff_error.html b/gn2/wqflask/templates/view_case_attribute_diff_error.html new file mode 100644 index 00000000..a10f7ab9 --- /dev/null +++ b/gn2/wqflask/templates/view_case_attribute_diff_error.html @@ -0,0 +1,35 @@ +{%extends "base.html"%} +{%block title%}View Case Attribute Diff{%endblock%} + +{%block css%} + + + + + +{%endblock%} + +{%block content%} +
+

View Diff

+ + {{flash_me()}} + +

+ + + {{error.status_code}}: {{error["error"]}} + {{error.error_description}} +

+{%endblock%} + +{%block js%} + +{%endblock%} diff --git a/gn2/wqflask/templates/webgestalt_page.html b/gn2/wqflask/templates/webgestalt_page.html new file mode 100644 index 00000000..759e0251 --- /dev/null +++ b/gn2/wqflask/templates/webgestalt_page.html @@ -0,0 +1,35 @@ +{% extends "base.html" %} +{% block title %}{% if wrong_input == "True" %}WebGestalt Error{% else %}Opening WebGestalt{% endif %}{% endblock %} +{% block content %} + {% if wrong_input == "True" %} + {{ header("Error") }} + +
+ {% if chip_name == "mixed" %} +

Sorry, the analysis was interrupted because your selections from GeneNetwork apparently include data from more than one array platform (i.e., Affymetrix U74A and M430 2.0). Most WebGestalt analyses assume that you are using a single array type and compute statistical values on the basis of that particular array. Please reselect traits from a signle platform and submit again.

+ {% elif chip_name == "not_microarray" %} +

You need to select at least one microarray trait to submit. + {% elif '_NA' in chip_name %} +

Sorry, the analysis was interrupted because your selections from GeneNetwork apparently include data from platform {{ chip_name }} which is unknown by WebGestalt. Please reselect traits and submit again.

+ {% else %} +

Sorry, an error occurred while submitting your traits to WebGestalt.

+ {% endif %} +
+ {% else %} +
+

Opening WebGestalt...

+
+
+ {% for key in hidden_vars %} + + {% endfor %} +
+ {% endif %} +{% endblock %} +{% block js %} +{% if wrong_input == "False" %} + +{% endif %} +{% endblock %} diff --git a/gn2/wqflask/templates/wgcna_results.html b/gn2/wqflask/templates/wgcna_results.html new file mode 100644 index 00000000..0dc030b1 --- /dev/null +++ b/gn2/wqflask/templates/wgcna_results.html @@ -0,0 +1,76 @@ +{% extends "base.html" %} +{% block title %}WCGNA results{% endblock %} + +{% block content %} +
+

WGCNA Results

+ Analysis found {{results['nmod']}} modules when scanning {{results['nphe']}} phenotypes, measured on {{results['nstr']}} strains.
+ Additional parameters settings: +
    +
  • Soft thresholds checked = {{results['requestform']['SoftThresholds']}}
  • +
  • Power used for this analysis = {{results['Power']}}
  • +
  • TomType = {{results['requestform']['TOMtype']}}
  • +
  • Minimum module size = {{results['requestform']['MinModuleSize'] }}
  • +
  • mergeCutHeight = {{results['requestform']['mergeCutHeight'] }}
  • +
+ +

Soft threshold table

+ + + {% for r in range(powers[0][0]|length) %} + {% if powers[0][1][r] > 0.85 %} + + {% elif powers[0][1][r] > 0.75 %} + + {% else %} + + {% endif %} + {% for c in range(powers[0]|length) %} + + {% endfor %} + + {% endif %} + + {% endfor %} +
PowerSFT.R.sqslopetruncated.R.sqmean.kmedian.kmax.kAnalysis
{{powers[0][c][r]|round(3)}} + {% if powers[0][1][r] > 0.75 %} +
+

WGCNA module plot

+ + Embedded Image + + +

Phenotype / Module table

+ + + {% for r in range(results['nphe']) %} + + + + + {% endfor %} +
PhenotypeModule
{{results['phenotypes'][r][0]}}{{results['network'][0][r]}}
+ +

Module eigen genes

+ + + {% for m in range(results['nmod']) %} + + {% endfor %} + + {% for r in range(results['nstr']) %} + + + {% for m in range(results['nmod']) %} + + {% endfor %} + + {% endfor %} +
Phenotype
{{results['strains'][r][0]}}{{results['network'][2][m][r]}}
+
+{% endblock %} + diff --git a/gn2/wqflask/templates/wgcna_setup.html b/gn2/wqflask/templates/wgcna_setup.html new file mode 100644 index 00000000..d7acd5f2 --- /dev/null +++ b/gn2/wqflask/templates/wgcna_setup.html @@ -0,0 +1,142 @@ +{% extends "base.html" %} +{% block title %}WCGNA analysis{% endblock %} +{% block content %} + + + + + +
+
+

WGCNA analysis parameters

+ {% if request.form['trait_list'].split(",")|length < 4 %} + {% else %} +
+ +
+ +
+ +
+
+
+ +
+ +
+
+ +
+ +
+ +
+ +
+
+ +
+ +
+
+ +
+ +
+ +
+ +
+
+
+ +
+
+ + + +
+ {% endif %} +
+
+
+
+
+
+ + + + + + +{% endblock %} \ No newline at end of file diff --git a/gn2/wqflask/templates/with-trait-items.html b/gn2/wqflask/templates/with-trait-items.html new file mode 100644 index 00000000..66d6fd22 --- /dev/null +++ b/gn2/wqflask/templates/with-trait-items.html @@ -0,0 +1,18 @@ +{%for trait in traits_list:%} +
+ + +
+{%endfor%} -- cgit 1.4.1