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,367 @@
1
+ from __future__ import annotations
2
+ from typing import Any
3
+ from ..Core.arc_types import ArcRun
4
+ from ..Core.comment import Comment
5
+ from ..Core.datamap import Datamap
6
+ from ..Core.Helper.collections_ import (ResizeArray_singleton, ResizeArray_map, ResizeArray_zip, ResizeArray_appendSingleton, Option_fromSeq, Option_fromValueWithDefault, ResizeArray_filter)
7
+ from ..Core.Helper.identifier import Run_cwlFileNameFromIdentifier
8
+ from ..Core.ontology_annotation import OntologyAnnotation
9
+ from ..Core.person import Person
10
+ from ..Core.Table.arc_tables import ArcTables
11
+ from ..CWL.cwlprocessing_unit import CWLProcessingUnit
12
+ from ..CWL.cwltypes import (CWLType, CWLType_file)
13
+ from ..CWL.encode import (write_yaml, encode_cwltype)
14
+ from ..CWL.inputs import (InputBinding, CWLInput)
15
+ from ..CWL.parameter_reference import CWLParameterReference
16
+ from ..FileSystem.file_system import FileSystem
17
+ from ..FileSystem.path import (combine_many, combine)
18
+ from ..ROCrate.ldcontext import LDContext
19
+ from ..ROCrate.ldobject import (LDNode, LDGraph)
20
+ from ..ROCrate.LDTypes.computational_workflow import LDComputationalWorkflow
21
+ from ..ROCrate.LDTypes.dataset import LDDataset
22
+ from ..ROCrate.LDTypes.file import LDFile
23
+ from ..ROCrate.LDTypes.formal_parameter import LDFormalParameter
24
+ from ..ROCrate.LDTypes.lab_process import LDLabProcess
25
+ from ..ROCrate.LDTypes.organization import LDOrganization
26
+ from ..ROCrate.LDTypes.property_value import LDPropertyValue
27
+ from ..ROCrate.LDTypes.workflow_invocation import LDWorkflowInvocation
28
+ from ..ROCrate.LDTypes.workflow_protocol import LDWorkflowProtocol
29
+ from ..fable_modules.fable_library.date import utc_now
30
+ from ..fable_modules.fable_library.list import of_seq
31
+ from ..fable_modules.fable_library.option import (value as value_1, default_arg, bind, map)
32
+ from ..fable_modules.fable_library.reflection import (TypeInfo, class_type)
33
+ from ..fable_modules.fable_library.seq import (exists, try_pick, find)
34
+ from ..fable_modules.fable_library.string_ import (starts_with_exact, replace, trim_start, join, to_fail, printf)
35
+ from ..fable_modules.fable_library.types import Array
36
+ from ..fable_modules.fable_library.util import equals
37
+ from .assay import AssayConversion_getDataFilesFromProcesses_6BABD1B0
38
+ from .basic import (BaseTypes_composeDefinedTerm_ZDED3A0F, BaseTypes_composePropertyValueFromOA_ZDED3A0F, BaseTypes_composeComment_Z13201A7E, BaseTypes_decomposeDefinedTerm_Z2F770004, BaseTypes_decomposePropertyValueToOA_Z2F770004, BaseTypes_decomposeComment_Z2F770004)
39
+ from .datamap import (DatamapConversion_composeFragmentDescriptors_Z892BFC3, DatamapConversion_decomposeFragmentDescriptors_Z6E59645F)
40
+ from .person import (PersonConversion_composePerson_Z64D846DC, PersonConversion_decomposePerson_Z6839B9E8)
41
+ from .table import (ARCtrl_ArcTables__ArcTables_GetProcesses_5E660E5C, ARCtrl_ArcTables__ArcTables_fromProcesses_Static_Z27F0B586)
42
+ from .workflow import (WorkflowConversion_composeWorkflowProtocolFromProcessingUnit_Z3099C0F7, WorkflowConversion_getInputParametersFromProcessingUnit_30922B92, WorkflowConversion_decomposeWorkflowProtocolToProcessingUnit_ZB11202F)
43
+
44
+ def _expr4408() -> TypeInfo:
45
+ return class_type("ARCtrl.Conversion.RunConversion", None, RunConversion)
46
+
47
+
48
+ class RunConversion:
49
+ ...
50
+
51
+ RunConversion_reflection = _expr4408
52
+
53
+ def RunConversion_formatCWLType_Z5C31A0F9(type_: CWLType) -> str:
54
+ s: str = write_yaml(encode_cwltype(type_))
55
+ return s.strip()
56
+
57
+
58
+ def RunConversion_isArrayType_Z5C31A0F9(type_: CWLType) -> bool:
59
+ if type_.tag == 11:
60
+ return True
61
+
62
+ elif type_.tag == 14:
63
+ def predicate(_arg: CWLType, type_: Any=type_) -> bool:
64
+ if _arg.tag == 11:
65
+ return True
66
+
67
+ else:
68
+ return False
69
+
70
+
71
+ return exists(predicate, type_.fields[0])
72
+
73
+ else:
74
+ return False
75
+
76
+
77
+
78
+ def RunConversion_composeCWLInputFilePath_Z384F8060(path: str, run_name: str) -> str:
79
+ if starts_with_exact(path, "../.."):
80
+ return replace(replace(path, "../../", ""), "../..", "")
81
+
82
+ else:
83
+ return combine_many(["runs", run_name, path])
84
+
85
+
86
+
87
+ def RunConversion_decomposeCWLInputFilePath_Z384F8060(path: str, run_name: str) -> str:
88
+ prefix: str = combine_many(["runs", run_name])
89
+ if starts_with_exact(path, prefix):
90
+ return trim_start(replace(path, prefix, ""), "/")
91
+
92
+ else:
93
+ return combine("../..", path)
94
+
95
+
96
+
97
+ def RunConversion_composeCWLInputValue_70DD9184(input_value: CWLParameterReference, example_of_work: LDNode, input_param: CWLInput, run_name: str) -> LDNode:
98
+ if input_param.Type_ is None:
99
+ raise Exception(((("Cannot convert param values \"" + str(input_value.Values)) + "\" as Input parameter \"") + input_param.Name) + "\" has no type.")
100
+
101
+ type_: CWLType = value_1(input_param.Type_)
102
+ if input_value.Type is not None:
103
+ if not equals(value_1(input_value.Type), type_):
104
+ raise Exception(((((("Type (" + RunConversion_formatCWLType_Z5C31A0F9(value_1(input_value.Type))) + ") of yml input value \"") + input_value.Key) + "\" does not match type of workflow input parameter (") + RunConversion_formatCWLType_Z5C31A0F9(type_)) + ").")
105
+
106
+
107
+ (pattern_matching_result,) = (None,)
108
+ if type_.tag == 0:
109
+ if len(input_value.Values) == 1:
110
+ pattern_matching_result = 0
111
+
112
+ elif RunConversion_isArrayType_Z5C31A0F9(type_):
113
+ pattern_matching_result = 1
114
+
115
+ else:
116
+ pattern_matching_result = 2
117
+
118
+
119
+ elif RunConversion_isArrayType_Z5C31A0F9(type_):
120
+ pattern_matching_result = 1
121
+
122
+ else:
123
+ pattern_matching_result = 2
124
+
125
+ if pattern_matching_result == 0:
126
+ path: str = RunConversion_composeCWLInputFilePath_Z384F8060(input_value.Values[0], run_name)
127
+ return LDFile.create_cwlparameter(path, example_of_work)
128
+
129
+ elif pattern_matching_result == 1:
130
+ def binder(ib: InputBinding, input_value: Any=input_value, example_of_work: Any=example_of_work, input_param: Any=input_param, run_name: Any=run_name) -> str | None:
131
+ return ib.ItemSeparator
132
+
133
+ values: str = join(default_arg(bind(binder, input_param.InputBinding), ","), input_value.Values)
134
+ return LDPropertyValue.create_cwlparameter(example_of_work, input_value.Key, ResizeArray_singleton(values))
135
+
136
+ elif pattern_matching_result == 2:
137
+ return LDPropertyValue.create_cwlparameter(example_of_work, input_value.Key, input_value.Values)
138
+
139
+
140
+
141
+ def RunConversion_decomposeCWLInputValue_Z1346FE9D(input_value: LDNode, run_name: str, context: LDContext | None=None, graph: LDGraph | None=None) -> CWLParameterReference:
142
+ example_of_work: LDNode
143
+ match_value: LDNode | None = LDFile.try_get_example_of_work_as_formal_parameter(input_value, graph, context)
144
+ if match_value is None:
145
+ arg: str = input_value.Id
146
+ example_of_work = to_fail(printf("Input value %s of run %s must have an exampleOfWork property pointing to a CWL formal parameter."))(arg)(run_name)
147
+
148
+ else:
149
+ example_of_work = match_value
150
+
151
+ key: str = LDFormalParameter.get_name_as_string(example_of_work, context)
152
+ if LDFile.validate_cwlparameter(input_value, context):
153
+ return CWLParameterReference(key, [RunConversion_decomposeCWLInputFilePath_Z384F8060(input_value.Id, run_name)], CWLType_file())
154
+
155
+ elif LDPropertyValue.validate_cwlparameter(input_value, context):
156
+ return CWLParameterReference(key, LDPropertyValue.get_values_as_string(input_value, context))
157
+
158
+ else:
159
+ arg_2: str = input_value.Id
160
+ return to_fail(printf("Input value %s of run %s is neither a CWL File nor a CWL Parameter."))(arg_2)(run_name)
161
+
162
+
163
+
164
+ def RunConversion_composeWorkflowInvocationFromArcRun_Z8CC08AC(run: ArcRun, fs: FileSystem | None=None) -> Array[LDNode]:
165
+ workflow_protocol: LDNode
166
+ workflow_file_path: str = Run_cwlFileNameFromIdentifier(run.Identifier)
167
+ match_value: CWLProcessingUnit | None = run.CWLDescription
168
+ if match_value is None:
169
+ arg: str = run.Identifier
170
+ workflow_protocol = to_fail(printf("Run %s must have a CWL description"))(arg)
171
+
172
+ else:
173
+ workflow_protocol = WorkflowConversion_composeWorkflowProtocolFromProcessingUnit_Z3099C0F7(workflow_file_path, match_value, None, run.Identifier)
174
+
175
+ def f(tupled_arg: tuple[CWLInput, LDNode], run: Any=run, fs: Any=fs) -> LDNode:
176
+ ld_i: LDNode = tupled_arg[1]
177
+ name: str = LDFormalParameter.get_name_as_string(ld_i, workflow_protocol.TryGetContext())
178
+ def chooser(i_1: CWLParameterReference, tupled_arg: Any=tupled_arg) -> CWLParameterReference | None:
179
+ if i_1.Key == name:
180
+ return i_1
181
+
182
+ else:
183
+ return None
184
+
185
+
186
+ param_ref: CWLParameterReference | None = try_pick(chooser, run.CWLInput)
187
+ if param_ref is None:
188
+ raise Exception(((("Could not create workflow invocation for run \"" + run.Identifier) + "\": Workflow parameter \"") + name) + "\" had no assigned value.")
189
+
190
+ else:
191
+ return RunConversion_composeCWLInputValue_70DD9184(param_ref, ld_i, tupled_arg[0], run.Identifier)
192
+
193
+
194
+ def _arrow4409(__unit: None=None, run: Any=run, fs: Any=fs) -> Array[tuple[CWLInput, LDNode]]:
195
+ b: Array[LDNode] = LDComputationalWorkflow.get_inputs_as_formal_parameters(workflow_protocol, None, workflow_protocol.TryGetContext())
196
+ return ResizeArray_zip(WorkflowConversion_getInputParametersFromProcessingUnit_30922B92(value_1(run.CWLDescription)), b)
197
+
198
+ input_params: Array[LDNode] = ResizeArray_map(f, _arrow4409())
199
+ process_sequence: Array[LDNode] = list(ARCtrl_ArcTables__ArcTables_GetProcesses_5E660E5C(ArcTables(run.Tables), None, None, fs))
200
+ main_invocation: LDNode = LDWorkflowInvocation.create(run.Identifier, workflow_protocol, input_params, None, None, None, None, None, None, workflow_protocol)
201
+ if len(process_sequence) == 0:
202
+ return ResizeArray_singleton(main_invocation)
203
+
204
+ else:
205
+ def f_1(p: LDNode, run: Any=run, fs: Any=fs) -> LDNode:
206
+ id: str = replace(p.Id, "Process", ("WorkflowInvocation_" + run.Identifier) + "")
207
+ name_1: str = LDLabProcess.get_name_as_string(p, p.TryGetContext())
208
+ inputs: Array[LDNode] = LDLabProcess.get_objects(p)
209
+ results: Array[LDNode] | None = Option_fromSeq(LDLabProcess.get_results(p))
210
+ protocol: LDNode | None = LDLabProcess.try_get_executes_lab_protocol(p)
211
+ parameter_values: Array[LDNode] | None = Option_fromSeq(LDLabProcess.get_parameter_values(p))
212
+ def mapping(a_3: LDNode, p: Any=p) -> Array[LDNode]:
213
+ return ResizeArray_singleton(a_3)
214
+
215
+ agents: Array[LDNode] | None = map(mapping, LDLabProcess.try_get_agent(p))
216
+ disambiguating_descriptions: Array[str] | None = Option_fromSeq(LDLabProcess.get_disambiguating_descriptions_as_string(p))
217
+ return LDWorkflowInvocation.create(name_1, workflow_protocol, inputs, results, None, agents, id, None, disambiguating_descriptions, protocol, parameter_values)
218
+
219
+ return ResizeArray_appendSingleton(main_invocation, ResizeArray_map(f_1, process_sequence))
220
+
221
+
222
+
223
+ def RunConversion_decomposeMainWorkflowInvocation_Z1346FE9D(workflow_invocation: LDNode, run_name: str, context: LDContext | None=None, graph: LDGraph | None=None) -> tuple[CWLProcessingUnit, Array[CWLParameterReference]]:
224
+ def _arrow4410(__unit: None=None, workflow_invocation: Any=workflow_invocation, run_name: Any=run_name, context: Any=context, graph: Any=graph) -> CWLProcessingUnit:
225
+ match_value: LDNode | None = LDLabProcess.try_get_executes_lab_protocol(workflow_invocation, graph, context)
226
+ if match_value is None:
227
+ raise Exception(("Could not decompose workflow invocation for run \"" + run_name) + "\": Workflow parameter \"name\" had no assigned value.")
228
+
229
+ else:
230
+ return WorkflowConversion_decomposeWorkflowProtocolToProcessingUnit_ZB11202F(match_value, None, context, graph)
231
+
232
+
233
+ def f(iv: LDNode, workflow_invocation: Any=workflow_invocation, run_name: Any=run_name, context: Any=context, graph: Any=graph) -> CWLParameterReference:
234
+ return RunConversion_decomposeCWLInputValue_Z1346FE9D(iv, run_name, context, graph)
235
+
236
+ return (_arrow4410(), ResizeArray_map(f, LDLabProcess.get_objects(workflow_invocation, graph, context)))
237
+
238
+
239
+ def RunConversion_composeRun_Z8CC08AC(run: ArcRun, fs: FileSystem | None=None) -> LDNode:
240
+ workflow_protocol: LDNode
241
+ workflow_file_path: str = Run_cwlFileNameFromIdentifier(run.Identifier)
242
+ match_value: CWLProcessingUnit | None = run.CWLDescription
243
+ if match_value is None:
244
+ arg: str = run.Identifier
245
+ workflow_protocol = to_fail(printf("Run %s must have a CWL description"))(arg)
246
+
247
+ else:
248
+ workflow_protocol = WorkflowConversion_composeWorkflowProtocolFromProcessingUnit_Z3099C0F7(workflow_file_path, match_value, None, run.Identifier)
249
+
250
+ workflow_invocations: Array[LDNode] | None = Option_fromSeq(RunConversion_composeWorkflowInvocationFromArcRun_Z8CC08AC(run, fs))
251
+ def mapping(term: OntologyAnnotation, run: Any=run, fs: Any=fs) -> LDNode:
252
+ return BaseTypes_composeDefinedTerm_ZDED3A0F(term)
253
+
254
+ measurement_method: LDNode | None = map(mapping, run.TechnologyType)
255
+ def mapping_1(term_1: OntologyAnnotation, run: Any=run, fs: Any=fs) -> LDNode:
256
+ return BaseTypes_composeDefinedTerm_ZDED3A0F(term_1)
257
+
258
+ measurement_technique: LDNode | None = map(mapping_1, run.TechnologyPlatform)
259
+ def mapping_2(term_2: OntologyAnnotation, run: Any=run, fs: Any=fs) -> LDNode:
260
+ return BaseTypes_composePropertyValueFromOA_ZDED3A0F(term_2)
261
+
262
+ variable_measured: LDNode | None = map(mapping_2, run.MeasurementType)
263
+ def f(c: Person, run: Any=run, fs: Any=fs) -> LDNode:
264
+ return PersonConversion_composePerson_Z64D846DC(c)
265
+
266
+ creators: Array[LDNode] | None = Option_fromSeq(ResizeArray_map(f, run.Performers))
267
+ publisher: LDNode = LDOrganization.create("DataPLANT")
268
+ date_created: Any = utc_now()
269
+ if creators is not None:
270
+ LDComputationalWorkflow.set_creators(workflow_protocol, value_1(creators))
271
+
272
+ LDComputationalWorkflow.set_sd_publisher(workflow_protocol, publisher)
273
+ LDComputationalWorkflow.set_date_created_as_date_time(workflow_protocol, date_created)
274
+ def mapping_3(datamap: Datamap, run: Any=run, fs: Any=fs) -> Array[LDNode]:
275
+ return DatamapConversion_composeFragmentDescriptors_Z892BFC3(datamap)
276
+
277
+ fragment_descriptors: Array[LDNode] | None = map(mapping_3, run.Datamap)
278
+ def mapping_4(ps: Array[LDNode], run: Any=run, fs: Any=fs) -> Array[LDNode]:
279
+ return AssayConversion_getDataFilesFromProcesses_6BABD1B0(ps, fragment_descriptors)
280
+
281
+ data_files: Array[LDNode] | None = map(mapping_4, workflow_invocations)
282
+ has_parts: Array[LDNode] | None = ResizeArray_singleton(workflow_protocol) if (data_files is None) else ResizeArray_appendSingleton(workflow_protocol, data_files)
283
+ def _arrow4411(__unit: None=None, run: Any=run, fs: Any=fs) -> Array[LDNode] | None:
284
+ fds_1: Array[LDNode] = fragment_descriptors
285
+ return fds_1
286
+
287
+ def _arrow4412(__unit: None=None, run: Any=run, fs: Any=fs) -> Array[LDNode] | None:
288
+ vm_1: LDNode = variable_measured
289
+ return ResizeArray_singleton(vm_1)
290
+
291
+ def _arrow4413(__unit: None=None, run: Any=run, fs: Any=fs) -> Array[LDNode] | None:
292
+ fds: Array[LDNode] = fragment_descriptors
293
+ vm: LDNode = variable_measured
294
+ return ResizeArray_appendSingleton(vm, fds)
295
+
296
+ variable_measureds: Array[LDNode] | None = (None if (fragment_descriptors is None) else _arrow4411()) if (variable_measured is None) else (_arrow4412() if (fragment_descriptors is None) else _arrow4413())
297
+ def f_1(c_1: Comment, run: Any=run, fs: Any=fs) -> LDNode:
298
+ return BaseTypes_composeComment_Z13201A7E(c_1)
299
+
300
+ comments: Array[LDNode] | None = Option_fromSeq(ResizeArray_map(f_1, run.Comments))
301
+ return LDDataset.create_arcrun(run.Identifier, ResizeArray_singleton(workflow_protocol), None, run.Title, run.Description, creators, has_parts, measurement_method, measurement_technique, variable_measureds, workflow_invocations, workflow_invocations, comments)
302
+
303
+
304
+ def RunConversion_decomposeRun_Z6839B9E8(run: LDNode, graph: LDGraph | None=None, context: LDContext | None=None) -> ArcRun:
305
+ workflow_protocol: LDNode | None = LDDataset.try_get_main_entity_as_workflow_protocol(run, graph, context)
306
+ def predicate(wi: LDNode, run: Any=run, graph: Any=graph, context: Any=context) -> bool:
307
+ match_value: LDNode | None = LDLabProcess.try_get_executes_lab_protocol(wi, graph, context)
308
+ (pattern_matching_result,) = (None,)
309
+ if match_value is not None:
310
+ def _arrow4415(__unit: None=None, wi: Any=wi) -> bool:
311
+ lp: LDNode = match_value
312
+ return LDWorkflowProtocol.validate(lp, context)
313
+
314
+ if _arrow4415():
315
+ pattern_matching_result = 0
316
+
317
+ else:
318
+ pattern_matching_result = 1
319
+
320
+
321
+ else:
322
+ pattern_matching_result = 1
323
+
324
+ if pattern_matching_result == 0:
325
+ return True
326
+
327
+ elif pattern_matching_result == 1:
328
+ return False
329
+
330
+
331
+ main_workflow_invocation: LDNode = find(predicate, LDDataset.get_abouts_as_workflow_invocation(run, graph, context))
332
+ def f(iv: LDNode, run: Any=run, graph: Any=graph, context: Any=context) -> CWLParameterReference:
333
+ return RunConversion_decomposeCWLInputValue_Z1346FE9D(iv, LDDataset.get_identifier_as_string(run, context), context, graph)
334
+
335
+ pattern_input: tuple[CWLProcessingUnit, Array[CWLParameterReference]] = RunConversion_decomposeMainWorkflowInvocation_Z1346FE9D(main_workflow_invocation, LDDataset.get_identifier_as_string(run, context), context, graph) if (workflow_protocol is None) else ((WorkflowConversion_decomposeWorkflowProtocolToProcessingUnit_ZB11202F(workflow_protocol, None, context, graph), ResizeArray_map(f, LDLabProcess.get_objects(main_workflow_invocation, graph, context))))
336
+ def mapping(m: LDNode, run: Any=run, graph: Any=graph, context: Any=context) -> OntologyAnnotation:
337
+ return BaseTypes_decomposeDefinedTerm_Z2F770004(m, context)
338
+
339
+ measurement_method: OntologyAnnotation | None = map(mapping, LDDataset.try_get_measurement_method_as_defined_term(run, graph, context))
340
+ def mapping_1(m_1: LDNode, run: Any=run, graph: Any=graph, context: Any=context) -> OntologyAnnotation:
341
+ return BaseTypes_decomposeDefinedTerm_Z2F770004(m_1, context)
342
+
343
+ measurement_technique: OntologyAnnotation | None = map(mapping_1, LDDataset.try_get_measurement_technique_as_defined_term(run, graph, context))
344
+ def mapping_2(v: LDNode, run: Any=run, graph: Any=graph, context: Any=context) -> OntologyAnnotation:
345
+ return BaseTypes_decomposePropertyValueToOA_Z2F770004(v, context)
346
+
347
+ variable_measured: OntologyAnnotation | None = map(mapping_2, LDDataset.try_get_variable_measured_as_measurement_type(run, graph, context))
348
+ def f_1(c: LDNode, run: Any=run, graph: Any=graph, context: Any=context) -> Person:
349
+ return PersonConversion_decomposePerson_Z6839B9E8(c, graph, context)
350
+
351
+ contacts: Array[Person] = ResizeArray_map(f_1, LDDataset.get_creators(run, graph, context))
352
+ def f_2(c_1: LDNode, run: Any=run, graph: Any=graph, context: Any=context) -> Comment:
353
+ return BaseTypes_decomposeComment_Z2F770004(c_1, context)
354
+
355
+ comments: Array[Comment] = ResizeArray_map(f_2, LDDataset.get_comments(run, graph, context))
356
+ datamap: Datamap | None
357
+ v_1: Datamap = DatamapConversion_decomposeFragmentDescriptors_Z6E59645F(LDDataset.get_variable_measured_as_fragment_descriptors(run, graph, context), graph, context)
358
+ datamap = Option_fromValueWithDefault(Datamap.init(), v_1)
359
+ def f_3(wi_1: LDNode, run: Any=run, graph: Any=graph, context: Any=context) -> bool:
360
+ return wi_1.Id != main_workflow_invocation.Id
361
+
362
+ tables: ArcTables = ARCtrl_ArcTables__ArcTables_fromProcesses_Static_Z27F0B586(of_seq(ResizeArray_filter(f_3, LDDataset.get_abouts_as_lab_process(run, graph, context))), graph, context)
363
+ return ArcRun.create(LDDataset.get_identifier_as_string(run, context), LDDataset.try_get_name_as_string(run, context), LDDataset.try_get_description_as_string(run, context), variable_measured, measurement_method, measurement_technique, None, tables.Tables, datamap, contacts, pattern_input[0], pattern_input[1], comments)
364
+
365
+
366
+ __all__ = ["RunConversion_reflection", "RunConversion_formatCWLType_Z5C31A0F9", "RunConversion_isArrayType_Z5C31A0F9", "RunConversion_composeCWLInputFilePath_Z384F8060", "RunConversion_decomposeCWLInputFilePath_Z384F8060", "RunConversion_composeCWLInputValue_70DD9184", "RunConversion_decomposeCWLInputValue_Z1346FE9D", "RunConversion_composeWorkflowInvocationFromArcRun_Z8CC08AC", "RunConversion_decomposeMainWorkflowInvocation_Z1346FE9D", "RunConversion_composeRun_Z8CC08AC", "RunConversion_decomposeRun_Z6839B9E8"]
367
+
@@ -0,0 +1,163 @@
1
+ from __future__ import annotations
2
+ from typing import Any
3
+ from ..Core.comment import Comment
4
+ from ..Core.Helper.collections_ import (ResizeArray_map, Option_fromSeq, ResizeArray_tryPick)
5
+ from ..Core.ontology_annotation import OntologyAnnotation
6
+ from ..Core.publication import Publication
7
+ from ..Json.ROCrate.ldnode import (decoder as decoder_1, encoder)
8
+ from ..ROCrate.ldcontext import LDContext
9
+ from ..ROCrate.ldobject import (LDNode, LDGraph)
10
+ from ..ROCrate.LDTypes.person import LDPerson
11
+ from ..ROCrate.LDTypes.property_value import LDPropertyValue
12
+ from ..ROCrate.LDTypes.scholarly_article import LDScholarlyArticle
13
+ from ..fable_modules.thoth_json_python.decode import Decode_fromString
14
+ from ..fable_modules.thoth_json_python.encode import to_string as to_string_1
15
+ from ..fable_modules.fable_library.option import (map as map_1, value as value_4)
16
+ from ..fable_modules.fable_library.reflection import (TypeInfo, class_type)
17
+ from ..fable_modules.fable_library.result import FSharpResult_2
18
+ from ..fable_modules.fable_library.seq import (map, is_empty, filter, to_list, delay, append, singleton, empty)
19
+ from ..fable_modules.fable_library.string_ import (to_text, printf, join)
20
+ from ..fable_modules.fable_library.system_text import (StringBuilder__ctor, StringBuilder__Append_244C7CD6, StringBuilder__Clear)
21
+ from ..fable_modules.fable_library.types import (Array, to_string)
22
+ from ..fable_modules.fable_library.util import (ignore, get_enumerator, IEnumerable_1)
23
+ from .basic import (BaseTypes_composeComment_Z13201A7E, BaseTypes_composeDefinedTerm_ZDED3A0F, BaseTypes_decomposeComment_Z2F770004, BaseTypes_decomposeDefinedTerm_Z2F770004)
24
+
25
+ def _expr4379() -> TypeInfo:
26
+ return class_type("ARCtrl.Conversion.ScholarlyArticleConversion", None, ScholarlyArticleConversion)
27
+
28
+
29
+ class ScholarlyArticleConversion:
30
+ ...
31
+
32
+ ScholarlyArticleConversion_reflection = _expr4379
33
+
34
+ def ScholarlyArticleConversion_composeAuthor_Z721C83C5(author: str) -> LDNode:
35
+ try:
36
+ match_value: FSharpResult_2[LDNode, str] = Decode_fromString(decoder_1, author)
37
+ if match_value.tag == 1:
38
+ raise Exception(to_text(printf("Error decoding string: %O"))(match_value.fields[0]))
39
+
40
+ else:
41
+ return match_value.fields[0]
42
+
43
+
44
+ except Exception as match_value_1:
45
+ return LDPerson.create(author)
46
+
47
+
48
+
49
+ def ScholarlyArticleConversion_splitAuthors_Z721C83C5(a: str) -> Array[str]:
50
+ bracket_count: int = 0
51
+ authors: Array[str] = []
52
+ sb: Any = StringBuilder__ctor()
53
+ with get_enumerator(list(a)) as enumerator:
54
+ while enumerator.System_Collections_IEnumerator_MoveNext():
55
+ c: str = enumerator.System_Collections_Generic_IEnumerator_1_get_Current()
56
+ if c == "{":
57
+ bracket_count = (bracket_count + 1) or 0
58
+ ignore(StringBuilder__Append_244C7CD6(sb, c))
59
+
60
+ elif c == "}":
61
+ bracket_count = (bracket_count - 1) or 0
62
+ ignore(StringBuilder__Append_244C7CD6(sb, c))
63
+
64
+ elif (bracket_count == 0) if (c == ",") else False:
65
+ (authors.append(to_string(sb)))
66
+ ignore(StringBuilder__Clear(sb))
67
+
68
+ else:
69
+ ignore(StringBuilder__Append_244C7CD6(sb, c))
70
+
71
+ (authors.append(to_string(sb)))
72
+ return authors
73
+
74
+
75
+ def ScholarlyArticleConversion_composeAuthors_Z721C83C5(authors: str) -> Array[LDNode]:
76
+ def mapping(author: str, authors: Any=authors) -> LDNode:
77
+ return ScholarlyArticleConversion_composeAuthor_Z721C83C5(author)
78
+
79
+ return list(map(mapping, ScholarlyArticleConversion_splitAuthors_Z721C83C5(authors)))
80
+
81
+
82
+ def ScholarlyArticleConversion_decomposeAuthor_Z2F770004(author: LDNode, context: LDContext | None=None) -> str:
83
+ def predicate(n: str, author: Any=author, context: Any=context) -> bool:
84
+ return n != LDPerson.given_name()
85
+
86
+ if is_empty(filter(predicate, author.GetPropertyNames(context))):
87
+ return LDPerson.get_given_name_as_string(author, context)
88
+
89
+ else:
90
+ return to_string_1(0, encoder(author))
91
+
92
+
93
+
94
+ def ScholarlyArticleConversion_decomposeAuthors_1AAAE9A5(authors: Array[LDNode], context: LDContext | None=None) -> str:
95
+ def f(a: LDNode, authors: Any=authors, context: Any=context) -> str:
96
+ return ScholarlyArticleConversion_decomposeAuthor_Z2F770004(a, context)
97
+
98
+ return join(",", ResizeArray_map(f, authors))
99
+
100
+
101
+ def ScholarlyArticleConversion_composeScholarlyArticle_D324A6D(publication: Publication) -> LDNode:
102
+ title: str
103
+ match_value: str | None = publication.Title
104
+ if match_value is None:
105
+ raise Exception("Publication must have a title")
106
+
107
+ else:
108
+ title = match_value
109
+
110
+ def mapping(authors: str, publication: Any=publication) -> Array[LDNode]:
111
+ return ScholarlyArticleConversion_composeAuthors_Z721C83C5(authors)
112
+
113
+ authors_1: Array[LDNode] | None = map_1(mapping, publication.Authors)
114
+ def f(comment: Comment, publication: Any=publication) -> LDNode:
115
+ return BaseTypes_composeComment_Z13201A7E(comment)
116
+
117
+ comments: Array[LDNode] | None = Option_fromSeq(ResizeArray_map(f, publication.Comments))
118
+ def _arrow4381(__unit: None=None, publication: Any=publication) -> IEnumerable_1[LDNode]:
119
+ def _arrow4380(__unit: None=None) -> IEnumerable_1[LDNode]:
120
+ return singleton(LDPropertyValue.create_pub_med_id(value_4(publication.PubMedID))) if ((value_4(publication.PubMedID) != "") if (publication.PubMedID is not None) else False) else empty()
121
+
122
+ return append(singleton(LDPropertyValue.create_doi(value_4(publication.DOI))) if ((value_4(publication.DOI) != "") if (publication.DOI is not None) else False) else empty(), delay(_arrow4380))
123
+
124
+ identifiers: Array[LDNode] = list(to_list(delay(_arrow4381)))
125
+ def mapping_1(term: OntologyAnnotation, publication: Any=publication) -> LDNode:
126
+ return BaseTypes_composeDefinedTerm_ZDED3A0F(term)
127
+
128
+ status: LDNode | None = map_1(mapping_1, publication.Status)
129
+ return LDScholarlyArticle.create(title, identifiers, None, authors_1, None, status, comments)
130
+
131
+
132
+ def ScholarlyArticleConversion_decomposeScholarlyArticle_Z6839B9E8(sa: LDNode, graph: LDGraph | None=None, context: LDContext | None=None) -> Publication:
133
+ title: str = LDScholarlyArticle.get_headline_as_string(sa, context)
134
+ def mapping(a: Array[LDNode], sa: Any=sa, graph: Any=graph, context: Any=context) -> str:
135
+ return ScholarlyArticleConversion_decomposeAuthors_1AAAE9A5(a, context)
136
+
137
+ authors: str | None = map_1(mapping, Option_fromSeq(LDScholarlyArticle.get_authors(sa, graph, context)))
138
+ def f(c: LDNode, sa: Any=sa, graph: Any=graph, context: Any=context) -> Comment:
139
+ return BaseTypes_decomposeComment_Z2F770004(c, context)
140
+
141
+ comments: Array[Comment] = ResizeArray_map(f, LDScholarlyArticle.get_comments(sa, graph, context))
142
+ def mapping_1(s: LDNode, sa: Any=sa, graph: Any=graph, context: Any=context) -> OntologyAnnotation:
143
+ return BaseTypes_decomposeDefinedTerm_Z2F770004(s, context)
144
+
145
+ status: OntologyAnnotation | None = map_1(mapping_1, LDScholarlyArticle.try_get_creative_work_status(sa, graph, context))
146
+ identifiers: Array[LDNode] = LDScholarlyArticle.get_identifiers_as_property_value(sa, graph, context)
147
+ doi: str | None
148
+ def f_1(i: LDNode, sa: Any=sa, graph: Any=graph, context: Any=context) -> str | None:
149
+ return LDPropertyValue.try_get_as_doi(i, context)
150
+
151
+ _arg: str | None = ResizeArray_tryPick(f_1, identifiers)
152
+ doi = LDScholarlyArticle.try_get_same_as_as_string(sa, context) if (_arg is None) else _arg
153
+ pub_med_id: str | None
154
+ def f_2(i_1: LDNode, sa: Any=sa, graph: Any=graph, context: Any=context) -> str | None:
155
+ return LDPropertyValue.try_get_as_pub_med_id(i_1, context)
156
+
157
+ _arg_1: str | None = ResizeArray_tryPick(f_2, identifiers)
158
+ pub_med_id = LDScholarlyArticle.try_get_url_as_string(sa, context) if (_arg_1 is None) else _arg_1
159
+ return Publication.create(pub_med_id, doi, authors, title, status, comments)
160
+
161
+
162
+ __all__ = ["ScholarlyArticleConversion_reflection", "ScholarlyArticleConversion_composeAuthor_Z721C83C5", "ScholarlyArticleConversion_splitAuthors_Z721C83C5", "ScholarlyArticleConversion_composeAuthors_Z721C83C5", "ScholarlyArticleConversion_decomposeAuthor_Z2F770004", "ScholarlyArticleConversion_decomposeAuthors_1AAAE9A5", "ScholarlyArticleConversion_composeScholarlyArticle_D324A6D", "ScholarlyArticleConversion_decomposeScholarlyArticle_Z6839B9E8"]
163
+
@@ -0,0 +1,99 @@
1
+ from __future__ import annotations
2
+ from typing import Any
3
+ from ..Core.arc_types import ArcStudy
4
+ from ..Core.comment import Comment
5
+ from ..Core.datamap import Datamap
6
+ from ..Core.Helper.collections_ import (Option_fromSeq, ResizeArray_map, Option_fromValueWithDefault)
7
+ from ..Core.person import Person
8
+ from ..Core.publication import Publication
9
+ from ..Core.Table.arc_tables import ArcTables
10
+ from ..FileSystem.file_system import FileSystem
11
+ from ..ROCrate.ldcontext import LDContext
12
+ from ..ROCrate.ldobject import (LDNode, LDGraph)
13
+ from ..ROCrate.LDTypes.dataset import LDDataset
14
+ from ..fable_modules.fable_library.date import now
15
+ from ..fable_modules.fable_library.list import of_seq
16
+ from ..fable_modules.fable_library.option import (bind, map)
17
+ from ..fable_modules.fable_library.reflection import (TypeInfo, class_type)
18
+ from ..fable_modules.fable_library.types import Array
19
+ from .assay import AssayConversion_getDataFilesFromProcesses_6BABD1B0
20
+ from .basic import (BaseTypes_composeComment_Z13201A7E, BaseTypes_decomposeComment_Z2F770004)
21
+ from .datamap import (DatamapConversion_composeFragmentDescriptors_Z892BFC3, DatamapConversion_decomposeFragmentDescriptors_Z6E59645F)
22
+ from .date_time import (try_from_string, to_string)
23
+ from .person import (PersonConversion_composePerson_Z64D846DC, PersonConversion_decomposePerson_Z6839B9E8)
24
+ from .scholarly_article import (ScholarlyArticleConversion_composeScholarlyArticle_D324A6D, ScholarlyArticleConversion_decomposeScholarlyArticle_Z6839B9E8)
25
+ from .table import (ARCtrl_ArcTables__ArcTables_GetProcesses_5E660E5C, ARCtrl_ArcTables__ArcTables_fromProcesses_Static_Z27F0B586)
26
+
27
+ def _expr4403() -> TypeInfo:
28
+ return class_type("ARCtrl.Conversion.StudyConversion", None, StudyConversion)
29
+
30
+
31
+ class StudyConversion:
32
+ ...
33
+
34
+ StudyConversion_reflection = _expr4403
35
+
36
+ def StudyConversion_composeStudy_ZFE0E38E(study: ArcStudy, fs: FileSystem | None=None) -> LDNode:
37
+ def _arrow4404(s: str, study: Any=study, fs: Any=fs) -> Any | None:
38
+ return try_from_string(s)
39
+
40
+ date_created: Any | None = bind(_arrow4404, study.SubmissionDate)
41
+ def _arrow4405(s_1: str, study: Any=study, fs: Any=fs) -> Any | None:
42
+ return try_from_string(s_1)
43
+
44
+ date_published: Any | None = bind(_arrow4405, study.PublicReleaseDate)
45
+ date_modified: Any = now()
46
+ def f(p: Publication, study: Any=study, fs: Any=fs) -> LDNode:
47
+ return ScholarlyArticleConversion_composeScholarlyArticle_D324A6D(p)
48
+
49
+ publications: Array[LDNode] | None = Option_fromSeq(ResizeArray_map(f, study.Publications))
50
+ def f_1(c: Person, study: Any=study, fs: Any=fs) -> LDNode:
51
+ return PersonConversion_composePerson_Z64D846DC(c)
52
+
53
+ creators: Array[LDNode] | None = Option_fromSeq(ResizeArray_map(f_1, study.Contacts))
54
+ process_sequence: Array[LDNode] | None = Option_fromSeq(list(ARCtrl_ArcTables__ArcTables_GetProcesses_5E660E5C(ArcTables(study.Tables), None, study.Identifier, fs)))
55
+ def mapping(datamap: Datamap, study: Any=study, fs: Any=fs) -> Array[LDNode]:
56
+ return DatamapConversion_composeFragmentDescriptors_Z892BFC3(datamap)
57
+
58
+ fragment_descriptors: Array[LDNode] | None = map(mapping, study.Datamap)
59
+ def mapping_1(ps: Array[LDNode], study: Any=study, fs: Any=fs) -> Array[LDNode]:
60
+ return AssayConversion_getDataFilesFromProcesses_6BABD1B0(ps, fragment_descriptors)
61
+
62
+ data_files: Array[LDNode] | None = map(mapping_1, process_sequence)
63
+ def f_2(c_1: Comment, study: Any=study, fs: Any=fs) -> LDNode:
64
+ return BaseTypes_composeComment_Z13201A7E(c_1)
65
+
66
+ comments: Array[LDNode] | None = Option_fromSeq(ResizeArray_map(f_2, study.Comments))
67
+ return LDDataset.create_study(study.Identifier, None, creators, date_created, date_published, date_modified, study.Description, data_files, study.Title, publications, fragment_descriptors, comments, None, process_sequence)
68
+
69
+
70
+ def StudyConversion_decomposeStudy_Z6839B9E8(study: LDNode, graph: LDGraph | None=None, context: LDContext | None=None) -> ArcStudy:
71
+ def _arrow4406(d: Any, study: Any=study, graph: Any=graph, context: Any=context) -> str:
72
+ return to_string(d)
73
+
74
+ date_created: str | None = map(_arrow4406, LDDataset.try_get_date_created_as_date_time(study, context))
75
+ def _arrow4407(d_1: Any, study: Any=study, graph: Any=graph, context: Any=context) -> str:
76
+ return to_string(d_1)
77
+
78
+ date_published: str | None = map(_arrow4407, LDDataset.try_get_date_published_as_date_time(study, context))
79
+ def f(p: LDNode, study: Any=study, graph: Any=graph, context: Any=context) -> Publication:
80
+ return ScholarlyArticleConversion_decomposeScholarlyArticle_Z6839B9E8(p, graph, context)
81
+
82
+ publications: Array[Publication] = ResizeArray_map(f, LDDataset.get_citations(study, graph, context))
83
+ def f_1(c: LDNode, study: Any=study, graph: Any=graph, context: Any=context) -> Person:
84
+ return PersonConversion_decomposePerson_Z6839B9E8(c, graph, context)
85
+
86
+ creators: Array[Person] = ResizeArray_map(f_1, LDDataset.get_creators(study, graph, context))
87
+ datamap: Datamap | None
88
+ v: Datamap = DatamapConversion_decomposeFragmentDescriptors_Z6E59645F(LDDataset.get_variable_measured_as_fragment_descriptors(study, graph, context), graph, context)
89
+ datamap = Option_fromValueWithDefault(Datamap.init(), v)
90
+ tables: ArcTables = ARCtrl_ArcTables__ArcTables_fromProcesses_Static_Z27F0B586(of_seq(LDDataset.get_abouts_as_lab_process(study, graph, context)), graph, context)
91
+ def f_2(c_1: LDNode, study: Any=study, graph: Any=graph, context: Any=context) -> Comment:
92
+ return BaseTypes_decomposeComment_Z2F770004(c_1, context)
93
+
94
+ comments: Array[Comment] = ResizeArray_map(f_2, LDDataset.get_comments(study, graph, context))
95
+ return ArcStudy.create(LDDataset.get_identifier_as_string(study, context), LDDataset.try_get_name_as_string(study, context), LDDataset.try_get_description_as_string(study, context), date_created, date_published, publications, creators, None, tables.Tables, datamap, None, comments)
96
+
97
+
98
+ __all__ = ["StudyConversion_reflection", "StudyConversion_composeStudy_ZFE0E38E", "StudyConversion_decomposeStudy_Z6839B9E8"]
99
+