grnsight 5.0.0 → 5.1.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 +1 -1
- package/package.json +5 -5
- package/server/app.js +4 -2
- package/server/controllers/database-controller.js +9 -8
- package/server/controllers/exporters/xlsx.js +27 -9
- package/test/export-tests.js +2 -2
- package/test/test.js +3 -1
- package/test-files/expression-data-test-sheets/expression_sheet_missing_data_ok_export_exact.xlsx +0 -0
- package/web-client/app.js +1 -1
- package/web-client/controllers/main.js +1 -1
- package/web-client/public/js/constants.js +4 -1
- package/web-client/public/js/update-app.js +8 -11
- package/web-client/public/js/upload.js +337 -11
- 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.jade → upload.pug} +47 -4
- 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/SDF/CMSI_402/spring_2020/Alexia Filler/Expression Database Schema.pdf +0 -0
- package/documents/SDF/CMSI_402/spring_2020/Alexia Filler/ExpressionDbLayoutImage.jpg +0 -0
- package/documents/SDF/CMSI_402/spring_2020/Alexia Filler/ExpressionDbLayoutImageSmall.jpg +0 -0
- package/documents/SDF/CMSI_402/spring_2020/Alexia Filler/Filler_Patterson_CMSI402_Poster.pptx +0 -0
- package/documents/SDF/CMSI_402/spring_2020/Alexia Filler/GRNsight Final Presentation.pdf +0 -0
- package/documents/SDF/CMSI_402/spring_2020/Alexia Filler/Project Proposal Doc.pdf +0 -0
- package/documents/SDF/CMSI_402/spring_2020/Alexia Filler/Project Proposal Presentation.pdf +0 -0
- package/documents/SDF/CMSI_402/spring_2020/Alexia Filler/Software Development Plan/GANTT Chart.xlsx +0 -0
- package/documents/SDF/CMSI_402/spring_2020/Alexia Filler/Software Development Plan/Software Development Plan.pdf +0 -0
- package/documents/SDF/CMSI_402/spring_2020/Alexia Filler/Software Development Plan (Updated)/GANTT Chart (Updated).xlsx +0 -0
- package/documents/SDF/CMSI_402/spring_2020/Alexia Filler/Software Development Plan (Updated)/Software Development Plan (Updated).pdf +0 -0
- package/documents/SDF/CMSI_402/spring_2020/Alexia Filler/Software Requirements Specification (Updated).pdf +0 -0
- package/documents/SDF/CMSI_402/spring_2020/Alexia Filler/Software Requirements Specification.pdf +0 -0
- package/documents/SDF/CMSI_402/spring_2020/Kevin Patterson/402 GANTT Chart - Sheet1.pdf +0 -0
- package/documents/SDF/CMSI_402/spring_2020/Kevin Patterson/402 GRNsight SDP.pdf +0 -0
- package/documents/SDF/CMSI_402/spring_2020/Kevin Patterson/402 SRS.pdf +0 -0
- package/documents/SDF/CMSI_402/spring_2020/Kevin Patterson/FINAL GRNSIGHT PRESENTATION.pdf +0 -0
- package/documents/SDF/CMSI_402/spring_2020/Kevin Patterson/GRNsight Presentation.pdf +0 -0
- package/documents/SDF/CMSI_402/spring_2020/Kevin Patterson/Project Proposal 402.pdf +0 -0
- package/documents/SDF/CMSI_402/spring_2020/Kevin Patterson/SDP Updated/402 GANTT Chart UPDATED - Sheet1.pdf +0 -0
- package/documents/SDF/CMSI_402/spring_2020/Kevin Patterson/SDP Updated/402 GRNsight SDP UPDATED.pdf +0 -0
- package/documents/SDF/CMSI_402/spring_2020/Kevin Patterson/SRS Update/402 SRS Final.pdf +0 -0
- package/documents/abstracts/Anguiano_Varshneya_Undergraduate-Research-Symposium_2017_abstract.pdf +0 -0
- package/documents/abstracts/Dahlquist_Dionisio_et-al_BOSC_2020_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 -1016
- package/documents/developer_documents/testing_script_generator/edgeFeatures.json +0 -178
- package/documents/developer_documents/testing_script_generator/fileFeatures.json +0 -100
- package/documents/developer_documents/testing_script_generator/layoutFeatures.json +0 -166
- package/documents/developer_documents/testing_script_generator/nodeFeatures.json +0 -195
- package/documents/developer_documents/testing_script_generator/speciesFeatures.json +0 -30
- package/documents/developer_documents/testing_script_generator/testing-script-generator.js +0 -172
- package/documents/developer_documents/testing_script_generator/viewFeatures.json +0 -82
- package/documents/developer_documents/testing_script_generator/viewportFeatures.json +0 -50
- 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/Figure1_zoom145_900pix-wide.png +0 -0
- package/documents/manuscripts/peerj-computerscience-2016/figures/submitted-versions/Figure2_zoom145_900pix-wide.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/Filler_Patterson_CMSI402_Poster.pptx +0 -0
- package/documents/posters/Igbinedion_Green_Mersaghian_LMU_SYMPOSIUM_2021.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_BCC2020_20200720_talk.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_GRNsight_BCC2020_20200720_lightning-talk_video.mp4 +0 -0
- package/documents/presentations/Dahlquist_SoCalSysBio_20150131_talk.pptx +0 -0
- package/documents/presentations/Filler_Patterson_CMSI402_Presentation_20200501.pdf +0 -0
- package/documents/presentations/Filler_Patterson_LMU-Symposium_20200418_talk.pdf +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/.travis.yml
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "grnsight",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.1.0",
|
|
4
4
|
"description": "Web app and service for visualizing models of gene regulatory networks",
|
|
5
5
|
"directories": {
|
|
6
6
|
"test": "test"
|
|
@@ -17,7 +17,6 @@
|
|
|
17
17
|
"fs": "0.0.1-security",
|
|
18
18
|
"googleapis": "1.1.5",
|
|
19
19
|
"http": "0.0.0",
|
|
20
|
-
"jade": "1.11.0",
|
|
21
20
|
"jspdf": "1.5.3",
|
|
22
21
|
"method-override": "2.3.10",
|
|
23
22
|
"moment": "2.24.0",
|
|
@@ -28,12 +27,13 @@
|
|
|
28
27
|
"parallelshell": "3.0.1",
|
|
29
28
|
"pg": "^8.0.0",
|
|
30
29
|
"pg-hstore": "^2.3.3",
|
|
30
|
+
"pug": "^3.0.2",
|
|
31
31
|
"querystring": "^0.2.0",
|
|
32
32
|
"save-svg-as-png": "1.4.14",
|
|
33
33
|
"sequelize": "^5.21.6",
|
|
34
34
|
"serve-static": "1.13.1",
|
|
35
35
|
"should": "11.2.0",
|
|
36
|
-
"stylus": "0.54.5",
|
|
36
|
+
"stylus": "^0.54.5",
|
|
37
37
|
"supertest": "3.0.0",
|
|
38
38
|
"url": "^0.11.0",
|
|
39
39
|
"webpack": "4.0.0",
|
|
@@ -41,13 +41,13 @@
|
|
|
41
41
|
"xmlbuilder": "8.2.2"
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {
|
|
44
|
-
"browser-env": "3.
|
|
44
|
+
"browser-env": "^3.3.0",
|
|
45
45
|
"chai": "4.1.2",
|
|
46
46
|
"coveralls": "2.13.1",
|
|
47
47
|
"eslint": "3.19.0",
|
|
48
48
|
"isomorphic-fetch": "2.2.1",
|
|
49
49
|
"istanbul": "0.4.5",
|
|
50
|
-
"jquery": "3.
|
|
50
|
+
"jquery": "^3.6.0",
|
|
51
51
|
"jquery-extend": "2.0.3",
|
|
52
52
|
"jsdom": "11.11.0",
|
|
53
53
|
"markdown-pdf": "8.0.0",
|
package/server/app.js
CHANGED
|
@@ -15,8 +15,10 @@ var app = express();
|
|
|
15
15
|
app.set("port", process.env.PORT || config.port || 3000);
|
|
16
16
|
app.use(morgan("dev"));
|
|
17
17
|
app.use(express.json());
|
|
18
|
-
app.use(bodyParser.urlencoded({extended: true}));
|
|
19
|
-
app.use(bodyParser.json());
|
|
18
|
+
// app.use(bodyParser.urlencoded({extended: true}));
|
|
19
|
+
// app.use(bodyParser.json());
|
|
20
|
+
app.use(bodyParser.json({limit: "50mb"}));
|
|
21
|
+
app.use(bodyParser.urlencoded({limit: "50mb", extended: true}));
|
|
20
22
|
app.use(methodOverride());
|
|
21
23
|
app.use(cors());
|
|
22
24
|
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
|
|
1
2
|
const Sequelize = require("sequelize");
|
|
2
3
|
require("dotenv").config();
|
|
3
4
|
var env = process.env.NODE_ENV || "development";
|
|
@@ -64,30 +65,30 @@ timepointsSources.forEach(source => timepointsByDataset[source.key] = source.val
|
|
|
64
65
|
|
|
65
66
|
let buildTimepointsQuery = function (selection) {
|
|
66
67
|
let timepoints = "";
|
|
67
|
-
selection.forEach(x => timepoints += ("
|
|
68
|
+
selection.forEach(x => timepoints += ("fall2021.expression.time_point=" + x + " OR "));
|
|
68
69
|
return timepoints.substring(0, timepoints.length - 4);
|
|
69
70
|
};
|
|
70
71
|
|
|
71
72
|
let buildGenesQuery = function (geneString) {
|
|
72
73
|
let genes = "";
|
|
73
74
|
let geneList = geneString.split(",");
|
|
74
|
-
geneList.forEach(x => genes += (
|
|
75
|
+
geneList.forEach(x => genes += ( `(fall2021.gene.display_gene_id =\'${x}\') OR `));
|
|
75
76
|
return genes.substring(0, genes.length - 4);
|
|
76
77
|
};
|
|
77
78
|
|
|
78
79
|
let buildQuery = function (dataset, timepoints, genes) {
|
|
79
80
|
return timepoints ?
|
|
80
|
-
`SELECT *
|
|
81
|
-
(${buildTimepointsQuery(timepoints)})
|
|
82
|
-
(${buildGenesQuery(genes)}) ORDER BY
|
|
83
|
-
: `SELECT * FROM
|
|
84
|
-
AND (${buildGenesQuery(genes)}) ORDER BY
|
|
81
|
+
`SELECT * FROM fall2021.expression, fall2021.gene WHERE fall2021.expression.dataset='${dataset}' AND
|
|
82
|
+
(${buildTimepointsQuery(timepoints)}) AND
|
|
83
|
+
((${buildGenesQuery(genes)}) 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 ((${buildGenesQuery(genes)}) AND fall2021.gene.gene_id = fall2021.expression.gene_id) ORDER BY sort_index;`;
|
|
85
86
|
};
|
|
86
87
|
|
|
87
88
|
let listGeneData = function (gene, totalOutput) {
|
|
88
89
|
let listOfData = [];
|
|
89
90
|
totalOutput.forEach(function (x) {
|
|
90
|
-
if (x.
|
|
91
|
+
if (x.display_gene_id === gene) {
|
|
91
92
|
listOfData.push(Number(x.expression));
|
|
92
93
|
}
|
|
93
94
|
});
|
|
@@ -76,10 +76,22 @@ const buildMetaSheet = function (metaDataContainer) {
|
|
|
76
76
|
return meta;
|
|
77
77
|
};
|
|
78
78
|
|
|
79
|
+
const EXPRESSION_SHEET_SUFFIXES = ["_expression", "_optimized_expression", "_sigmas"];
|
|
80
|
+
|
|
81
|
+
const isExpressionSheet = (sheetName) => {
|
|
82
|
+
return EXPRESSION_SHEET_SUFFIXES.some(function (suffix) {
|
|
83
|
+
return sheetName.includes(suffix);
|
|
84
|
+
});
|
|
85
|
+
};
|
|
86
|
+
|
|
79
87
|
const buildExpressionSheets = function (expressions) {
|
|
80
88
|
const builtExpressionSheets = [];
|
|
81
89
|
Object.keys(expressions).forEach((expression) => {
|
|
82
|
-
|
|
90
|
+
let expressionName = expression;
|
|
91
|
+
if (!isExpressionSheet(expression)) {
|
|
92
|
+
expressionName = expression + "_expression";
|
|
93
|
+
}
|
|
94
|
+
const builtSheet = { name: expressionName, data: [] };
|
|
83
95
|
Object.keys(expressions[expression]["data"]).forEach((key) => {
|
|
84
96
|
const expressionData = expressions[expression]["data"][key];
|
|
85
97
|
builtSheet["data"].push([key, ...expressionData]);
|
|
@@ -91,6 +103,7 @@ const buildExpressionSheets = function (expressions) {
|
|
|
91
103
|
|
|
92
104
|
const buildXlsxSheet = function (workbook) {
|
|
93
105
|
const resultSheet = [];
|
|
106
|
+
const exportNetworkType = workbook.exportNetworkType;
|
|
94
107
|
|
|
95
108
|
Object.keys(workbook).forEach((key) => {
|
|
96
109
|
switch (key) {
|
|
@@ -105,14 +118,16 @@ const buildXlsxSheet = function (workbook) {
|
|
|
105
118
|
}
|
|
106
119
|
break;
|
|
107
120
|
case "networkOptimizedWeights":
|
|
108
|
-
if (
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
workbook.networkOptimizedWeights.
|
|
114
|
-
|
|
115
|
-
|
|
121
|
+
if (exportNetworkType === "weighted") {
|
|
122
|
+
if (Object.keys(workbook.networkOptimizedWeights).length > 0) {
|
|
123
|
+
resultSheet.push(
|
|
124
|
+
{
|
|
125
|
+
"name": "network_optimized_weights",
|
|
126
|
+
"data": buildNetworkSheet(workbook.networkOptimizedWeights.genes,
|
|
127
|
+
workbook.networkOptimizedWeights.links)
|
|
128
|
+
}
|
|
129
|
+
);
|
|
130
|
+
}
|
|
116
131
|
}
|
|
117
132
|
break;
|
|
118
133
|
case "networkWeights":
|
|
@@ -150,6 +165,9 @@ const buildXlsxSheet = function (workbook) {
|
|
|
150
165
|
resultSheet.push(...buildTestSheets(workbook[key]));
|
|
151
166
|
break;
|
|
152
167
|
case "expression":
|
|
168
|
+
// resultSheet.push(...buildExpressionSheets(workbook[key]));
|
|
169
|
+
break;
|
|
170
|
+
case "exportExpression":
|
|
153
171
|
resultSheet.push(...buildExpressionSheets(workbook[key]));
|
|
154
172
|
break;
|
|
155
173
|
default:
|
package/test/export-tests.js
CHANGED
|
@@ -581,7 +581,7 @@ const inputWorkbook = {
|
|
|
581
581
|
},
|
|
582
582
|
|
|
583
583
|
|
|
584
|
-
"
|
|
584
|
+
"exportExpression": {
|
|
585
585
|
"wt_log2_expression": {
|
|
586
586
|
"timePoints": [
|
|
587
587
|
0.4,
|
|
@@ -786,7 +786,7 @@ describe("Export to spreadsheet", function () {
|
|
|
786
786
|
test.importFileSameAsExportFile(
|
|
787
787
|
"test-files/additional-sheet-test-files/optimization-diagnostics-default.xlsx");
|
|
788
788
|
test.importFileSameAsExportFile(
|
|
789
|
-
"test-files/expression-data-test-sheets/
|
|
789
|
+
"test-files/expression-data-test-sheets/expression_sheet_missing_data_ok_export_exact.xlsx");
|
|
790
790
|
test.importFileSameAsExportFile(
|
|
791
791
|
"test-files/additional-sheet-test-files/optimization-parameters-default.xlsx");
|
|
792
792
|
}
|
package/test/test.js
CHANGED
|
@@ -716,16 +716,18 @@ var invalidMSEDataWarning = function (input, frequency) {
|
|
|
716
716
|
var importExportReImportNoErrorsOrWarnings = function (input) {
|
|
717
717
|
var sheet = xlsx.parse(input);
|
|
718
718
|
var inputWorkbook = spreadsheetController.crossSheetInteractions(sheet);
|
|
719
|
+
inputWorkbook["exportExpression"] = inputWorkbook.expression;
|
|
719
720
|
var exportedWorkbook = exportController.grnsightToXlsx(inputWorkbook);
|
|
720
721
|
var sheet2 = xlsx.parse(exportedWorkbook);
|
|
721
722
|
var reImportedWorkbook = spreadsheetController.crossSheetInteractions(sheet2);
|
|
722
|
-
// check if the re-imported workbook has no errors or warnings
|
|
723
723
|
assert.equal(0, reImportedWorkbook.errors.length + reImportedWorkbook.warnings.length);
|
|
724
724
|
};
|
|
725
725
|
|
|
726
726
|
var importFileSameAsExportFile = function (input) {
|
|
727
727
|
var sheet = xlsx.parse(input);
|
|
728
728
|
var inputWorkbook = spreadsheetController.crossSheetInteractions(sheet);
|
|
729
|
+
inputWorkbook["exportExpression"] = inputWorkbook.expression;
|
|
730
|
+
inputWorkbook["exportNetworkType"] = inputWorkbook.sheetType;
|
|
729
731
|
var exportedWorkbook = exportController.grnsightToXlsx(inputWorkbook);
|
|
730
732
|
var sheet2 = xlsx.parse(exportedWorkbook);
|
|
731
733
|
sheet.sort((a, b) => (a.name > b.name) ? 1 : -1);
|
package/test-files/expression-data-test-sheets/expression_sheet_missing_data_ok_export_exact.xlsx
ADDED
|
Binary file
|
package/web-client/app.js
CHANGED
|
@@ -16,7 +16,7 @@ var app = express();
|
|
|
16
16
|
|
|
17
17
|
app.set("port", process.env.PORT || config.port || 3001);
|
|
18
18
|
app.set("views", path.join(__dirname, "views"));
|
|
19
|
-
app.set("view engine", "
|
|
19
|
+
app.set("view engine", "pug");
|
|
20
20
|
|
|
21
21
|
app.use(morgan("dev"));
|
|
22
22
|
app.use(bodyParser.urlencoded({extended: true}));
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
export const HOST_SITE = "https://dondi.github.io";
|
|
2
2
|
|
|
3
|
+
export const FILE_NAME = "#fileName";
|
|
4
|
+
|
|
3
5
|
export const GREY_EDGES_DASHED_MENU = "#grey-edges-dashed-menu";
|
|
4
6
|
export const GREY_EDGES_DASHED_SIDEBAR = "#dashedGrayLineButton";
|
|
5
7
|
|
|
@@ -13,7 +15,7 @@ export const SCHADE_INPUT_ID = "#schadeInput";
|
|
|
13
15
|
export const SCHADE_INPUT_PATH = "demo/schadeInput";
|
|
14
16
|
export const SCHADE_INPUT_NAME = "Demo #3: Unweighted GRN (21 genes, 31 edges)";
|
|
15
17
|
export const SCHADE_OUTPUT_ID = "#schadeOutput";
|
|
16
|
-
export const SCHADE_OUTPUT_PATH
|
|
18
|
+
export const SCHADE_OUTPUT_PATH = "demo/schadeOutput";
|
|
17
19
|
export const SCHADE_OUTPUT_NAME = "Demo #4: Weighted GRN (21 genes, 31 edges, Schade et al. 2004 data)";
|
|
18
20
|
|
|
19
21
|
export const EXPORT_TO_EXCEL = "#exportAsExcelWkbk";
|
|
@@ -25,6 +27,7 @@ export const EXPORT_TO_PNG = "#exportAsPng";
|
|
|
25
27
|
export const EXPORT_TO_SVG = "#exportAsSvg";
|
|
26
28
|
export const EXPORT_TO_PDF = "#exportAsPdf";
|
|
27
29
|
export const EXPORT_WEIGHTED_CLASS = ".weighted.export";
|
|
30
|
+
export const EXPRESSION_SOURCE = "#expressionSource";
|
|
28
31
|
|
|
29
32
|
export const DEMO_INFORMATION = [
|
|
30
33
|
[ WEIGHTED_DEMO_ID, WEIGHTED_DEMO_PATH, WEIGHTED_DEMO_NAME ],
|
|
@@ -104,6 +104,7 @@ import {
|
|
|
104
104
|
VIEWPORT_SIZE_L_SIDEBAR,
|
|
105
105
|
VIEWPORT_SIZE_FIT_SIDEBAR,
|
|
106
106
|
VIEWPORT_INIT,
|
|
107
|
+
// EXPRESSION_SOURCE,
|
|
107
108
|
} from "./constants";
|
|
108
109
|
|
|
109
110
|
// In this transitory state, updateApp might get called before things are completely set up, so for now
|
|
@@ -349,7 +350,6 @@ const updateViewportSize = (currentValue) => {
|
|
|
349
350
|
requestWindowDimensions();
|
|
350
351
|
}
|
|
351
352
|
};
|
|
352
|
-
|
|
353
353
|
// Expression DB Access Functions
|
|
354
354
|
const buildTimepointsString = function (selection) {
|
|
355
355
|
let timepoints = "";
|
|
@@ -810,12 +810,8 @@ export const updateApp = grnState => {
|
|
|
810
810
|
responseData("", queryURLTop).then(function (response) {
|
|
811
811
|
grnState.workbook.expression[grnState.nodeColoring.topDataset] = response;
|
|
812
812
|
enableNodeColoringUI();
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
!expressionDBDatasets.includes(grnState.nodeColoring.bottomDataset)) {
|
|
816
|
-
stopLoadingIcon();
|
|
817
|
-
updaters.renderNodeColoring();
|
|
818
|
-
}
|
|
813
|
+
stopLoadingIcon();
|
|
814
|
+
updaters.renderNodeColoring();
|
|
819
815
|
}).catch(function (error) {
|
|
820
816
|
console.log(error.stack);
|
|
821
817
|
console.log(error.name);
|
|
@@ -865,10 +861,8 @@ export const updateApp = grnState => {
|
|
|
865
861
|
grnState.workbook.expression[grnState.nodeColoring.topDataset] = response;
|
|
866
862
|
enableNodeColoringUI();
|
|
867
863
|
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
updaters.renderNodeColoring();
|
|
871
|
-
}
|
|
864
|
+
stopLoadingIcon();
|
|
865
|
+
updaters.renderNodeColoring();
|
|
872
866
|
}).catch(function (error) {
|
|
873
867
|
console.log(error.stack);
|
|
874
868
|
console.log(error.name);
|
|
@@ -981,3 +975,6 @@ export const updateApp = grnState => {
|
|
|
981
975
|
refreshApp();
|
|
982
976
|
|
|
983
977
|
};
|
|
978
|
+
|
|
979
|
+
|
|
980
|
+
export {buildURL, responseData, stopLoadingIcon};
|