grnsight 4.0.0 → 6.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.travis.yml +3 -1
- package/GRNsight - Beta.html +194 -0
- package/Gemfile.lock +259 -0
- package/README.md +2 -2
- package/_gh_pages/about.html +360 -45
- package/_gh_pages/assets/css/footer.css +3 -0
- package/_gh_pages/assets/css/main.css +28 -14
- package/_gh_pages/assets/images/21-genes_31-edges_Schade-data_estimation_output_binary-no-targetless-genes_sif.png +0 -0
- package/_gh_pages/assets/images/21-genes_31-edges_Schade-data_estimation_output_binary_sif.png +0 -0
- package/_gh_pages/assets/images/21-genes_31-edges_Schade-data_graphml_3-edges-and-footer.png +0 -0
- package/_gh_pages/assets/images/21-genes_31-edges_Schade-data_graphml_header-and-3-nodes.png +0 -0
- package/_gh_pages/assets/images/21-genes_31-edges_Schade-data_graphml_output_3-edges-and-footer.png +0 -0
- package/_gh_pages/assets/images/21-genes_31-edges_Schade-data_graphml_output_header-and-3-nodes.png +0 -0
- package/_gh_pages/assets/images/21-genes_31-edges_Schade-data_input_binary-no-targetless-genes_sif.png +0 -0
- package/_gh_pages/assets/images/21-genes_31-edges_Schade-data_input_binary_sif.png +0 -0
- package/_gh_pages/assets/images/21-genes_31-edges_Schade-data_input_concatenated-no-targetless-genes_sif.png +0 -0
- package/_gh_pages/assets/images/21-genes_31-edges_Schade-data_input_concatenated_sif.png +0 -0
- package/_gh_pages/assets/images/Choe-Shin_CMSI402-poster-session_20180430.jpg +0 -0
- package/_gh_pages/assets/images/Choe_SCCUR_2017.jpg +0 -0
- package/_gh_pages/assets/images/Dahlquist-Choe-Shin_CMSI402-poster-session_20180430.jpg +0 -0
- package/_gh_pages/assets/images/Dionisio-Dahlquist_GRNsight-shades_20170506.jpg +0 -0
- package/_gh_pages/assets/images/Klein_Samdarshi_TriBeta_2018_20180317.jpg +0 -0
- package/_gh_pages/assets/images/Shin_SCCUR_2017.jpg +0 -0
- package/{documents/manuscripts/peerj-computerscience-2016/figures/submitted-versions/Figure1_zoom145_900pix-wide.png → _gh_pages/assets/images/demo-3_network-sheet.png} +0 -0
- package/{documents/manuscripts/peerj-computerscience-2016/figures/submitted-versions/Figure2_zoom145_900pix-wide.png → _gh_pages/assets/images/demo-4_network-optimized-weights-sheet.png} +0 -0
- package/_gh_pages/assets/images/gene-pages-0.png +0 -0
- package/_gh_pages/assets/images/gene-pages-1.png +0 -0
- package/_gh_pages/assets/images/gene-pages-2.png +0 -0
- package/_gh_pages/assets/images/gene-pages-3.png +0 -0
- package/_gh_pages/assets/images/grnsight2020.png +0 -0
- package/_gh_pages/assets/images/v3demo2-grid+nodecoloring.png +0 -0
- package/_gh_pages/assets/images/v3demo2-nodecoloring.png +0 -0
- package/_gh_pages/assets/images/v3demo2.png +0 -0
- package/_gh_pages/assets/js/ga-report.js +11 -11
- package/_gh_pages/assets/js/iframeResizer.min.js +9 -0
- package/_gh_pages/assets/js/main.js +43 -43
- package/_gh_pages/beta.html +29 -24
- package/_gh_pages/contact.html +31 -31
- package/_gh_pages/coverage/coverage.json +1 -0
- package/_gh_pages/coverage/coverage.raw.json +1 -0
- package/_gh_pages/coverage/lcov-report/base.css +223 -0
- package/_gh_pages/coverage/lcov-report/block-navigation.js +63 -0
- package/_gh_pages/coverage/lcov-report/controllers/additional-sheet-parser.js.html +330 -0
- package/_gh_pages/coverage/lcov-report/controllers/constants.js.html +243 -0
- package/_gh_pages/coverage/lcov-report/controllers/export-controller.js.html +285 -0
- package/_gh_pages/coverage/lcov-report/controllers/exporters/graphml.js.html +405 -0
- package/_gh_pages/coverage/lcov-report/controllers/exporters/index.html +110 -0
- package/_gh_pages/coverage/lcov-report/controllers/exporters/sif.js.html +150 -0
- package/_gh_pages/coverage/lcov-report/controllers/helpers.js.html +114 -0
- package/_gh_pages/coverage/lcov-report/controllers/import-controller.js.html +233 -0
- package/_gh_pages/coverage/lcov-report/controllers/importers/graphml.js.html +716 -0
- package/_gh_pages/coverage/lcov-report/controllers/importers/index.html +106 -0
- package/_gh_pages/coverage/lcov-report/controllers/importers/sif.js.html +488 -0
- package/_gh_pages/coverage/lcov-report/controllers/index.html +162 -0
- package/_gh_pages/coverage/lcov-report/controllers/semantic-checker.js.html +810 -0
- package/_gh_pages/coverage/lcov-report/controllers/spreadsheet-controller.js.html +1779 -0
- package/_gh_pages/coverage/lcov-report/index.html +136 -0
- package/_gh_pages/coverage/lcov-report/prettify.css +1 -0
- package/_gh_pages/coverage/lcov-report/prettify.js +1 -0
- package/_gh_pages/coverage/lcov-report/server/controllers/additional-sheet-parser.js.html +330 -0
- package/_gh_pages/coverage/lcov-report/server/controllers/constants.js.html +243 -0
- package/_gh_pages/coverage/lcov-report/server/controllers/export-controller.js.html +285 -0
- package/_gh_pages/coverage/lcov-report/server/controllers/exporters/graphml.js.html +405 -0
- package/_gh_pages/coverage/lcov-report/server/controllers/exporters/index.html +110 -0
- package/_gh_pages/coverage/lcov-report/server/controllers/exporters/sif.js.html +150 -0
- package/_gh_pages/coverage/lcov-report/server/controllers/graphml-constants.js.html +585 -0
- package/_gh_pages/coverage/lcov-report/server/controllers/helpers.js.html +114 -0
- package/_gh_pages/coverage/lcov-report/server/controllers/import-controller.js.html +237 -0
- package/_gh_pages/coverage/lcov-report/server/controllers/importers/graphml.js.html +585 -0
- package/_gh_pages/coverage/lcov-report/server/controllers/importers/index.html +110 -0
- package/_gh_pages/coverage/lcov-report/server/controllers/importers/sif.js.html +492 -0
- package/_gh_pages/coverage/lcov-report/server/controllers/index.html +188 -0
- package/_gh_pages/coverage/lcov-report/server/controllers/semantic-checker.js.html +810 -0
- package/_gh_pages/coverage/lcov-report/server/controllers/spreadsheet-controller.js.html +1779 -0
- package/_gh_pages/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/_gh_pages/coverage/lcov-report/sorter.js +158 -0
- package/_gh_pages/coverage/lcov-report/web-client/public/js/grnstate.js.html +225 -0
- package/_gh_pages/coverage/lcov-report/web-client/public/js/index.html +97 -0
- package/_gh_pages/coverage/lcov.info +49 -0
- package/_gh_pages/documentation.html +998 -320
- package/_gh_pages/documents/abstracts/SIGGRAPH 2017 Abstract/siggraph-abstract-review.aux +47 -0
- package/_gh_pages/documents/abstracts/SIGGRAPH 2017 Abstract/siggraph-abstract-review.bbl +73 -0
- package/_gh_pages/documents/abstracts/SIGGRAPH 2017 Abstract/siggraph-abstract-review.blg +52 -0
- package/_gh_pages/documents/abstracts/SIGGRAPH 2017 Abstract/siggraph-abstract-review.log +1056 -0
- package/_gh_pages/documents/abstracts/SIGGRAPH 2017 Abstract/siggraph-abstract-review.out +7 -0
- package/_gh_pages/documents/abstracts/SIGGRAPH 2017 Abstract/siggraph-abstract-review.synctex.gz +0 -0
- package/_gh_pages/documents/manuscripts/peerj-computerscience-2016/revisions/GRNsight_PeerJ-CS_manuscript_2016_text-only_revised-Dondi.docx +0 -0
- package/_gh_pages/encryption/server.cert +21 -0
- package/_gh_pages/encryption/server.key +28 -0
- package/_gh_pages/favicon.ico +0 -0
- package/_gh_pages/index.html +45 -22
- package/_gh_pages/links.html +47 -28
- package/_gh_pages/news.html +103 -21
- package/_gh_pages/onlyfooter.html +78 -0
- package/_gh_pages/onlyheader.html +64 -0
- package/_gh_pages/onlysidebar.html +73 -0
- package/_gh_pages/package-lock.json +14048 -0
- package/_gh_pages/people.html +129 -40
- package/_gh_pages/privacy.html +23 -17
- package/_gh_pages/publications.html +75 -33
- package/_gh_pages/robots.txt +1 -0
- package/_gh_pages/sitemap.xml +87 -74
- package/_gh_pages/test-files/import-samples/attributes.graphml +40 -0
- package/_gh_pages/test-files/import-samples/port.graphml +32 -0
- package/_gh_pages/test-files/import-samples/simple.graphml +31 -0
- package/_gh_pages/web-client/public/js/grnsight.min.js +2347 -0
- package/_gh_pages/web-client/public/stylesheets/grnsight.css +443 -0
- package/coverage/coverage.json +1 -1
- package/coverage/lcov.info +1847 -1142
- package/database/README.md +1 -0
- package/database/network-database/README.md +44 -0
- package/database/network-database/schema.sql +24 -0
- package/database/network-database/scripts/filter_genes.py +76 -0
- package/database/network-database/scripts/generate_network.py +199 -0
- package/database/network-database/scripts/generate_sgd_network_from_yeastract_network.py +120 -0
- package/database/network-database/scripts/loader.py +78 -0
- package/package.json +20 -11
- package/server/app.js +7 -2
- package/server/config/config.js +12 -3
- package/server/controllers/additional-sheet-parser.js +292 -55
- package/server/controllers/constants.js +4 -37
- package/server/controllers/custom-workbook-controller.js +66 -0
- package/server/controllers/demo-workbooks.js +5973 -0
- package/server/controllers/export-constants.js +78 -0
- package/server/controllers/export-controller.js +4 -3
- package/server/controllers/exporters/graphml.js +15 -15
- package/server/controllers/exporters/sif.js +7 -7
- package/server/controllers/exporters/xlsx.js +110 -34
- package/server/controllers/expression-database-controller.js +19 -0
- package/server/controllers/expression-sheet-parser.js +170 -0
- package/server/controllers/graphml-constants.js +0 -17
- package/server/controllers/helpers.js +25 -1
- package/server/controllers/import-controller.js +2 -2
- package/server/controllers/importers/graphml.js +17 -20
- package/server/controllers/importers/sif.js +22 -18
- package/server/controllers/network-database-controller.js +18 -0
- package/server/controllers/network-sheet-parser.js +307 -0
- package/server/controllers/semantic-checker.js +30 -162
- package/server/controllers/sif-constants.js +36 -0
- package/server/controllers/spreadsheet-controller.js +277 -425
- package/server/controllers/workbook-constants.js +521 -0
- package/server/dals/expression-dal.js +122 -0
- package/server/dals/network-dal.js +96 -0
- package/test/additional-sheet-parser-tests.js +147 -38
- package/test/api-tests.js +3 -6
- package/test/errors-adjacency-matrix-modifications.js +30 -29
- package/test/errors-graph-tests.js +4 -4
- package/test/errors-sheet-modifications.js +10 -2
- package/test/export-tests.js +187 -60
- package/test/expression-data-import-tests.js +113 -0
- package/test/grnstate-tests.js +8 -2
- package/test/import-graphml-tests.js +59 -40
- package/test/import-sif-tests.js +50 -37
- package/test/test.js +554 -91
- package/test/warnings-adjacency-matrix-modifications.js +8 -7
- package/test-files/additional-sheet-test-files/optimization-diagnostics-default.xlsx +0 -0
- package/test-files/additional-sheet-test-files/optimization-diagnostics-extraneous-data.xlsx +0 -0
- package/test-files/additional-sheet-test-files/optimization-diagnostics-incorrect-MSE-gene-header.xlsx +0 -0
- package/test-files/additional-sheet-test-files/optimization-diagnostics-incorrect-MSE-header.xlsx +0 -0
- package/test-files/additional-sheet-test-files/optimization-diagnostics-incorrect-column-headers.xlsx +0 -0
- package/test-files/additional-sheet-test-files/optimization-diagnostics-invalid-MSE-data.xlsx +0 -0
- package/test-files/additional-sheet-test-files/optimization-diagnostics-invalid-value.xlsx +0 -0
- package/test-files/additional-sheet-test-files/optimization-diagnostics-missing-MSE-data.xlsx +0 -0
- package/test-files/additional-sheet-test-files/optimization-diagnostics-missing-column-headers.xlsx +0 -0
- package/test-files/additional-sheet-test-files/optimization-diagnostics-missing-header.xlsx +0 -0
- package/test-files/additional-sheet-test-files/optimization-diagnostics-unknown-parameter.xlsx +0 -0
- package/test-files/additional-sheet-test-files/optimization-parameters-default.xlsx +0 -0
- package/test-files/additional-sheet-test-files/optimization-parameters-incorrect-headers.xlsx +0 -0
- package/test-files/additional-sheet-test-files/optimization-parameters-invalid-optimization-parameter.xlsx +0 -0
- package/test-files/additional-sheet-test-files/optimization-parameters-missing-headers.xlsx +0 -0
- package/test-files/additional-sheet-test-files/optimization-parameters-unknown-parameter.xlsx +0 -0
- package/test-files/additional-sheet-test-files/two-column-sheets-extraneous-data.xlsx +0 -0
- package/test-files/additional-sheet-test-files/two-column-sheets-incorrect-cell-A1.xlsx +0 -0
- package/test-files/additional-sheet-test-files/two-column-sheets-incorrect-column-header.xlsx +0 -0
- package/test-files/additional-sheet-test-files/two-column-sheets-invalid-gene-length.xlsx +0 -0
- package/test-files/additional-sheet-test-files/two-column-sheets-invalid-gene-type.xlsx +0 -0
- package/test-files/additional-sheet-test-files/two-column-sheets-invalid-value.xlsx +0 -0
- package/test-files/additional-sheet-test-files/two-column-sheets-missing-column-header.xlsx +0 -0
- package/test-files/additional-sheet-test-files/two-column-sheets-special-character.xlsx +0 -0
- package/test-files/adjacency-matrix-modifications/asymmetric-gene-order-input.xlsx +0 -0
- package/test-files/adjacency-matrix-modifications/asymmetric-gene-order-output.xlsx +0 -0
- package/test-files/adjacency-matrix-modifications/extra-column-adjacent-input.xlsx +0 -0
- package/test-files/adjacency-matrix-modifications/extra-column-adjacent-output.xlsx +0 -0
- package/test-files/adjacency-matrix-modifications/extra-column-end-of-sheet-input.xlsx +0 -0
- package/test-files/adjacency-matrix-modifications/extra-column-end-of-sheet-output.xlsx +0 -0
- package/test-files/adjacency-matrix-modifications/extra-data-random-cell-both-output.xlsx +0 -0
- package/test-files/adjacency-matrix-modifications/extra-data-random-cell-network-only-input.xlsx +0 -0
- package/test-files/adjacency-matrix-modifications/extra-data-random-cell-network-only-output.xlsx +0 -0
- package/test-files/adjacency-matrix-modifications/extra-data-random-cell-network-optimized-only-output.xlsx +0 -0
- package/test-files/adjacency-matrix-modifications/extra-row-end-of-sheet-input.xlsx +0 -0
- package/test-files/adjacency-matrix-modifications/extra-row-end-of-sheet-output.xlsx +0 -0
- package/test-files/adjacency-matrix-modifications/incorrect-network-cell-A1.xlsx +0 -0
- package/test-files/adjacency-matrix-modifications/missing-column-end-input.xlsx +0 -0
- package/test-files/adjacency-matrix-modifications/missing-column-end-output.xlsx +0 -0
- package/test-files/adjacency-matrix-modifications/missing-data-input.xlsx +0 -0
- package/test-files/adjacency-matrix-modifications/missing-data-output.xlsx +0 -0
- package/test-files/adjacency-matrix-modifications/missing-row-end-input.xlsx +0 -0
- package/test-files/adjacency-matrix-modifications/missing-row-end-output.xlsx +0 -0
- package/test-files/adjacency-matrix-modifications/missing-row-middle-input.xlsx +0 -0
- package/test-files/adjacency-matrix-modifications/missing-row-middle-output.xlsx +0 -0
- package/test-files/adjacency-matrix-modifications/missing-value-bottom-corner-input.xlsx +0 -0
- package/test-files/adjacency-matrix-modifications/missing-value-bottom-corner-output.xlsx +0 -0
- package/test-files/adjacency-matrix-modifications/value-replaced-w-spaces-both-output.xlsx +0 -0
- package/test-files/adjacency-matrix-modifications/value-replaced-w-spaces-net-only-input.xlsx +0 -0
- package/test-files/adjacency-matrix-modifications/value-replaced-w-spaces-net-op-only-output.xlsx +0 -0
- package/test-files/adjacency-matrix-modifications/value-replaced/342/200/223w-spaces-net-only-output.xlsx +0 -0
- package/test-files/demo-files/15-genes_28-edges_db5_Dahlquist-data_estimation_output.xlsx +0 -0
- package/test-files/demo-files/15-genes_28-edges_db5_Dahlquist-data_input.xlsx +0 -0
- package/test-files/expression-data-test-sheets/expression_sheet_correct_numbering.xlsx +0 -0
- package/test-files/expression-data-test-sheets/expression_sheet_different_number_of_columns.xlsx +0 -0
- package/test-files/expression-data-test-sheets/expression_sheet_empty_column.xlsx +0 -0
- package/test-files/expression-data-test-sheets/expression_sheet_empty_row.xlsx +0 -0
- package/test-files/expression-data-test-sheets/expression_sheet_erroneous_data.xlsx +0 -0
- package/test-files/expression-data-test-sheets/expression_sheet_extra_gene_name.xlsx +0 -0
- package/test-files/expression-data-test-sheets/expression_sheet_incorrectly_ordered_time_points.xlsx +0 -0
- package/test-files/expression-data-test-sheets/expression_sheet_mismatched_case_gene_names.xlsx +0 -0
- package/test-files/expression-data-test-sheets/expression_sheet_mismatched_gene_names.xlsx +0 -0
- package/test-files/expression-data-test-sheets/expression_sheet_missing_column_header.xlsx +0 -0
- package/test-files/expression-data-test-sheets/expression_sheet_missing_data_error.xlsx +0 -0
- package/test-files/expression-data-test-sheets/expression_sheet_missing_data_ok.xlsx +0 -0
- package/test-files/expression-data-test-sheets/expression_sheet_missing_data_ok_export_exact.xlsx +0 -0
- package/test-files/expression-data-test-sheets/expression_sheet_missing_gene_name.xlsx +0 -0
- package/test-files/expression-data-test-sheets/expression_sheet_name_not_in_optparams.xlsx +0 -0
- package/test-files/expression-data-test-sheets/expression_sheet_name_not_present.xlsx +0 -0
- package/test-files/expression-data-test-sheets/expression_sheet_negative_time_points.xlsx +0 -0
- package/test-files/expression-data-test-sheets/expression_sheet_non_numerical_time_points.xlsx +0 -0
- package/test-files/expression-data-test-sheets/expression_sheet_not_existing.xlsx +0 -0
- package/test-files/expression-data-test-sheets/expression_sheet_wrong_id_label.xlsx +0 -0
- package/test-files/expression-data-test-sheets/expression_sheet_wrong_order_gene_names.xlsx +0 -0
- package/test-files/expression-data-test-sheets/expression_sheet_wrong_sheet_name_case.xlsx +0 -0
- package/test-files/expression-data-test-sheets/expression_sheet_wrong_sheet_name_convention.xlsx +0 -0
- package/test-files/gene-name-modifications/NaN-as-gene-name-input.xlsx +0 -0
- package/test-files/gene-name-modifications/NaN-as-gene-name-output.xlsx +0 -0
- package/test-files/gene-name-modifications/mismatched-case-related-input.xlsx +0 -0
- package/test-files/gene-name-modifications/mismatched-case-related-output.xlsx +0 -0
- package/test-files/gene-name-modifications/mismatched-case-unrelated-input.xlsx +0 -0
- package/test-files/gene-name-modifications/mismatched-case-unrelated-output.xlsx +0 -0
- package/test-files/graph-tests/different-sized-networks/{80-genes-0-edges.xlsx → 134-genes-0-edges.xlsx} +0 -0
- package/test-files/graph-tests/different-sized-networks/{45-genes-max-edges.xlsx → 44-source-genes-45-target-genes-max-edges.xlsx} +0 -0
- package/test-files/graph-tests/different-sized-networks/{1-gene-0-edges.xlsx → unused-files/1-gene-0-edges.xlsx} +0 -0
- package/test-files/graph-tests/different-sized-networks/{1-gene-1-edges.xlsx → unused-files/1-gene-1-edges.xlsx} +0 -0
- package/test-files/graph-tests/different-sized-networks/{10-genes-50-edges.xlsx → unused-files/10-genes-50-edges.xlsx} +0 -0
- package/test-files/graph-tests/different-sized-networks/{10-genes-90-edges.xlsx → unused-files/10-genes-90-edges.xlsx} +0 -0
- package/test-files/graph-tests/different-sized-networks/{100-genes-0-edges.xlsx → unused-files/100-genes-0-edges.xlsx} +0 -0
- package/test-files/graph-tests/different-sized-networks/{110-genes-0-edges.xlsx → unused-files/110-genes-0-edges.xlsx} +0 -0
- package/test-files/graph-tests/different-sized-networks/{120-genes-0-edges.xlsx → unused-files/120-genes-0-edges.xlsx} +0 -0
- package/test-files/graph-tests/different-sized-networks/{130-genes-0-edges.xlsx → unused-files/130-genes-0-edges.xlsx} +0 -0
- package/test-files/graph-tests/different-sized-networks/{140-genes-0-edges.xlsx → unused-files/140-genes-0-edges.xlsx} +0 -0
- package/test-files/graph-tests/different-sized-networks/{150-genes-10000-edges.xlsx → unused-files/150-genes-10000-edges.xlsx} +0 -0
- package/test-files/graph-tests/different-sized-networks/{150-genes-20000-edges.xlsx → unused-files/150-genes-20000-edges.xlsx} +0 -0
- package/test-files/graph-tests/different-sized-networks/{150-genes-max-edges.xlsx → unused-files/150-genes-max-edges.xlsx} +0 -0
- package/test-files/graph-tests/different-sized-networks/{160-genes-max-edges.xlsx → unused-files/160-genes-max-edges.xlsx} +0 -0
- package/test-files/graph-tests/different-sized-networks/{20-genes-max-edges.xlsx → unused-files/20-genes-max-edges.xlsx} +0 -0
- package/test-files/graph-tests/different-sized-networks/{25-genes-max-edges.xlsx → unused-files/25-genes-max-edges.xlsx} +0 -0
- package/test-files/graph-tests/different-sized-networks/{30-genes-max-edges.xlsx → unused-files/30-genes-max-edges.xlsx} +0 -0
- package/test-files/graph-tests/different-sized-networks/{34-genes-0-edges.xlsx → unused-files/34-genes-0-edges.xlsx} +0 -0
- package/test-files/graph-tests/different-sized-networks/{34-genes-40-edges.xlsx → unused-files/34-genes-40-edges.xlsx} +0 -0
- package/test-files/graph-tests/different-sized-networks/{34-genes-65-edges.xlsx → unused-files/34-genes-65-edges.xlsx} +0 -0
- package/test-files/graph-tests/different-sized-networks/{34-genes-90-edges.xlsx → unused-files/34-genes-90-edges.xlsx} +0 -0
- package/test-files/graph-tests/different-sized-networks/{5-genes-max-edges.xlsx → unused-files/5-genes-max-edges.xlsx} +0 -0
- package/test-files/graph-tests/different-sized-networks/{51-genes-max-edges.xlsx → unused-files/51-genes-max-edges.xlsx} +0 -0
- package/test-files/graph-tests/different-sized-networks/{52-genes-max-edges.xlsx → unused-files/52-genes-max-edges.xlsx} +0 -0
- package/test-files/graph-tests/different-sized-networks/{55-genes-0-edges.xlsx → unused-files/55-genes-0-edges.xlsx} +0 -0
- package/test-files/graph-tests/different-sized-networks/{55-genes-max-edges.xlsx → unused-files/55-genes-max-edges.xlsx} +0 -0
- package/test-files/graph-tests/different-sized-networks/{65-genes-0-edges.xlsx → unused-files/65-genes-0-edges.xlsx} +0 -0
- package/test-files/graph-tests/different-sized-networks/{7-genes-max-edges.xlsx → unused-files/7-genes-max-edges.xlsx} +0 -0
- package/test-files/graph-tests/different-sized-networks/{70-genes-0-edges.xlsx → unused-files/70-genes-0-edges.xlsx} +0 -0
- package/test-files/graph-tests/different-sized-networks/{9-genes-max-edges.xlsx → unused-files/9-genes-max-edges.xlsx} +0 -0
- package/test-files/graph-tests/different-sized-networks/{90-genes-0-edges.xlsx → unused-files/90-genes-0-edges.xlsx} +0 -0
- package/test-files/graph-tests/different-sized-networks/{regulation-matrix-documented-20140709-AllTF-all-targets.xlsx → unused-files/regulation-matrix-documented-20140709-AllTF-all-targets.xlsx} +0 -0
- package/test-files/node-tests/long-gene-name-no-spaces-first.xlsx +0 -0
- package/test-files/node-tests/long-gene-name-no-spaces-second.xlsx +0 -0
- package/test-files/node-tests/long-gene-name-spaces.xlsx +0 -0
- package/test-files/species-test-data/15-genes_28-edges_db5_Dahlquist-data_input_no-species.xlsx +0 -0
- package/test-files/species-test-data/15-genes_28-edges_db5_Dahlquist-data_input_with-species.xlsx +0 -0
- package/test-files/species-test-data/3-gene_7-edge_elegans.xlsx +0 -0
- package/test-files/species-test-data/3-gene_7-edge_melanogaster.xlsx +0 -0
- package/test-files/species-test-data/3-gene_7-edge_musculus.xlsx +0 -0
- package/test-files/species-test-data/3-gene_7-edge_sapiens.xlsx +0 -0
- package/test-files/species-test-data/kev-fake-data-sapiens-no-exp-data.xlsx +0 -0
- package/test-files/spreadsheet-controller-test-files/sheet-name-capitalized-network-optimized-weights.xlsx +0 -0
- package/test-files/spreadsheet-controller-test-files/sheet-name-capitalized-network.xlsx +0 -0
- package/web-client/app.js +1 -1
- package/web-client/controllers/main.js +1 -1
- package/web-client/public/favicon.ico +0 -0
- package/web-client/public/gene/api.js +76 -14
- package/web-client/public/gene/info.js +19 -8
- package/web-client/public/js/api/grnsight-api.js +124 -0
- package/web-client/public/js/constants.js +90 -17
- package/web-client/public/js/createNetwork.js +195 -0
- package/web-client/public/js/graph-statistics.js +7 -7
- package/web-client/public/js/graph.js +369 -324
- package/web-client/public/js/grnsight.js +2 -2
- package/web-client/public/js/grnsight.min.js +128 -59
- package/web-client/public/js/grnstate.js +54 -30
- package/web-client/public/js/iframe-coordination.js +55 -0
- package/web-client/public/js/setup-handlers.js +358 -18
- package/web-client/public/js/setup-load-and-import-handlers.js +105 -66
- package/web-client/public/js/update-app.js +483 -93
- package/web-client/public/js/upload.js +349 -32
- package/web-client/public/js/warnings.js +13 -51
- package/web-client/public/lib/iframeSizer.contentWindow.min.js +10 -0
- package/web-client/public/stylesheets/grnsight.styl +323 -28
- package/web-client/views/components/demo.pug +10 -0
- package/web-client/views/{graph.jade → graph.pug} +0 -0
- package/web-client/views/{info.jade → info.pug} +1 -5
- package/web-client/views/upload.pug +580 -0
- package/_gh_pages/Gemfile +0 -7
- package/_gh_pages/Gemfile.lock +0 -129
- package/documents/SDF/CMSI_402/spring_2014/Southwick_CMSI402_Spring2014_software-development-plan.md +0 -71
- package/documents/SDF/CMSI_402/spring_2014/Southwick_CMSI402_Spring2014_software-requirements-specification.md +0 -71
- package/documents/SDF/CMSI_402/spring_2014/use-case-diagram-spring-2014.jpg +0 -0
- package/documents/SDF/CMSI_402/spring_2017/Anguiano_402_Final_Presentation.pptx +0 -0
- package/documents/SDF/CMSI_402/spring_2017/Anguiano_402_Presentation_Final_Poster.pdf +0 -0
- package/documents/SDF/CMSI_402/spring_2017/Anguiano_CMSI402_Spring2017_project-proposal-presentation.pptx +0 -0
- package/documents/SDF/CMSI_402/spring_2017/Anguiano_CMSI402_Spring2017_project-proposal.docx +0 -0
- package/documents/SDF/CMSI_402/spring_2017/Anguiano_CMSI402_Spring2017_software-development-plan.docx +0 -0
- package/documents/SDF/CMSI_402/spring_2017/Anguiano_CMSI402_Spring2017_software-requirements-specification.docx +0 -0
- package/documents/SDF/CMSI_402/spring_2017/Design Review Presentation.pptx +0 -0
- package/documents/SDF/CMSI_402/spring_2018/0402report.docx +0 -0
- package/documents/SDF/CMSI_402/spring_2018/0409report.docx +0 -0
- package/documents/SDF/CMSI_402/spring_2018/402-gantt.png +0 -0
- package/documents/SDF/CMSI_402/spring_2018/402SRS_GRNSightFeedback01.txt +0 -28
- package/documents/SDF/CMSI_402/spring_2018/402_SPD.md +0 -223
- package/documents/SDF/CMSI_402/spring_2018/ChoeShinCMSI402_Final.pptx +0 -0
- package/documents/SDF/CMSI_402/spring_2018/ProjectProposal.md +0 -22
- package/documents/SDF/CMSI_402/spring_2018/SoftwareRequirementsSpecification.md +0 -88
- package/documents/SDF/CMSI_402/spring_2018/homework/choe_eileen/Choe_Eileen_CMSI 402_HW1.pdf +0 -0
- package/documents/SDF/CMSI_402/spring_2018/homework/choe_eileen/Choe_Eileen_CMSI402_HW2.pdf +0 -0
- package/documents/SDF/CMSI_402/spring_2018/homework/shin_jen/402hw2.docx +0 -0
- package/documents/SDF/CMSI_402/spring_2018/homework/shin_jen/Jen - 402Hw1.docx +0 -0
- package/documents/SDF/CMSI_402/spring_2018/homework/shin_jen/Jen - hw3.docx +0 -0
- package/documents/SDF/CMSI_402/spring_2018/writtenStatusReport.docx +0 -0
- package/documents/SDF/CMSI_402/spring_2018/writtenStatusReport4 +0 -0
- package/documents/abstracts/Anguiano_Varshneya_Undergraduate-Research-Symposium_2017_abstract.pdf +0 -0
- package/documents/abstracts/SIGGRAPH 2017 Abstract/ACM-Reference-Format.bst +0 -3478
- package/documents/abstracts/SIGGRAPH 2017 Abstract/Figure1_zoom100.png +0 -0
- package/documents/abstracts/SIGGRAPH 2017 Abstract/acmart.cls +0 -2352
- package/documents/abstracts/SIGGRAPH 2017 Abstract/acmart.ins +0 -29
- package/documents/abstracts/SIGGRAPH 2017 Abstract/always-weights.png +0 -0
- package/documents/abstracts/SIGGRAPH 2017 Abstract/auto.png +0 -0
- package/documents/abstracts/SIGGRAPH 2017 Abstract/networkA.png +0 -0
- package/documents/abstracts/SIGGRAPH 2017 Abstract/networkB-normalized.png +0 -0
- package/documents/abstracts/SIGGRAPH 2017 Abstract/networkB.png +0 -0
- package/documents/abstracts/SIGGRAPH 2017 Abstract/never-weights.png +0 -0
- package/documents/abstracts/SIGGRAPH 2017 Abstract/representative-image/screenshot.jpg +0 -0
- package/documents/abstracts/SIGGRAPH 2017 Abstract/representative-image/screenshot3x2.png +0 -0
- package/documents/abstracts/SIGGRAPH 2017 Abstract/representative-image/withweights3x2.png +0 -0
- package/documents/abstracts/SIGGRAPH 2017 Abstract/screenshot-auto.png +0 -0
- package/documents/abstracts/SIGGRAPH 2017 Abstract/siggraph-abstract-review.bib +0 -85
- package/documents/abstracts/SIGGRAPH 2017 Abstract/siggraph-abstract-review.pdf +0 -0
- package/documents/abstracts/SIGGRAPH 2017 Abstract/siggraph-abstract-review.tex +0 -235
- package/documents/abstracts/SWE Collegiate Competition 2017.md +0 -9
- package/documents/abstracts/Samdarshi_GRNsight_SoCalSysBio_Abstract_2019.docx +0 -0
- package/documents/abstracts/Varshneya_Samdarshi_Southern-California-Systems-Biology_2017_abstract.docx +0 -0
- package/documents/abstracts/~$mdarshi_SoCalSysBio_Abstract_2019.docx +0 -0
- package/documents/developer_documents/State Diagram.graphml +0 -3525
- package/documents/developer_documents/graphml/State Diagram.graphml +0 -3115
- package/documents/developer_documents/older_versions/GRNsight State Diagram old.png +0 -0
- package/documents/developer_documents/older_versions/GRNsight State Diagram.png +0 -0
- package/documents/developer_documents/testing_script_generator/GRNsightTestingDocument.md +0 -998
- package/documents/developer_documents/testing_script_generator/featureList.json +0 -496
- package/documents/developer_documents/testing_script_generator/testing-script-generator.js +0 -149
- package/documents/manuscripts/peerj-computerscience-2016/GRNsight_PeerJ-CS_conference-presentations_2016.docx +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/GRNsight_PeerJ-CS_manuscript_2016.docx +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/GRNsight_PeerJ-CS_manuscript_2016_Table1.docx +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/GRNsight_PeerJ-CS_manuscript_2016_references.rtf +0 -264
- package/documents/manuscripts/peerj-computerscience-2016/GRNsight_PeerJ-CS_manuscript_2016_text-only.docx +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/21-genes_31-edges_Schade-data_for-screenshots.xlsx +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/Figure1_zoom100.jpg +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/Figure1_zoom100.png +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/Figure1_zoom100.psd +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/Figure1_zoom145.jpg +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/Figure1_zoom145.png +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/Figure1_zoom145.psd +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/Figure1_zoom145_900pix-wide.psd +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/Figure2_zoom100.jpg +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/Figure2_zoom100.png +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/Figure2_zoom100.psd +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/Figure2_zoom145.jpg +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/Figure2_zoom145.png +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/Figure2_zoom145.psd +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/Figure2_zoom145_900pix-wide.psd +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/Figure5A.pdf +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/Figure5B.pdf +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/Figure5C.eps +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/Figure5D.pdf +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/Figure5E.pdf +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/Figure5F.eps +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/Figure5_compiled.png +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/figures/submitted-versions/Figure3_GRNsight-Architecture.pdf +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/figures/submitted-versions/Figure4_GRNsight-Screenshot.pdf +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/figures/submitted-versions/Figure5_compiled.pdf +12 -5383
- package/documents/manuscripts/peerj-computerscience-2016/peerj-reviewing-10823-v0.pdf +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/revisions/GRNsight_PeerJ-CS_conference-presentations_2016_revised.docx +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/revisions/GRNsight_PeerJ-CS_cover-letter-and-response_2016.pdf +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/revisions/GRNsight_PeerJ-CS_cover-letter_2016.docx +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/revisions/GRNsight_PeerJ-CS_cover-letter_2016.pdf +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/revisions/GRNsight_PeerJ-CS_manuscript_2016_Table1.docx +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/revisions/GRNsight_PeerJ-CS_manuscript_2016_references_revised.rtf +0 -385
- package/documents/manuscripts/peerj-computerscience-2016/revisions/GRNsight_PeerJ-CS_manuscript_2016_text-only_revised.docx +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/revisions/GRNsight_PeerJ-CS_manuscript_2016_text-only_revised_marked.docx +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/revisions/GRNsight_PeerJ-CS_response-to-reviewers_2016.docx +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/revisions/GRNsight_PeerJ-CS_response-to-reviewers_2016.pdf +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/revisions/figures/Figure3_GRNsight-Architecture.pdf +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/revisions/figures/Figure4_GRNsight-Screenshot-auto.pdf +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/revisions/figures/Figure4_GRNsight-Screenshot.pdf +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/revisions/peerj-reviewing-10823-v1.pdf +0 -0
- package/documents/posters/Anguiano_CMSI402_2017.pptx +0 -0
- package/documents/posters/Anguiano_Varshneya_LMU-Symposium_2015.pptx +0 -0
- package/documents/posters/Anguiano_Varshneya_SCCUR_2014.pptx +0 -0
- package/documents/posters/Choe_Shin_CMSI402_2018.pptx +0 -0
- package/documents/posters/Dahlquist-et-al_BOSC_ISMB_2016_poster.pptx +0 -0
- package/documents/posters/Lopez_Filler_LMU_Symposium_2019.pdf +0 -0
- package/documents/posters/Lopez_Filler_LMU_Symposium_2019.pptx +0 -0
- package/documents/posters/Samdarshi-et-al_LMU-Symposium_2017.pptx +0 -0
- package/documents/posters/Samdarshi-et-al_LMU-Symposium_2018.pptx +0 -0
- package/documents/posters/Samdarshi-et-al_SoCalSysBio_2019.pptx +0 -0
- package/documents/posters/Shin-et-al_SCCUR_2017.pptx +0 -0
- package/documents/posters/Southwick_CMSI402_2014.pptx +0 -0
- package/documents/posters/Varshneya_Samdarshi_LMU-Symposium_2016.pptx +0 -0
- package/documents/posters/Varshneya_Samdarshi_SoCalSysBio_2017.pptx +0 -0
- package/documents/presentations/Anguiano_402_Final_Presentation.pptx +0 -0
- package/documents/presentations/Choe_SWERapidFire2017_final.pptx +0 -0
- package/documents/presentations/Dahlquist_BOSC_20160709.pptx +0 -0
- package/documents/presentations/Dahlquist_ExperimentalBiology_20160404_talk.pptx +0 -0
- package/documents/presentations/Dahlquist_SoCalSysBio_20150131_talk.pptx +0 -0
- package/documents/presentations/Samdarshi_LMU-Symposium_20190323_talk.pdf +0 -0
- package/documents/presentations/Samdarshi_LMU-Symposium_20190323_talk.pptx +0 -0
- package/documents/presentations/Southwick_Anguiano_LMU-Symposium_20140329_talk.pptx +0 -0
- package/documents/presentations/Southwick_CMSI402_Presentation_20140508_talk.pptx +0 -0
- package/documents/presentations/Varshneya_Anguiano_LMU-Symposium_201703_talk.pptx +0 -0
- package/documents/reports/Samdarshi_Mihir_2019/Samdarshi_2019_Final.docx +0 -0
- package/documents/reports/Samdarshi_Mihir_2019/Samdarshi_Mihir_2019_AnnotatedBibliography.docx +0 -0
- package/documents/reports/Samdarshi_Mihir_2019/Samdarshi_Mihir_2019_Outline.docx +0 -0
- package/documents/reports/Samdarshi_Mihir_2019/~$mdarshi_2019_Draft.docx +0 -0
- package/documents/reports/Samdarshi_Mihir_2019/~$mdarshi_2019_Final_Paper_Draft.docx +0 -0
- package/documents/reports/Varshneya_Anu_2017/Varshneya-201701-AnnotatedBibliography.docx +0 -0
- package/documents/reports/Varshneya_Anu_2017/Varshneya-201702-Introduction.docx +0 -0
- package/documents/reports/Varshneya_Anu_2017/Varshneya-201702-Outline.docx +0 -0
- package/documents/reports/Varshneya_Anu_2017/Varshneya-201703-Discussion.docx +0 -0
- package/documents/reports/Varshneya_Anu_2017/Varshneya-201703-MMResults.docx +0 -0
- package/documents/reports/Varshneya_Anu_2017/Varshneya-201704-Draft-1.docx +0 -0
- package/documents/reports/Varshneya_Anu_2017/Varshneya-201704-Final.docx +0 -0
- package/onlysidebar.html +0 -8
- package/test/graph-library-tests.js +0 -165
- package/test-files/demo-files/21-genes_50-edges_Dahlquist-data_estimation_output.xlsx +0 -0
- package/test-files/demo-files/21-genes_50-edges_Dahlquist-data_input.xlsx +0 -0
- package/test-files/graph-tests/different-sized-networks/10-genes-max-edges.xlsx +0 -0
- package/test-files/graph-tests/different-sized-networks/12-genes-max-edges.xlsx +0 -0
- package/test-files/graph-tests/different-sized-networks/35-genes-max-edges.xlsx +0 -0
- package/test-files/graph-tests/different-sized-networks/40-genes-0-edges.xlsx +0 -0
- package/test-files/graph-tests/different-sized-networks/40-genes-max-edges.xlsx +0 -0
- package/test-files/graph-tests/different-sized-networks/42-genes-max-edges.xlsx +0 -0
- package/test-files/graph-tests/different-sized-networks/50-genes-max-edges.xlsx +0 -0
- package/test-files/graph-tests/different-sized-networks/75-genes-150-edges.xlsx +0 -0
- package/web-client/public/js/container.js +0 -121
- package/web-client/views/upload.jade +0 -464
|
@@ -28,11 +28,16 @@
|
|
|
28
28
|
}, 200);
|
|
29
29
|
});
|
|
30
30
|
|
|
31
|
-
|
|
31
|
+
// object for gene page API calls
|
|
32
|
+
// Thank you https://gist.github.com/pirate/9298155edda679510723
|
|
33
|
+
const query = new URLSearchParams(location.search);
|
|
32
34
|
const obj = {
|
|
33
|
-
symbol:
|
|
34
|
-
species:
|
|
35
|
-
|
|
35
|
+
symbol: query.get("symbol"),
|
|
36
|
+
species: query.get("species"),
|
|
37
|
+
jaspar: query.get("jaspar"),
|
|
38
|
+
uniprot: query.get("uniprot"),
|
|
39
|
+
ensembl: query.get("ensembl"),
|
|
40
|
+
mine: query.get("mine")
|
|
36
41
|
};
|
|
37
42
|
|
|
38
43
|
document.title = "GRNsight - " + obj.symbol;
|
|
@@ -60,11 +65,17 @@
|
|
|
60
65
|
$(".ncbi-link").attr({ href: ncbiHrefTemplate + ncbiId });
|
|
61
66
|
}
|
|
62
67
|
|
|
63
|
-
const ensemblHrefTemplate = "https://www.ensembl.org/
|
|
68
|
+
const ensemblHrefTemplate = "https://www.ensembl.org/" + obj.species + "/Gene/Summary?g=";
|
|
69
|
+
const ensemblPlantHrefTemplate = "https://www.plants.ensembl.org/ " + obj.species + "/Gene/Summary?g=";
|
|
64
70
|
const ensemblId = locusTag;
|
|
71
|
+
// console.log("ensembl id: " + ensemblId)
|
|
65
72
|
$(".ensembl-link").text(ensemblId);
|
|
66
73
|
if (ensemblId !== "Not found") {
|
|
67
|
-
|
|
74
|
+
if ( obj.ensembl === "plant") {
|
|
75
|
+
$(".ensembl-link").attr({ href: ensemblPlantHrefTemplate + ensemblId });
|
|
76
|
+
} else {
|
|
77
|
+
$(".ensembl-link").attr({ href: ensemblHrefTemplate + ensemblId });
|
|
78
|
+
}
|
|
68
79
|
}
|
|
69
80
|
|
|
70
81
|
const uniprotHrefTemplate = "http://www.uniprot.org/uniprot/";
|
|
@@ -86,8 +97,8 @@
|
|
|
86
97
|
$(".geneDescription").text(geneDescription).attr({ href: sgdHrefTemplate + geneDescription });
|
|
87
98
|
|
|
88
99
|
|
|
89
|
-
const
|
|
90
|
-
$(".uniProtSpecies").text(
|
|
100
|
+
const GRNSightSpecies = obj.species.replace("_", " "); // change to make species display work
|
|
101
|
+
$(".uniProtSpecies").text(GRNSightSpecies).attr({ href: uniprotHrefTemplate + GRNSightSpecies });
|
|
91
102
|
|
|
92
103
|
// This has been moved to top of function
|
|
93
104
|
$(".ncbiLocusTag").text(locusTag).attr({ href: ncbiHrefTemplate + locusTag });
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import {responseCustomWorkbookData} from "../setup-load-and-import-handlers";
|
|
2
|
+
|
|
3
|
+
// Expression DB Access Functions
|
|
4
|
+
const buildExpressionTimepointsString = function (selection) {
|
|
5
|
+
let timepoints = "";
|
|
6
|
+
selection.timepoints.forEach(x => timepoints += (x + ","));
|
|
7
|
+
return timepoints.substring(0, timepoints.length - 1);
|
|
8
|
+
};
|
|
9
|
+
const buildExpressionGeneQuery = function (workbookGenes) {
|
|
10
|
+
let genes = "";
|
|
11
|
+
workbookGenes.forEach(x => genes += (x.name + ","));
|
|
12
|
+
return genes.substring(0, genes.length - 1);
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
const buildExpressionURL = function (selection, genes) {
|
|
16
|
+
const baseQuery = `expressiondb?dataset=${selection.dataset}&genes=${buildExpressionGeneQuery(genes)}`;
|
|
17
|
+
return selection.timepoints ?
|
|
18
|
+
`${baseQuery}&timepoints=${buildExpressionTimepointsString(selection)}` :
|
|
19
|
+
baseQuery;
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
const responseExpressionData = (formData, queryURL) => {
|
|
23
|
+
return new Promise(function (resolve) {
|
|
24
|
+
const uploadRoute = queryURL;
|
|
25
|
+
const fullUrl = [ $(".service-root").val(), uploadRoute ].join("/");
|
|
26
|
+
(formData ?
|
|
27
|
+
$.ajax({
|
|
28
|
+
url: fullUrl,
|
|
29
|
+
data: formData,
|
|
30
|
+
processData: false,
|
|
31
|
+
contentType: false,
|
|
32
|
+
type: "GET",
|
|
33
|
+
crossDomain: true
|
|
34
|
+
}) :
|
|
35
|
+
$.getJSON(fullUrl)
|
|
36
|
+
).done((expressionData) => {
|
|
37
|
+
resolve(expressionData);
|
|
38
|
+
}).error(console.log("Error in accessing expression database. Result may just be loading."));
|
|
39
|
+
});
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
const queryExpressionDatabase = (query) => {
|
|
43
|
+
let queryURL = buildExpressionURL({dataset: query.dataset}, query.genes);
|
|
44
|
+
return responseExpressionData("", queryURL);
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
// Network DB Access Functions
|
|
48
|
+
|
|
49
|
+
const buildNetworkGenesQuery = (genes) => {
|
|
50
|
+
let result = "";
|
|
51
|
+
for (let gene in genes) {
|
|
52
|
+
result += `${gene},`;
|
|
53
|
+
}
|
|
54
|
+
return result.substring(0, result.length - 1);
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
const buildNetworkURL = function (queryType, queryInfo) {
|
|
58
|
+
let baseQuery = `networkdb?type=${queryType}`;
|
|
59
|
+
if (queryInfo !== null) {
|
|
60
|
+
for (let header in queryInfo) {
|
|
61
|
+
if (header === "genes") {
|
|
62
|
+
baseQuery += `&${header}=${buildNetworkGenesQuery(queryInfo[header])}`;
|
|
63
|
+
} else {
|
|
64
|
+
baseQuery += `&${header}=${queryInfo[header]}`;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return baseQuery;
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
const responseNetworkData = (formData, queryURL) => {
|
|
72
|
+
return new Promise(function (resolve) {
|
|
73
|
+
const uploadRoute = queryURL;
|
|
74
|
+
const fullUrl = [ $(".service-root").val(), uploadRoute ].join("/");
|
|
75
|
+
(formData ?
|
|
76
|
+
$.ajax({
|
|
77
|
+
url: fullUrl,
|
|
78
|
+
data: formData,
|
|
79
|
+
processData: false,
|
|
80
|
+
contentType: false,
|
|
81
|
+
type: "GET",
|
|
82
|
+
crossDomain: true
|
|
83
|
+
}) :
|
|
84
|
+
$.getJSON(fullUrl)
|
|
85
|
+
).done((networkData) => {
|
|
86
|
+
resolve(networkData);
|
|
87
|
+
}).error(console.log("Error in accessing network database. Result may just be loading."));
|
|
88
|
+
});
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
const queryNetworkDatabase = (query) => {
|
|
92
|
+
let queryURL = buildNetworkURL(query.type, query.info);
|
|
93
|
+
return responseNetworkData("", queryURL);
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
// Upload Custom Workbook Functions
|
|
97
|
+
const buildCustomWorkbookURL = (name, genes, links) => {
|
|
98
|
+
let baseQuery = `upload-custom-workbook?name=${name}`;
|
|
99
|
+
let genesString = "";
|
|
100
|
+
let linksString = "";
|
|
101
|
+
let genesByIndex = {};
|
|
102
|
+
let i = 0;
|
|
103
|
+
for (let gene in genes) {
|
|
104
|
+
genesString += `${genes[gene]},`;
|
|
105
|
+
genesByIndex[gene] = i;
|
|
106
|
+
i++;
|
|
107
|
+
}
|
|
108
|
+
for (let regulator in links) {
|
|
109
|
+
for (let target of links[regulator]) {
|
|
110
|
+
linksString += `${genesByIndex[regulator]}->${genesByIndex[target]},`;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
baseQuery += `&genes=${genesString.substring(0, genesString.length - 1)}`;
|
|
114
|
+
baseQuery += `&links=${linksString.substring(0, linksString.length - 1)}`;
|
|
115
|
+
return baseQuery;
|
|
116
|
+
};
|
|
117
|
+
|
|
118
|
+
const uploadCustomWorkbook = (workbook, grnState) => {
|
|
119
|
+
let queryURL = buildCustomWorkbookURL(workbook.name, workbook.genes, workbook.links);
|
|
120
|
+
return responseCustomWorkbookData(grnState, queryURL, workbook.name);
|
|
121
|
+
};
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
export {queryExpressionDatabase, queryNetworkDatabase, uploadCustomWorkbook};
|
|
@@ -1,19 +1,37 @@
|
|
|
1
|
+
export const HOST_SITE = "https://dondi.github.io";
|
|
2
|
+
|
|
3
|
+
export const FILE_NAME = "#fileName";
|
|
4
|
+
|
|
1
5
|
export const GREY_EDGES_DASHED_MENU = "#grey-edges-dashed-menu";
|
|
2
6
|
export const GREY_EDGES_DASHED_SIDEBAR = "#dashedGrayLineButton";
|
|
3
7
|
|
|
4
|
-
export const
|
|
8
|
+
export const CREATE_NETWORK_CLASS = ".create-network";
|
|
9
|
+
export const CREATE_NETWORK_MODAL = "#createNetworkModal";
|
|
10
|
+
|
|
11
|
+
export const UNWEIGHTED_DEMO_ID = ".unweighted";
|
|
5
12
|
export const UNWEIGHTED_DEMO_PATH = "demo/unweighted";
|
|
6
|
-
export const UNWEIGHTED_DEMO_NAME = "Demo #1: Unweighted GRN (
|
|
7
|
-
export const WEIGHTED_DEMO_ID = "
|
|
13
|
+
export const UNWEIGHTED_DEMO_NAME = "Demo #1: Unweighted GRN (15 genes, 28 edges)";
|
|
14
|
+
export const WEIGHTED_DEMO_ID = ".weighted";
|
|
8
15
|
export const WEIGHTED_DEMO_PATH = "demo/weighted";
|
|
9
|
-
export const WEIGHTED_DEMO_NAME = "Demo #2: Weighted GRN (
|
|
10
|
-
export const SCHADE_INPUT_ID = "
|
|
16
|
+
export const WEIGHTED_DEMO_NAME = "Demo #2: Weighted GRN (15 genes, 28 edges, Dahlquist Lab unpublished data)";
|
|
17
|
+
export const SCHADE_INPUT_ID = ".schadeInput";
|
|
11
18
|
export const SCHADE_INPUT_PATH = "demo/schadeInput";
|
|
12
19
|
export const SCHADE_INPUT_NAME = "Demo #3: Unweighted GRN (21 genes, 31 edges)";
|
|
13
|
-
export const SCHADE_OUTPUT_ID = "
|
|
14
|
-
export const SCHADE_OUTPUT_PATH
|
|
20
|
+
export const SCHADE_OUTPUT_ID = ".schadeOutput";
|
|
21
|
+
export const SCHADE_OUTPUT_PATH = "demo/schadeOutput";
|
|
15
22
|
export const SCHADE_OUTPUT_NAME = "Demo #4: Weighted GRN (21 genes, 31 edges, Schade et al. 2004 data)";
|
|
16
23
|
|
|
24
|
+
export const EXPORT_TO_EXCEL = "#exportAsExcelWkbk";
|
|
25
|
+
export const EXPORT_TO_UNWEIGHTED_SIF = "#exportAsUnweightedSif";
|
|
26
|
+
export const EXPORT_TO_WEIGHTED_SIF = "#exportAsWeightedSif";
|
|
27
|
+
export const EXPORT_TO_UNWEIGHTED_GML = "#exportAsUnweightedGraphMl";
|
|
28
|
+
export const EXPORT_TO_WEIGHTED_GML = "#exportAsWeightedGraphMl";
|
|
29
|
+
export const EXPORT_TO_PNG = "#exportAsPng";
|
|
30
|
+
export const EXPORT_TO_SVG = "#exportAsSvg";
|
|
31
|
+
export const EXPORT_TO_PDF = "#exportAsPdf";
|
|
32
|
+
export const EXPORT_WEIGHTED_CLASS = ".weighted.export";
|
|
33
|
+
export const EXPRESSION_SOURCE = "#expressionSource";
|
|
34
|
+
|
|
17
35
|
export const DEMO_INFORMATION = [
|
|
18
36
|
[ WEIGHTED_DEMO_ID, WEIGHTED_DEMO_PATH, WEIGHTED_DEMO_NAME ],
|
|
19
37
|
[ UNWEIGHTED_DEMO_ID, UNWEIGHTED_DEMO_PATH, UNWEIGHTED_DEMO_NAME ],
|
|
@@ -24,7 +42,7 @@ export const DEMO_INFORMATION = [
|
|
|
24
42
|
export const MIN_EDGE_WEIGHT_NORMALIZATION = 0.0001;
|
|
25
43
|
export const MAX_EDGE_WEIGHT_NORMALIZATION = 1000;
|
|
26
44
|
|
|
27
|
-
export const DEFAULT_ZOOM_VALUE =
|
|
45
|
+
export const DEFAULT_ZOOM_VALUE = 100;
|
|
28
46
|
|
|
29
47
|
export const GREY_EDGE_THRESHOLD_MENU = "#gray-edge-threshold-menu";
|
|
30
48
|
export const GREY_EDGE_THRESHOLD_SLIDER_SIDEBAR = "#grayThresholdInput";
|
|
@@ -50,9 +68,10 @@ export const SHOW_WEIGHTS_MOUSEOVER = "showWeightsMouseover";
|
|
|
50
68
|
export const SHOW_ALL_WEIGHTS = "showAllWeights";
|
|
51
69
|
export const HIDE_ALL_WEIGHTS = "hideAllWeights";
|
|
52
70
|
|
|
53
|
-
export const COLOR_EDGES = "
|
|
54
|
-
export const BLACK_EDGES = "#blackEdges";
|
|
71
|
+
export const COLOR_EDGES = ".colorEdges";
|
|
55
72
|
export const ACTIVE_COLOR_OPTION = "active";
|
|
73
|
+
export const COLOR_EDGES_MENU = "#colorEdges";
|
|
74
|
+
export const COLOR_EDGES_SIDEBAR = "#colorEdgesSidebar";
|
|
56
75
|
|
|
57
76
|
export const GRAVITY_LENGTH_WITHOUT_ZERO = 3;
|
|
58
77
|
export const LOCK_SLIDERS_CLASS = ".lockSliders";
|
|
@@ -79,17 +98,33 @@ export const CHARGE_DEFAULT_VALUE = -50;
|
|
|
79
98
|
|
|
80
99
|
export const GRID_LAYOUT = "GRID_LAYOUT";
|
|
81
100
|
export const FORCE_GRAPH = "FORCE_GRAPH";
|
|
101
|
+
export const FORCE_GRAPH_BUTTON = "#forceGraphButton";
|
|
82
102
|
export const GRID_LAYOUT_BUTTON = "#gridLayoutButton";
|
|
83
|
-
export const
|
|
84
|
-
export const
|
|
103
|
+
export const FORCE_GRAPH_MENU = "#forceGraph";
|
|
104
|
+
export const GRID_LAYOUT_MENU = "#gridLayout";
|
|
85
105
|
|
|
86
106
|
export const MINIMUM_MAX_LOG_FOLD_CHANGE = 0;
|
|
87
107
|
export const MAXIMUM_MAX_LOG_FOLD_CHANGE = 100;
|
|
88
108
|
export const DEFAULT_MAX_LOG_FOLD_CHANGE = 3;
|
|
89
109
|
export const MAX_NUM_CHARACTERS_DROPDOWN = 24;
|
|
110
|
+
export const LAYOUT_SIDEBAR_PANEL = "#layoutSidebarPanel";
|
|
111
|
+
export const EDGE_WEIGHT_MENU_CLASS = ".weightedGraphOptionsMenu";
|
|
112
|
+
export const EDGE_WEIGHT_SIDEBAR = ".edge-weight-sidebar";
|
|
113
|
+
export const EDGE_WEIGHT_SIDEBAR_HEADER_LINK = "#edgeWeightHeaderLink";
|
|
114
|
+
export const EXPRESSION_DB_MENU = ".data-sidebar";
|
|
115
|
+
export const EXPRESSION_DB_MENU_HEADER_LINK = "#dataSidebarLink";
|
|
116
|
+
export const EXPRESSION_DB_SIDEBAR_PANEL = "#dataSidebarPanel";
|
|
117
|
+
export const EXPRESSION_DB_LOADER = ".expression-db-loader";
|
|
118
|
+
export const EXPRESSION_DB_LOADER_TEXT = ".expression-db-loader-text";
|
|
119
|
+
export const DATA_SET_SELECT = "#data-set-select";
|
|
90
120
|
export const NODE_COLORING_MENU = ".node-coloring";
|
|
91
121
|
export const NODE_COLORING_MENU_CLASS = ".node-coloring-menu";
|
|
92
|
-
export const
|
|
122
|
+
export const NODE_COLORING_SIDEBAR_PANEL = "#nodeColoringSidebarPanel";
|
|
123
|
+
export const NODE_COLORING_SIDEBAR_HEADER_LINK = "#nodeColoringHeaderLink";
|
|
124
|
+
export const NODE_COLORING_SIDEBAR_BODY = ".nodeColoringSidebarBody";
|
|
125
|
+
export const DATA_SIDEBAR_BODY = ".dataSidebarBody";
|
|
126
|
+
export const NODE_COLORING_SIDEBAR_HEADER = "#sidebarPanelHeader";
|
|
127
|
+
export const NODE_COLORING_TOGGLE_SIDEBAR = "#nodeColoringToggleSidebar";
|
|
93
128
|
export const AVG_REPLICATE_VALS_BOTTOM_SIDEBAR = "#averageDataBottom";
|
|
94
129
|
export const AVG_REPLICATE_VALS_TOP_SIDEBAR = "#averageDataTop";
|
|
95
130
|
export const AVG_REPLICATE_VALS_TOP_MENU = "#averageDataTopMenu";
|
|
@@ -97,6 +132,7 @@ export const AVG_REPLICATE_VALS_BOTTOM_MENU = "#averageDataBottomMen
|
|
|
97
132
|
export const NODE_COLORING_TOGGLE_MENU = "#node-coloring-toggle-menu";
|
|
98
133
|
export const NODE_COLORING_TOGGLE_CLASS = ".nodeColoringToggle";
|
|
99
134
|
export const LOG_FOLD_CHANGE_MAX_VALUE_CLASS = ".logFoldChangeMaxValue";
|
|
135
|
+
export const LOG_FOLD_CHANGE_MAX_VALUE_HEADER = "#logFoldChangeMaxValue";
|
|
100
136
|
export const LOG_FOLD_CHANGE_MAX_VALUE_SIDEBAR_INPUT = "#log-fold-change-max-value-sidebar";
|
|
101
137
|
export const LOG_FOLD_CHANGE_MAX_VALUE_SIDEBAR_BUTTON = "#log-fold-change-button";
|
|
102
138
|
export const LOG_FOLD_CHANGE_MAX_VALUE_MENU = "#log-fold-change-max-value-menu";
|
|
@@ -106,7 +142,44 @@ export const TOP_DATASET_SELECTION_SIDEBAR = "#dataset-top";
|
|
|
106
142
|
export const BOTTOM_DATASET_SELECTION_MENU = "#bottomDatasetDropdownMenu";
|
|
107
143
|
export const BOTTOM_DATASET_SELECTION_SIDEBAR = "#dataset-bottom";
|
|
108
144
|
|
|
109
|
-
export const
|
|
110
|
-
export const
|
|
111
|
-
export const
|
|
112
|
-
export const
|
|
145
|
+
export const SPECIES_IDENTIFIED_NAME = "#speciesName";
|
|
146
|
+
export const SPECIES_DISPLAY = "#speciesDropdown";
|
|
147
|
+
export const SPECIES_BUTTON_YEAST = "#Saccharomyces_cerevisiae";
|
|
148
|
+
export const SPECIES_BUTTON_HUMAN = "#Homo_sapiens";
|
|
149
|
+
export const SPECIES_BUTTON_FLY = "#Drosophila_melanogaster";
|
|
150
|
+
export const SPECIES_BUTTON_NEMATODE = "#Caenorhabditis_elegans";
|
|
151
|
+
export const SPECIES_BUTTON_MOUSE = "#Mus_musculus";
|
|
152
|
+
export const SPECIES_BUTTON_CRESS = "#Arabidopsis_thaliana";
|
|
153
|
+
|
|
154
|
+
export const NODE_COLORING_USING_EXPRESSION_DATA = "#expressionDB";
|
|
155
|
+
|
|
156
|
+
export const ZOOM_CONTROL = ".zoom";
|
|
157
|
+
export const ZOOM_DISPLAY_MAXIMUM_SELECTOR = ".maximum-zoom-display";
|
|
158
|
+
export const ZOOM_DISPLAY_MAXIMUM_VALUE = 200;
|
|
159
|
+
export const ZOOM_DISPLAY_MINIMUM_SELECTOR = ".minimum-zoom-display";
|
|
160
|
+
export const ZOOM_DISPLAY_MINIMUM_VALUE = 25;
|
|
161
|
+
export const ZOOM_DISPLAY_MIDDLE = 100;
|
|
162
|
+
export const ZOOM_ADAPTIVE_MAX_SCALE = 4;
|
|
163
|
+
export const ZOOM_SLIDER = "#zoomSlider";
|
|
164
|
+
export const ZOOM_INPUT = "#zoomInput";
|
|
165
|
+
export const ZOOM_PERCENT = "#zoomPercent";
|
|
166
|
+
|
|
167
|
+
export const VIEWPORT_INIT = "containerInit";
|
|
168
|
+
export const VIEWPORT_FIT = "containerFit";
|
|
169
|
+
export const VIEWPORT_S = "containerS";
|
|
170
|
+
export const VIEWPORT_M = "containerM";
|
|
171
|
+
export const VIEWPORT_L = "containerL";
|
|
172
|
+
|
|
173
|
+
export const VIEWPORT_SIZE_S_DROPDOWN = "#viewport-size-s";
|
|
174
|
+
export const VIEWPORT_SIZE_M_DROPDOWN = "#viewport-size-m";
|
|
175
|
+
export const VIEWPORT_SIZE_L_DROPDOWN = "#viewport-size-l";
|
|
176
|
+
export const VIEWPORT_SIZE_FIT_DROPDOWN = "#viewport-size-fit";
|
|
177
|
+
export const VIEWPORT_SIZE_S_SIDEBAR = "#boundBoxS";
|
|
178
|
+
export const VIEWPORT_SIZE_M_SIDEBAR = "#boundBoxM";
|
|
179
|
+
export const VIEWPORT_SIZE_L_SIDEBAR = "#boundBoxL";
|
|
180
|
+
export const VIEWPORT_SIZE_FIT_SIDEBAR = "#boundBoxFit";
|
|
181
|
+
export const VIEWPORT_OPTION_CLASS = ".viewportOption";
|
|
182
|
+
export const VIEWPORT_OPTION_CLASS_SIDEBAR = ".boundBoxSize";
|
|
183
|
+
|
|
184
|
+
|
|
185
|
+
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
import {CREATE_NETWORK_CLASS, CREATE_NETWORK_MODAL} from "./constants";
|
|
2
|
+
import { queryNetworkDatabase, uploadCustomWorkbook } from "./api/grnsight-api";
|
|
3
|
+
import { grnState } from "./grnstate";
|
|
4
|
+
|
|
5
|
+
export const createNetwork = function () {
|
|
6
|
+
const createHTMLforForm = (sources) => {
|
|
7
|
+
let result = `
|
|
8
|
+
<div id=\'createNetworkFormContainer\' '>
|
|
9
|
+
<h2 id=\'createNetwork\'>Create Network</h2>
|
|
10
|
+
<div class=\'form-group\'>
|
|
11
|
+
<label for=\'network-source\' id=\'network-source-label\'>Network Source</label>
|
|
12
|
+
<select class=\'network-dropdown btn btn-default\' id=\'network-source\'>
|
|
13
|
+
`;
|
|
14
|
+
if (sources.length !== 1) {
|
|
15
|
+
result += "<option value=\'none\' selected=\'true\' disabled>Select Network Source</option>";
|
|
16
|
+
for (let source in sources) {
|
|
17
|
+
result += `
|
|
18
|
+
<option value=\'${sources[source]}\'>${sources[source]}</option>
|
|
19
|
+
`;
|
|
20
|
+
}
|
|
21
|
+
} else {
|
|
22
|
+
result += `
|
|
23
|
+
<option value=\'${sources[0]}\' selected=\'true\' disabled hidden>${sources[0]}</option>
|
|
24
|
+
`;
|
|
25
|
+
}
|
|
26
|
+
result += `</select>
|
|
27
|
+
<p>Warning: changing network source will remove all current genes in network</p>
|
|
28
|
+
</div>
|
|
29
|
+
<div class=\'form-group\' id=\'getNetworkGenesForm\'>
|
|
30
|
+
<form id=\'getNetworkGenesForm\'>
|
|
31
|
+
<label for=\'network-search-bar\' id=\'network-source-label\'>Select genes</label>
|
|
32
|
+
<input type=\'text\' id=\'network-search-bar\' name=\'network-search-bar\'></input>
|
|
33
|
+
<button id=\'enter-search\' type=\'submit\' class=\'search-button btn btn-default\'>
|
|
34
|
+
<span class=\'glyphicon glyphicon-search\'></span>
|
|
35
|
+
</button>
|
|
36
|
+
</form>
|
|
37
|
+
</div>
|
|
38
|
+
<div id=\'selected-genes-container\'>
|
|
39
|
+
<div id=\'selected-genes\'>
|
|
40
|
+
<p>Added genes go here! Click on a gene to remove it</p>
|
|
41
|
+
</div>
|
|
42
|
+
</div>
|
|
43
|
+
<button id=\'submit-network\' class=\'btn btn-default\'>Create Network</input>
|
|
44
|
+
</div>
|
|
45
|
+
`;
|
|
46
|
+
return result;
|
|
47
|
+
};
|
|
48
|
+
const createGeneButtons = function () {
|
|
49
|
+
let result = `<div id=\'selected-genes\'>
|
|
50
|
+
<p>Added genes go below! Click on a gene to remove it.</p>
|
|
51
|
+
<div id=\'custom-network-genes-container\'>
|
|
52
|
+
`;
|
|
53
|
+
for (let gene in grnState.customWorkbook.genes) {
|
|
54
|
+
result += `
|
|
55
|
+
<div class=\'custom-network-gene\' id=${gene}>
|
|
56
|
+
<p class=\'custom-network-gene-display-id\'>
|
|
57
|
+
${grnState.customWorkbook.genes[gene]}
|
|
58
|
+
</p>
|
|
59
|
+
<p class=\'custom-network-gene-id\'>
|
|
60
|
+
(${gene})
|
|
61
|
+
</p>
|
|
62
|
+
</div>
|
|
63
|
+
`;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
result += "</div></div>";
|
|
67
|
+
return result;
|
|
68
|
+
};
|
|
69
|
+
const displayCurrentGenes = function () {
|
|
70
|
+
$("#selected-genes").remove();
|
|
71
|
+
$("#selected-genes-container").append(createGeneButtons());
|
|
72
|
+
for (let gene in grnState.customWorkbook.genes) {
|
|
73
|
+
$(`#${gene}`).on("click", (ev) => {
|
|
74
|
+
ev.stopPropagation();
|
|
75
|
+
$(`#${gene}`).remove();
|
|
76
|
+
delete grnState.customWorkbook.genes[gene];
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
const addGene = function () {
|
|
82
|
+
let gene = `${$("#network-search-bar").val()}`.toUpperCase();
|
|
83
|
+
$("#network-search-bar").val("");
|
|
84
|
+
if (!(/^[A-Z0-9_-]{1,12}$/.test(gene))) {
|
|
85
|
+
alert(`Gene: ${gene} is not to GRNsight specifications. Genes must be 12 characters or less,
|
|
86
|
+
containing "-", "_", and alpha-numeric characters only`);
|
|
87
|
+
} else {
|
|
88
|
+
let source = grnState.customWorkbook.source;
|
|
89
|
+
let headers = {
|
|
90
|
+
type:"NetworkGeneFromSource",
|
|
91
|
+
info: {
|
|
92
|
+
gene: gene,
|
|
93
|
+
source:grnState.customWorkbook.sources[source].source,
|
|
94
|
+
timestamp:grnState.customWorkbook.sources[source].timestamp.substring(0, 19).replace("T", " ")
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
queryNetworkDatabase(headers).then(function (response) {
|
|
98
|
+
if (response.geneId !== null && response.displayGeneId !== null) {
|
|
99
|
+
grnState.customWorkbook.genes[response.geneId] = response.displayGeneId;
|
|
100
|
+
displayCurrentGenes();
|
|
101
|
+
} else {
|
|
102
|
+
alert(`Gene: ${gene} was not found in this database. Please check for any typos and try again.`);
|
|
103
|
+
}
|
|
104
|
+
}).catch(function (error) {
|
|
105
|
+
console.log(error.stack);
|
|
106
|
+
console.log(error.name);
|
|
107
|
+
console.log(error.message);
|
|
108
|
+
});
|
|
109
|
+
|
|
110
|
+
}
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
const displayCreateNetworkModal = function () {
|
|
114
|
+
$("#createNetworkFormContainer").remove();
|
|
115
|
+
grnState.customWorkbook = {
|
|
116
|
+
genes : {},
|
|
117
|
+
source : null
|
|
118
|
+
};
|
|
119
|
+
// get sources from database
|
|
120
|
+
queryNetworkDatabase({type:"NetworkSource", info:null}).then(function (response) {
|
|
121
|
+
$("#createNetworkQuestions-container").append(createHTMLforForm(Object.keys(response.sources)));
|
|
122
|
+
grnState.customWorkbook.sources = response.sources;
|
|
123
|
+
grnState.customWorkbook.source = Object.keys(response.sources).length === 1 ?
|
|
124
|
+
Object.keys(response.sources)[0] : null;
|
|
125
|
+
}).catch(function (error) {
|
|
126
|
+
console.log(error.stack);
|
|
127
|
+
console.log(error.name);
|
|
128
|
+
console.log(error.message);
|
|
129
|
+
});
|
|
130
|
+
$(CREATE_NETWORK_MODAL).modal("show");
|
|
131
|
+
};
|
|
132
|
+
|
|
133
|
+
$("body").on("click", CREATE_NETWORK_CLASS, function (event) {
|
|
134
|
+
event.preventDefault();
|
|
135
|
+
event.stopPropagation();
|
|
136
|
+
displayCreateNetworkModal();
|
|
137
|
+
});
|
|
138
|
+
|
|
139
|
+
$("body").on("change", "#network-source", function (event) {
|
|
140
|
+
grnState.customWorkbook.source = $("#network-source").val();
|
|
141
|
+
grnState.customWorkbook.genes = {};
|
|
142
|
+
event.stopPropagation();
|
|
143
|
+
displayCurrentGenes();
|
|
144
|
+
});
|
|
145
|
+
$("body").on("click", "#submit-network", function () {
|
|
146
|
+
let genesAmount = Object.keys(grnState.customWorkbook.genes).length;
|
|
147
|
+
if (genesAmount === 0 ) {
|
|
148
|
+
alert("Network must have at least 1 gene");
|
|
149
|
+
} else if (genesAmount > 75) {
|
|
150
|
+
alert(`GRNsight is only capable of handling 75 genes at most. Your proposed network contains
|
|
151
|
+
${genesAmount} genes. Please remove some genes from your proposed network.`);
|
|
152
|
+
} else {
|
|
153
|
+
|
|
154
|
+
let source = grnState.customWorkbook.source;
|
|
155
|
+
let headers = {
|
|
156
|
+
type:"CreateNetwork",
|
|
157
|
+
info: {
|
|
158
|
+
genes: grnState.customWorkbook.genes,
|
|
159
|
+
source:grnState.customWorkbook.sources[source].source,
|
|
160
|
+
timestamp:grnState.customWorkbook.sources[source].timestamp.substring(0, 19).replace("T", " ")
|
|
161
|
+
}
|
|
162
|
+
};
|
|
163
|
+
queryNetworkDatabase(headers).then(function (response) {
|
|
164
|
+
grnState.customWorkbook.links = response.links;
|
|
165
|
+
let genes = grnState.customWorkbook.genes;
|
|
166
|
+
let links = grnState.customWorkbook.links;
|
|
167
|
+
let genesAmount = Object.keys(genes).length;
|
|
168
|
+
let edgesAmount = Object.keys(links).length;
|
|
169
|
+
if (edgesAmount > 100) {
|
|
170
|
+
alert(`GRNsight is only capable of handling 100 edges at most. Your proposed network contains
|
|
171
|
+
${edgesAmount} regulatory connections. Please remove some genes from your proposed network.`);
|
|
172
|
+
} else {
|
|
173
|
+
let name = `Custom Workbook: UnweightedGRN(${genesAmount} genes, ${edgesAmount} edges)`;
|
|
174
|
+
let workbook = {name, genes, links};
|
|
175
|
+
uploadCustomWorkbook(workbook, grnState);
|
|
176
|
+
$(CREATE_NETWORK_MODAL).modal("hide");
|
|
177
|
+
}
|
|
178
|
+
}).catch(function (error) {
|
|
179
|
+
console.log(error.stack);
|
|
180
|
+
console.log(error.name);
|
|
181
|
+
console.log(error.message);
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
});
|
|
185
|
+
|
|
186
|
+
$("body").on("click", "#enter-search", function (event) {
|
|
187
|
+
try {
|
|
188
|
+
event.preventDefault();
|
|
189
|
+
event.stopPropagation();
|
|
190
|
+
addGene();
|
|
191
|
+
} catch (error) {
|
|
192
|
+
console.log(error);
|
|
193
|
+
}
|
|
194
|
+
});
|
|
195
|
+
};
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
var displayStatistics = function (
|
|
1
|
+
var displayStatistics = function (workbook) { // eslint-disable-line no-unused-vars
|
|
2
2
|
var $container = $(".graph-statistics-container").removeClass("hidden");
|
|
3
3
|
var $thead = $container.find("thead");
|
|
4
4
|
var $tbody = $container.find("tbody").empty();
|
|
5
5
|
|
|
6
6
|
// TODO Still quick-and-dirty, needs robustness and optimization.
|
|
7
7
|
var betweennessCentralityFor = function (geneName) {
|
|
8
|
-
return
|
|
8
|
+
return workbook.graphStatisticsReport.betweennessCentrality.filter(function (bcItem) {
|
|
9
9
|
return bcItem.gene.name === geneName;
|
|
10
10
|
})[0].betweennessCentrality;
|
|
11
11
|
};
|
|
12
12
|
|
|
13
13
|
var shortestPath = function (sourceName, targetName) {
|
|
14
|
-
var rawResult =
|
|
14
|
+
var rawResult = workbook.graphStatisticsReport.shortestPath.filter(function (spItem) {
|
|
15
15
|
return spItem.source === sourceName && spItem.pathData.target === targetName;
|
|
16
16
|
})[0].pathData.shortestPath;
|
|
17
17
|
|
|
@@ -20,20 +20,20 @@ var displayStatistics = function (network) { // eslint-disable-line no-unused-va
|
|
|
20
20
|
|
|
21
21
|
var populateHead = function () {
|
|
22
22
|
$thead.find(".shortest-path-column-headers").empty().append(
|
|
23
|
-
|
|
23
|
+
workbook.genes.map(function (gene) {
|
|
24
24
|
return $("<th></th>").text(gene.name);
|
|
25
25
|
})
|
|
26
26
|
);
|
|
27
27
|
|
|
28
|
-
$thead.find(".shortest-path-header").attr({ colspan:
|
|
28
|
+
$thead.find(".shortest-path-header").attr({ colspan: workbook.genes.length });
|
|
29
29
|
};
|
|
30
30
|
|
|
31
31
|
var populateBody = function () {
|
|
32
|
-
$tbody.append(
|
|
32
|
+
$tbody.append(workbook.genes.map(function (gene) {
|
|
33
33
|
return $("<tr></tr>")
|
|
34
34
|
.append($("<th></th>").text(gene.name))
|
|
35
35
|
.append($("<td></td>").text(betweennessCentralityFor(gene.name)))
|
|
36
|
-
.append(
|
|
36
|
+
.append(workbook.genes.map(function (targetGene) {
|
|
37
37
|
return $("<td></td>").text(shortestPath(gene.name, targetGene.name));
|
|
38
38
|
}));
|
|
39
39
|
}));
|