arctrl 3.0.0__py3-none-any.whl

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 (511) hide show
  1. arctrl/__init__.py +23 -0
  2. arctrl/cwl.py +12 -0
  3. arctrl/py/CWL/__init__.py +0 -0
  4. arctrl/py/CWL/cwlprocessing_unit.py +221 -0
  5. arctrl/py/CWL/cwltypes.py +364 -0
  6. arctrl/py/CWL/decode.py +3532 -0
  7. arctrl/py/CWL/encode.py +1905 -0
  8. arctrl/py/CWL/expression_tool_description.py +192 -0
  9. arctrl/py/CWL/hash_helpers.py +60 -0
  10. arctrl/py/CWL/inputs.py +122 -0
  11. arctrl/py/CWL/operation_description.py +169 -0
  12. arctrl/py/CWL/outputs.py +171 -0
  13. arctrl/py/CWL/parameter_reference.py +74 -0
  14. arctrl/py/CWL/requirements.py +350 -0
  15. arctrl/py/CWL/tool_description.py +192 -0
  16. arctrl/py/CWL/workflow_description.py +181 -0
  17. arctrl/py/CWL/workflow_steps.py +354 -0
  18. arctrl/py/Contract/__init__.py +0 -0
  19. arctrl/py/Contract/arc.py +89 -0
  20. arctrl/py/Contract/arc_assay.py +125 -0
  21. arctrl/py/Contract/arc_investigation.py +88 -0
  22. arctrl/py/Contract/arc_run.py +291 -0
  23. arctrl/py/Contract/arc_study.py +126 -0
  24. arctrl/py/Contract/arc_workflow.py +213 -0
  25. arctrl/py/Contract/contract.py +153 -0
  26. arctrl/py/Contract/datamap.py +396 -0
  27. arctrl/py/Contract/git.py +116 -0
  28. arctrl/py/Contract/license.py +58 -0
  29. arctrl/py/Contract/validation_packages_config.py +107 -0
  30. arctrl/py/ContractIO/__init__.py +0 -0
  31. arctrl/py/ContractIO/contract_io.py +350 -0
  32. arctrl/py/ContractIO/file_system_helper.py +264 -0
  33. arctrl/py/Conversion/__init__.py +0 -0
  34. arctrl/py/Conversion/assay.py +151 -0
  35. arctrl/py/Conversion/basic.py +559 -0
  36. arctrl/py/Conversion/column_index.py +91 -0
  37. arctrl/py/Conversion/datamap.py +36 -0
  38. arctrl/py/Conversion/date_time.py +32 -0
  39. arctrl/py/Conversion/investigation.py +171 -0
  40. arctrl/py/Conversion/person.py +148 -0
  41. arctrl/py/Conversion/process.py +828 -0
  42. arctrl/py/Conversion/run.py +367 -0
  43. arctrl/py/Conversion/scholarly_article.py +163 -0
  44. arctrl/py/Conversion/study.py +99 -0
  45. arctrl/py/Conversion/table.py +229 -0
  46. arctrl/py/Conversion/workflow.py +680 -0
  47. arctrl/py/Core/Helper/__init__.py +0 -0
  48. arctrl/py/Core/Helper/collections_.py +512 -0
  49. arctrl/py/Core/Helper/date_time.py +26 -0
  50. arctrl/py/Core/Helper/hash_codes.py +60 -0
  51. arctrl/py/Core/Helper/identifier.py +290 -0
  52. arctrl/py/Core/Helper/orcid.py +42 -0
  53. arctrl/py/Core/Helper/printer.py +13 -0
  54. arctrl/py/Core/Helper/regex.py +554 -0
  55. arctrl/py/Core/Helper/sem_ver.py +71 -0
  56. arctrl/py/Core/Helper/url.py +148 -0
  57. arctrl/py/Core/Process/__init__.py +0 -0
  58. arctrl/py/Core/Process/column_index.py +280 -0
  59. arctrl/py/Core/Process/component.py +200 -0
  60. arctrl/py/Core/Process/factor.py +151 -0
  61. arctrl/py/Core/Process/factor_value.py +182 -0
  62. arctrl/py/Core/Process/material.py +74 -0
  63. arctrl/py/Core/Process/material_attribute.py +95 -0
  64. arctrl/py/Core/Process/material_attribute_value.py +184 -0
  65. arctrl/py/Core/Process/material_type.py +45 -0
  66. arctrl/py/Core/Process/process.py +477 -0
  67. arctrl/py/Core/Process/process_input.py +265 -0
  68. arctrl/py/Core/Process/process_output.py +235 -0
  69. arctrl/py/Core/Process/process_parameter_value.py +200 -0
  70. arctrl/py/Core/Process/process_sequence.py +435 -0
  71. arctrl/py/Core/Process/protocol.py +175 -0
  72. arctrl/py/Core/Process/protocol_parameter.py +98 -0
  73. arctrl/py/Core/Process/sample.py +82 -0
  74. arctrl/py/Core/Process/source.py +62 -0
  75. arctrl/py/Core/Table/__init__.py +0 -0
  76. arctrl/py/Core/Table/arc_table.py +1206 -0
  77. arctrl/py/Core/Table/arc_table_aux.py +1308 -0
  78. arctrl/py/Core/Table/arc_tables.py +574 -0
  79. arctrl/py/Core/Table/composite_cell.py +319 -0
  80. arctrl/py/Core/Table/composite_column.py +73 -0
  81. arctrl/py/Core/Table/composite_header.py +739 -0
  82. arctrl/py/Core/__init__.py +0 -0
  83. arctrl/py/Core/arc_types.py +5312 -0
  84. arctrl/py/Core/comment.py +128 -0
  85. arctrl/py/Core/comment_list.py +127 -0
  86. arctrl/py/Core/conversion.py +1375 -0
  87. arctrl/py/Core/data.py +247 -0
  88. arctrl/py/Core/data_context.py +157 -0
  89. arctrl/py/Core/data_file.py +112 -0
  90. arctrl/py/Core/datamap.py +217 -0
  91. arctrl/py/Core/identifier_setters.py +43 -0
  92. arctrl/py/Core/iproperty_value.py +36 -0
  93. arctrl/py/Core/ontology_annotation.py +298 -0
  94. arctrl/py/Core/ontology_source_reference.py +114 -0
  95. arctrl/py/Core/person.py +259 -0
  96. arctrl/py/Core/publication.py +161 -0
  97. arctrl/py/Core/template.py +231 -0
  98. arctrl/py/Core/templates.py +148 -0
  99. arctrl/py/Core/uri.py +11 -0
  100. arctrl/py/Core/value.py +188 -0
  101. arctrl/py/FileSystem/__init__.py +0 -0
  102. arctrl/py/FileSystem/commit.py +21 -0
  103. arctrl/py/FileSystem/default_gitattributes.py +1 -0
  104. arctrl/py/FileSystem/default_gitignore.py +1 -0
  105. arctrl/py/FileSystem/default_license.py +1 -0
  106. arctrl/py/FileSystem/file_system.py +58 -0
  107. arctrl/py/FileSystem/file_system_tree.py +483 -0
  108. arctrl/py/FileSystem/path.py +266 -0
  109. arctrl/py/Json/Datamap/__init__.py +0 -0
  110. arctrl/py/Json/Datamap/data_context.py +101 -0
  111. arctrl/py/Json/Datamap/datamap.py +53 -0
  112. arctrl/py/Json/Process/__init__.py +0 -0
  113. arctrl/py/Json/Process/assay_materials.py +46 -0
  114. arctrl/py/Json/Process/component.py +125 -0
  115. arctrl/py/Json/Process/factor.py +107 -0
  116. arctrl/py/Json/Process/factor_value.py +101 -0
  117. arctrl/py/Json/Process/material.py +226 -0
  118. arctrl/py/Json/Process/material_attribute.py +79 -0
  119. arctrl/py/Json/Process/material_attribute_value.py +101 -0
  120. arctrl/py/Json/Process/material_type.py +53 -0
  121. arctrl/py/Json/Process/process.py +296 -0
  122. arctrl/py/Json/Process/process_input.py +83 -0
  123. arctrl/py/Json/Process/process_output.py +67 -0
  124. arctrl/py/Json/Process/process_parameter_value.py +81 -0
  125. arctrl/py/Json/Process/protocol.py +354 -0
  126. arctrl/py/Json/Process/protocol_parameter.py +91 -0
  127. arctrl/py/Json/Process/sample.py +277 -0
  128. arctrl/py/Json/Process/source.py +214 -0
  129. arctrl/py/Json/Process/study_materials.py +52 -0
  130. arctrl/py/Json/Process/value.py +56 -0
  131. arctrl/py/Json/ROCrate/__init__.py +0 -0
  132. arctrl/py/Json/ROCrate/ldcontext.py +143 -0
  133. arctrl/py/Json/ROCrate/ldgraph.py +117 -0
  134. arctrl/py/Json/ROCrate/ldnode.py +304 -0
  135. arctrl/py/Json/ROCrate/ldref.py +44 -0
  136. arctrl/py/Json/ROCrate/ldvalue.py +102 -0
  137. arctrl/py/Json/Table/__init__.py +0 -0
  138. arctrl/py/Json/Table/arc_table.py +375 -0
  139. arctrl/py/Json/Table/cell_table.py +83 -0
  140. arctrl/py/Json/Table/composite_cell.py +136 -0
  141. arctrl/py/Json/Table/composite_header.py +67 -0
  142. arctrl/py/Json/Table/iotype.py +24 -0
  143. arctrl/py/Json/Table/oatable.py +82 -0
  144. arctrl/py/Json/Table/templates.py +281 -0
  145. arctrl/py/Json/__init__.py +0 -0
  146. arctrl/py/Json/assay.py +600 -0
  147. arctrl/py/Json/comment.py +206 -0
  148. arctrl/py/Json/context/rocrate/__init__.py +0 -0
  149. arctrl/py/Json/context/rocrate/isa_assay_context.py +101 -0
  150. arctrl/py/Json/context/rocrate/isa_comment_context.py +60 -0
  151. arctrl/py/Json/context/rocrate/isa_component_context.py +77 -0
  152. arctrl/py/Json/context/rocrate/isa_data_context.py +74 -0
  153. arctrl/py/Json/context/rocrate/isa_factor_context.py +74 -0
  154. arctrl/py/Json/context/rocrate/isa_factor_value_context.py +84 -0
  155. arctrl/py/Json/context/rocrate/isa_investigation_context.py +110 -0
  156. arctrl/py/Json/context/rocrate/isa_material_attribute_context.py +64 -0
  157. arctrl/py/Json/context/rocrate/isa_material_attribute_value_context.py +80 -0
  158. arctrl/py/Json/context/rocrate/isa_material_context.py +71 -0
  159. arctrl/py/Json/context/rocrate/isa_ontology_annotation_context.py +68 -0
  160. arctrl/py/Json/context/rocrate/isa_ontology_source_reference_context.py +75 -0
  161. arctrl/py/Json/context/rocrate/isa_organization_context.py +55 -0
  162. arctrl/py/Json/context/rocrate/isa_person_context.py +131 -0
  163. arctrl/py/Json/context/rocrate/isa_process_context.py +94 -0
  164. arctrl/py/Json/context/rocrate/isa_process_parameter_value_context.py +80 -0
  165. arctrl/py/Json/context/rocrate/isa_protocol_context.py +97 -0
  166. arctrl/py/Json/context/rocrate/isa_protocol_parameter_context.py +64 -0
  167. arctrl/py/Json/context/rocrate/isa_publication_context.py +78 -0
  168. arctrl/py/Json/context/rocrate/isa_sample_context.py +65 -0
  169. arctrl/py/Json/context/rocrate/isa_source_context.py +66 -0
  170. arctrl/py/Json/context/rocrate/isa_study_context.py +125 -0
  171. arctrl/py/Json/context/rocrate/property_value_context.py +73 -0
  172. arctrl/py/Json/context/rocrate/rocrate_context.py +81 -0
  173. arctrl/py/Json/converter_options.py +23 -0
  174. arctrl/py/Json/data.py +356 -0
  175. arctrl/py/Json/data_file.py +63 -0
  176. arctrl/py/Json/decode.py +271 -0
  177. arctrl/py/Json/encode.py +140 -0
  178. arctrl/py/Json/idtable.py +44 -0
  179. arctrl/py/Json/investigation.py +695 -0
  180. arctrl/py/Json/ontology_annotation.py +404 -0
  181. arctrl/py/Json/ontology_source_reference.py +255 -0
  182. arctrl/py/Json/person.py +658 -0
  183. arctrl/py/Json/property_value.py +359 -0
  184. arctrl/py/Json/publication.py +279 -0
  185. arctrl/py/Json/run.py +275 -0
  186. arctrl/py/Json/string_table.py +87 -0
  187. arctrl/py/Json/study.py +793 -0
  188. arctrl/py/Json/workflow.py +307 -0
  189. arctrl/py/JsonIO/Process/__init__.py +0 -0
  190. arctrl/py/JsonIO/Process/component.py +60 -0
  191. arctrl/py/JsonIO/Process/factor.py +36 -0
  192. arctrl/py/JsonIO/Process/factor_value.py +38 -0
  193. arctrl/py/JsonIO/Process/material.py +60 -0
  194. arctrl/py/JsonIO/Process/material_attribute.py +38 -0
  195. arctrl/py/JsonIO/Process/material_attribute_value.py +60 -0
  196. arctrl/py/JsonIO/Process/material_type.py +36 -0
  197. arctrl/py/JsonIO/Process/process.py +60 -0
  198. arctrl/py/JsonIO/Process/process_input.py +38 -0
  199. arctrl/py/JsonIO/Process/process_output.py +60 -0
  200. arctrl/py/JsonIO/Process/process_parameter_value.py +60 -0
  201. arctrl/py/JsonIO/Process/process_sequence.py +71 -0
  202. arctrl/py/JsonIO/Process/protocol.py +60 -0
  203. arctrl/py/JsonIO/Process/protocol_parameter.py +36 -0
  204. arctrl/py/JsonIO/Process/sample.py +60 -0
  205. arctrl/py/JsonIO/Process/source.py +60 -0
  206. arctrl/py/JsonIO/Process/study_materials.py +52 -0
  207. arctrl/py/JsonIO/Process/value.py +32 -0
  208. arctrl/py/JsonIO/Table/__init__.py +0 -0
  209. arctrl/py/JsonIO/Table/arc_table.py +103 -0
  210. arctrl/py/JsonIO/Table/composite_cell.py +36 -0
  211. arctrl/py/JsonIO/Table/composite_header.py +36 -0
  212. arctrl/py/JsonIO/Table/compression.py +67 -0
  213. arctrl/py/JsonIO/Table/iotype.py +36 -0
  214. arctrl/py/JsonIO/Table/templates.py +113 -0
  215. arctrl/py/JsonIO/__init__.py +0 -0
  216. arctrl/py/JsonIO/assay.py +113 -0
  217. arctrl/py/JsonIO/comment.py +80 -0
  218. arctrl/py/JsonIO/data.py +60 -0
  219. arctrl/py/JsonIO/data_file.py +58 -0
  220. arctrl/py/JsonIO/datamap.py +36 -0
  221. arctrl/py/JsonIO/decode.py +9 -0
  222. arctrl/py/JsonIO/encode.py +1 -0
  223. arctrl/py/JsonIO/investigation.py +91 -0
  224. arctrl/py/JsonIO/ldobject.py +106 -0
  225. arctrl/py/JsonIO/ontology_annotation.py +80 -0
  226. arctrl/py/JsonIO/ontology_source_reference.py +80 -0
  227. arctrl/py/JsonIO/person.py +82 -0
  228. arctrl/py/JsonIO/publication.py +82 -0
  229. arctrl/py/JsonIO/run.py +68 -0
  230. arctrl/py/JsonIO/study.py +114 -0
  231. arctrl/py/JsonIO/workflow.py +68 -0
  232. arctrl/py/ROCrate/ISAProfile/__init__.py +0 -0
  233. arctrl/py/ROCrate/ISAProfile/assay.py +70 -0
  234. arctrl/py/ROCrate/ISAProfile/data.py +65 -0
  235. arctrl/py/ROCrate/ISAProfile/dataset.py +24 -0
  236. arctrl/py/ROCrate/ISAProfile/investigation.py +73 -0
  237. arctrl/py/ROCrate/ISAProfile/lab_process.py +162 -0
  238. arctrl/py/ROCrate/ISAProfile/lab_protocol.py +37 -0
  239. arctrl/py/ROCrate/ISAProfile/person.py +72 -0
  240. arctrl/py/ROCrate/ISAProfile/property_value.py +98 -0
  241. arctrl/py/ROCrate/ISAProfile/sample.py +64 -0
  242. arctrl/py/ROCrate/ISAProfile/scholarly_article.py +98 -0
  243. arctrl/py/ROCrate/ISAProfile/study.py +74 -0
  244. arctrl/py/ROCrate/LDTypes/__init__.py +0 -0
  245. arctrl/py/ROCrate/LDTypes/comment.py +131 -0
  246. arctrl/py/ROCrate/LDTypes/computational_workflow.py +455 -0
  247. arctrl/py/ROCrate/LDTypes/computer_language.py +269 -0
  248. arctrl/py/ROCrate/LDTypes/create_action.py +303 -0
  249. arctrl/py/ROCrate/LDTypes/creative_work.py +566 -0
  250. arctrl/py/ROCrate/LDTypes/dataset.py +943 -0
  251. arctrl/py/ROCrate/LDTypes/defined_term.py +131 -0
  252. arctrl/py/ROCrate/LDTypes/file.py +281 -0
  253. arctrl/py/ROCrate/LDTypes/formal_parameter.py +431 -0
  254. arctrl/py/ROCrate/LDTypes/lab_process.py +352 -0
  255. arctrl/py/ROCrate/LDTypes/lab_protocol.py +395 -0
  256. arctrl/py/ROCrate/LDTypes/organization.py +83 -0
  257. arctrl/py/ROCrate/LDTypes/person.py +484 -0
  258. arctrl/py/ROCrate/LDTypes/postal_address.py +195 -0
  259. arctrl/py/ROCrate/LDTypes/property_value.py +952 -0
  260. arctrl/py/ROCrate/LDTypes/sample.py +202 -0
  261. arctrl/py/ROCrate/LDTypes/scholarly_article.py +229 -0
  262. arctrl/py/ROCrate/LDTypes/software_source_code.py +310 -0
  263. arctrl/py/ROCrate/LDTypes/workflow_invocation.py +48 -0
  264. arctrl/py/ROCrate/LDTypes/workflow_protocol.py +52 -0
  265. arctrl/py/ROCrate/__init__.py +0 -0
  266. arctrl/py/ROCrate/arc_rocrate_metadata.py +39 -0
  267. arctrl/py/ROCrate/dyn_obj_extensions.py +1 -0
  268. arctrl/py/ROCrate/helper.py +8 -0
  269. arctrl/py/ROCrate/ldcontext.py +406 -0
  270. arctrl/py/ROCrate/ldobject.py +1247 -0
  271. arctrl/py/ROCrate/rocrate_context.py +51 -0
  272. arctrl/py/Spreadsheet/AnnotationTable/__init__.py +0 -0
  273. arctrl/py/Spreadsheet/AnnotationTable/arc_table.py +203 -0
  274. arctrl/py/Spreadsheet/AnnotationTable/composite_cell.py +78 -0
  275. arctrl/py/Spreadsheet/AnnotationTable/composite_column.py +305 -0
  276. arctrl/py/Spreadsheet/AnnotationTable/composite_header.py +623 -0
  277. arctrl/py/Spreadsheet/DatamapTable/__init__.py +0 -0
  278. arctrl/py/Spreadsheet/DatamapTable/datamap_column.py +114 -0
  279. arctrl/py/Spreadsheet/DatamapTable/datamap_header.py +621 -0
  280. arctrl/py/Spreadsheet/DatamapTable/datamap_table.py +118 -0
  281. arctrl/py/Spreadsheet/Metadata/__init__.py +0 -0
  282. arctrl/py/Spreadsheet/Metadata/assays.py +125 -0
  283. arctrl/py/Spreadsheet/Metadata/comment.py +77 -0
  284. arctrl/py/Spreadsheet/Metadata/contacts.py +134 -0
  285. arctrl/py/Spreadsheet/Metadata/conversions.py +190 -0
  286. arctrl/py/Spreadsheet/Metadata/design_descriptors.py +34 -0
  287. arctrl/py/Spreadsheet/Metadata/factors.py +107 -0
  288. arctrl/py/Spreadsheet/Metadata/ontology_annotation.py +88 -0
  289. arctrl/py/Spreadsheet/Metadata/ontology_source_reference.py +96 -0
  290. arctrl/py/Spreadsheet/Metadata/protocols.py +146 -0
  291. arctrl/py/Spreadsheet/Metadata/publication.py +122 -0
  292. arctrl/py/Spreadsheet/Metadata/run.py +122 -0
  293. arctrl/py/Spreadsheet/Metadata/sparse_table.py +499 -0
  294. arctrl/py/Spreadsheet/Metadata/study.py +312 -0
  295. arctrl/py/Spreadsheet/Metadata/workflow.py +159 -0
  296. arctrl/py/Spreadsheet/__init__.py +0 -0
  297. arctrl/py/Spreadsheet/arc_assay.py +233 -0
  298. arctrl/py/Spreadsheet/arc_investigation.py +435 -0
  299. arctrl/py/Spreadsheet/arc_run.py +190 -0
  300. arctrl/py/Spreadsheet/arc_study.py +144 -0
  301. arctrl/py/Spreadsheet/arc_workflow.py +177 -0
  302. arctrl/py/Spreadsheet/assembly_info.py +1 -0
  303. arctrl/py/Spreadsheet/collection_aux.py +167 -0
  304. arctrl/py/Spreadsheet/datamap.py +43 -0
  305. arctrl/py/Spreadsheet/template.py +460 -0
  306. arctrl/py/ValidationPackages/__init__.py +0 -0
  307. arctrl/py/ValidationPackages/validation_package.py +82 -0
  308. arctrl/py/ValidationPackages/validation_packages_config.py +132 -0
  309. arctrl/py/WebRequest/__init__.py +0 -0
  310. arctrl/py/WebRequest/web_request.py +9 -0
  311. arctrl/py/WebRequest/web_request_py.py +135 -0
  312. arctrl/py/WorkflowGraph/__init__.py +0 -0
  313. arctrl/py/WorkflowGraph/adapters.py +141 -0
  314. arctrl/py/WorkflowGraph/build_options.py +45 -0
  315. arctrl/py/WorkflowGraph/builder.py +720 -0
  316. arctrl/py/WorkflowGraph/graph_types.py +260 -0
  317. arctrl/py/WorkflowGraph/query_helpers.py +76 -0
  318. arctrl/py/WorkflowGraph/reference_parsing.py +59 -0
  319. arctrl/py/WorkflowGraph/visualization_siren.py +574 -0
  320. arctrl/py/WorkflowGraph/workflow_graph.py +119 -0
  321. arctrl/py/Yaml/__init__.py +0 -0
  322. arctrl/py/Yaml/decode.py +1 -0
  323. arctrl/py/Yaml/encode.py +10 -0
  324. arctrl/py/Yaml/validation_package.py +77 -0
  325. arctrl/py/Yaml/validation_packages_config.py +86 -0
  326. arctrl/py/__init__.py +0 -0
  327. arctrl/py/arc.py +1891 -0
  328. arctrl/py/column_index.py +280 -0
  329. arctrl/py/conversion.py +142 -0
  330. arctrl/py/cross_async.py +76 -0
  331. arctrl/py/cwlrun_resolver.py +228 -0
  332. arctrl/py/fable_modules/dynamic_obj/__init__.py +0 -0
  333. arctrl/py/fable_modules/dynamic_obj/dyn_obj.py +136 -0
  334. arctrl/py/fable_modules/dynamic_obj/dynamic_obj.py +415 -0
  335. arctrl/py/fable_modules/dynamic_obj/fable_js.py +1 -0
  336. arctrl/py/fable_modules/dynamic_obj/fable_py.py +288 -0
  337. arctrl/py/fable_modules/dynamic_obj/hash_codes.py +82 -0
  338. arctrl/py/fable_modules/dynamic_obj/property_helper.py +25 -0
  339. arctrl/py/fable_modules/dynamic_obj/reflection_utils.py +87 -0
  340. arctrl/py/fable_modules/fable_library/__init__.py +0 -0
  341. arctrl/py/fable_modules/fable_library/array_.py +1528 -0
  342. arctrl/py/fable_modules/fable_library/async_.py +377 -0
  343. arctrl/py/fable_modules/fable_library/async_builder.py +379 -0
  344. arctrl/py/fable_modules/fable_library/big_int.py +330 -0
  345. arctrl/py/fable_modules/fable_library/bit_converter.py +131 -0
  346. arctrl/py/fable_modules/fable_library/boolean.py +26 -0
  347. arctrl/py/fable_modules/fable_library/char.py +237 -0
  348. arctrl/py/fable_modules/fable_library/choice.py +212 -0
  349. arctrl/py/fable_modules/fable_library/date.py +779 -0
  350. arctrl/py/fable_modules/fable_library/date_offset.py +79 -0
  351. arctrl/py/fable_modules/fable_library/decimal_.py +190 -0
  352. arctrl/py/fable_modules/fable_library/diagnostics.py +54 -0
  353. arctrl/py/fable_modules/fable_library/double.py +87 -0
  354. arctrl/py/fable_modules/fable_library/encoding.py +41 -0
  355. arctrl/py/fable_modules/fable_library/event.py +206 -0
  356. arctrl/py/fable_modules/fable_library/file.py +107 -0
  357. arctrl/py/fable_modules/fable_library/fsharp_collections.py +52 -0
  358. arctrl/py/fable_modules/fable_library/fsharp_core.py +123 -0
  359. arctrl/py/fable_modules/fable_library/global_.py +63 -0
  360. arctrl/py/fable_modules/fable_library/guid.py +41 -0
  361. arctrl/py/fable_modules/fable_library/int32.py +73 -0
  362. arctrl/py/fable_modules/fable_library/list.py +1788 -0
  363. arctrl/py/fable_modules/fable_library/long.py +240 -0
  364. arctrl/py/fable_modules/fable_library/mailbox_processor.py +179 -0
  365. arctrl/py/fable_modules/fable_library/map.py +1854 -0
  366. arctrl/py/fable_modules/fable_library/map_util.py +148 -0
  367. arctrl/py/fable_modules/fable_library/mutable_map.py +397 -0
  368. arctrl/py/fable_modules/fable_library/mutable_set.py +279 -0
  369. arctrl/py/fable_modules/fable_library/native.py +45 -0
  370. arctrl/py/fable_modules/fable_library/numeric.py +46 -0
  371. arctrl/py/fable_modules/fable_library/observable.py +222 -0
  372. arctrl/py/fable_modules/fable_library/option.py +128 -0
  373. arctrl/py/fable_modules/fable_library/path.py +62 -0
  374. arctrl/py/fable_modules/fable_library/range.py +117 -0
  375. arctrl/py/fable_modules/fable_library/reflection.py +463 -0
  376. arctrl/py/fable_modules/fable_library/reg_exp.py +137 -0
  377. arctrl/py/fable_modules/fable_library/resize_array.py +31 -0
  378. arctrl/py/fable_modules/fable_library/result.py +212 -0
  379. arctrl/py/fable_modules/fable_library/seq.py +1979 -0
  380. arctrl/py/fable_modules/fable_library/seq2.py +221 -0
  381. arctrl/py/fable_modules/fable_library/set.py +2414 -0
  382. arctrl/py/fable_modules/fable_library/singleton_local_time_zone.py +36 -0
  383. arctrl/py/fable_modules/fable_library/string_.py +573 -0
  384. arctrl/py/fable_modules/fable_library/system_collections_generic.py +462 -0
  385. arctrl/py/fable_modules/fable_library/system_text.py +237 -0
  386. arctrl/py/fable_modules/fable_library/task.py +116 -0
  387. arctrl/py/fable_modules/fable_library/task_builder.py +122 -0
  388. arctrl/py/fable_modules/fable_library/thread.py +5 -0
  389. arctrl/py/fable_modules/fable_library/time_span.py +283 -0
  390. arctrl/py/fable_modules/fable_library/timer.py +24 -0
  391. arctrl/py/fable_modules/fable_library/types.py +401 -0
  392. arctrl/py/fable_modules/fable_library/uri.py +109 -0
  393. arctrl/py/fable_modules/fable_library/util.py +2735 -0
  394. arctrl/py/fable_modules/fable_openpyxl/__init__.py +0 -0
  395. arctrl/py/fable_modules/fable_openpyxl/openpyxl.py +362 -0
  396. arctrl/py/fable_modules/fable_python/cognite-sdk/__init__.py +0 -0
  397. arctrl/py/fable_modules/fable_python/cognite-sdk/cognite_sdk.py +22 -0
  398. arctrl/py/fable_modules/fable_python/flask/__init__.py +0 -0
  399. arctrl/py/fable_modules/fable_python/flask/flask.py +34 -0
  400. arctrl/py/fable_modules/fable_python/jupyter/__init__.py +0 -0
  401. arctrl/py/fable_modules/fable_python/jupyter/ipy_widgets.py +47 -0
  402. arctrl/py/fable_modules/fable_python/jupyter/ipython.py +13 -0
  403. arctrl/py/fable_modules/fable_python/stdlib/__init__.py +0 -0
  404. arctrl/py/fable_modules/fable_python/stdlib/ast.py +1 -0
  405. arctrl/py/fable_modules/fable_python/stdlib/asyncio/__init__.py +0 -0
  406. arctrl/py/fable_modules/fable_python/stdlib/asyncio/events.py +17 -0
  407. arctrl/py/fable_modules/fable_python/stdlib/asyncio/futures.py +52 -0
  408. arctrl/py/fable_modules/fable_python/stdlib/asyncio/tasks.py +38 -0
  409. arctrl/py/fable_modules/fable_python/stdlib/base64_.py +1 -0
  410. arctrl/py/fable_modules/fable_python/stdlib/builtins_.py +38 -0
  411. arctrl/py/fable_modules/fable_python/stdlib/html.py +1 -0
  412. arctrl/py/fable_modules/fable_python/stdlib/json.py +1 -0
  413. arctrl/py/fable_modules/fable_python/stdlib/math_.py +1 -0
  414. arctrl/py/fable_modules/fable_python/stdlib/os_.py +1 -0
  415. arctrl/py/fable_modules/fable_python/stdlib/queue_.py +1 -0
  416. arctrl/py/fable_modules/fable_python/stdlib/string_.py +1 -0
  417. arctrl/py/fable_modules/fable_python/stdlib/sys_.py +30 -0
  418. arctrl/py/fable_modules/fable_python/stdlib/time_.py +1 -0
  419. arctrl/py/fable_modules/fable_python/stdlib/tk_inter.py +1 -0
  420. arctrl/py/fable_modules/fs_spreadsheet/Cells/__init__.py +0 -0
  421. arctrl/py/fable_modules/fs_spreadsheet/Cells/fs_cell.py +340 -0
  422. arctrl/py/fable_modules/fs_spreadsheet/Cells/fs_cells_collection.py +466 -0
  423. arctrl/py/fable_modules/fs_spreadsheet/DSL/__init__.py +0 -0
  424. arctrl/py/fable_modules/fs_spreadsheet/DSL/cell_builder.py +214 -0
  425. arctrl/py/fable_modules/fs_spreadsheet/DSL/column_builder.py +139 -0
  426. arctrl/py/fable_modules/fs_spreadsheet/DSL/dsl.py +50 -0
  427. arctrl/py/fable_modules/fs_spreadsheet/DSL/expression.py +65 -0
  428. arctrl/py/fable_modules/fs_spreadsheet/DSL/operators.py +9 -0
  429. arctrl/py/fable_modules/fs_spreadsheet/DSL/row_builder.py +139 -0
  430. arctrl/py/fable_modules/fs_spreadsheet/DSL/sheet_builder.py +118 -0
  431. arctrl/py/fable_modules/fs_spreadsheet/DSL/table_builder.py +122 -0
  432. arctrl/py/fable_modules/fs_spreadsheet/DSL/transform.py +463 -0
  433. arctrl/py/fable_modules/fs_spreadsheet/DSL/types.py +314 -0
  434. arctrl/py/fable_modules/fs_spreadsheet/DSL/workbook_builder.py +106 -0
  435. arctrl/py/fable_modules/fs_spreadsheet/Json/__init__.py +0 -0
  436. arctrl/py/fable_modules/fs_spreadsheet/Json/cell.py +103 -0
  437. arctrl/py/fable_modules/fs_spreadsheet/Json/column.py +70 -0
  438. arctrl/py/fable_modules/fs_spreadsheet/Json/row.py +70 -0
  439. arctrl/py/fable_modules/fs_spreadsheet/Json/table.py +54 -0
  440. arctrl/py/fable_modules/fs_spreadsheet/Json/value.py +93 -0
  441. arctrl/py/fable_modules/fs_spreadsheet/Json/workbook.py +71 -0
  442. arctrl/py/fable_modules/fs_spreadsheet/Json/worksheet.py +216 -0
  443. arctrl/py/fable_modules/fs_spreadsheet/Ranges/__init__.py +0 -0
  444. arctrl/py/fable_modules/fs_spreadsheet/Ranges/fs_range.py +43 -0
  445. arctrl/py/fable_modules/fs_spreadsheet/Ranges/fs_range_address.py +190 -0
  446. arctrl/py/fable_modules/fs_spreadsheet/Ranges/fs_range_base.py +92 -0
  447. arctrl/py/fable_modules/fs_spreadsheet/Ranges/fs_range_column.py +77 -0
  448. arctrl/py/fable_modules/fs_spreadsheet/Ranges/fs_range_row.py +48 -0
  449. arctrl/py/fable_modules/fs_spreadsheet/Tables/__init__.py +0 -0
  450. arctrl/py/fable_modules/fs_spreadsheet/Tables/fs_table.py +461 -0
  451. arctrl/py/fable_modules/fs_spreadsheet/Tables/fs_table_field.py +117 -0
  452. arctrl/py/fable_modules/fs_spreadsheet/Tables/fs_table_row.py +23 -0
  453. arctrl/py/fable_modules/fs_spreadsheet/__init__.py +0 -0
  454. arctrl/py/fable_modules/fs_spreadsheet/fs_address.py +236 -0
  455. arctrl/py/fable_modules/fs_spreadsheet/fs_column.py +172 -0
  456. arctrl/py/fable_modules/fs_spreadsheet/fs_row.py +183 -0
  457. arctrl/py/fable_modules/fs_spreadsheet/fs_workbook.py +192 -0
  458. arctrl/py/fable_modules/fs_spreadsheet/fs_worksheet.py +610 -0
  459. arctrl/py/fable_modules/fs_spreadsheet/hash_codes.py +60 -0
  460. arctrl/py/fable_modules/fs_spreadsheet/sheet_builder.py +329 -0
  461. arctrl/py/fable_modules/fs_spreadsheet_py/__init__.py +0 -0
  462. arctrl/py/fable_modules/fs_spreadsheet_py/cell.py +60 -0
  463. arctrl/py/fable_modules/fs_spreadsheet_py/cell_type.py +50 -0
  464. arctrl/py/fable_modules/fs_spreadsheet_py/fs_extension.py +60 -0
  465. arctrl/py/fable_modules/fs_spreadsheet_py/json.py +47 -0
  466. arctrl/py/fable_modules/fs_spreadsheet_py/table.py +54 -0
  467. arctrl/py/fable_modules/fs_spreadsheet_py/workbook.py +41 -0
  468. arctrl/py/fable_modules/fs_spreadsheet_py/worksheet.py +52 -0
  469. arctrl/py/fable_modules/fs_spreadsheet_py/xlsx.py +37 -0
  470. arctrl/py/fable_modules/siren/__init__.py +0 -0
  471. arctrl/py/fable_modules/siren/config.py +1038 -0
  472. arctrl/py/fable_modules/siren/formatting.py +1121 -0
  473. arctrl/py/fable_modules/siren/siren.py +1941 -0
  474. arctrl/py/fable_modules/siren/siren_types.py +1229 -0
  475. arctrl/py/fable_modules/siren/theme_variables.py +517 -0
  476. arctrl/py/fable_modules/siren/util.py +37 -0
  477. arctrl/py/fable_modules/siren/yaml.py +101 -0
  478. arctrl/py/fable_modules/thoth_json_core/__init__.py +0 -0
  479. arctrl/py/fable_modules/thoth_json_core/decode.py +1614 -0
  480. arctrl/py/fable_modules/thoth_json_core/encode.py +305 -0
  481. arctrl/py/fable_modules/thoth_json_core/types.py +181 -0
  482. arctrl/py/fable_modules/thoth_json_python/__init__.py +0 -0
  483. arctrl/py/fable_modules/thoth_json_python/decode.py +112 -0
  484. arctrl/py/fable_modules/thoth_json_python/encode.py +72 -0
  485. arctrl/py/fable_modules/thoth_json_python/python.py +1 -0
  486. arctrl/py/fable_modules/yamlicious/Interop/__init__.py +0 -0
  487. arctrl/py/fable_modules/yamlicious/Interop/js_interop.py +1 -0
  488. arctrl/py/fable_modules/yamlicious/Interop/py_interop.py +7 -0
  489. arctrl/py/fable_modules/yamlicious/__init__.py +0 -0
  490. arctrl/py/fable_modules/yamlicious/decode.py +1784 -0
  491. arctrl/py/fable_modules/yamlicious/encode.py +84 -0
  492. arctrl/py/fable_modules/yamlicious/flow_to_block.py +994 -0
  493. arctrl/py/fable_modules/yamlicious/library.py +10 -0
  494. arctrl/py/fable_modules/yamlicious/persil.py +57 -0
  495. arctrl/py/fable_modules/yamlicious/preprocessing.py +99 -0
  496. arctrl/py/fable_modules/yamlicious/reader.py +739 -0
  497. arctrl/py/fable_modules/yamlicious/regex.py +29 -0
  498. arctrl/py/fable_modules/yamlicious/regex_active_patterns.py +265 -0
  499. arctrl/py/fable_modules/yamlicious/writer.py +175 -0
  500. arctrl/py/fable_modules/yamlicious/yamlicious_types.py +128 -0
  501. arctrl/py/json.py +389 -0
  502. arctrl/py/license.py +169 -0
  503. arctrl/py/rocrate_io.py +242 -0
  504. arctrl/py/template_web.py +23 -0
  505. arctrl/py/xlsx.py +212 -0
  506. arctrl/py/yaml.py +79 -0
  507. arctrl/rocrate.py +21 -0
  508. arctrl-3.0.0.dist-info/METADATA +157 -0
  509. arctrl-3.0.0.dist-info/RECORD +511 -0
  510. arctrl-3.0.0.dist-info/WHEEL +4 -0
  511. arctrl-3.0.0.dist-info/licenses/LICENSE +21 -0
@@ -0,0 +1,233 @@
1
+ from __future__ import annotations
2
+ from collections.abc import Callable
3
+ from typing import Any
4
+ from ..fable_modules.fable_library.list import (FSharpList, is_empty, empty, singleton as singleton_1, of_seq)
5
+ from ..fable_modules.fable_library.option import (default_arg, to_array)
6
+ from ..fable_modules.fable_library.seq import (exists, head, try_head, delay, append, singleton, iterate_indexed, map, try_find, choose, try_pick, is_empty as is_empty_1, iterate)
7
+ from ..fable_modules.fable_library.string_ import (starts_with_exact, to_fail, printf, to_console)
8
+ from ..fable_modules.fable_library.types import Array
9
+ from ..fable_modules.fable_library.util import (IEnumerable_1, get_enumerator, IEnumerator, to_enumerable)
10
+ from ..fable_modules.fs_spreadsheet.fs_row import FsRow
11
+ from ..fable_modules.fs_spreadsheet.fs_workbook import FsWorkbook
12
+ from ..fable_modules.fs_spreadsheet.fs_worksheet import FsWorksheet
13
+ from ..Core.arc_types import ArcAssay
14
+ from ..Core.comment import Remark
15
+ from ..Core.datamap import Datamap
16
+ from ..Core.Helper.identifier import create_missing_identifier
17
+ from ..Core.person import Person
18
+ from ..Core.Table.arc_table import ArcTable
19
+ from .AnnotationTable.arc_table import (try_from_fs_worksheet, to_fs_worksheet as to_fs_worksheet_1)
20
+ from .DatamapTable.datamap_table import (try_from_fs_worksheet as try_from_fs_worksheet_1, to_fs_worksheet)
21
+ from .Metadata.assays import (from_rows, to_rows)
22
+ from .Metadata.contacts import (from_rows as from_rows_1, to_rows as to_rows_1)
23
+ from .Metadata.sparse_table import (SparseRowModule_tryGetValueAt, SparseRowModule_fromValues, SparseRowModule_writeToSheet, SparseRowModule_fromFsRow, SparseRowModule_getAllValues, SparseRowModule_fromAllValues)
24
+
25
+ def ArcAssay_fromRows(rows: IEnumerable_1[IEnumerable_1[tuple[int, str]]]) -> ArcAssay:
26
+ def predicate(row: IEnumerable_1[tuple[int, str]], rows: Any=rows) -> bool:
27
+ return starts_with_exact(head(row)[1], "Assay")
28
+
29
+ pattern_input: tuple[str | None, str | None] = (("Assay", "Assay Person")) if exists(predicate, rows) else ((None, None))
30
+ en: IEnumerator[IEnumerable_1[tuple[int, str]]] = get_enumerator(rows)
31
+ def loop(last_row_mut: str | None, assays_mut: FSharpList[ArcAssay], contacts_mut: FSharpList[Person], row_number_mut: int, rows: Any=rows) -> ArcAssay:
32
+ while True:
33
+ (last_row, assays, contacts, row_number) = (last_row_mut, assays_mut, contacts_mut, row_number_mut)
34
+ (pattern_matching_result,) = (None,)
35
+ if last_row is not None:
36
+ def _arrow2001(__unit: None=None, last_row: Any=last_row, assays: Any=assays, contacts: Any=contacts, row_number: Any=row_number) -> bool:
37
+ prefix: str = last_row
38
+ return True if (prefix == "ASSAY") else (prefix == "ASSAY METADATA")
39
+
40
+ if _arrow2001():
41
+ pattern_matching_result = 0
42
+
43
+ elif last_row == "ASSAY PERFORMERS":
44
+ pattern_matching_result = 1
45
+
46
+ else:
47
+ pattern_matching_result = 2
48
+
49
+
50
+ else:
51
+ pattern_matching_result = 2
52
+
53
+ if pattern_matching_result == 0:
54
+ pattern_input_1: tuple[str | None, int, FSharpList[Remark], FSharpList[ArcAssay]] = from_rows(pattern_input[0], row_number + 1, en)
55
+ last_row_mut = pattern_input_1[0]
56
+ assays_mut = pattern_input_1[3]
57
+ contacts_mut = contacts
58
+ row_number_mut = pattern_input_1[1]
59
+ continue
60
+
61
+ elif pattern_matching_result == 1:
62
+ pattern_input_2: tuple[str | None, int, FSharpList[Remark], FSharpList[Person]] = from_rows_1(pattern_input[1], row_number + 1, en)
63
+ last_row_mut = pattern_input_2[0]
64
+ assays_mut = assays
65
+ contacts_mut = pattern_input_2[3]
66
+ row_number_mut = pattern_input_2[1]
67
+ continue
68
+
69
+ elif pattern_matching_result == 2:
70
+ (pattern_matching_result_1, assays_2, contacts_2) = (None, None, None)
71
+ if is_empty(assays):
72
+ if is_empty(contacts):
73
+ pattern_matching_result_1 = 0
74
+
75
+ else:
76
+ pattern_matching_result_1 = 1
77
+ assays_2 = assays
78
+ contacts_2 = contacts
79
+
80
+
81
+ else:
82
+ pattern_matching_result_1 = 1
83
+ assays_2 = assays
84
+ contacts_2 = contacts
85
+
86
+ if pattern_matching_result_1 == 0:
87
+ return ArcAssay.create(create_missing_identifier())
88
+
89
+ elif pattern_matching_result_1 == 1:
90
+ performers: Array[Person] = list(contacts_2)
91
+ assay: ArcAssay = default_arg(try_head(assays_2), ArcAssay.create(create_missing_identifier()))
92
+ return ArcAssay.set_performers(performers, assay)
93
+
94
+
95
+ break
96
+
97
+ if en.System_Collections_IEnumerator_MoveNext():
98
+ return loop(SparseRowModule_tryGetValueAt(0, en.System_Collections_Generic_IEnumerator_1_get_Current()), empty(), empty(), 1)
99
+
100
+ else:
101
+ raise Exception("empty assay metadata sheet")
102
+
103
+
104
+
105
+ def ArcAssay_toRows(assay: ArcAssay) -> IEnumerable_1[IEnumerable_1[tuple[int, str]]]:
106
+ def _arrow2005(__unit: None=None, assay: Any=assay) -> IEnumerable_1[IEnumerable_1[tuple[int, str]]]:
107
+ def _arrow2004(__unit: None=None) -> IEnumerable_1[IEnumerable_1[tuple[int, str]]]:
108
+ def _arrow2003(__unit: None=None) -> IEnumerable_1[IEnumerable_1[tuple[int, str]]]:
109
+ def _arrow2002(__unit: None=None) -> IEnumerable_1[IEnumerable_1[tuple[int, str]]]:
110
+ return to_rows_1("Assay Person", of_seq(assay.Performers))
111
+
112
+ return append(singleton(SparseRowModule_fromValues(to_enumerable(["ASSAY PERFORMERS"]))), delay(_arrow2002))
113
+
114
+ return append(to_rows("Assay", singleton_1(assay)), delay(_arrow2003))
115
+
116
+ return append(singleton(SparseRowModule_fromValues(to_enumerable(["ASSAY"]))), delay(_arrow2004))
117
+
118
+ return delay(_arrow2005)
119
+
120
+
121
+ def ArcAssay_toMetadataSheet(assay: ArcAssay) -> FsWorksheet:
122
+ sheet: FsWorksheet = FsWorksheet("isa_assay")
123
+ def action(row_i: int, r: IEnumerable_1[tuple[int, str]], assay: Any=assay) -> None:
124
+ SparseRowModule_writeToSheet(row_i + 1, r, sheet)
125
+
126
+ iterate_indexed(action, ArcAssay_toRows(assay))
127
+ return sheet
128
+
129
+
130
+ def ArcAssay_fromMetadataSheet(sheet: FsWorksheet) -> ArcAssay:
131
+ try:
132
+ rows: IEnumerable_1[IEnumerable_1[tuple[int, str]]] = map(SparseRowModule_fromFsRow, sheet.Rows)
133
+ def predicate(row: IEnumerable_1[tuple[int, str]]) -> bool:
134
+ return starts_with_exact(head(row)[1], "Assay")
135
+
136
+ has_prefix: bool = exists(predicate, rows)
137
+ return ArcAssay_fromRows(rows)
138
+
139
+ except Exception as err:
140
+ arg: str = str(err)
141
+ return to_fail(printf("Failed while parsing metadatasheet: %s"))(arg)
142
+
143
+
144
+
145
+ def ArcAssay_toMetadataCollection(assay: ArcAssay) -> IEnumerable_1[IEnumerable_1[str | None]]:
146
+ def mapping(row: IEnumerable_1[tuple[int, str]], assay: Any=assay) -> IEnumerable_1[str | None]:
147
+ return SparseRowModule_getAllValues(row)
148
+
149
+ return map(mapping, ArcAssay_toRows(assay))
150
+
151
+
152
+ def ArcAssay_fromMetadataCollection(collection: IEnumerable_1[IEnumerable_1[str | None]]) -> ArcAssay:
153
+ try:
154
+ return ArcAssay_fromRows(map(SparseRowModule_fromAllValues, collection))
155
+
156
+ except Exception as err:
157
+ arg: str = str(err)
158
+ return to_fail(printf("Failed while parsing metadatasheet: %s"))(arg)
159
+
160
+
161
+
162
+ def ArcAssay_isMetadataSheetName(name: str) -> bool:
163
+ if name == "isa_assay":
164
+ return True
165
+
166
+ else:
167
+ return name == "Assay"
168
+
169
+
170
+
171
+ def ArcAssay_isMetadataSheet(sheet: FsWorksheet) -> bool:
172
+ return ArcAssay_isMetadataSheetName(sheet.Name)
173
+
174
+
175
+ def ArcAssay_tryGetMetadataSheet(doc: FsWorkbook) -> FsWorksheet | None:
176
+ def predicate(sheet: FsWorksheet, doc: Any=doc) -> bool:
177
+ return ArcAssay_isMetadataSheet(sheet)
178
+
179
+ return try_find(predicate, doc.GetWorksheets())
180
+
181
+
182
+ def ARCtrl_ArcAssay__ArcAssay_fromFsWorkbook_Static_32154C9D(doc: FsWorkbook) -> ArcAssay:
183
+ try:
184
+ assay_metadata: ArcAssay
185
+ match_value: FsWorksheet | None = ArcAssay_tryGetMetadataSheet(doc)
186
+ if match_value is None:
187
+ to_console(printf("Cannot retrieve metadata: Assay file does not contain \"%s\" or \"%s\" sheet."))("isa_assay")("Assay")
188
+ assay_metadata = ArcAssay.create(create_missing_identifier())
189
+
190
+ else:
191
+ assay_metadata = ArcAssay_fromMetadataSheet(match_value)
192
+
193
+ sheets: Array[FsWorksheet] = doc.GetWorksheets()
194
+ annotation_tables: IEnumerable_1[ArcTable] = choose(try_from_fs_worksheet, sheets)
195
+ datamap_sheet: Datamap | None = try_pick(try_from_fs_worksheet_1, sheets)
196
+ if not is_empty_1(annotation_tables):
197
+ assay_metadata.Tables = list(annotation_tables)
198
+
199
+ assay_metadata.Datamap = datamap_sheet
200
+ return assay_metadata
201
+
202
+ except Exception as err:
203
+ arg_2: str = str(err)
204
+ return to_fail(printf("Could not parse assay: \n%s"))(arg_2)
205
+
206
+
207
+
208
+ def ARCtrl_ArcAssay__ArcAssay_toFsWorkbook_Static_Z2508BE4F(assay: ArcAssay, datamap_sheet: bool | None=None) -> FsWorkbook:
209
+ datamap_sheet_1: bool = default_arg(datamap_sheet, True)
210
+ doc: FsWorkbook = FsWorkbook()
211
+ metadata_sheet: FsWorksheet = ArcAssay_toMetadataSheet(assay)
212
+ doc.AddWorksheet(metadata_sheet)
213
+ if datamap_sheet_1:
214
+ def action(arg: Datamap, assay: Any=assay, datamap_sheet: Any=datamap_sheet) -> None:
215
+ sheet: FsWorksheet = to_fs_worksheet(arg)
216
+ doc.AddWorksheet(sheet)
217
+
218
+ iterate(action, to_array(assay.Datamap))
219
+
220
+ def action_1(i: int, arg_1: ArcTable, assay: Any=assay, datamap_sheet: Any=datamap_sheet) -> None:
221
+ sheet_1: FsWorksheet = to_fs_worksheet_1(i, arg_1)
222
+ doc.AddWorksheet(sheet_1)
223
+
224
+ iterate_indexed(action_1, assay.Tables)
225
+ return doc
226
+
227
+
228
+ def ARCtrl_ArcAssay__ArcAssay_ToFsWorkbook_6FCE9E49(this: ArcAssay, datamap_sheet: bool | None=None) -> FsWorkbook:
229
+ return ARCtrl_ArcAssay__ArcAssay_toFsWorkbook_Static_Z2508BE4F(this, datamap_sheet)
230
+
231
+
232
+ __all__ = ["ArcAssay_fromRows", "ArcAssay_toRows", "ArcAssay_toMetadataSheet", "ArcAssay_fromMetadataSheet", "ArcAssay_toMetadataCollection", "ArcAssay_fromMetadataCollection", "ArcAssay_isMetadataSheetName", "ArcAssay_isMetadataSheet", "ArcAssay_tryGetMetadataSheet", "ARCtrl_ArcAssay__ArcAssay_fromFsWorkbook_Static_32154C9D", "ARCtrl_ArcAssay__ArcAssay_toFsWorkbook_Static_Z2508BE4F", "ARCtrl_ArcAssay__ArcAssay_ToFsWorkbook_6FCE9E49"]
233
+
@@ -0,0 +1,435 @@
1
+ from __future__ import annotations
2
+ from collections.abc import Callable
3
+ from dataclasses import dataclass
4
+ from typing import Any
5
+ from ..fable_modules.fable_library.list import (FSharpList, of_array, map, empty, cons, reverse, append, unzip, concat, of_seq, is_empty as is_empty_1, tail, head)
6
+ from ..fable_modules.fable_library.map import (of_list, try_find)
7
+ from ..fable_modules.fable_library.map_util import add_to_dict
8
+ from ..fable_modules.fable_library.option import (default_arg, value as value_1)
9
+ from ..fable_modules.fable_library.reflection import (TypeInfo, string_type, list_type, record_type)
10
+ from ..fable_modules.fable_library.seq import (is_empty, delay, append as append_1, singleton, collect, to_list, map as map_1, try_find as try_find_1, iterate_indexed)
11
+ from ..fable_modules.fable_library.seq2 import (List_distinct, List_distinctBy)
12
+ from ..fable_modules.fable_library.string_ import (to_fail, printf)
13
+ from ..fable_modules.fable_library.types import (Record, Array)
14
+ from ..fable_modules.fable_library.util import (string_hash, IEnumerable_1, IEnumerator, get_enumerator, ignore, to_enumerable, compare_primitives)
15
+ from ..fable_modules.fs_spreadsheet.fs_row import FsRow
16
+ from ..fable_modules.fs_spreadsheet.fs_workbook import FsWorkbook
17
+ from ..fable_modules.fs_spreadsheet.fs_worksheet import FsWorksheet
18
+ from ..Core.arc_types import (ArcInvestigation, ArcStudy, ArcAssay)
19
+ from ..Core.comment import (Comment, Comment_reflection, Remark)
20
+ from ..Core.Helper.collections_ import (ResizeArray_iter, Option_fromValueWithDefault)
21
+ from ..Core.ontology_source_reference import OntologySourceReference
22
+ from ..Core.person import Person
23
+ from ..Core.publication import Publication
24
+ from .Metadata.comment import (Comment_fromString, Comment_toString, Remark_wrapRemark)
25
+ from .Metadata.contacts import (from_rows as from_rows_2, to_rows as to_rows_2)
26
+ from .Metadata.ontology_source_reference import (from_rows, to_rows)
27
+ from .Metadata.publication import (from_rows as from_rows_1, to_rows as to_rows_1)
28
+ from .Metadata.sparse_table import (SparseTable__TryGetValueDefault_5BAE6133, SparseTable, SparseTable_Create_Z2192E64B, SparseTable_FromRows_Z5579EC29, SparseTable_ToRows_759CAFC1, SparseRowModule_tryGetValueAt, SparseRowModule_fromValues, SparseRowModule_getAllValues, SparseRowModule_fromAllValues, SparseRowModule_fromFsRow, SparseRowModule_writeToSheet)
29
+ from .Metadata.study import (from_rows as from_rows_3, to_rows as to_rows_3)
30
+
31
+ def _expr2016() -> TypeInfo:
32
+ return record_type("ARCtrl.Spreadsheet.ArcInvestigation.InvestigationInfo", [], ArcInvestigation_InvestigationInfo, lambda: [("Identifier", string_type), ("Title", string_type), ("Description", string_type), ("SubmissionDate", string_type), ("PublicReleaseDate", string_type), ("Comments", list_type(Comment_reflection()))])
33
+
34
+
35
+ @dataclass(eq = False, repr = False, slots = True)
36
+ class ArcInvestigation_InvestigationInfo(Record):
37
+ Identifier: str
38
+ Title: str
39
+ Description: str
40
+ SubmissionDate: str
41
+ PublicReleaseDate: str
42
+ Comments: FSharpList[Comment]
43
+
44
+ ArcInvestigation_InvestigationInfo_reflection = _expr2016
45
+
46
+ def ArcInvestigation_InvestigationInfo_create(identifier: str, title: str, description: str, submission_date: str, public_release_date: str, comments: FSharpList[Comment]) -> ArcInvestigation_InvestigationInfo:
47
+ return ArcInvestigation_InvestigationInfo(identifier, title, description, submission_date, public_release_date, comments)
48
+
49
+
50
+ def ArcInvestigation_InvestigationInfo_get_Labels(__unit: None=None) -> FSharpList[str]:
51
+ return of_array(["Investigation Identifier", "Investigation Title", "Investigation Description", "Investigation Submission Date", "Investigation Public Release Date"])
52
+
53
+
54
+ def ArcInvestigation_InvestigationInfo_FromSparseTable_3ECCA699(matrix: SparseTable) -> ArcInvestigation_InvestigationInfo:
55
+ def mapping(k: str, matrix: Any=matrix) -> Comment:
56
+ return Comment_fromString(k, SparseTable__TryGetValueDefault_5BAE6133(matrix, "", (k, 0)))
57
+
58
+ comments: FSharpList[Comment] = map(mapping, matrix.CommentKeys)
59
+ return ArcInvestigation_InvestigationInfo_create(SparseTable__TryGetValueDefault_5BAE6133(matrix, "", ("Investigation Identifier", 0)), SparseTable__TryGetValueDefault_5BAE6133(matrix, "", ("Investigation Title", 0)), SparseTable__TryGetValueDefault_5BAE6133(matrix, "", ("Investigation Description", 0)), SparseTable__TryGetValueDefault_5BAE6133(matrix, "", ("Investigation Submission Date", 0)), SparseTable__TryGetValueDefault_5BAE6133(matrix, "", ("Investigation Public Release Date", 0)), comments)
60
+
61
+
62
+ def ArcInvestigation_InvestigationInfo_ToSparseTable_Z720BD3FF(investigation: ArcInvestigation) -> SparseTable:
63
+ matrix: SparseTable = SparseTable_Create_Z2192E64B(None, ArcInvestigation_InvestigationInfo_get_Labels(), None, 2)
64
+ comment_keys: FSharpList[str] = empty()
65
+ add_to_dict(matrix.Matrix, ("Investigation Identifier", 1), investigation.Identifier)
66
+ add_to_dict(matrix.Matrix, ("Investigation Title", 1), default_arg(investigation.Title, ""))
67
+ add_to_dict(matrix.Matrix, ("Investigation Description", 1), default_arg(investigation.Description, ""))
68
+ add_to_dict(matrix.Matrix, ("Investigation Submission Date", 1), default_arg(investigation.SubmissionDate, ""))
69
+ add_to_dict(matrix.Matrix, ("Investigation Public Release Date", 1), default_arg(investigation.PublicReleaseDate, ""))
70
+ def f(comment: Comment, investigation: Any=investigation) -> None:
71
+ nonlocal comment_keys
72
+ pattern_input: tuple[str, str] = Comment_toString(comment)
73
+ n: str = pattern_input[0]
74
+ comment_keys = cons(n, comment_keys)
75
+ add_to_dict(matrix.Matrix, (n, 1), pattern_input[1])
76
+
77
+ ResizeArray_iter(f, investigation.Comments)
78
+ class ObjectExpr2018:
79
+ @property
80
+ def Equals(self) -> Callable[[str, str], bool]:
81
+ def _arrow2017(x: str, y: str) -> bool:
82
+ return x == y
83
+
84
+ return _arrow2017
85
+
86
+ @property
87
+ def GetHashCode(self) -> Callable[[str], int]:
88
+ return string_hash
89
+
90
+ return SparseTable(matrix.Matrix, matrix.Keys, reverse(List_distinct(comment_keys, ObjectExpr2018())), matrix.ColumnCount)
91
+
92
+
93
+ def ArcInvestigation_InvestigationInfo_fromRows(line_number: int, rows: IEnumerator[IEnumerable_1[tuple[int, str]]]) -> tuple[str | None, int, FSharpList[Remark], ArcInvestigation_InvestigationInfo]:
94
+ tupled_arg: tuple[str | None, int, FSharpList[Remark], SparseTable] = SparseTable_FromRows_Z5579EC29(rows, ArcInvestigation_InvestigationInfo_get_Labels(), line_number)
95
+ return (tupled_arg[0], tupled_arg[1], tupled_arg[2], ArcInvestigation_InvestigationInfo_FromSparseTable_3ECCA699(tupled_arg[3]))
96
+
97
+
98
+ def ArcInvestigation_InvestigationInfo_toRows_Z720BD3FF(investigation: ArcInvestigation) -> IEnumerable_1[IEnumerable_1[tuple[int, str]]]:
99
+ return SparseTable_ToRows_759CAFC1(ArcInvestigation_InvestigationInfo_ToSparseTable_Z720BD3FF(investigation))
100
+
101
+
102
+ def ArcInvestigation_fromParts(investigation_info: ArcInvestigation_InvestigationInfo, ontology_source_reference: FSharpList[OntologySourceReference], publications: FSharpList[Publication], contacts: FSharpList[Person], studies: FSharpList[ArcStudy], assays: FSharpList[ArcAssay], remarks: FSharpList[Remark]) -> ArcInvestigation:
103
+ def mapping(s: ArcStudy, investigation_info: Any=investigation_info, ontology_source_reference: Any=ontology_source_reference, publications: Any=publications, contacts: Any=contacts, studies: Any=studies, assays: Any=assays, remarks: Any=remarks) -> str:
104
+ return s.Identifier
105
+
106
+ study_identifiers: FSharpList[str] = map(mapping, studies)
107
+ title: str | None = Option_fromValueWithDefault("", investigation_info.Title)
108
+ description: str | None = Option_fromValueWithDefault("", investigation_info.Description)
109
+ submission_date: str | None = Option_fromValueWithDefault("", investigation_info.SubmissionDate)
110
+ public_release_date: str | None = Option_fromValueWithDefault("", investigation_info.PublicReleaseDate)
111
+ ontology_source_references: Array[OntologySourceReference] = list(ontology_source_reference)
112
+ publications_1: Array[Publication] = list(publications)
113
+ contacts_1: Array[Person] = list(contacts)
114
+ assays_1: Array[ArcAssay] = list(assays)
115
+ studies_1: Array[ArcStudy] = list(studies)
116
+ registered_study_identifiers: Array[str] = list(study_identifiers)
117
+ comments: Array[Comment] = list(investigation_info.Comments)
118
+ remarks_1: Array[Remark] = list(remarks)
119
+ return ArcInvestigation.make(investigation_info.Identifier, title, description, submission_date, public_release_date, ontology_source_references, publications_1, contacts_1, assays_1, studies_1, [], [], registered_study_identifiers, comments, remarks_1)
120
+
121
+
122
+ def ArcInvestigation_fromRows(rows: IEnumerable_1[IEnumerable_1[tuple[int, str]]]) -> ArcInvestigation:
123
+ if is_empty(rows):
124
+ raise Exception("isa_investigation sheet in Investigation file is empty")
125
+
126
+ en: IEnumerator[IEnumerable_1[tuple[int, str]]] = get_enumerator(rows)
127
+ empty_investigation_info: ArcInvestigation_InvestigationInfo = ArcInvestigation_InvestigationInfo_create("", "", "", "", "", empty())
128
+ def loop(last_line_mut: str | None, ontology_source_references_mut: FSharpList[OntologySourceReference], investigation_info_mut: ArcInvestigation_InvestigationInfo, publications_mut: FSharpList[Publication], contacts_mut: FSharpList[Person], studies_mut: FSharpList[tuple[ArcStudy, FSharpList[ArcAssay]]], remarks_mut: FSharpList[Remark], line_number_mut: int, rows: Any=rows) -> ArcInvestigation:
129
+ while True:
130
+ (last_line, ontology_source_references, investigation_info, publications, contacts, studies, remarks, line_number) = (last_line_mut, ontology_source_references_mut, investigation_info_mut, publications_mut, contacts_mut, studies_mut, remarks_mut, line_number_mut)
131
+ (pattern_matching_result,) = (None,)
132
+ if last_line is not None:
133
+ if last_line == "ONTOLOGY SOURCE REFERENCE":
134
+ pattern_matching_result = 0
135
+
136
+ elif last_line == "INVESTIGATION":
137
+ pattern_matching_result = 1
138
+
139
+ elif last_line == "INVESTIGATION PUBLICATIONS":
140
+ pattern_matching_result = 2
141
+
142
+ elif last_line == "INVESTIGATION CONTACTS":
143
+ pattern_matching_result = 3
144
+
145
+ elif last_line == "STUDY":
146
+ pattern_matching_result = 4
147
+
148
+ else:
149
+ pattern_matching_result = 5
150
+
151
+
152
+ else:
153
+ pattern_matching_result = 5
154
+
155
+ if pattern_matching_result == 0:
156
+ pattern_input: tuple[str | None, int, FSharpList[Remark], FSharpList[OntologySourceReference]] = from_rows(line_number + 1, en)
157
+ last_line_mut = pattern_input[0]
158
+ ontology_source_references_mut = pattern_input[3]
159
+ investigation_info_mut = investigation_info
160
+ publications_mut = publications
161
+ contacts_mut = contacts
162
+ studies_mut = studies
163
+ remarks_mut = append(remarks, pattern_input[2])
164
+ line_number_mut = pattern_input[1]
165
+ continue
166
+
167
+ elif pattern_matching_result == 1:
168
+ pattern_input_1: tuple[str | None, int, FSharpList[Remark], ArcInvestigation_InvestigationInfo] = ArcInvestigation_InvestigationInfo_fromRows(line_number + 1, en)
169
+ last_line_mut = pattern_input_1[0]
170
+ ontology_source_references_mut = ontology_source_references
171
+ investigation_info_mut = pattern_input_1[3]
172
+ publications_mut = publications
173
+ contacts_mut = contacts
174
+ studies_mut = studies
175
+ remarks_mut = append(remarks, pattern_input_1[2])
176
+ line_number_mut = pattern_input_1[1]
177
+ continue
178
+
179
+ elif pattern_matching_result == 2:
180
+ pattern_input_2: tuple[str | None, int, FSharpList[Remark], FSharpList[Publication]] = from_rows_1("Investigation Publication", line_number + 1, en)
181
+ last_line_mut = pattern_input_2[0]
182
+ ontology_source_references_mut = ontology_source_references
183
+ investigation_info_mut = investigation_info
184
+ publications_mut = pattern_input_2[3]
185
+ contacts_mut = contacts
186
+ studies_mut = studies
187
+ remarks_mut = append(remarks, pattern_input_2[2])
188
+ line_number_mut = pattern_input_2[1]
189
+ continue
190
+
191
+ elif pattern_matching_result == 3:
192
+ pattern_input_3: tuple[str | None, int, FSharpList[Remark], FSharpList[Person]] = from_rows_2("Investigation Person", line_number + 1, en)
193
+ last_line_mut = pattern_input_3[0]
194
+ ontology_source_references_mut = ontology_source_references
195
+ investigation_info_mut = investigation_info
196
+ publications_mut = publications
197
+ contacts_mut = pattern_input_3[3]
198
+ studies_mut = studies
199
+ remarks_mut = append(remarks, pattern_input_3[2])
200
+ line_number_mut = pattern_input_3[1]
201
+ continue
202
+
203
+ elif pattern_matching_result == 4:
204
+ pattern_input_4: tuple[str | None, int, FSharpList[Remark], tuple[ArcStudy, FSharpList[ArcAssay]] | None] = from_rows_3(line_number + 1, en)
205
+ study: tuple[ArcStudy, FSharpList[ArcAssay]] | None = pattern_input_4[3]
206
+ new_remarks_4: FSharpList[Remark] = pattern_input_4[2]
207
+ line_number_6: int = pattern_input_4[1] or 0
208
+ current_line_4: str | None = pattern_input_4[0]
209
+ if study is not None:
210
+ last_line_mut = current_line_4
211
+ ontology_source_references_mut = ontology_source_references
212
+ investigation_info_mut = investigation_info
213
+ publications_mut = publications
214
+ contacts_mut = contacts
215
+ studies_mut = cons(value_1(study), studies)
216
+ remarks_mut = append(remarks, new_remarks_4)
217
+ line_number_mut = line_number_6
218
+ continue
219
+
220
+ else:
221
+ last_line_mut = current_line_4
222
+ ontology_source_references_mut = ontology_source_references
223
+ investigation_info_mut = investigation_info
224
+ publications_mut = publications
225
+ contacts_mut = contacts
226
+ studies_mut = studies
227
+ remarks_mut = append(remarks, new_remarks_4)
228
+ line_number_mut = line_number_6
229
+ continue
230
+
231
+
232
+ elif pattern_matching_result == 5:
233
+ if en.System_Collections_IEnumerator_MoveNext():
234
+ last_line_mut = SparseRowModule_tryGetValueAt(0, en.System_Collections_Generic_IEnumerator_1_get_Current())
235
+ ontology_source_references_mut = ontology_source_references
236
+ investigation_info_mut = investigation_info
237
+ publications_mut = publications
238
+ contacts_mut = contacts
239
+ studies_mut = studies
240
+ remarks_mut = remarks
241
+ line_number_mut = line_number
242
+ continue
243
+
244
+ else:
245
+ pattern_input_5: tuple[FSharpList[ArcStudy], FSharpList[ArcAssay]]
246
+ tupled_arg: tuple[FSharpList[ArcStudy], FSharpList[FSharpList[ArcAssay]]] = unzip(studies)
247
+ def projection(a_1: ArcAssay, last_line: Any=last_line, ontology_source_references: Any=ontology_source_references, investigation_info: Any=investigation_info, publications: Any=publications, contacts: Any=contacts, studies: Any=studies, remarks: Any=remarks, line_number: Any=line_number) -> str:
248
+ return a_1.Identifier
249
+
250
+ class ObjectExpr2020:
251
+ @property
252
+ def Equals(self) -> Callable[[str, str], bool]:
253
+ def _arrow2019(x: str, y: str) -> bool:
254
+ return x == y
255
+
256
+ return _arrow2019
257
+
258
+ @property
259
+ def GetHashCode(self) -> Callable[[str], int]:
260
+ return string_hash
261
+
262
+ pattern_input_5 = (reverse(tupled_arg[0]), List_distinctBy(projection, concat(tupled_arg[1]), ObjectExpr2020()))
263
+ return ArcInvestigation_fromParts(investigation_info, ontology_source_references, publications, contacts, pattern_input_5[0], pattern_input_5[1], remarks)
264
+
265
+
266
+ break
267
+
268
+ arc_investigation: ArcInvestigation
269
+ ignore(en.System_Collections_IEnumerator_MoveNext())
270
+ arc_investigation = loop(SparseRowModule_tryGetValueAt(0, en.System_Collections_Generic_IEnumerator_1_get_Current()), empty(), empty_investigation_info, empty(), empty(), empty(), empty(), 1)
271
+ if arc_investigation.Identifier == "":
272
+ raise Exception("Mandatory Investigation identifier is not present")
273
+
274
+ return arc_investigation
275
+
276
+
277
+ def ArcInvestigation_toRows(investigation: ArcInvestigation) -> IEnumerable_1[IEnumerable_1[tuple[int, str]]]:
278
+ def _arrow2033(__unit: None=None, investigation: Any=investigation) -> FSharpList[IEnumerable_1[tuple[int, str]]]:
279
+ remarks: FSharpList[Remark] = of_seq(investigation.Remarks)
280
+ def _arrow2031(__unit: None=None) -> IEnumerable_1[IEnumerable_1[tuple[int, str]]]:
281
+ def _arrow2030(__unit: None=None) -> IEnumerable_1[IEnumerable_1[tuple[int, str]]]:
282
+ def _arrow2029(__unit: None=None) -> IEnumerable_1[IEnumerable_1[tuple[int, str]]]:
283
+ def _arrow2028(__unit: None=None) -> IEnumerable_1[IEnumerable_1[tuple[int, str]]]:
284
+ def _arrow2027(__unit: None=None) -> IEnumerable_1[IEnumerable_1[tuple[int, str]]]:
285
+ def _arrow2026(__unit: None=None) -> IEnumerable_1[IEnumerable_1[tuple[int, str]]]:
286
+ def _arrow2025(__unit: None=None) -> IEnumerable_1[IEnumerable_1[tuple[int, str]]]:
287
+ def _arrow2024(__unit: None=None) -> IEnumerable_1[IEnumerable_1[tuple[int, str]]]:
288
+ def _arrow2023(__unit: None=None) -> IEnumerable_1[IEnumerable_1[tuple[int, str]]]:
289
+ def _arrow2022(study_identifier: str) -> IEnumerable_1[IEnumerable_1[tuple[int, str]]]:
290
+ study: ArcStudy = default_arg(investigation.TryGetStudy(study_identifier), ArcStudy(study_identifier))
291
+ def _arrow2021(__unit: None=None) -> IEnumerable_1[IEnumerable_1[tuple[int, str]]]:
292
+ return to_rows_3(study, None)
293
+
294
+ return append_1(singleton(SparseRowModule_fromValues(to_enumerable(["STUDY"]))), delay(_arrow2021))
295
+
296
+ return collect(_arrow2022, investigation.RegisteredStudyIdentifiers)
297
+
298
+ return append_1(to_rows_2("Investigation Person", of_seq(investigation.Contacts)), delay(_arrow2023))
299
+
300
+ return append_1(singleton(SparseRowModule_fromValues(to_enumerable(["INVESTIGATION CONTACTS"]))), delay(_arrow2024))
301
+
302
+ return append_1(to_rows_1("Investigation Publication", of_seq(investigation.Publications)), delay(_arrow2025))
303
+
304
+ return append_1(singleton(SparseRowModule_fromValues(to_enumerable(["INVESTIGATION PUBLICATIONS"]))), delay(_arrow2026))
305
+
306
+ return append_1(ArcInvestigation_InvestigationInfo_toRows_Z720BD3FF(investigation), delay(_arrow2027))
307
+
308
+ return append_1(singleton(SparseRowModule_fromValues(to_enumerable(["INVESTIGATION"]))), delay(_arrow2028))
309
+
310
+ return append_1(to_rows(of_seq(investigation.OntologySourceReferences)), delay(_arrow2029))
311
+
312
+ return append_1(singleton(SparseRowModule_fromValues(to_enumerable(["ONTOLOGY SOURCE REFERENCE"]))), delay(_arrow2030))
313
+
314
+ rows: IEnumerable_1[IEnumerable_1[tuple[int, str]]] = delay(_arrow2031)
315
+ try:
316
+ def mapping(remark: Remark) -> tuple[int, str]:
317
+ return Remark.to_tuple(remark)
318
+
319
+ class ObjectExpr2032:
320
+ @property
321
+ def Compare(self) -> Callable[[int, int], int]:
322
+ return compare_primitives
323
+
324
+ rm: Any = of_list(map(mapping, remarks), ObjectExpr2032())
325
+ def loop(i_mut: int, l_mut: FSharpList[IEnumerable_1[tuple[int, str]]], nl_mut: FSharpList[IEnumerable_1[tuple[int, str]]]) -> FSharpList[IEnumerable_1[tuple[int, str]]]:
326
+ while True:
327
+ (i, l, nl) = (i_mut, l_mut, nl_mut)
328
+ match_value: str | None = try_find(i, rm)
329
+ if match_value is None:
330
+ if not is_empty_1(l):
331
+ i_mut = i + 1
332
+ l_mut = tail(l)
333
+ nl_mut = cons(head(l), nl)
334
+ continue
335
+
336
+ else:
337
+ return nl
338
+
339
+
340
+ else:
341
+ remark_1: str = match_value
342
+ i_mut = i + 1
343
+ l_mut = l
344
+ nl_mut = cons(SparseRowModule_fromValues(to_enumerable([Remark_wrapRemark(remark_1)])), nl)
345
+ continue
346
+
347
+ break
348
+
349
+ return reverse(loop(1, of_seq(rows), empty()))
350
+
351
+ except Exception as match_value_1:
352
+ return to_list(rows)
353
+
354
+
355
+ return _arrow2033()
356
+
357
+
358
+ def ArcInvestigation_toMetadataCollection(investigation: ArcInvestigation) -> IEnumerable_1[IEnumerable_1[str | None]]:
359
+ def mapping(row: IEnumerable_1[tuple[int, str]], investigation: Any=investigation) -> IEnumerable_1[str | None]:
360
+ return SparseRowModule_getAllValues(row)
361
+
362
+ return map_1(mapping, ArcInvestigation_toRows(investigation))
363
+
364
+
365
+ def ArcInvestigation_fromMetadataCollection(collection: IEnumerable_1[IEnumerable_1[str | None]]) -> ArcInvestigation:
366
+ def mapping(v: IEnumerable_1[str | None], collection: Any=collection) -> IEnumerable_1[tuple[int, str]]:
367
+ return SparseRowModule_fromAllValues(v)
368
+
369
+ return ArcInvestigation_fromRows(map_1(mapping, collection))
370
+
371
+
372
+ def ArcInvestigation_isMetadataSheetName(name: str) -> bool:
373
+ if name == "isa_investigation":
374
+ return True
375
+
376
+ else:
377
+ return name == "Investigation"
378
+
379
+
380
+
381
+ def ArcInvestigation_isMetadataSheet(sheet: FsWorksheet) -> bool:
382
+ return ArcInvestigation_isMetadataSheetName(sheet.Name)
383
+
384
+
385
+ def ArcInvestigation_tryGetMetadataSheet(doc: FsWorkbook) -> FsWorksheet | None:
386
+ def predicate(sheet: FsWorksheet, doc: Any=doc) -> bool:
387
+ return ArcInvestigation_isMetadataSheet(sheet)
388
+
389
+ return try_find_1(predicate, doc.GetWorksheets())
390
+
391
+
392
+ def ARCtrl_ArcInvestigation__ArcInvestigation_fromFsWorkbook_Static_32154C9D(doc: FsWorkbook) -> ArcInvestigation:
393
+ try:
394
+ def _arrow2034(__unit: None=None) -> Array[FsRow]:
395
+ sheet_1: FsWorksheet
396
+ match_value: FsWorksheet | None = ArcInvestigation_tryGetMetadataSheet(doc)
397
+ if match_value is None:
398
+ raise Exception("Could not find metadata sheet with sheetname \"isa_investigation\" or deprecated sheetname \"Investigation\"")
399
+
400
+ else:
401
+ sheet_1 = match_value
402
+
403
+ return FsWorksheet.get_rows(sheet_1)
404
+
405
+ return ArcInvestigation_fromRows(map_1(SparseRowModule_fromFsRow, _arrow2034()))
406
+
407
+ except Exception as err:
408
+ arg: str = str(err)
409
+ return to_fail(printf("Could not read investigation from spreadsheet: %s"))(arg)
410
+
411
+
412
+
413
+ def ARCtrl_ArcInvestigation__ArcInvestigation_toFsWorkbook_Static_Z720BD3FF(investigation: ArcInvestigation) -> FsWorkbook:
414
+ try:
415
+ wb: FsWorkbook = FsWorkbook()
416
+ sheet: FsWorksheet = FsWorksheet("isa_investigation")
417
+ def action(row_i: int, r: IEnumerable_1[tuple[int, str]]) -> None:
418
+ SparseRowModule_writeToSheet(row_i + 1, r, sheet)
419
+
420
+ iterate_indexed(action, ArcInvestigation_toRows(investigation))
421
+ wb.AddWorksheet(sheet)
422
+ return wb
423
+
424
+ except Exception as err:
425
+ arg: str = str(err)
426
+ return to_fail(printf("Could not write investigation to spreadsheet: %s"))(arg)
427
+
428
+
429
+
430
+ def ARCtrl_ArcInvestigation__ArcInvestigation_ToFsWorkbook(this: ArcInvestigation) -> FsWorkbook:
431
+ return ARCtrl_ArcInvestigation__ArcInvestigation_toFsWorkbook_Static_Z720BD3FF(this)
432
+
433
+
434
+ __all__ = ["ArcInvestigation_InvestigationInfo_reflection", "ArcInvestigation_InvestigationInfo_create", "ArcInvestigation_InvestigationInfo_get_Labels", "ArcInvestigation_InvestigationInfo_FromSparseTable_3ECCA699", "ArcInvestigation_InvestigationInfo_ToSparseTable_Z720BD3FF", "ArcInvestigation_InvestigationInfo_fromRows", "ArcInvestigation_InvestigationInfo_toRows_Z720BD3FF", "ArcInvestigation_fromParts", "ArcInvestigation_fromRows", "ArcInvestigation_toRows", "ArcInvestigation_toMetadataCollection", "ArcInvestigation_fromMetadataCollection", "ArcInvestigation_isMetadataSheetName", "ArcInvestigation_isMetadataSheet", "ArcInvestigation_tryGetMetadataSheet", "ARCtrl_ArcInvestigation__ArcInvestigation_fromFsWorkbook_Static_32154C9D", "ARCtrl_ArcInvestigation__ArcInvestigation_toFsWorkbook_Static_Z720BD3FF", "ARCtrl_ArcInvestigation__ArcInvestigation_ToFsWorkbook"]
435
+