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
package/test/test.js
CHANGED
|
@@ -1,33 +1,54 @@
|
|
|
1
1
|
var assert = require("chai").assert;
|
|
2
2
|
var xlsx = require("node-xlsx");
|
|
3
3
|
// var cytoscape = require("cytoscape");
|
|
4
|
-
|
|
5
4
|
var spreadsheetController = require(__dirname + "/../server/controllers" + "/spreadsheet-controller")();
|
|
6
5
|
|
|
6
|
+
var parseAllNetworkSheet = require(__dirname + "/../server/controllers" + "/network-sheet-parser");
|
|
7
|
+
|
|
8
|
+
var parseExpressionSheet = require(__dirname + "/../server/controllers" + "/expression-sheet-parser");
|
|
9
|
+
|
|
10
|
+
var parseAdditionalSheet = require(__dirname + "/../server/controllers" + "/additional-sheet-parser");
|
|
11
|
+
|
|
12
|
+
var exportController = require(__dirname + "/../server/controllers/export-controller")();
|
|
13
|
+
|
|
14
|
+
// changed network parser to preserve all network sheets instead of choosing the best and throwing awway rhe rest
|
|
15
|
+
// this helper method chooses the best network sheet, so prior implemented test behaviour doesn't crash
|
|
16
|
+
var parseNetworkSheet = (sheet) => {
|
|
17
|
+
var allNetworks = parseAllNetworkSheet(sheet);
|
|
18
|
+
if (typeof allNetworks.networkOptimizedWeights === "object" &&
|
|
19
|
+
Object.keys(allNetworks.networkOptimizedWeights).length !== 0) {
|
|
20
|
+
return allNetworks.networkOptimizedWeights;
|
|
21
|
+
} else {
|
|
22
|
+
// Network is the default network. If network_optimized_weights does not exist, then we will want to return the
|
|
23
|
+
// network sheet. If both network_optimized_weights and network do not exist, it returns an empty initalized
|
|
24
|
+
// network object with an error saying no network sheet detected.
|
|
25
|
+
return allNetworks.network;
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
|
|
7
29
|
// ERROR TEST FUNCTIONS:
|
|
8
30
|
|
|
9
31
|
var noErrors = function (input) {
|
|
10
32
|
var sheet = xlsx.parse(input);
|
|
11
|
-
var
|
|
12
|
-
|
|
13
|
-
assert.equal(0, network.errors.length);
|
|
33
|
+
var workbook = parseNetworkSheet(sheet);
|
|
34
|
+
assert.equal(0, workbook.errors.length);
|
|
14
35
|
};
|
|
15
36
|
|
|
16
37
|
var duplicateGeneError = function (input, frequency) {
|
|
17
38
|
var sheet = xlsx.parse(input);
|
|
18
|
-
var
|
|
39
|
+
var workbook = parseNetworkSheet(sheet);
|
|
19
40
|
|
|
20
|
-
assert.equal(frequency,
|
|
41
|
+
assert.equal(frequency, workbook.errors.length);
|
|
21
42
|
|
|
22
43
|
for (var i = 0; i < frequency; i++) {
|
|
23
44
|
assert.equal(
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
45
|
+
"DUPLICATE_GENE",
|
|
46
|
+
workbook.errors[i].errorCode
|
|
47
|
+
);
|
|
27
48
|
}
|
|
28
49
|
|
|
29
50
|
/* TO DO:
|
|
30
|
-
|
|
51
|
+
workbook.errors.forEach(function (error) {
|
|
31
52
|
assert.equal("DUPLICATE_GENE", error.errorCode);
|
|
32
53
|
});
|
|
33
54
|
*/
|
|
@@ -35,129 +56,129 @@ var duplicateGeneError = function (input, frequency) {
|
|
|
35
56
|
|
|
36
57
|
var invalidGeneLengthError = function (input, frequency) {
|
|
37
58
|
var sheet = xlsx.parse(input);
|
|
38
|
-
var
|
|
59
|
+
var workbook = parseNetworkSheet(sheet);
|
|
39
60
|
|
|
40
|
-
assert.equal(frequency,
|
|
61
|
+
assert.equal(frequency, workbook.errors.length);
|
|
41
62
|
|
|
42
63
|
for (var i = 0; i < frequency; i++) {
|
|
43
64
|
assert.equal(
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
65
|
+
"INVALID_GENE_LENGTH",
|
|
66
|
+
workbook.errors[i].errorCode
|
|
67
|
+
);
|
|
47
68
|
}
|
|
48
69
|
};
|
|
49
70
|
|
|
50
71
|
var corruptGeneError = function (input, frequency) {
|
|
51
72
|
var sheet = xlsx.parse(input);
|
|
52
|
-
var
|
|
73
|
+
var workbook = parseNetworkSheet(sheet);
|
|
53
74
|
|
|
54
|
-
assert.equal(frequency,
|
|
75
|
+
assert.equal(frequency, workbook.errors.length);
|
|
55
76
|
|
|
56
77
|
for (var i = 0; i < frequency; i++) {
|
|
57
78
|
assert.equal(
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
79
|
+
"CORRUPT_GENE",
|
|
80
|
+
workbook.errors[i].errorCode
|
|
81
|
+
);
|
|
61
82
|
}
|
|
62
83
|
};
|
|
63
84
|
|
|
64
85
|
var unknownError = function (input, frequency) {
|
|
65
86
|
var sheet = xlsx.parse(input);
|
|
66
|
-
var
|
|
87
|
+
var workbook = parseNetworkSheet(sheet);
|
|
67
88
|
|
|
68
|
-
assert.equal(frequency,
|
|
89
|
+
assert.equal(frequency, workbook.errors.length);
|
|
69
90
|
|
|
70
91
|
for (var i = 0; i < frequency; i++) {
|
|
71
92
|
assert.equal(
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
93
|
+
"UNKNOWN_ERROR",
|
|
94
|
+
workbook.errors[i].errorCode
|
|
95
|
+
);
|
|
75
96
|
}
|
|
76
97
|
};
|
|
77
98
|
|
|
78
99
|
var missingValueError = function (input, frequency) {
|
|
79
100
|
var sheet = xlsx.parse(input);
|
|
80
|
-
var
|
|
101
|
+
var workbook = parseNetworkSheet(sheet);
|
|
81
102
|
|
|
82
|
-
assert.equal(frequency,
|
|
103
|
+
assert.equal(frequency, workbook.errors.length);
|
|
83
104
|
|
|
84
105
|
for (var i = 0; i < frequency; i++) {
|
|
85
106
|
assert.equal(
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
107
|
+
"MISSING_VALUE",
|
|
108
|
+
workbook.errors[i].errorCode
|
|
109
|
+
);
|
|
89
110
|
}
|
|
90
111
|
};
|
|
91
112
|
|
|
92
113
|
var missingNetworkError = function (input, frequency) {
|
|
93
114
|
var sheet = xlsx.parse(input);
|
|
94
|
-
var
|
|
115
|
+
var workbook = parseNetworkSheet(sheet);
|
|
95
116
|
|
|
96
|
-
assert.equal(frequency,
|
|
117
|
+
assert.equal(frequency, workbook.errors.length);
|
|
97
118
|
|
|
98
119
|
for (var i = 0; i < frequency; i++) {
|
|
99
120
|
assert.equal(
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
121
|
+
"MISSING_NETWORK",
|
|
122
|
+
workbook.errors[i].errorCode
|
|
123
|
+
);
|
|
103
124
|
}
|
|
104
125
|
};
|
|
105
126
|
|
|
106
127
|
var specialCharacterError = function (input, frequency) {
|
|
107
128
|
var sheet = xlsx.parse(input);
|
|
108
|
-
var
|
|
129
|
+
var workbook = parseNetworkSheet(sheet);
|
|
109
130
|
|
|
110
|
-
assert.equal(frequency,
|
|
131
|
+
assert.equal(frequency, workbook.errors.length);
|
|
111
132
|
|
|
112
133
|
for (var i = 0; i < frequency; i++) {
|
|
113
134
|
assert.equal(
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
135
|
+
"INVALID_CHARACTER",
|
|
136
|
+
workbook.errors[i].errorCode
|
|
137
|
+
);
|
|
117
138
|
}
|
|
118
139
|
};
|
|
119
140
|
|
|
120
141
|
var invalidDataTypeError = function (input, frequency) {
|
|
121
142
|
var sheet = xlsx.parse(input);
|
|
122
|
-
var
|
|
143
|
+
var workbook = parseNetworkSheet(sheet);
|
|
123
144
|
|
|
124
|
-
assert.equal(frequency,
|
|
145
|
+
assert.equal(frequency, workbook.errors.length);
|
|
125
146
|
|
|
126
147
|
for (var i = 0; i < frequency; i++) {
|
|
127
148
|
assert.equal(
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
149
|
+
"INVALID_CELL_DATA_TYPE",
|
|
150
|
+
workbook.errors[i].errorCode
|
|
151
|
+
);
|
|
131
152
|
}
|
|
132
153
|
};
|
|
133
154
|
|
|
134
|
-
var
|
|
155
|
+
var workbookSizeError = function (input, frequency) {
|
|
135
156
|
var sheet = xlsx.parse(input);
|
|
136
|
-
var
|
|
157
|
+
var workbook = parseNetworkSheet(sheet);
|
|
137
158
|
|
|
138
|
-
assert.equal(frequency,
|
|
159
|
+
assert.equal(frequency, workbook.errors.length);
|
|
139
160
|
|
|
140
161
|
for (var i = 0; i < frequency; i++) {
|
|
141
162
|
assert.equal(
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
163
|
+
"INVALID_NETWORK_SIZE",
|
|
164
|
+
workbook.errors[i].errorCode
|
|
165
|
+
);
|
|
145
166
|
}
|
|
146
167
|
};
|
|
147
168
|
|
|
148
169
|
var checkForGene = function (test, frequency, input) {
|
|
149
170
|
var sheet = xlsx.parse(input);
|
|
150
|
-
var
|
|
171
|
+
var workbook = parseNetworkSheet(sheet);
|
|
151
172
|
|
|
152
|
-
assert.equal(frequency,
|
|
173
|
+
assert.equal(frequency, workbook.genes.filter(function (gene) {
|
|
153
174
|
return gene.name === test;
|
|
154
175
|
}).length);
|
|
155
176
|
};
|
|
156
177
|
|
|
157
178
|
var warningsCountError = function (input, frequency) {
|
|
158
179
|
var sheet = xlsx.parse(input);
|
|
159
|
-
var
|
|
160
|
-
var warningsCountErrorArray =
|
|
180
|
+
var workbook = parseNetworkSheet(sheet);
|
|
181
|
+
var warningsCountErrorArray = workbook.errors.filter(function (x) {
|
|
161
182
|
return x.errorCode === "WARNINGS_OVERLOAD";
|
|
162
183
|
});
|
|
163
184
|
|
|
@@ -166,8 +187,8 @@ var warningsCountError = function (input, frequency) {
|
|
|
166
187
|
|
|
167
188
|
var errorsCountError = function (input, frequency) {
|
|
168
189
|
var sheet = xlsx.parse(input);
|
|
169
|
-
var
|
|
170
|
-
var errorsCountErrorArray =
|
|
190
|
+
var workbook = parseNetworkSheet(sheet);
|
|
191
|
+
var errorsCountErrorArray = workbook.errors.filter(function (x) {
|
|
171
192
|
return x.errorCode === "ERRORS_OVERLOAD";
|
|
172
193
|
});
|
|
173
194
|
|
|
@@ -176,31 +197,202 @@ var errorsCountError = function (input, frequency) {
|
|
|
176
197
|
|
|
177
198
|
var emptyRowError = function (input, frequency) {
|
|
178
199
|
var sheet = xlsx.parse(input);
|
|
179
|
-
var
|
|
200
|
+
var workbook = parseNetworkSheet(sheet);
|
|
201
|
+
|
|
202
|
+
assert.equal(frequency, workbook.errors.length);
|
|
203
|
+
|
|
204
|
+
for (var i = 0; i < frequency; i++) {
|
|
205
|
+
assert.equal(
|
|
206
|
+
"EMPTY_ROW",
|
|
207
|
+
workbook.errors[i].errorCode
|
|
208
|
+
);
|
|
209
|
+
}
|
|
210
|
+
};
|
|
211
|
+
|
|
212
|
+
var geneMismatchError = function (input, frequency) {
|
|
213
|
+
var sheet = xlsx.parse(input);
|
|
214
|
+
var workbook = spreadsheetController.crossSheetInteractions(sheet);
|
|
215
|
+
var geneMismatchCount = workbook.errors.filter(function (x) {
|
|
216
|
+
return x.errorCode === "GENE_MISMATCH";
|
|
217
|
+
});
|
|
218
|
+
|
|
219
|
+
assert.equal(frequency, geneMismatchCount.length);
|
|
220
|
+
};
|
|
221
|
+
|
|
222
|
+
var idLabelError = function (input, frequency) {
|
|
223
|
+
var sheet = xlsx.parse(input);
|
|
224
|
+
var workbook = parseExpressionSheet(sheet);
|
|
225
|
+
assert.equal(frequency, workbook.expression.wt_log2_expression.errors.length);
|
|
226
|
+
|
|
227
|
+
for (var i = 0; i < frequency; i++) {
|
|
228
|
+
assert.equal(
|
|
229
|
+
"MISLABELED_ID_CELL",
|
|
230
|
+
workbook.expression.wt_log2_expression.errors[i].errorCode
|
|
231
|
+
);
|
|
232
|
+
}
|
|
233
|
+
};
|
|
234
|
+
|
|
235
|
+
var missingColumnHeaderError = function (input, frequency) {
|
|
236
|
+
var sheet = xlsx.parse(input);
|
|
237
|
+
var exp = parseExpressionSheet(sheet);
|
|
238
|
+
assert.equal(frequency, exp["expression"]["wt_log2_expression"]["errors"].length);
|
|
239
|
+
for (var i = 0; i < frequency; i++) {
|
|
240
|
+
assert.equal(
|
|
241
|
+
"MISSING_COLUMN_HEADER",
|
|
242
|
+
exp["expression"]["wt_log2_expression"]["errors"][i].errorCode
|
|
243
|
+
);
|
|
244
|
+
}
|
|
245
|
+
};
|
|
246
|
+
|
|
247
|
+
var emptyExpressionColumnError = function (input, frequency) {
|
|
248
|
+
var sheet = xlsx.parse(input);
|
|
249
|
+
var exp = parseExpressionSheet(sheet);
|
|
250
|
+
assert.equal(frequency, exp["expression"]["wt_log2_expression"]["errors"].length);
|
|
251
|
+
for (var i = 0; i < frequency; i++) {
|
|
252
|
+
assert.equal(
|
|
253
|
+
"EMPTY_COLUMN",
|
|
254
|
+
exp["expression"]["wt_log2_expression"]["errors"][i].errorCode
|
|
255
|
+
);
|
|
256
|
+
}
|
|
257
|
+
};
|
|
258
|
+
|
|
259
|
+
var emptyExpressionRowError = function (input, frequency) {
|
|
260
|
+
var sheet = xlsx.parse(input);
|
|
261
|
+
var exp = parseExpressionSheet(sheet);
|
|
262
|
+
assert.equal(frequency, exp["expression"]["wt_log2_expression"]["errors"].length);
|
|
263
|
+
|
|
264
|
+
for (var i = 0; i < frequency; i++) {
|
|
265
|
+
assert.equal(
|
|
266
|
+
"EMPTY_ROW",
|
|
267
|
+
exp["expression"]["wt_log2_expression"]["errors"][i].errorCode
|
|
268
|
+
);
|
|
269
|
+
}
|
|
270
|
+
};
|
|
271
|
+
|
|
272
|
+
// should extra_gene_name and missing_gene_name be split into two different functions?
|
|
273
|
+
var labelError = function (input, frequency) {
|
|
274
|
+
var sheet = xlsx.parse(input);
|
|
275
|
+
var exp = parseExpressionSheet(sheet);
|
|
276
|
+
assert.equal(frequency, exp["expression"]["wt_log2_expression"]["errors"].length);
|
|
277
|
+
for (var i = 0; i < frequency; i++) {
|
|
278
|
+
assert.equal(
|
|
279
|
+
"extra_gene_name" || "missing_a_gene_name",
|
|
280
|
+
exp["expression"]["wt_log2_expression"]["errors"][i].errorCode
|
|
281
|
+
);
|
|
282
|
+
}
|
|
283
|
+
};
|
|
284
|
+
|
|
285
|
+
var missingGeneNameError = function (input, frequency) {
|
|
286
|
+
var sheet = xlsx.parse(input);
|
|
287
|
+
var workbook = spreadsheetController.crossSheetInteractions(sheet);
|
|
288
|
+
var missingGeneCount = workbook.errors.filter(function (x) {
|
|
289
|
+
return x.errorCode === "MISSING_GENE_NAME";
|
|
290
|
+
});
|
|
180
291
|
|
|
181
|
-
assert.equal(frequency,
|
|
292
|
+
assert.equal(frequency, missingGeneCount.length);
|
|
293
|
+
};
|
|
182
294
|
|
|
295
|
+
var extraGeneNameError = function (input, frequency) {
|
|
296
|
+
var sheet = xlsx.parse(input);
|
|
297
|
+
var workbook = spreadsheetController.crossSheetInteractions(sheet);
|
|
298
|
+
var extraGeneCount = workbook.errors.filter(function (x) {
|
|
299
|
+
return x.errorCode === "EXTRA_GENE_NAME";
|
|
300
|
+
});
|
|
301
|
+
|
|
302
|
+
assert.equal(frequency, extraGeneCount.length);
|
|
303
|
+
};
|
|
304
|
+
|
|
305
|
+
var negativeTimePointError = function (input, frequency) {
|
|
306
|
+
var sheet = xlsx.parse(input);
|
|
307
|
+
var exp = parseExpressionSheet(sheet);
|
|
308
|
+
assert.equal(frequency, exp["expression"]["wt_log2_expression"]["errors"].length);
|
|
309
|
+
for (var i = 0; i < frequency; i++) {
|
|
310
|
+
assert.equal(
|
|
311
|
+
"NEGATIVE_TIME_POINT",
|
|
312
|
+
exp["expression"]["wt_log2_expression"]["errors"][i].errorCode
|
|
313
|
+
);
|
|
314
|
+
}
|
|
315
|
+
};
|
|
316
|
+
|
|
317
|
+
var nonMonotonicTimePointsError = function (input, frequency) {
|
|
318
|
+
var sheet = xlsx.parse(input);
|
|
319
|
+
var exp = parseExpressionSheet(sheet);
|
|
320
|
+
assert.equal(frequency, exp["expression"]["wt_log2_expression"]["errors"].length);
|
|
183
321
|
for (var i = 0; i < frequency; i++) {
|
|
184
322
|
assert.equal(
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
323
|
+
"NON_MONOTONIC_TIME_POINTS",
|
|
324
|
+
exp["expression"]["wt_log2_expression"]["errors"][i].errorCode
|
|
325
|
+
);
|
|
188
326
|
}
|
|
189
327
|
};
|
|
190
328
|
|
|
329
|
+
var nonNumericalTimePointError = function (input, frequency) {
|
|
330
|
+
var sheet = xlsx.parse(input);
|
|
331
|
+
var exp = parseExpressionSheet(sheet);
|
|
332
|
+
assert.equal(frequency, exp["expression"]["wt_log2_expression"]["errors"].length);
|
|
333
|
+
for (var i = 0; i < frequency; i++) {
|
|
334
|
+
assert.equal(
|
|
335
|
+
"NON_NUMERICAL_TIME_POINT",
|
|
336
|
+
exp["expression"]["wt_log2_expression"]["errors"][i].errorCode
|
|
337
|
+
);
|
|
338
|
+
}
|
|
339
|
+
};
|
|
340
|
+
|
|
341
|
+
var emptyRowDataError = function (input, frequency) {
|
|
342
|
+
var sheet = xlsx.parse(input);
|
|
343
|
+
var workbook = parseNetworkSheet(sheet);
|
|
344
|
+
var emptyRowDataCount = workbook.errors.filter(function (x) {
|
|
345
|
+
return x.errorCode === "EMPTY_ROW_DATA";
|
|
346
|
+
});
|
|
347
|
+
|
|
348
|
+
assert.equal(frequency, emptyRowDataCount.length);
|
|
349
|
+
};
|
|
350
|
+
|
|
351
|
+
var emptyMatrixDataError = function (input, frequency) {
|
|
352
|
+
var sheet = xlsx.parse(input);
|
|
353
|
+
var workbook = parseNetworkSheet(sheet);
|
|
354
|
+
var emptyMatrixDataCount = workbook.errors.filter(function (x) {
|
|
355
|
+
return x.errorCode === "EMPTY_MATRIX_DATA";
|
|
356
|
+
});
|
|
357
|
+
|
|
358
|
+
assert.equal(frequency, emptyMatrixDataCount.length);
|
|
359
|
+
};
|
|
360
|
+
|
|
361
|
+
var emptyColumnDataError = function (input, frequency) {
|
|
362
|
+
var sheet = xlsx.parse(input);
|
|
363
|
+
var workbook = parseNetworkSheet(sheet);
|
|
364
|
+
var emptyRowDataCount = workbook.errors.filter(function (x) {
|
|
365
|
+
return x.errorCode === "EMPTY_COLUMN_DATA";
|
|
366
|
+
});
|
|
367
|
+
|
|
368
|
+
assert.equal(frequency, emptyRowDataCount.length);
|
|
369
|
+
};
|
|
370
|
+
|
|
371
|
+
var emptyColumnError = function (input, frequency) {
|
|
372
|
+
var sheet = xlsx.parse(input);
|
|
373
|
+
var workbook = parseNetworkSheet(sheet);
|
|
374
|
+
var emptyRowDataCount = workbook.errors.filter(function (x) {
|
|
375
|
+
return x.errorCode === "EMPTY_COLUMN";
|
|
376
|
+
});
|
|
377
|
+
|
|
378
|
+
assert.equal(frequency, emptyRowDataCount.length);
|
|
379
|
+
};
|
|
380
|
+
|
|
381
|
+
|
|
382
|
+
|
|
191
383
|
// WARNING TEST FUNCTIONS:
|
|
192
384
|
|
|
193
385
|
var noWarnings = function (input) {
|
|
194
386
|
var sheet = xlsx.parse(input);
|
|
195
|
-
var
|
|
387
|
+
var workbook = parseNetworkSheet(sheet);
|
|
196
388
|
|
|
197
|
-
assert.equal(0,
|
|
389
|
+
assert.equal(0, workbook.warnings.length);
|
|
198
390
|
};
|
|
199
391
|
|
|
200
392
|
var missingSourceWarning = function (input, frequency) {
|
|
201
393
|
var sheet = xlsx.parse(input);
|
|
202
|
-
var
|
|
203
|
-
var missingSourceCount =
|
|
394
|
+
var workbook = parseNetworkSheet(sheet);
|
|
395
|
+
var missingSourceCount = workbook.warnings.filter(function (x) {
|
|
204
396
|
return x.warningCode === "MISSING_SOURCE";
|
|
205
397
|
});
|
|
206
398
|
|
|
@@ -209,8 +401,8 @@ var missingSourceWarning = function (input, frequency) {
|
|
|
209
401
|
|
|
210
402
|
var invalidMatrixDataWarning = function (input, frequency) {
|
|
211
403
|
var sheet = xlsx.parse(input);
|
|
212
|
-
var
|
|
213
|
-
var invalidDataCount =
|
|
404
|
+
var workbook = parseNetworkSheet(sheet);
|
|
405
|
+
var invalidDataCount = workbook.warnings.filter(function (x) {
|
|
214
406
|
return x.warningCode === "INVALID_DATA";
|
|
215
407
|
});
|
|
216
408
|
|
|
@@ -219,8 +411,8 @@ var invalidMatrixDataWarning = function (input, frequency) {
|
|
|
219
411
|
|
|
220
412
|
var missingTargetWarning = function (input, frequency) {
|
|
221
413
|
var sheet = xlsx.parse(input);
|
|
222
|
-
var
|
|
223
|
-
var missingTargetCount =
|
|
414
|
+
var workbook = parseNetworkSheet(sheet);
|
|
415
|
+
var missingTargetCount = workbook.warnings.filter(function (x) {
|
|
224
416
|
return x.warningCode === "MISSING_TARGET";
|
|
225
417
|
});
|
|
226
418
|
|
|
@@ -229,8 +421,8 @@ var missingTargetWarning = function (input, frequency) {
|
|
|
229
421
|
|
|
230
422
|
var randomDataWarning = function (input, frequency) {
|
|
231
423
|
var sheet = xlsx.parse(input);
|
|
232
|
-
var
|
|
233
|
-
var randomDataCount =
|
|
424
|
+
var workbook = parseNetworkSheet(sheet);
|
|
425
|
+
var randomDataCount = workbook.warnings.filter(function (x) {
|
|
234
426
|
return x.warningCode === "RANDOM_DATA";
|
|
235
427
|
});
|
|
236
428
|
|
|
@@ -239,8 +431,8 @@ var randomDataWarning = function (input, frequency) {
|
|
|
239
431
|
|
|
240
432
|
var emptyRowWarning = function (input, frequency) {
|
|
241
433
|
var sheet = xlsx.parse(input);
|
|
242
|
-
var
|
|
243
|
-
var emptyRowCount =
|
|
434
|
+
var workbook = parseNetworkSheet(sheet);
|
|
435
|
+
var emptyRowCount = workbook.warnings.filter(function (x) {
|
|
244
436
|
return x.warningCode === "EMPTY_ROW";
|
|
245
437
|
});
|
|
246
438
|
|
|
@@ -249,40 +441,61 @@ var emptyRowWarning = function (input, frequency) {
|
|
|
249
441
|
|
|
250
442
|
var invalidNetworkSizeWarning = function (input, frequency) {
|
|
251
443
|
var sheet = xlsx.parse(input);
|
|
252
|
-
var
|
|
253
|
-
var
|
|
444
|
+
var workbook = parseNetworkSheet(sheet);
|
|
445
|
+
var invalidworkbookSizeCount = workbook.warnings.filter(function (x) {
|
|
254
446
|
return x.warningCode === "INVALID_NETWORK_SIZE";
|
|
255
447
|
});
|
|
256
448
|
|
|
257
|
-
assert.equal(frequency,
|
|
449
|
+
assert.equal(frequency, invalidworkbookSizeCount.length);
|
|
258
450
|
};
|
|
259
451
|
|
|
260
452
|
var extraneousDataWarning = function (input, frequency) {
|
|
261
453
|
var sheet = xlsx.parse(input);
|
|
262
|
-
var
|
|
263
|
-
var
|
|
454
|
+
var exp = parseExpressionSheet(sheet);
|
|
455
|
+
var extraneousDataCount = exp["expression"]["wt_log2_expression"]["warnings"].filter(function (x) {
|
|
264
456
|
return x.warningCode === "EXTRANEOUS_DATA";
|
|
265
457
|
});
|
|
266
458
|
|
|
267
|
-
assert.equal(frequency,
|
|
459
|
+
assert.equal(frequency, extraneousDataCount.length);
|
|
460
|
+
};
|
|
461
|
+
|
|
462
|
+
|
|
463
|
+
var missingExpressionWarning = function (input, frequency) {
|
|
464
|
+
var sheet = xlsx.parse(input);
|
|
465
|
+
var workbook = spreadsheetController.crossSheetInteractions(sheet);
|
|
466
|
+
var missingExpressionCount = workbook.warnings.filter(function (x) {
|
|
467
|
+
return x.warningCode === "MISSING_EXPRESSION_SHEET";
|
|
468
|
+
});
|
|
469
|
+
|
|
470
|
+
assert.equal(frequency, missingExpressionCount.length);
|
|
471
|
+
};
|
|
472
|
+
|
|
473
|
+
var incorrectlyNamedExpressionSheetWarning = function (input, frequency) {
|
|
474
|
+
var sheet = xlsx.parse(input);
|
|
475
|
+
var workbook = parseExpressionSheet(sheet);
|
|
476
|
+
var incorrectlyNamedSheetCount = workbook.warnings.filter(function (x) {
|
|
477
|
+
return x.warningCode === "INCORRECTLY_NAMED_EXPRESSION_SHEET";
|
|
478
|
+
});
|
|
479
|
+
|
|
480
|
+
assert.equal(frequency, incorrectlyNamedSheetCount.length);
|
|
268
481
|
};
|
|
269
482
|
|
|
270
483
|
var incorrectlyNamedSheetWarning = function (input, frequency) {
|
|
271
484
|
var sheet = xlsx.parse(input);
|
|
272
|
-
var
|
|
273
|
-
var
|
|
485
|
+
var workbook = parseNetworkSheet(sheet);
|
|
486
|
+
var incorrectlyNamedSheetCount = workbook.warnings.filter(function (x) {
|
|
274
487
|
return x.warningCode === "INCORRECTLY_NAMED_SHEET";
|
|
275
488
|
});
|
|
276
489
|
|
|
277
|
-
assert.equal(frequency,
|
|
490
|
+
assert.equal(frequency, incorrectlyNamedSheetCount.length);
|
|
278
491
|
};
|
|
279
492
|
|
|
280
493
|
// GRAPH STATISTICS
|
|
281
494
|
/*
|
|
282
495
|
var shortestPath = function (input, directed, source, target, length) {
|
|
283
496
|
var sheet = xlsx.parse(input);
|
|
284
|
-
var
|
|
285
|
-
var cytoscapeElements = spreadsheetController.grnSightToCytoscape(
|
|
497
|
+
var workbook = parseNetworkSheet(sheet);
|
|
498
|
+
var cytoscapeElements = spreadsheetController.grnSightToCytoscape(workbook);
|
|
286
499
|
|
|
287
500
|
var cy = cytoscape({
|
|
288
501
|
headless: true,
|
|
@@ -295,8 +508,8 @@ var shortestPath = function (input, directed, source, target, length) {
|
|
|
295
508
|
|
|
296
509
|
var betweennessCentrality = function (input, directed, node, centrality) {
|
|
297
510
|
var sheet = xlsx.parse(input);
|
|
298
|
-
var
|
|
299
|
-
var cytoscapeElements = spreadsheetController.grnSightToCytoscape(
|
|
511
|
+
var workbook = parseNetworkSheet(sheet);
|
|
512
|
+
var cytoscapeElements = spreadsheetController.grnSightToCytoscape(workbook);
|
|
300
513
|
|
|
301
514
|
var cy = cytoscape({
|
|
302
515
|
headless: true,
|
|
@@ -308,6 +521,222 @@ var betweennessCentrality = function (input, directed, node, centrality) {
|
|
|
308
521
|
};
|
|
309
522
|
*/
|
|
310
523
|
|
|
524
|
+
// Additional Sheets Error Tests
|
|
525
|
+
var twoColumnIdError = function (input, frequency) {
|
|
526
|
+
var sheet = xlsx.parse(input);
|
|
527
|
+
var workbook = parseAdditionalSheet(sheet);
|
|
528
|
+
var twoColumnIdErrorCount = 0;
|
|
529
|
+
for (let page in workbook.test) {
|
|
530
|
+
twoColumnIdErrorCount += workbook.test[page].errors.filter(function (x) {
|
|
531
|
+
return x.errorCode === "MISLABELED_ID_CELL";
|
|
532
|
+
}).length;
|
|
533
|
+
}
|
|
534
|
+
assert.equal(frequency, twoColumnIdErrorCount);
|
|
535
|
+
};
|
|
536
|
+
|
|
537
|
+
var additionalSheetIncorrectColumnHeaderError = function (input, frequency) {
|
|
538
|
+
var sheet = xlsx.parse(input);
|
|
539
|
+
var workbook = parseAdditionalSheet(sheet);
|
|
540
|
+
var additionalSheetIncorrectColumnHeaderErrorCount = 0;
|
|
541
|
+
for (let page in workbook.test) {
|
|
542
|
+
additionalSheetIncorrectColumnHeaderErrorCount += workbook.test[page].errors.filter(
|
|
543
|
+
(x) => x.errorCode === "INCORRECT_COLUMN_HEADER").length;
|
|
544
|
+
}
|
|
545
|
+
additionalSheetIncorrectColumnHeaderErrorCount += workbook.meta.errors.filter(
|
|
546
|
+
(x) => x.errorCode === "INCORRECT_COLUMN_HEADER").length;
|
|
547
|
+
if (workbook.meta2.errors !== undefined) {
|
|
548
|
+
additionalSheetIncorrectColumnHeaderErrorCount += workbook.meta2.errors.filter(
|
|
549
|
+
(x) => x.errorCode === "INCORRECT_COLUMN_HEADER").length;
|
|
550
|
+
}
|
|
551
|
+
assert.equal(frequency, additionalSheetIncorrectColumnHeaderErrorCount);
|
|
552
|
+
};
|
|
553
|
+
|
|
554
|
+
var additionalSheetMissingColumnHeaderError = function (input, frequency) {
|
|
555
|
+
var sheet = xlsx.parse(input);
|
|
556
|
+
var workbook = parseAdditionalSheet(sheet);
|
|
557
|
+
var additionalSheetMissingColumnHeaderErrorCount = 0;
|
|
558
|
+
for (let page in workbook.test) {
|
|
559
|
+
additionalSheetMissingColumnHeaderErrorCount += workbook.test[page].errors.filter(
|
|
560
|
+
(x) => x.errorCode === "MISSING_COLUMN_HEADER").length;
|
|
561
|
+
}
|
|
562
|
+
additionalSheetMissingColumnHeaderErrorCount += workbook.meta.errors.filter(
|
|
563
|
+
(x) => x.errorCode === "MISSING_COLUMN_HEADER").length;
|
|
564
|
+
if (workbook.meta2.warnings !== undefined) {
|
|
565
|
+
additionalSheetMissingColumnHeaderErrorCount += workbook.meta2.errors.filter(
|
|
566
|
+
(x) => x.errorCode === "MISSING_COLUMN_HEADER").length;
|
|
567
|
+
}
|
|
568
|
+
assert.equal(frequency, additionalSheetMissingColumnHeaderErrorCount);
|
|
569
|
+
};
|
|
570
|
+
|
|
571
|
+
var twoColumnInvalidGeneTypeError = function (input, frequency) {
|
|
572
|
+
var sheet = xlsx.parse(input);
|
|
573
|
+
var workbook = parseAdditionalSheet(sheet);
|
|
574
|
+
var twoColumnInvalidGeneTypeErrorCount = 0;
|
|
575
|
+
for (let page in workbook.test) {
|
|
576
|
+
twoColumnInvalidGeneTypeErrorCount += workbook.test[page].errors.filter(function (x) {
|
|
577
|
+
return x.errorCode === "INVALID_GENE_TYPE";
|
|
578
|
+
}).length;
|
|
579
|
+
}
|
|
580
|
+
assert.equal(frequency, twoColumnInvalidGeneTypeErrorCount);
|
|
581
|
+
};
|
|
582
|
+
|
|
583
|
+
var twoColumnInvalidValueError = function (input, frequency) {
|
|
584
|
+
var sheet = xlsx.parse(input);
|
|
585
|
+
var workbook = parseAdditionalSheet(sheet);
|
|
586
|
+
var twoColumnInvalidValueErrorCount = 0;
|
|
587
|
+
for (let page in workbook.test) {
|
|
588
|
+
twoColumnInvalidValueErrorCount += workbook.test[page].errors.filter(function (x) {
|
|
589
|
+
return x.errorCode === "INVALID_VALUE";
|
|
590
|
+
}).length;
|
|
591
|
+
}
|
|
592
|
+
assert.equal(frequency, twoColumnInvalidValueErrorCount);
|
|
593
|
+
};
|
|
594
|
+
|
|
595
|
+
var twoColumnInvalidGeneLengthError = function (input, frequency) {
|
|
596
|
+
var sheet = xlsx.parse(input);
|
|
597
|
+
var workbook = parseAdditionalSheet(sheet);
|
|
598
|
+
var twoColumnInvalidGeneLengthErrorCount = 0;
|
|
599
|
+
for (let page in workbook.test) {
|
|
600
|
+
twoColumnInvalidGeneLengthErrorCount += workbook.test[page].errors.filter(function (x) {
|
|
601
|
+
return x.errorCode === "INVALID_GENE_LENGTH";
|
|
602
|
+
}).length;
|
|
603
|
+
}
|
|
604
|
+
assert.equal(frequency, twoColumnInvalidGeneLengthErrorCount);
|
|
605
|
+
};
|
|
606
|
+
|
|
607
|
+
var twoColumnSpecialCharacterError = function (input, frequency) {
|
|
608
|
+
var sheet = xlsx.parse(input);
|
|
609
|
+
var workbook = parseAdditionalSheet(sheet);
|
|
610
|
+
var twoColumnSpecialCharacterErrorCount = 0;
|
|
611
|
+
for (let page in workbook.test) {
|
|
612
|
+
twoColumnSpecialCharacterErrorCount += workbook.test[page].errors.filter(function (x) {
|
|
613
|
+
return x.errorCode === "INVALID_CHARACTER";
|
|
614
|
+
}).length;
|
|
615
|
+
}
|
|
616
|
+
assert.equal(frequency, twoColumnSpecialCharacterErrorCount);
|
|
617
|
+
};
|
|
618
|
+
|
|
619
|
+
// Additional Sheets Warning Tests
|
|
620
|
+
|
|
621
|
+
var additionalSheetExtraneousDataWarning = function (input, frequency) {
|
|
622
|
+
var sheet = xlsx.parse(input);
|
|
623
|
+
var workbook = parseAdditionalSheet(sheet);
|
|
624
|
+
var additionalSheetExtraneousDataWarningCount = 0;
|
|
625
|
+
for (let page in workbook.test) {
|
|
626
|
+
additionalSheetExtraneousDataWarningCount += workbook.test[page].warnings.filter(function (x) {
|
|
627
|
+
return x.warningCode === "EXTRANEOUS_DATA";
|
|
628
|
+
}).length;
|
|
629
|
+
}
|
|
630
|
+
assert.equal(frequency, additionalSheetExtraneousDataWarningCount);
|
|
631
|
+
};
|
|
632
|
+
|
|
633
|
+
var unknownOptimizationParameterWarning = function (input, frequency) {
|
|
634
|
+
var sheet = xlsx.parse(input);
|
|
635
|
+
var workbook = parseAdditionalSheet(sheet);
|
|
636
|
+
var unknownOptimizationParameterWarningCount = 0;
|
|
637
|
+
unknownOptimizationParameterWarningCount += workbook.meta.warnings.filter((x) =>
|
|
638
|
+
x.warningCode === "UNKNOWN_OPTIMIZATION_PARAMETER").length;
|
|
639
|
+
assert.equal(frequency, unknownOptimizationParameterWarningCount);
|
|
640
|
+
};
|
|
641
|
+
|
|
642
|
+
var invalidOptimizationParameterWarning = function (input, frequency) {
|
|
643
|
+
var sheet = xlsx.parse(input);
|
|
644
|
+
var workbook = parseAdditionalSheet(sheet);
|
|
645
|
+
var invalidOptimizationParameterWarningCount = 0;
|
|
646
|
+
invalidOptimizationParameterWarningCount += workbook.meta.warnings.filter((x) =>
|
|
647
|
+
x.warningCode === "INVALID_OPTIMIZATION_PARAMETER").length;
|
|
648
|
+
assert.equal(frequency, invalidOptimizationParameterWarningCount);
|
|
649
|
+
};
|
|
650
|
+
|
|
651
|
+
var unknownOptimizationDiagnosticsParameterWarning = function (input, frequency) {
|
|
652
|
+
var sheet = xlsx.parse(input);
|
|
653
|
+
var workbook = parseAdditionalSheet(sheet);
|
|
654
|
+
var unknownOptimizationDiagnosticsParameterWarningCount = 0;
|
|
655
|
+
unknownOptimizationDiagnosticsParameterWarningCount += workbook.meta2.warnings.filter((x) =>
|
|
656
|
+
x.warningCode === "UNKNOWN_OPTIMIZATION_DIAGNOSTICS_PARAMETER").length;
|
|
657
|
+
assert.equal(frequency, unknownOptimizationDiagnosticsParameterWarningCount);
|
|
658
|
+
};
|
|
659
|
+
|
|
660
|
+
var invalidOptimizationDiagnosticsValueWarning = function (input, frequency) {
|
|
661
|
+
var sheet = xlsx.parse(input);
|
|
662
|
+
var workbook = parseAdditionalSheet(sheet);
|
|
663
|
+
var invalidOptimizationDiagnosticsValueWarningCount = 0;
|
|
664
|
+
invalidOptimizationDiagnosticsValueWarningCount += workbook.meta2.warnings.filter((x) =>
|
|
665
|
+
x.warningCode === "INVALID_OPTIMIZATION_DIAGNOSTICS_VALUE").length;
|
|
666
|
+
assert.equal(frequency, invalidOptimizationDiagnosticsValueWarningCount);
|
|
667
|
+
};
|
|
668
|
+
|
|
669
|
+
var optimizationDiagnosticsExtraneousDataWarning = function (input, frequency) {
|
|
670
|
+
var sheet = xlsx.parse(input);
|
|
671
|
+
var workbook = parseAdditionalSheet(sheet);
|
|
672
|
+
var optimizationDiagnosticsExtraneousDataWarningCount = 0;
|
|
673
|
+
optimizationDiagnosticsExtraneousDataWarningCount += workbook.meta2.warnings.filter((x) =>
|
|
674
|
+
x.warningCode === "EXTRANEOUS_DATA").length;
|
|
675
|
+
assert.equal(frequency, optimizationDiagnosticsExtraneousDataWarningCount);
|
|
676
|
+
};
|
|
677
|
+
|
|
678
|
+
var incorrectMSEGeneHeaderWarning = function (input, frequency) {
|
|
679
|
+
var sheet = xlsx.parse(input);
|
|
680
|
+
var workbook = parseAdditionalSheet(sheet);
|
|
681
|
+
var incorrectMSEGeneHeaderWarningCount = 0;
|
|
682
|
+
incorrectMSEGeneHeaderWarningCount += workbook.meta2.warnings.filter((x) =>
|
|
683
|
+
x.warningCode === "INCORRECT_MSE_GENE_HEADER").length;
|
|
684
|
+
assert.equal(frequency, incorrectMSEGeneHeaderWarningCount);
|
|
685
|
+
};
|
|
686
|
+
|
|
687
|
+
var incorrectMSEHeaderWarning = function (input, frequency) {
|
|
688
|
+
var sheet = xlsx.parse(input);
|
|
689
|
+
var workbook = parseAdditionalSheet(sheet);
|
|
690
|
+
var incorrectMSEHeaderWarningCount = 0;
|
|
691
|
+
incorrectMSEHeaderWarningCount += workbook.meta2.warnings.filter((x) =>
|
|
692
|
+
x.warningCode === "INCORRECT_MSE_HEADER").length;
|
|
693
|
+
assert.equal(frequency, incorrectMSEHeaderWarningCount);
|
|
694
|
+
};
|
|
695
|
+
|
|
696
|
+
var missingMSEDataWarning = function (input, frequency) {
|
|
697
|
+
var sheet = xlsx.parse(input);
|
|
698
|
+
var workbook = parseAdditionalSheet(sheet);
|
|
699
|
+
var missingMSEDataWarningCount = 0;
|
|
700
|
+
missingMSEDataWarningCount += workbook.meta2.warnings.filter((x) =>
|
|
701
|
+
x.warningCode === "MISSING_MSE_DATA").length;
|
|
702
|
+
assert.equal(frequency, missingMSEDataWarningCount);
|
|
703
|
+
};
|
|
704
|
+
|
|
705
|
+
var invalidMSEDataWarning = function (input, frequency) {
|
|
706
|
+
var sheet = xlsx.parse(input);
|
|
707
|
+
var workbook = parseAdditionalSheet(sheet);
|
|
708
|
+
var invalidMSEDataWarningCount = 0;
|
|
709
|
+
invalidMSEDataWarningCount += workbook.meta2.warnings.filter((x) =>
|
|
710
|
+
x.warningCode === "INVALID_MSE_DATA").length;
|
|
711
|
+
assert.equal(frequency, invalidMSEDataWarningCount);
|
|
712
|
+
};
|
|
713
|
+
|
|
714
|
+
// Export Tests
|
|
715
|
+
|
|
716
|
+
var importExportReImportNoErrorsOrWarnings = function (input) {
|
|
717
|
+
var sheet = xlsx.parse(input);
|
|
718
|
+
var inputWorkbook = spreadsheetController.crossSheetInteractions(sheet);
|
|
719
|
+
inputWorkbook["exportExpression"] = inputWorkbook.expression;
|
|
720
|
+
var exportedWorkbook = exportController.grnsightToXlsx(inputWorkbook);
|
|
721
|
+
var sheet2 = xlsx.parse(exportedWorkbook);
|
|
722
|
+
var reImportedWorkbook = spreadsheetController.crossSheetInteractions(sheet2);
|
|
723
|
+
assert.equal(0, reImportedWorkbook.errors.length + reImportedWorkbook.warnings.length);
|
|
724
|
+
};
|
|
725
|
+
|
|
726
|
+
var importFileSameAsExportFile = function (input) {
|
|
727
|
+
var sheet = xlsx.parse(input);
|
|
728
|
+
var inputWorkbook = spreadsheetController.crossSheetInteractions(sheet);
|
|
729
|
+
inputWorkbook["exportExpression"] = inputWorkbook.expression;
|
|
730
|
+
inputWorkbook["exportNetworkType"] = inputWorkbook.sheetType;
|
|
731
|
+
var exportedWorkbook = exportController.grnsightToXlsx(inputWorkbook);
|
|
732
|
+
var sheet2 = xlsx.parse(exportedWorkbook);
|
|
733
|
+
sheet.sort((a, b) => (a.name > b.name) ? 1 : -1);
|
|
734
|
+
sheet2.sort((a, b) => (a.name > b.name) ? 1 : -1);
|
|
735
|
+
assert.deepEqual(sheet, sheet2);
|
|
736
|
+
};
|
|
737
|
+
|
|
738
|
+
|
|
739
|
+
|
|
311
740
|
exports.noErrors = noErrors;
|
|
312
741
|
exports.duplicateGeneError = duplicateGeneError;
|
|
313
742
|
exports.invalidGeneLengthError = invalidGeneLengthError;
|
|
@@ -315,12 +744,34 @@ exports.corruptGeneError = corruptGeneError;
|
|
|
315
744
|
exports.unknownError = unknownError;
|
|
316
745
|
exports.missingValueError = missingValueError;
|
|
317
746
|
exports.missingNetworkError = missingNetworkError;
|
|
318
|
-
exports.
|
|
747
|
+
exports.workbookSizeError = workbookSizeError;
|
|
319
748
|
exports.warningsCountError = warningsCountError;
|
|
320
749
|
exports.invalidDataTypeError = invalidDataTypeError;
|
|
321
750
|
exports.emptyRowError = emptyRowError;
|
|
751
|
+
exports.idLabelError = idLabelError;
|
|
322
752
|
exports.errorsCountError = errorsCountError;
|
|
323
753
|
exports.specialCharacterError = specialCharacterError;
|
|
754
|
+
exports.emptyExpressionColumnError = emptyExpressionColumnError;
|
|
755
|
+
exports.emptyExpressionRowError = emptyExpressionRowError;
|
|
756
|
+
exports.missingColumnHeaderError = missingColumnHeaderError;
|
|
757
|
+
exports.geneMismatchError = geneMismatchError;
|
|
758
|
+
exports.labelError = labelError;
|
|
759
|
+
exports.missingGeneNameError = missingGeneNameError;
|
|
760
|
+
exports.extraGeneNameError = extraGeneNameError;
|
|
761
|
+
exports.negativeTimePointError = negativeTimePointError;
|
|
762
|
+
exports.nonMonotonicTimePointsError = nonMonotonicTimePointsError;
|
|
763
|
+
exports.nonNumericalTimePointError = nonNumericalTimePointError;
|
|
764
|
+
exports.emptyRowDataError = emptyRowDataError;
|
|
765
|
+
exports.emptyMatrixDataError = emptyMatrixDataError;
|
|
766
|
+
exports.emptyColumnDataError = emptyColumnDataError;
|
|
767
|
+
exports.emptyColumnError = emptyColumnError;
|
|
768
|
+
exports.twoColumnIdError = twoColumnIdError;
|
|
769
|
+
exports.additionalSheetIncorrectColumnHeaderError = additionalSheetIncorrectColumnHeaderError;
|
|
770
|
+
exports.additionalSheetMissingColumnHeaderError = additionalSheetMissingColumnHeaderError;
|
|
771
|
+
exports.twoColumnInvalidGeneTypeError = twoColumnInvalidGeneTypeError;
|
|
772
|
+
exports.twoColumnInvalidValueError = twoColumnInvalidValueError;
|
|
773
|
+
exports.twoColumnInvalidGeneLengthError = twoColumnInvalidGeneLengthError;
|
|
774
|
+
exports.twoColumnSpecialCharacterError = twoColumnSpecialCharacterError;
|
|
324
775
|
|
|
325
776
|
exports.checkForGene = checkForGene;
|
|
326
777
|
exports.noWarnings = noWarnings;
|
|
@@ -331,7 +782,19 @@ exports.emptyRowWarning = emptyRowWarning;
|
|
|
331
782
|
exports.invalidNetworkSizeWarning = invalidNetworkSizeWarning;
|
|
332
783
|
exports.extraneousDataWarning = extraneousDataWarning;
|
|
333
784
|
exports.invalidMatrixDataWarning = invalidMatrixDataWarning;
|
|
785
|
+
exports.incorrectlyNamedExpressionSheetWarning = incorrectlyNamedExpressionSheetWarning;
|
|
786
|
+
exports.missingExpressionWarning = missingExpressionWarning;
|
|
334
787
|
exports.incorrectlyNamedSheetWarning = incorrectlyNamedSheetWarning;
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
788
|
+
exports.additionalSheetExtraneousDataWarning = additionalSheetExtraneousDataWarning;
|
|
789
|
+
exports.unknownOptimizationParameterWarning = unknownOptimizationParameterWarning;
|
|
790
|
+
exports.invalidOptimizationParameterWarning = invalidOptimizationParameterWarning;
|
|
791
|
+
exports.unknownOptimizationDiagnosticsParameterWarning = unknownOptimizationDiagnosticsParameterWarning;
|
|
792
|
+
exports.invalidOptimizationDiagnosticsValueWarning = invalidOptimizationDiagnosticsValueWarning;
|
|
793
|
+
exports.optimizationDiagnosticsExtraneousDataWarning = optimizationDiagnosticsExtraneousDataWarning;
|
|
794
|
+
exports.incorrectMSEGeneHeaderWarning = incorrectMSEGeneHeaderWarning;
|
|
795
|
+
exports.incorrectMSEHeaderWarning = incorrectMSEHeaderWarning;
|
|
796
|
+
exports.missingMSEDataWarning = missingMSEDataWarning;
|
|
797
|
+
exports.invalidMSEDataWarning = invalidMSEDataWarning;
|
|
798
|
+
|
|
799
|
+
exports.importExportReImportNoErrorsOrWarnings = importExportReImportNoErrorsOrWarnings;
|
|
800
|
+
exports.importFileSameAsExportFile = importFileSameAsExportFile;
|