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
|
@@ -0,0 +1,521 @@
|
|
|
1
|
+
// Currently only going to number 76 because currently the workbook errors out at 75+ genes.
|
|
2
|
+
var numbersToLetters = {
|
|
3
|
+
0: "A", 1: "B", 2: "C", 3: "D", 4: "E", 5: "F", 6: "G", 7: "H", 8: "I", 9: "J", 10: "K", 11: "L", 12: "M",
|
|
4
|
+
13: "N", 14: "O", 15: "P", 16: "Q", 17: "R", 18: "S", 19: "T", 20: "U", 21: "V", 22: "W", 23: "X", 24: "Y",
|
|
5
|
+
25: "Z", 26: "AA", 27: "AB", 28: "AC", 29: "AD", 30: "AE", 31: "AF", 32: "AG", 33: "AH", 34: "AI", 35: "AJ",
|
|
6
|
+
36: "AK", 37: "AL", 38: "AM", 39: "AN", 40: "AO", 41: "AP", 42: "AQ", 43: "AR", 44: "AS", 45: "AT", 46: "AU",
|
|
7
|
+
47: "AV", 48: "AW", 49: "AX", 50: "AY", 51: "AZ", 52: "BA", 53: "BB", 54: "BC", 55: "BD", 56: "BE", 57: "BF",
|
|
8
|
+
58: "BG", 59: "BH", 60: "BI", 61: "BJ", 62: "BK", 63: "BL", 64: "BM", 65: "BN", 66: "BO", 67: "BP", 68: "BQ",
|
|
9
|
+
69: "BR", 70: "BS", 71: "BT", 72: "BU", 73: "BV", 74: "BW", 75: "BX", 76: "BY"
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
module.exports = {
|
|
13
|
+
numbersToLetters,
|
|
14
|
+
|
|
15
|
+
warnings: {
|
|
16
|
+
|
|
17
|
+
extraneousDataWarning: function (sheetName, row) {
|
|
18
|
+
return {
|
|
19
|
+
warningCode: "EXTRANEOUS_DATA",
|
|
20
|
+
errorDescription: `There is extraneous data outside of the set rows and columns of the
|
|
21
|
+
${sheetName} sheet in row ${row}.`
|
|
22
|
+
};
|
|
23
|
+
},
|
|
24
|
+
|
|
25
|
+
invalidOptimizationParameter: function (sheetName, param, paramType) {
|
|
26
|
+
return {
|
|
27
|
+
warningCode: "INVALID_OPTIMIZATION_PARAMETER",
|
|
28
|
+
errorDescription: `The optimization parameter '${param}' in the ${sheetName} sheet, is invalid. ` +
|
|
29
|
+
`Please ensure that the optimization parameter's value is a ${paramType}.`
|
|
30
|
+
};
|
|
31
|
+
},
|
|
32
|
+
|
|
33
|
+
unknownOptimizationParameter: function (sheetName, param) {
|
|
34
|
+
return {
|
|
35
|
+
warningCode: "UNKNOWN_OPTIMIZATION_PARAMETER",
|
|
36
|
+
errorDescription: `The optimization parameter '${param}' in the ${sheetName} sheet, is unknown. ` +
|
|
37
|
+
"Please ensure that the spelling of all optimization_parameters is correct, and " +
|
|
38
|
+
"make sure that you are using only supported optimization parameters."
|
|
39
|
+
};
|
|
40
|
+
},
|
|
41
|
+
|
|
42
|
+
unknownOptimizationDiagnosticsParameter: function (sheetName, param) {
|
|
43
|
+
return {
|
|
44
|
+
warningCode: "UNKNOWN_OPTIMIZATION_DIAGNOSTICS_PARAMETER",
|
|
45
|
+
errorDescription: `The optimization parameter '${param}' in the ${sheetName} sheet, is unknown. ` +
|
|
46
|
+
"Please ensure that the spelling of all optimization_parameters is correct, and " +
|
|
47
|
+
"make sure that you are using only supported optimization parameters."
|
|
48
|
+
};
|
|
49
|
+
},
|
|
50
|
+
|
|
51
|
+
invalidOptimizationDiagnosticsValue: function (sheetName, param) {
|
|
52
|
+
return {
|
|
53
|
+
warningCode: "INVALID_OPTIMIZATION_DIAGNOSTICS_VALUE",
|
|
54
|
+
errorDescription: `The optimization parameter '${param}' in the ${sheetName} sheet, is invalid. ` +
|
|
55
|
+
"Please ensure that the optimization parameter's value is a number."
|
|
56
|
+
};
|
|
57
|
+
},
|
|
58
|
+
|
|
59
|
+
incorrectMSEGeneHeaderWarning: function (sheetName, row) {
|
|
60
|
+
return {
|
|
61
|
+
warningCode: "INCORRECT_MSE_GENE_HEADER",
|
|
62
|
+
errorDescription: `The Gene Header in row ${row} of the ${sheetName} sheet, is incorrect. ` +
|
|
63
|
+
`Please ensure that you have an empty row only before Row ${row}, ` +
|
|
64
|
+
`and that Row ${row} Column A is spelled 'Gene' exactly.`
|
|
65
|
+
};
|
|
66
|
+
},
|
|
67
|
+
|
|
68
|
+
incorrectMSEHeaderWarning: function (sheetName, header, row, columnLetter) {
|
|
69
|
+
return {
|
|
70
|
+
warningCode: "INCORRECT_MSE_HEADER",
|
|
71
|
+
errorDescription: `The header ${header} in row ${row} column ${columnLetter} of the ` +
|
|
72
|
+
`${sheetName} sheet, does not contain 'MSE' Please ensure that you have the correct column header.`
|
|
73
|
+
};
|
|
74
|
+
},
|
|
75
|
+
|
|
76
|
+
missingMSEDataWarning: function (sheetName, row, columnLetter) {
|
|
77
|
+
return {
|
|
78
|
+
warningCode: "MISSING_MSE_DATA",
|
|
79
|
+
errorDescription: `The MSE data in row ${row} column ${columnLetter} of the ${sheetName} sheet, ` +
|
|
80
|
+
"is missing. Please ensure that your data is correct and complete."
|
|
81
|
+
};
|
|
82
|
+
},
|
|
83
|
+
|
|
84
|
+
invalidMSEDataWarning: function (sheetName, row, columnLetter) {
|
|
85
|
+
return {
|
|
86
|
+
warningCode: "INVALID_MSE_DATA",
|
|
87
|
+
errorDescription: `The data in row ${row} column ${columnLetter} of the ${sheetName} sheet, ` +
|
|
88
|
+
"is not a number. Please ensure that your MSE data is correct and only contains numbers."
|
|
89
|
+
};
|
|
90
|
+
},
|
|
91
|
+
|
|
92
|
+
missingSourceGeneWarning: function (row, column) {
|
|
93
|
+
var colLetter = numbersToLetters[column];
|
|
94
|
+
var rowNum = row + 1;
|
|
95
|
+
return {
|
|
96
|
+
warningCode: "MISSING_SOURCE",
|
|
97
|
+
errorDescription: "A source gene name is missing in cell " + colLetter + rowNum + "."
|
|
98
|
+
};
|
|
99
|
+
},
|
|
100
|
+
|
|
101
|
+
incorrectCellA1WorkbookWarning: function (sheetName) {
|
|
102
|
+
return {
|
|
103
|
+
warningCode: "MISLABELED_NETWORK_CELL_A1",
|
|
104
|
+
errorDescription: `The top left cell of the ${sheetName} sheet is mislabeled.
|
|
105
|
+
Replace the incorrect label with \'cols regulators/rows targets\' exactly.`
|
|
106
|
+
};
|
|
107
|
+
},
|
|
108
|
+
|
|
109
|
+
missingTargetGeneWarning: function (row, column) {
|
|
110
|
+
var colLetter = numbersToLetters[column];
|
|
111
|
+
var rowNum = row + 1;
|
|
112
|
+
return {
|
|
113
|
+
warningCode: "MISSING_TARGET",
|
|
114
|
+
errorDescription: "A target gene name is missing in cell " + colLetter + rowNum + "."
|
|
115
|
+
};
|
|
116
|
+
},
|
|
117
|
+
|
|
118
|
+
invalidMatrixDataWarning: function (row, column) {
|
|
119
|
+
var colLetter = numbersToLetters[column];
|
|
120
|
+
var rowNum = row + 1;
|
|
121
|
+
return {
|
|
122
|
+
warningCode: "INVALID_DATA",
|
|
123
|
+
errorDescription: "The value in cell " + colLetter + rowNum + ", is undefined."
|
|
124
|
+
};
|
|
125
|
+
},
|
|
126
|
+
|
|
127
|
+
randomDataWarning: function (type, row, column) {
|
|
128
|
+
var colLetter = numbersToLetters[column];
|
|
129
|
+
var rowNum = row + 1;
|
|
130
|
+
return {
|
|
131
|
+
warningCode: "RANDOM_DATA",
|
|
132
|
+
errorDescription: "The value in cell " + colLetter + rowNum + ", has a corresponding source" +
|
|
133
|
+
" and/or target gene that is detected as " + type + "."
|
|
134
|
+
};
|
|
135
|
+
},
|
|
136
|
+
|
|
137
|
+
emptyRowWarning: function (row) {
|
|
138
|
+
var rowNum = row + 1;
|
|
139
|
+
return {
|
|
140
|
+
warningCode: "EMPTY_ROW",
|
|
141
|
+
errorDescription: "Row " + rowNum + " was found to contain no data."
|
|
142
|
+
};
|
|
143
|
+
},
|
|
144
|
+
|
|
145
|
+
workbookSizeWarning: function (genesLength, edgesLength) {
|
|
146
|
+
return {
|
|
147
|
+
warningCode: "INVALID_NETWORK_SIZE",
|
|
148
|
+
errorDescription: "Your workbook has " + genesLength + " genes, and " + edgesLength +
|
|
149
|
+
" edges. Please note that workbooks are recommended to have less than 50 genes and 100 edges."
|
|
150
|
+
};
|
|
151
|
+
},
|
|
152
|
+
|
|
153
|
+
networkSizeWarning: function (genesLength, edgesLength) {
|
|
154
|
+
return {
|
|
155
|
+
warningCode: "INVALID_NETWORK_SIZE",
|
|
156
|
+
errorDescription: `Your network has ${genesLength} genes, and ${edgesLength}
|
|
157
|
+
edges. Please note that networks are recommended to have less than 50 genes and 100 edges.`
|
|
158
|
+
};
|
|
159
|
+
},
|
|
160
|
+
|
|
161
|
+
incorrectlyNamedSheetWarning: {
|
|
162
|
+
warningCode: "INCORRECTLY_NAMED_SHEET",
|
|
163
|
+
errorDescription: "The uploaded file appears to contain a weighted network, but contains no \
|
|
164
|
+
'network_optimized_weights' sheet. A weighted network must be contained in a sheet called \
|
|
165
|
+
'network_optimized_weights' in order to be drawn as a weighted graph. \
|
|
166
|
+
Please check if the sheet(s) in the uploaded spreadsheet have been named properly."
|
|
167
|
+
},
|
|
168
|
+
|
|
169
|
+
missingExpressionSheetWarning: {
|
|
170
|
+
warningCode: "MISSING_EXPRESSION_SHEET",
|
|
171
|
+
errorDescription: "_log2_expression or _log2_optimized_expression worksheet was \
|
|
172
|
+
not detected. The network graph will display without node coloring. If you want \
|
|
173
|
+
the nodes to be colored with expression data, you can upload your own expression \
|
|
174
|
+
data by adding one or more of those worksheets to your Excel workbook or select \
|
|
175
|
+
from data in GRNsight's Expression Database, found in the Node menu or panel."
|
|
176
|
+
},
|
|
177
|
+
|
|
178
|
+
noSpeciesInformationDetected: {
|
|
179
|
+
warningCode: "MISSING_SPECIES_INFORMATION",
|
|
180
|
+
errorDescription: "No species information was detected in your input file." +
|
|
181
|
+
" GRNsight defaults to Saccharomyces cerevisiae. You can change the species" +
|
|
182
|
+
" selection in the Species menu or panel."
|
|
183
|
+
},
|
|
184
|
+
|
|
185
|
+
unknownSpeciesDetected: function (workbookSpecies, workbookTaxon) {
|
|
186
|
+
return {
|
|
187
|
+
warningCode: "UNKNOWN_SPECIES_DETECTED",
|
|
188
|
+
errorDescription: "GRNsight detected the species " + workbookSpecies +
|
|
189
|
+
" and the taxon " + workbookTaxon + " in your input file." +
|
|
190
|
+
" This is not one of the supported species, or was formatted incorrectly" +
|
|
191
|
+
" You can change the species selection in the Species menu or panel."
|
|
192
|
+
};
|
|
193
|
+
},
|
|
194
|
+
|
|
195
|
+
missingExpressionWarning: function () {
|
|
196
|
+
return {
|
|
197
|
+
warningCode: "MISSING_EXPRESSION_SHEET",
|
|
198
|
+
errorDescription: "_log2_expression or _log2_optimized_expression worksheet was \
|
|
199
|
+
not detected. The network graph will display without node coloring. If you want \
|
|
200
|
+
the nodes to be colored with expression data, you can upload your own expression \
|
|
201
|
+
data by adding one or more of those worksheets to your Excel network or select \
|
|
202
|
+
from data in GRNsight's Expression Database, found in the Node menu or panel."
|
|
203
|
+
};
|
|
204
|
+
},
|
|
205
|
+
},
|
|
206
|
+
|
|
207
|
+
errors: {
|
|
208
|
+
errorsCountError: {
|
|
209
|
+
errorCode: "ERRORS_OVERLOAD",
|
|
210
|
+
possibleCause: "This workbook has over 20 errors.",
|
|
211
|
+
suggestedFix: "Please check the format of your spreadsheet with the guidlines outlined on the" +
|
|
212
|
+
"Documentation page and try again. If you fix these errors and try to upload again, there may be " +
|
|
213
|
+
"further errors detected. As a general approach for fixing the errors, consider copying and " +
|
|
214
|
+
"pasting just your adjacency matrix into a fresh Excel Workbook and saving it."
|
|
215
|
+
},
|
|
216
|
+
|
|
217
|
+
warningsCountError: {
|
|
218
|
+
errorCode: "WARNINGS_OVERLOAD",
|
|
219
|
+
possibleCause: "This workbook has over 75 warnings.",
|
|
220
|
+
suggestedFix: "Please check the format of your spreadsheet with the guidlines outlined on the" +
|
|
221
|
+
"Documentation page and try again. If you fix these errors and try to upload again, there may be " +
|
|
222
|
+
"further errors detected. As a general approach for fixing the errors, consider copying and " +
|
|
223
|
+
"pasting just your adjacency matrix into a fresh Excel Workbook and saving it."
|
|
224
|
+
},
|
|
225
|
+
|
|
226
|
+
unknownError: {
|
|
227
|
+
errorCode: "UNKNOWN_ERROR",
|
|
228
|
+
possibleCause: "An unexpected error occurred.",
|
|
229
|
+
suggestedFix: "Please contact the GRNsight team at kdahlquist@lmu.edu, and attach the spreadsheet you" +
|
|
230
|
+
" attempted to upload."
|
|
231
|
+
},
|
|
232
|
+
|
|
233
|
+
idLabelError: function (sheetName) {
|
|
234
|
+
return {
|
|
235
|
+
errorCode: "MISLABELED_ID_CELL",
|
|
236
|
+
possibleCause: `The top left cell of the ${sheetName} sheet is mislabeled.`,
|
|
237
|
+
suggestedFix: "Replace the incorrect label with \'id\' exactly."
|
|
238
|
+
};
|
|
239
|
+
},
|
|
240
|
+
|
|
241
|
+
invalidGeneLengthError: function (sheetName, gene, row) {
|
|
242
|
+
return {
|
|
243
|
+
errorCode: "INVALID_GENE_LENGTH",
|
|
244
|
+
possibleCause: `Gene '${gene}' in row ${row}, column A in the ${sheetName} sheet is too long.`,
|
|
245
|
+
suggestedFix: "Please make your gene names be less than 13 characters."
|
|
246
|
+
};
|
|
247
|
+
},
|
|
248
|
+
|
|
249
|
+
specialCharacterError: function (sheetName, gene, row) {
|
|
250
|
+
return {
|
|
251
|
+
errorCode: "INVALID_CHARACTER",
|
|
252
|
+
possibleCause: `The value under gene name ${gene} at row ${row} in the ${sheetName} sheet,
|
|
253
|
+
contains an invalid character.`,
|
|
254
|
+
suggestedFix: "Please ensure all genes in the data are formatted properly with no" +
|
|
255
|
+
" special characters except for '-' and '_'."
|
|
256
|
+
};
|
|
257
|
+
},
|
|
258
|
+
|
|
259
|
+
incorrectColumnHeaderError: function (sheetName, columnLetter, header) {
|
|
260
|
+
return {
|
|
261
|
+
errorCode: "INCORRECT_COLUMN_HEADER",
|
|
262
|
+
possibleCause: `Column ${columnLetter} in the ${sheetName} sheet has an incorrect header.`,
|
|
263
|
+
suggestedFix: `Replace the incorrect label with '${header}' exactly.`
|
|
264
|
+
};
|
|
265
|
+
},
|
|
266
|
+
|
|
267
|
+
missingColumnHeaderError: function (sheetName, columnLetter, header) {
|
|
268
|
+
if (sheetName && columnLetter && header) {
|
|
269
|
+
return {
|
|
270
|
+
errorCode: "MISSING_COLUMN_HEADER",
|
|
271
|
+
possibleCause: `Column ${columnLetter} in the ${sheetName}` +
|
|
272
|
+
` sheet is missing the header '${header}'.`,
|
|
273
|
+
suggestedFix: `Set the missing label to '${header}' exactly.`
|
|
274
|
+
};
|
|
275
|
+
} else {
|
|
276
|
+
return {
|
|
277
|
+
errorCode: "MISSING_COLUMN_HEADER",
|
|
278
|
+
possibleCause: `A column in the ${sheetName} sheet is missing a header.`,
|
|
279
|
+
suggestedFix: "Add headers to all columns."
|
|
280
|
+
};
|
|
281
|
+
}
|
|
282
|
+
},
|
|
283
|
+
|
|
284
|
+
invalidGeneTypeError: function (sheetName, gene, row) {
|
|
285
|
+
return {
|
|
286
|
+
errorCode: "INVALID_GENE_TYPE",
|
|
287
|
+
possibleCause: `Gene '${gene}' in row ${row}, column A in the ${sheetName} sheet is not a string.`,
|
|
288
|
+
suggestedFix: "Please make your gene name a string starting with a letter."
|
|
289
|
+
};
|
|
290
|
+
},
|
|
291
|
+
|
|
292
|
+
invalidValueError: function (sheetName, value, row, valueType) {
|
|
293
|
+
return {
|
|
294
|
+
errorCode: "INVALID_VALUE",
|
|
295
|
+
possibleCause: `${valueType} '${value}' in row ${row},` +
|
|
296
|
+
` column B in the ${sheetName} sheet is not a number.`,
|
|
297
|
+
suggestedFix: `Please ensure that all ${valueType} values are numbers.`
|
|
298
|
+
};
|
|
299
|
+
},
|
|
300
|
+
|
|
301
|
+
emptyWorkbookError: function () {
|
|
302
|
+
return {
|
|
303
|
+
errorCode: "EMPTY_NETWORK_ERROR",
|
|
304
|
+
possibleCause: "GRNsight detects that the file you uploaded is empty and \
|
|
305
|
+
does not contain any network information.",
|
|
306
|
+
suggestedFix: "Please review the file and ensure that it specifies a workbook."
|
|
307
|
+
};
|
|
308
|
+
},
|
|
309
|
+
|
|
310
|
+
semanticDuplicateGeneError: function (geneName) {
|
|
311
|
+
return {
|
|
312
|
+
errorCode: "SEMANTIC_DUPLICATE_GENE",
|
|
313
|
+
possibleCause: "There exists a duplicate for " + geneName + ".",
|
|
314
|
+
suggestedFix: "Please remove the duplicate gene and submit again."
|
|
315
|
+
};
|
|
316
|
+
},
|
|
317
|
+
|
|
318
|
+
geneLengthError: function (geneName) {
|
|
319
|
+
return {
|
|
320
|
+
errorCode: "INVALID_GENE_LENGTH",
|
|
321
|
+
possibleCause: "Gene " + geneName + " is more than 12 characters in length.",
|
|
322
|
+
suggestedFix: "Genes may only be between 1 and 12 characters in length. Please" +
|
|
323
|
+
" shorten the name and submit again."
|
|
324
|
+
};
|
|
325
|
+
},
|
|
326
|
+
|
|
327
|
+
workbookSizeError: function (genesLength, edgesLength) {
|
|
328
|
+
return {
|
|
329
|
+
errorCode: "INVALID_NETWORK_SIZE",
|
|
330
|
+
possibleCause: "This network has " + genesLength + " genes, and " + edgesLength + " edges.",
|
|
331
|
+
suggestedFix: "networks may not have more than 75 genes or 150 edges. Please reduce the size" +
|
|
332
|
+
" of your network and try again."
|
|
333
|
+
};
|
|
334
|
+
},
|
|
335
|
+
|
|
336
|
+
missingNetworkError: {
|
|
337
|
+
errorCode: "MISSING_NETWORK",
|
|
338
|
+
possibleCause: "This file does not have a 'network' sheet or a 'network_optimized_weights' sheet.",
|
|
339
|
+
suggestedFix: "Please select another file, or rename the sheet containing the adjacency matrix \
|
|
340
|
+
accordingly. Please refer to the " +
|
|
341
|
+
"<a href='http://dondi.github.io/GRNsight/documentation.html#section1' \
|
|
342
|
+
target='_blank'>Documentation page</a> for more information."
|
|
343
|
+
},
|
|
344
|
+
|
|
345
|
+
corruptGeneError: function (row, column) {
|
|
346
|
+
var colLetter = numbersToLetters[column];
|
|
347
|
+
var rowNum = row + 1;
|
|
348
|
+
return {
|
|
349
|
+
errorCode: "CORRUPT_GENE",
|
|
350
|
+
possibleCause: `The gene name in cell ${colLetter} ${rowNum} appears to be invalid.`,
|
|
351
|
+
suggestedFix: "Please fix the error and try uploading again."
|
|
352
|
+
};
|
|
353
|
+
},
|
|
354
|
+
|
|
355
|
+
missingValueError: function (row, column) {
|
|
356
|
+
var colLetter = numbersToLetters[column];
|
|
357
|
+
var rowNum = row + 1;
|
|
358
|
+
return {
|
|
359
|
+
errorCode: "MISSING_VALUE",
|
|
360
|
+
possibleCause: `The value in the cell ${colLetter} ${rowNum}
|
|
361
|
+
in the adjacency matrix appears to have a missing value.`,
|
|
362
|
+
suggestedFix: "Please ensure that all cells have a value, then upload the file again."
|
|
363
|
+
};
|
|
364
|
+
},
|
|
365
|
+
|
|
366
|
+
duplicateGeneError: function (geneType, geneName) {
|
|
367
|
+
return {
|
|
368
|
+
errorCode: "DUPLICATE_GENE",
|
|
369
|
+
possibleCause: `There exists a duplicate for ${geneType} gene ${geneName}.`,
|
|
370
|
+
suggestedFix: "Please remove the duplicate gene and submit again."
|
|
371
|
+
};
|
|
372
|
+
},
|
|
373
|
+
|
|
374
|
+
dataTypeError: function (row, column) {
|
|
375
|
+
var colLetter = numbersToLetters[column];
|
|
376
|
+
var rowNum = row + 1;
|
|
377
|
+
return {
|
|
378
|
+
errorCode: "INVALID_CELL_DATA_TYPE",
|
|
379
|
+
possibleCause: `The value in cell ${colLetter} ${rowNum} is not a number.`,
|
|
380
|
+
suggestedFix: "Please ensure all values in the data matrix are numbers and try again."
|
|
381
|
+
};
|
|
382
|
+
},
|
|
383
|
+
|
|
384
|
+
emptyRowError: function (row) {
|
|
385
|
+
var rowNum = row + 1;
|
|
386
|
+
return {
|
|
387
|
+
errorCode: "EMPTY_ROW",
|
|
388
|
+
possibleCause: `Row ${rowNum} does not contain any data.`,
|
|
389
|
+
suggestedFix: `Please ensure all rows contain data and all empty rows are removed.
|
|
390
|
+
Also, please ensure that no extraneous data is outside of the matrix,
|
|
391
|
+
as this may cause this error.`
|
|
392
|
+
};
|
|
393
|
+
},
|
|
394
|
+
|
|
395
|
+
emptyRowDataError: function (row, sheetName) {
|
|
396
|
+
var rowNum = row + 1;
|
|
397
|
+
return {
|
|
398
|
+
errorCode: "EMPTY_ROW_DATA",
|
|
399
|
+
possibleCause: `Row ${rowNum}, in the ${sheetName} sheet, was found to contain no data.`,
|
|
400
|
+
suggestedFix: "Populate empty row with data."
|
|
401
|
+
};
|
|
402
|
+
},
|
|
403
|
+
|
|
404
|
+
emptyMatrixDataError: function (sheetName) {
|
|
405
|
+
return {
|
|
406
|
+
errorCode: "EMPTY_MATRIX_DATA",
|
|
407
|
+
possibleCause: `The ${sheetName} sheet was found to contain no data in the adjacency matrix.`,
|
|
408
|
+
suggestedFix: "Populate empty matrix with data."
|
|
409
|
+
};
|
|
410
|
+
},
|
|
411
|
+
|
|
412
|
+
emptyColumnError: function (column, sheetName) {
|
|
413
|
+
var columnLetter = numbersToLetters[column];
|
|
414
|
+
return {
|
|
415
|
+
errorCode: "EMPTY_COLUMN",
|
|
416
|
+
possibleCause: `Column ${columnLetter}, in the ${sheetName} sheet, is empty.`,
|
|
417
|
+
suggestedFix: "Delete empty column, or populate with data."
|
|
418
|
+
};
|
|
419
|
+
},
|
|
420
|
+
emptyColumnDataError: function (column, sheetName) {
|
|
421
|
+
var columnLetter = numbersToLetters[column];
|
|
422
|
+
return {
|
|
423
|
+
errorCode: "EMPTY_COLUMN_DATA",
|
|
424
|
+
possibleCause: `Column ${columnLetter}, in the ${sheetName} sheet, was found to contain no data.`,
|
|
425
|
+
suggestedFix: "Populate empty column with data."
|
|
426
|
+
};
|
|
427
|
+
},
|
|
428
|
+
|
|
429
|
+
outsideCellError: function (row, column) {
|
|
430
|
+
var colLetter = numbersToLetters[column];
|
|
431
|
+
var rowNum = row + 1;
|
|
432
|
+
return {
|
|
433
|
+
errorCode: "EMPTY_CELL",
|
|
434
|
+
possibleCause: `The cell at ${colLetter} ${rowNum} contains data that is outside the matrix.`,
|
|
435
|
+
suggestedFix: "Please remove all extraneous data from outside the matrix and ensure matrix is correct"
|
|
436
|
+
};
|
|
437
|
+
},
|
|
438
|
+
|
|
439
|
+
geneMismatchError: function (sheetName) {
|
|
440
|
+
return {
|
|
441
|
+
errorCode: "GENE_MISMATCH",
|
|
442
|
+
possibleCause: `Gene names in column A of the "${sheetName}" sheet do not
|
|
443
|
+
match the order of those in the network sheet.`,
|
|
444
|
+
suggestedFix: `Please ensure that the gene names are in the same order
|
|
445
|
+
as those in both the "network" sheet and the
|
|
446
|
+
"network_optimized_weights" sheet.`
|
|
447
|
+
};
|
|
448
|
+
},
|
|
449
|
+
|
|
450
|
+
extraGeneNamesError: function (sheetName) {
|
|
451
|
+
return {
|
|
452
|
+
errorCode: "EXTRA_GENE_NAME",
|
|
453
|
+
possibleCause: `Gene names in column A of the "${sheetName}" sheet have
|
|
454
|
+
one or more extra genes than those listed in the network sheet.`,
|
|
455
|
+
suggestedFix: `Please ensure that the genes in the "${sheetName}" sheet are
|
|
456
|
+
the same as the genes in the "network" sheet and the "network_optimized_weights" sheet.`
|
|
457
|
+
};
|
|
458
|
+
},
|
|
459
|
+
|
|
460
|
+
missingGeneNamesError: function (sheetName) {
|
|
461
|
+
return {
|
|
462
|
+
errorCode: "MISSING_GENE_NAME",
|
|
463
|
+
possibleCause: `Gene names in column A of the "${sheetName}"
|
|
464
|
+
sheet are missing one or more genes from the network sheet.`,
|
|
465
|
+
suggestedFix: `Please ensure that the genes in the "${sheetName}"
|
|
466
|
+
are the same as the genes in the "network" sheet and the
|
|
467
|
+
"network_optimized_weights" sheet.`
|
|
468
|
+
};
|
|
469
|
+
},
|
|
470
|
+
|
|
471
|
+
emptyExpressionRowError: function (row, sheetName) {
|
|
472
|
+
return {
|
|
473
|
+
errorCode: "EMPTY_ROW",
|
|
474
|
+
possibleCause: `There is an empty row in the ${sheetName} sheet. It is located at row ${row}.`,
|
|
475
|
+
suggestedFix: "Delete empty row, or populate with data."
|
|
476
|
+
};
|
|
477
|
+
},
|
|
478
|
+
|
|
479
|
+
emptyExpressionColumnError: function (column, sheetName ) {
|
|
480
|
+
var columnLetter = numbersToLetters[column];
|
|
481
|
+
return {
|
|
482
|
+
errorCode: "EMPTY_COLUMN",
|
|
483
|
+
possibleCause: `There is an empty column in the ${sheetName} sheet. It is located at column
|
|
484
|
+
${columnLetter}.`,
|
|
485
|
+
suggestedFix: "Delete empty column, or populate with data."
|
|
486
|
+
};
|
|
487
|
+
},
|
|
488
|
+
|
|
489
|
+
negativeTimePointError: function (column, sheetName) {
|
|
490
|
+
var columnLetter = numbersToLetters[column];
|
|
491
|
+
return {
|
|
492
|
+
errorCode: "NEGATIVE_TIME_POINT",
|
|
493
|
+
possibleCause: `There is a negative time point in the ${sheetName} sheet. It is located at
|
|
494
|
+
column ${columnLetter}.`,
|
|
495
|
+
suggestedFix: "Change the negative time point to a positive and ensure expression data is correct."
|
|
496
|
+
};
|
|
497
|
+
},
|
|
498
|
+
|
|
499
|
+
nonMonotonicTimePointsError: function (column, sheetName) {
|
|
500
|
+
var columnLetter = numbersToLetters[column];
|
|
501
|
+
return {
|
|
502
|
+
errorCode: "NON_MONOTONIC_TIME_POINTS",
|
|
503
|
+
possibleCause: `The time points located in the ${sheetName} sheet are not sequenced in an increasing
|
|
504
|
+
fashion. The first instance of this is at column ${columnLetter}.`,
|
|
505
|
+
suggestedFix: `Please ensure that the time points are ordered in an increasing fashion, and ensure
|
|
506
|
+
expression data is correct.`
|
|
507
|
+
};
|
|
508
|
+
},
|
|
509
|
+
|
|
510
|
+
nonNumericalTimePointsError: function (column, sheetName) {
|
|
511
|
+
var columnLetter = numbersToLetters[column];
|
|
512
|
+
return {
|
|
513
|
+
errorCode: "NON_NUMERICAL_TIME_POINT",
|
|
514
|
+
possibleCause: `There is a non-numerical time point in the ${sheetName} sheet. It is located at
|
|
515
|
+
column ${columnLetter}.`,
|
|
516
|
+
suggestedFix: "Change the non-numerical time point to a positive number and ensure expression data \
|
|
517
|
+
is correct."
|
|
518
|
+
};
|
|
519
|
+
},
|
|
520
|
+
}
|
|
521
|
+
};
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
const Sequelize = require("sequelize");
|
|
2
|
+
require("dotenv").config();
|
|
3
|
+
var env = process.env.NODE_ENV || "development";
|
|
4
|
+
var config = require("../config/config")[env];
|
|
5
|
+
var sequelize = new Sequelize(
|
|
6
|
+
config.databaseName,
|
|
7
|
+
process.env.EXPRESSION_DB_USERNAME,
|
|
8
|
+
process.env.EXPRESSION_DB_PASSWORD,
|
|
9
|
+
{
|
|
10
|
+
host: config.databaseHost,
|
|
11
|
+
dialect: config.databaseDialect,
|
|
12
|
+
pool: {
|
|
13
|
+
max: 5,
|
|
14
|
+
min: 0,
|
|
15
|
+
idle: 10000
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
);
|
|
19
|
+
|
|
20
|
+
const expressionTimepointsSources = [
|
|
21
|
+
{
|
|
22
|
+
key: "Barreto_2012_wt",
|
|
23
|
+
value: [10, 10, 20, 20, 20, 20, 40, 40, 40, 40, 60, 60, 60, 60, 120, 120, 120, 120]
|
|
24
|
+
},
|
|
25
|
+
|
|
26
|
+
{
|
|
27
|
+
key: "Dahlquist_2018_dcin5",
|
|
28
|
+
value: [15, 15, 15, 15, 30, 30, 30, 30, 60, 60, 60, 60, 90, 90, 90, 90, 120, 120, 120, 120]
|
|
29
|
+
},
|
|
30
|
+
|
|
31
|
+
{
|
|
32
|
+
key: "Dahlquist_2018_dgln3",
|
|
33
|
+
value: [15, 15, 15, 15, 30, 30, 30, 30, 60, 60, 60, 60, 90, 90, 90, 90, 120, 120, 120, 120]
|
|
34
|
+
},
|
|
35
|
+
|
|
36
|
+
{
|
|
37
|
+
key: "Dahlquist_2018_dhap4",
|
|
38
|
+
value: [15, 15, 15, 15, 30, 30, 30, 30, 60, 60, 60, 60, 90, 90, 90, 120, 120, 120]
|
|
39
|
+
},
|
|
40
|
+
|
|
41
|
+
{
|
|
42
|
+
key: "Dahlquist_2018_dzap1",
|
|
43
|
+
value: [15, 15, 15, 15, 30, 30, 30, 30, 60, 60, 60, 60, 90, 90, 90, 90, 120, 120, 120, 120]
|
|
44
|
+
},
|
|
45
|
+
|
|
46
|
+
{
|
|
47
|
+
key: "Dahlquist_2018_wt",
|
|
48
|
+
value: [15, 15, 15, 15, 30, 30, 30, 30, 30, 60, 60, 60, 60, 90, 90, 90, 90, 90, 120, 120, 120, 120, 120]
|
|
49
|
+
},
|
|
50
|
+
|
|
51
|
+
{
|
|
52
|
+
key: "Kitagawa_2002_wt",
|
|
53
|
+
value: [15, 15, 15, 30, 30, 30, 120, 120, 120]
|
|
54
|
+
},
|
|
55
|
+
|
|
56
|
+
{
|
|
57
|
+
key: "Thorsen_2007_wt",
|
|
58
|
+
value: [15, 15, 15, 30, 30, 30, 60, 60, 60, 60, 60, 60, 1080, 1080, 1080]
|
|
59
|
+
}
|
|
60
|
+
];
|
|
61
|
+
|
|
62
|
+
const expressionTimepointsByDataset = {};
|
|
63
|
+
expressionTimepointsSources.forEach(source => expressionTimepointsByDataset[source.key] = source.value);
|
|
64
|
+
|
|
65
|
+
let buildExpressionTimepointsQuery = function (selection) {
|
|
66
|
+
let timepoints = "";
|
|
67
|
+
selection.forEach(x => timepoints += ("fall2021.expression.time_point=" + x + " OR "));
|
|
68
|
+
return timepoints.substring(0, timepoints.length - 4);
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
let buildExpressionGenesQuery = function (geneString) {
|
|
72
|
+
let genes = "";
|
|
73
|
+
let geneList = geneString.split(",");
|
|
74
|
+
geneList.forEach(x => genes += ( `(fall2021.gene.display_gene_id =\'${x}\') OR `));
|
|
75
|
+
return genes.substring(0, genes.length - 4);
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
let buildExpressionQuery = function (dataset, timepoints, genes) {
|
|
79
|
+
return timepoints ?
|
|
80
|
+
`SELECT * FROM fall2021.expression, fall2021.gene WHERE fall2021.expression.dataset='${dataset}' AND
|
|
81
|
+
(${buildExpressionTimepointsQuery(timepoints)}) AND
|
|
82
|
+
((${buildExpressionGenesQuery(genes)})
|
|
83
|
+
AND fall2021.gene.gene_id = fall2021.expression.gene_id) ORDER BY sort_index;`
|
|
84
|
+
: `SELECT * FROM fall2021.expression, fall2021.gene WHERE fall2021.expression.dataset='${dataset}'
|
|
85
|
+
AND ((${buildExpressionGenesQuery(genes)})
|
|
86
|
+
AND fall2021.gene.gene_id = fall2021.expression.gene_id) ORDER BY sort_index;`;
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
let listExpressionGeneData = function (gene, totalOutput) {
|
|
90
|
+
let listOfData = [];
|
|
91
|
+
totalOutput.forEach(function (x) {
|
|
92
|
+
if (x.display_gene_id === gene) {
|
|
93
|
+
listOfData.push(Number(x.expression));
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
return listOfData;
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
let convertExpressionToJSON = function (totalOutput, dataset, timePoints, allGenes) {
|
|
100
|
+
let JSONOutput = {
|
|
101
|
+
timePoints,
|
|
102
|
+
data: {
|
|
103
|
+
id: timePoints
|
|
104
|
+
}
|
|
105
|
+
};
|
|
106
|
+
allGenes.forEach(x => JSONOutput.data[x.toString()] = listExpressionGeneData(x, totalOutput));
|
|
107
|
+
return JSONOutput;
|
|
108
|
+
};
|
|
109
|
+
|
|
110
|
+
module.exports = {
|
|
111
|
+
queryExpressionDatabase: function (req, res) {
|
|
112
|
+
return sequelize.query(buildExpressionQuery(req.query.dataset, req.query.timepoints, req.query.genes),
|
|
113
|
+
{ type: sequelize.QueryTypes.SELECT })
|
|
114
|
+
.then(function (stdname) {
|
|
115
|
+
let dataset = req.query.dataset;
|
|
116
|
+
let geneList = req.query.genes.split(",");
|
|
117
|
+
let response = convertExpressionToJSON(
|
|
118
|
+
stdname, dataset, expressionTimepointsByDataset[dataset], geneList);
|
|
119
|
+
return res.send(response);
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
};
|