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.
Files changed (189) hide show
  1. package/.travis.yml +1 -1
  2. package/package.json +5 -5
  3. package/server/app.js +4 -2
  4. package/server/controllers/database-controller.js +9 -8
  5. package/server/controllers/exporters/xlsx.js +27 -9
  6. package/test/export-tests.js +2 -2
  7. package/test/test.js +3 -1
  8. package/test-files/expression-data-test-sheets/expression_sheet_missing_data_ok_export_exact.xlsx +0 -0
  9. package/web-client/app.js +1 -1
  10. package/web-client/controllers/main.js +1 -1
  11. package/web-client/public/js/constants.js +4 -1
  12. package/web-client/public/js/update-app.js +8 -11
  13. package/web-client/public/js/upload.js +337 -11
  14. package/web-client/views/{graph.jade → graph.pug} +0 -0
  15. package/web-client/views/{info.jade → info.pug} +1 -5
  16. package/web-client/views/{upload.jade → upload.pug} +47 -4
  17. package/documents/SDF/CMSI_402/spring_2014/Southwick_CMSI402_Spring2014_software-development-plan.md +0 -71
  18. package/documents/SDF/CMSI_402/spring_2014/Southwick_CMSI402_Spring2014_software-requirements-specification.md +0 -71
  19. package/documents/SDF/CMSI_402/spring_2014/use-case-diagram-spring-2014.jpg +0 -0
  20. package/documents/SDF/CMSI_402/spring_2017/Anguiano_402_Final_Presentation.pptx +0 -0
  21. package/documents/SDF/CMSI_402/spring_2017/Anguiano_402_Presentation_Final_Poster.pdf +0 -0
  22. package/documents/SDF/CMSI_402/spring_2017/Anguiano_CMSI402_Spring2017_project-proposal-presentation.pptx +0 -0
  23. package/documents/SDF/CMSI_402/spring_2017/Anguiano_CMSI402_Spring2017_project-proposal.docx +0 -0
  24. package/documents/SDF/CMSI_402/spring_2017/Anguiano_CMSI402_Spring2017_software-development-plan.docx +0 -0
  25. package/documents/SDF/CMSI_402/spring_2017/Anguiano_CMSI402_Spring2017_software-requirements-specification.docx +0 -0
  26. package/documents/SDF/CMSI_402/spring_2017/Design Review Presentation.pptx +0 -0
  27. package/documents/SDF/CMSI_402/spring_2018/0402report.docx +0 -0
  28. package/documents/SDF/CMSI_402/spring_2018/0409report.docx +0 -0
  29. package/documents/SDF/CMSI_402/spring_2018/402-gantt.png +0 -0
  30. package/documents/SDF/CMSI_402/spring_2018/402SRS_GRNSightFeedback01.txt +0 -28
  31. package/documents/SDF/CMSI_402/spring_2018/402_SPD.md +0 -223
  32. package/documents/SDF/CMSI_402/spring_2018/ChoeShinCMSI402_Final.pptx +0 -0
  33. package/documents/SDF/CMSI_402/spring_2018/ProjectProposal.md +0 -22
  34. package/documents/SDF/CMSI_402/spring_2018/SoftwareRequirementsSpecification.md +0 -88
  35. package/documents/SDF/CMSI_402/spring_2018/homework/choe_eileen/Choe_Eileen_CMSI 402_HW1.pdf +0 -0
  36. package/documents/SDF/CMSI_402/spring_2018/homework/choe_eileen/Choe_Eileen_CMSI402_HW2.pdf +0 -0
  37. package/documents/SDF/CMSI_402/spring_2018/homework/shin_jen/402hw2.docx +0 -0
  38. package/documents/SDF/CMSI_402/spring_2018/homework/shin_jen/Jen - 402Hw1.docx +0 -0
  39. package/documents/SDF/CMSI_402/spring_2018/homework/shin_jen/Jen - hw3.docx +0 -0
  40. package/documents/SDF/CMSI_402/spring_2018/writtenStatusReport.docx +0 -0
  41. package/documents/SDF/CMSI_402/spring_2018/writtenStatusReport4 +0 -0
  42. package/documents/SDF/CMSI_402/spring_2020/Alexia Filler/Expression Database Schema.pdf +0 -0
  43. package/documents/SDF/CMSI_402/spring_2020/Alexia Filler/ExpressionDbLayoutImage.jpg +0 -0
  44. package/documents/SDF/CMSI_402/spring_2020/Alexia Filler/ExpressionDbLayoutImageSmall.jpg +0 -0
  45. package/documents/SDF/CMSI_402/spring_2020/Alexia Filler/Filler_Patterson_CMSI402_Poster.pptx +0 -0
  46. package/documents/SDF/CMSI_402/spring_2020/Alexia Filler/GRNsight Final Presentation.pdf +0 -0
  47. package/documents/SDF/CMSI_402/spring_2020/Alexia Filler/Project Proposal Doc.pdf +0 -0
  48. package/documents/SDF/CMSI_402/spring_2020/Alexia Filler/Project Proposal Presentation.pdf +0 -0
  49. package/documents/SDF/CMSI_402/spring_2020/Alexia Filler/Software Development Plan/GANTT Chart.xlsx +0 -0
  50. package/documents/SDF/CMSI_402/spring_2020/Alexia Filler/Software Development Plan/Software Development Plan.pdf +0 -0
  51. package/documents/SDF/CMSI_402/spring_2020/Alexia Filler/Software Development Plan (Updated)/GANTT Chart (Updated).xlsx +0 -0
  52. package/documents/SDF/CMSI_402/spring_2020/Alexia Filler/Software Development Plan (Updated)/Software Development Plan (Updated).pdf +0 -0
  53. package/documents/SDF/CMSI_402/spring_2020/Alexia Filler/Software Requirements Specification (Updated).pdf +0 -0
  54. package/documents/SDF/CMSI_402/spring_2020/Alexia Filler/Software Requirements Specification.pdf +0 -0
  55. package/documents/SDF/CMSI_402/spring_2020/Kevin Patterson/402 GANTT Chart - Sheet1.pdf +0 -0
  56. package/documents/SDF/CMSI_402/spring_2020/Kevin Patterson/402 GRNsight SDP.pdf +0 -0
  57. package/documents/SDF/CMSI_402/spring_2020/Kevin Patterson/402 SRS.pdf +0 -0
  58. package/documents/SDF/CMSI_402/spring_2020/Kevin Patterson/FINAL GRNSIGHT PRESENTATION.pdf +0 -0
  59. package/documents/SDF/CMSI_402/spring_2020/Kevin Patterson/GRNsight Presentation.pdf +0 -0
  60. package/documents/SDF/CMSI_402/spring_2020/Kevin Patterson/Project Proposal 402.pdf +0 -0
  61. package/documents/SDF/CMSI_402/spring_2020/Kevin Patterson/SDP Updated/402 GANTT Chart UPDATED - Sheet1.pdf +0 -0
  62. package/documents/SDF/CMSI_402/spring_2020/Kevin Patterson/SDP Updated/402 GRNsight SDP UPDATED.pdf +0 -0
  63. package/documents/SDF/CMSI_402/spring_2020/Kevin Patterson/SRS Update/402 SRS Final.pdf +0 -0
  64. package/documents/abstracts/Anguiano_Varshneya_Undergraduate-Research-Symposium_2017_abstract.pdf +0 -0
  65. package/documents/abstracts/Dahlquist_Dionisio_et-al_BOSC_2020_abstract.pdf +0 -0
  66. package/documents/abstracts/SIGGRAPH 2017 Abstract/ACM-Reference-Format.bst +0 -3478
  67. package/documents/abstracts/SIGGRAPH 2017 Abstract/Figure1_zoom100.png +0 -0
  68. package/documents/abstracts/SIGGRAPH 2017 Abstract/acmart.cls +0 -2352
  69. package/documents/abstracts/SIGGRAPH 2017 Abstract/acmart.ins +0 -29
  70. package/documents/abstracts/SIGGRAPH 2017 Abstract/always-weights.png +0 -0
  71. package/documents/abstracts/SIGGRAPH 2017 Abstract/auto.png +0 -0
  72. package/documents/abstracts/SIGGRAPH 2017 Abstract/networkA.png +0 -0
  73. package/documents/abstracts/SIGGRAPH 2017 Abstract/networkB-normalized.png +0 -0
  74. package/documents/abstracts/SIGGRAPH 2017 Abstract/networkB.png +0 -0
  75. package/documents/abstracts/SIGGRAPH 2017 Abstract/never-weights.png +0 -0
  76. package/documents/abstracts/SIGGRAPH 2017 Abstract/representative-image/screenshot.jpg +0 -0
  77. package/documents/abstracts/SIGGRAPH 2017 Abstract/representative-image/screenshot3x2.png +0 -0
  78. package/documents/abstracts/SIGGRAPH 2017 Abstract/representative-image/withweights3x2.png +0 -0
  79. package/documents/abstracts/SIGGRAPH 2017 Abstract/screenshot-auto.png +0 -0
  80. package/documents/abstracts/SIGGRAPH 2017 Abstract/siggraph-abstract-review.bib +0 -85
  81. package/documents/abstracts/SIGGRAPH 2017 Abstract/siggraph-abstract-review.pdf +0 -0
  82. package/documents/abstracts/SIGGRAPH 2017 Abstract/siggraph-abstract-review.tex +0 -235
  83. package/documents/abstracts/SWE Collegiate Competition 2017.md +0 -9
  84. package/documents/abstracts/Samdarshi_GRNsight_SoCalSysBio_Abstract_2019.docx +0 -0
  85. package/documents/abstracts/Varshneya_Samdarshi_Southern-California-Systems-Biology_2017_abstract.docx +0 -0
  86. package/documents/abstracts/~$mdarshi_SoCalSysBio_Abstract_2019.docx +0 -0
  87. package/documents/developer_documents/State Diagram.graphml +0 -3525
  88. package/documents/developer_documents/graphml/State Diagram.graphml +0 -3115
  89. package/documents/developer_documents/older_versions/GRNsight State Diagram old.png +0 -0
  90. package/documents/developer_documents/older_versions/GRNsight State Diagram.png +0 -0
  91. package/documents/developer_documents/testing_script_generator/GRNsightTestingDocument.md +0 -1016
  92. package/documents/developer_documents/testing_script_generator/edgeFeatures.json +0 -178
  93. package/documents/developer_documents/testing_script_generator/fileFeatures.json +0 -100
  94. package/documents/developer_documents/testing_script_generator/layoutFeatures.json +0 -166
  95. package/documents/developer_documents/testing_script_generator/nodeFeatures.json +0 -195
  96. package/documents/developer_documents/testing_script_generator/speciesFeatures.json +0 -30
  97. package/documents/developer_documents/testing_script_generator/testing-script-generator.js +0 -172
  98. package/documents/developer_documents/testing_script_generator/viewFeatures.json +0 -82
  99. package/documents/developer_documents/testing_script_generator/viewportFeatures.json +0 -50
  100. package/documents/manuscripts/peerj-computerscience-2016/GRNsight_PeerJ-CS_conference-presentations_2016.docx +0 -0
  101. package/documents/manuscripts/peerj-computerscience-2016/GRNsight_PeerJ-CS_manuscript_2016.docx +0 -0
  102. package/documents/manuscripts/peerj-computerscience-2016/GRNsight_PeerJ-CS_manuscript_2016_Table1.docx +0 -0
  103. package/documents/manuscripts/peerj-computerscience-2016/GRNsight_PeerJ-CS_manuscript_2016_references.rtf +0 -264
  104. package/documents/manuscripts/peerj-computerscience-2016/GRNsight_PeerJ-CS_manuscript_2016_text-only.docx +0 -0
  105. package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/21-genes_31-edges_Schade-data_for-screenshots.xlsx +0 -0
  106. package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/Figure1_zoom100.jpg +0 -0
  107. package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/Figure1_zoom100.png +0 -0
  108. package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/Figure1_zoom100.psd +0 -0
  109. package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/Figure1_zoom145.jpg +0 -0
  110. package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/Figure1_zoom145.png +0 -0
  111. package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/Figure1_zoom145.psd +0 -0
  112. package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/Figure1_zoom145_900pix-wide.psd +0 -0
  113. package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/Figure2_zoom100.jpg +0 -0
  114. package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/Figure2_zoom100.png +0 -0
  115. package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/Figure2_zoom100.psd +0 -0
  116. package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/Figure2_zoom145.jpg +0 -0
  117. package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/Figure2_zoom145.png +0 -0
  118. package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/Figure2_zoom145.psd +0 -0
  119. package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/Figure2_zoom145_900pix-wide.psd +0 -0
  120. package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/Figure5A.pdf +0 -0
  121. package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/Figure5B.pdf +0 -0
  122. package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/Figure5C.eps +0 -0
  123. package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/Figure5D.pdf +0 -0
  124. package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/Figure5E.pdf +0 -0
  125. package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/Figure5F.eps +0 -0
  126. package/documents/manuscripts/peerj-computerscience-2016/figures/other-versions/Figure5_compiled.png +0 -0
  127. package/documents/manuscripts/peerj-computerscience-2016/figures/submitted-versions/Figure1_zoom145_900pix-wide.png +0 -0
  128. package/documents/manuscripts/peerj-computerscience-2016/figures/submitted-versions/Figure2_zoom145_900pix-wide.png +0 -0
  129. package/documents/manuscripts/peerj-computerscience-2016/figures/submitted-versions/Figure3_GRNsight-Architecture.pdf +0 -0
  130. package/documents/manuscripts/peerj-computerscience-2016/figures/submitted-versions/Figure4_GRNsight-Screenshot.pdf +0 -0
  131. package/documents/manuscripts/peerj-computerscience-2016/figures/submitted-versions/Figure5_compiled.pdf +12 -5383
  132. package/documents/manuscripts/peerj-computerscience-2016/peerj-reviewing-10823-v0.pdf +0 -0
  133. package/documents/manuscripts/peerj-computerscience-2016/revisions/GRNsight_PeerJ-CS_conference-presentations_2016_revised.docx +0 -0
  134. package/documents/manuscripts/peerj-computerscience-2016/revisions/GRNsight_PeerJ-CS_cover-letter-and-response_2016.pdf +0 -0
  135. package/documents/manuscripts/peerj-computerscience-2016/revisions/GRNsight_PeerJ-CS_cover-letter_2016.docx +0 -0
  136. package/documents/manuscripts/peerj-computerscience-2016/revisions/GRNsight_PeerJ-CS_cover-letter_2016.pdf +0 -0
  137. package/documents/manuscripts/peerj-computerscience-2016/revisions/GRNsight_PeerJ-CS_manuscript_2016_Table1.docx +0 -0
  138. package/documents/manuscripts/peerj-computerscience-2016/revisions/GRNsight_PeerJ-CS_manuscript_2016_references_revised.rtf +0 -385
  139. package/documents/manuscripts/peerj-computerscience-2016/revisions/GRNsight_PeerJ-CS_manuscript_2016_text-only_revised.docx +0 -0
  140. package/documents/manuscripts/peerj-computerscience-2016/revisions/GRNsight_PeerJ-CS_manuscript_2016_text-only_revised_marked.docx +0 -0
  141. package/documents/manuscripts/peerj-computerscience-2016/revisions/GRNsight_PeerJ-CS_response-to-reviewers_2016.docx +0 -0
  142. package/documents/manuscripts/peerj-computerscience-2016/revisions/GRNsight_PeerJ-CS_response-to-reviewers_2016.pdf +0 -0
  143. package/documents/manuscripts/peerj-computerscience-2016/revisions/figures/Figure3_GRNsight-Architecture.pdf +0 -0
  144. package/documents/manuscripts/peerj-computerscience-2016/revisions/figures/Figure4_GRNsight-Screenshot-auto.pdf +0 -0
  145. package/documents/manuscripts/peerj-computerscience-2016/revisions/figures/Figure4_GRNsight-Screenshot.pdf +0 -0
  146. package/documents/manuscripts/peerj-computerscience-2016/revisions/peerj-reviewing-10823-v1.pdf +0 -0
  147. package/documents/posters/Anguiano_CMSI402_2017.pptx +0 -0
  148. package/documents/posters/Anguiano_Varshneya_LMU-Symposium_2015.pptx +0 -0
  149. package/documents/posters/Anguiano_Varshneya_SCCUR_2014.pptx +0 -0
  150. package/documents/posters/Choe_Shin_CMSI402_2018.pptx +0 -0
  151. package/documents/posters/Dahlquist-et-al_BOSC_ISMB_2016_poster.pptx +0 -0
  152. package/documents/posters/Filler_Patterson_CMSI402_Poster.pptx +0 -0
  153. package/documents/posters/Igbinedion_Green_Mersaghian_LMU_SYMPOSIUM_2021.pptx +0 -0
  154. package/documents/posters/Lopez_Filler_LMU_Symposium_2019.pdf +0 -0
  155. package/documents/posters/Lopez_Filler_LMU_Symposium_2019.pptx +0 -0
  156. package/documents/posters/Samdarshi-et-al_LMU-Symposium_2017.pptx +0 -0
  157. package/documents/posters/Samdarshi-et-al_LMU-Symposium_2018.pptx +0 -0
  158. package/documents/posters/Samdarshi-et-al_SoCalSysBio_2019.pptx +0 -0
  159. package/documents/posters/Shin-et-al_SCCUR_2017.pptx +0 -0
  160. package/documents/posters/Southwick_CMSI402_2014.pptx +0 -0
  161. package/documents/posters/Varshneya_Samdarshi_LMU-Symposium_2016.pptx +0 -0
  162. package/documents/posters/Varshneya_Samdarshi_SoCalSysBio_2017.pptx +0 -0
  163. package/documents/presentations/Anguiano_402_Final_Presentation.pptx +0 -0
  164. package/documents/presentations/Choe_SWERapidFire2017_final.pptx +0 -0
  165. package/documents/presentations/Dahlquist_BCC2020_20200720_talk.pptx +0 -0
  166. package/documents/presentations/Dahlquist_BOSC_20160709.pptx +0 -0
  167. package/documents/presentations/Dahlquist_ExperimentalBiology_20160404_talk.pptx +0 -0
  168. package/documents/presentations/Dahlquist_GRNsight_BCC2020_20200720_lightning-talk_video.mp4 +0 -0
  169. package/documents/presentations/Dahlquist_SoCalSysBio_20150131_talk.pptx +0 -0
  170. package/documents/presentations/Filler_Patterson_CMSI402_Presentation_20200501.pdf +0 -0
  171. package/documents/presentations/Filler_Patterson_LMU-Symposium_20200418_talk.pdf +0 -0
  172. package/documents/presentations/Samdarshi_LMU-Symposium_20190323_talk.pdf +0 -0
  173. package/documents/presentations/Samdarshi_LMU-Symposium_20190323_talk.pptx +0 -0
  174. package/documents/presentations/Southwick_Anguiano_LMU-Symposium_20140329_talk.pptx +0 -0
  175. package/documents/presentations/Southwick_CMSI402_Presentation_20140508_talk.pptx +0 -0
  176. package/documents/presentations/Varshneya_Anguiano_LMU-Symposium_201703_talk.pptx +0 -0
  177. package/documents/reports/Samdarshi_Mihir_2019/Samdarshi_2019_Final.docx +0 -0
  178. package/documents/reports/Samdarshi_Mihir_2019/Samdarshi_Mihir_2019_AnnotatedBibliography.docx +0 -0
  179. package/documents/reports/Samdarshi_Mihir_2019/Samdarshi_Mihir_2019_Outline.docx +0 -0
  180. package/documents/reports/Samdarshi_Mihir_2019/~$mdarshi_2019_Draft.docx +0 -0
  181. package/documents/reports/Samdarshi_Mihir_2019/~$mdarshi_2019_Final_Paper_Draft.docx +0 -0
  182. package/documents/reports/Varshneya_Anu_2017/Varshneya-201701-AnnotatedBibliography.docx +0 -0
  183. package/documents/reports/Varshneya_Anu_2017/Varshneya-201702-Introduction.docx +0 -0
  184. package/documents/reports/Varshneya_Anu_2017/Varshneya-201702-Outline.docx +0 -0
  185. package/documents/reports/Varshneya_Anu_2017/Varshneya-201703-Discussion.docx +0 -0
  186. package/documents/reports/Varshneya_Anu_2017/Varshneya-201703-MMResults.docx +0 -0
  187. package/documents/reports/Varshneya_Anu_2017/Varshneya-201704-Draft-1.docx +0 -0
  188. package/documents/reports/Varshneya_Anu_2017/Varshneya-201704-Final.docx +0 -0
  189. package/onlysidebar.html +0 -8
package/.travis.yml CHANGED
@@ -1,6 +1,6 @@
1
1
  language: node_js
2
2
  node_js:
3
- - "8"
3
+ - "10"
4
4
  script:
5
5
  - npm test
6
6
  - npm run lint
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "grnsight",
3
- "version": "5.0.0",
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.2.5",
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.4.1",
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 += ("timepoints=\'" + x + "\' OR "));
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 += ("standardname=\'" + x + "\' OR "));
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 * FROM expressiondata WHERE dataset='${dataset}' AND
81
- (${buildTimepointsQuery(timepoints)}) ORDER BY sortindex AND
82
- (${buildGenesQuery(genes)}) ORDER BY sortindex;`
83
- : `SELECT * FROM expressiondata WHERE dataset='${dataset}'
84
- AND (${buildGenesQuery(genes)}) ORDER BY sortindex;`;
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.standardname === gene) {
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
- const builtSheet = { name: expression, data: []};
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 (Object.keys(workbook.networkOptimizedWeights).length > 0) {
109
- resultSheet.push(
110
- {
111
- "name": "network_optimized_weights",
112
- "data": buildNetworkSheet(workbook.networkOptimizedWeights.genes,
113
- workbook.networkOptimizedWeights.links)
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:
@@ -581,7 +581,7 @@ const inputWorkbook = {
581
581
  },
582
582
 
583
583
 
584
- "expression": {
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/expression_sheet_missing_data_ok.xlsx");
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/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", "jade");
19
+ app.set("view engine", "pug");
20
20
 
21
21
  app.use(morgan("dev"));
22
22
  app.use(bodyParser.urlencoded({extended: true}));
@@ -9,6 +9,6 @@ module.exports = function (app) {
9
9
  });
10
10
 
11
11
  app.get("/info", function (req, res) {
12
- res.render("info", {title: "Test", serviceRoot: app.get("serviceRoot")});
12
+ res.render("info", {title: "Info", serviceRoot: app.get("serviceRoot")});
13
13
  });
14
14
  };
@@ -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 = "demo/schadeOutput";
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
- if (grnState.nodeColoring.bottomDataSameAsTop ||
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
- if (grnState.nodeColoring.bottomDataSameAsTop) {
869
- stopLoadingIcon();
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};