pysodafair 0.1.62__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 (77) hide show
  1. pysoda/__init__.py +0 -0
  2. pysoda/constants.py +3 -0
  3. pysoda/core/__init__.py +10 -0
  4. pysoda/core/dataset_generation/__init__.py +11 -0
  5. pysoda/core/dataset_generation/manifestSession/__init__.py +1 -0
  6. pysoda/core/dataset_generation/manifestSession/manifest_session.py +146 -0
  7. pysoda/core/dataset_generation/upload.py +3951 -0
  8. pysoda/core/dataset_importing/__init__.py +1 -0
  9. pysoda/core/dataset_importing/import_dataset.py +662 -0
  10. pysoda/core/metadata/__init__.py +20 -0
  11. pysoda/core/metadata/code_description.py +109 -0
  12. pysoda/core/metadata/constants.py +32 -0
  13. pysoda/core/metadata/dataset_description.py +188 -0
  14. pysoda/core/metadata/excel_utils.py +41 -0
  15. pysoda/core/metadata/helpers.py +250 -0
  16. pysoda/core/metadata/manifest.py +112 -0
  17. pysoda/core/metadata/manifest_package/__init__.py +2 -0
  18. pysoda/core/metadata/manifest_package/manifest.py +0 -0
  19. pysoda/core/metadata/manifest_package/manifest_import.py +29 -0
  20. pysoda/core/metadata/manifest_package/manifest_writer.py +666 -0
  21. pysoda/core/metadata/performances.py +46 -0
  22. pysoda/core/metadata/resources.py +53 -0
  23. pysoda/core/metadata/samples.py +184 -0
  24. pysoda/core/metadata/sites.py +51 -0
  25. pysoda/core/metadata/subjects.py +172 -0
  26. pysoda/core/metadata/submission.py +91 -0
  27. pysoda/core/metadata/text_metadata.py +47 -0
  28. pysoda/core/metadata_templates/CHANGES +1 -0
  29. pysoda/core/metadata_templates/LICENSE +1 -0
  30. pysoda/core/metadata_templates/README.md +4 -0
  31. pysoda/core/metadata_templates/__init__.py +0 -0
  32. pysoda/core/metadata_templates/code_description.xlsx +0 -0
  33. pysoda/core/metadata_templates/code_parameters.xlsx +0 -0
  34. pysoda/core/metadata_templates/dataset_description.xlsx +0 -0
  35. pysoda/core/metadata_templates/manifest.xlsx +0 -0
  36. pysoda/core/metadata_templates/performances.xlsx +0 -0
  37. pysoda/core/metadata_templates/resources.xlsx +0 -0
  38. pysoda/core/metadata_templates/samples.xlsx +0 -0
  39. pysoda/core/metadata_templates/sites.xlsx +0 -0
  40. pysoda/core/metadata_templates/subjects.xlsx +0 -0
  41. pysoda/core/metadata_templates/subjects_pools_samples_structure.xlsx +0 -0
  42. pysoda/core/metadata_templates/subjects_pools_samples_structure_example.xlsx +0 -0
  43. pysoda/core/metadata_templates/submission.xlsx +0 -0
  44. pysoda/core/permissions/__init__.py +1 -0
  45. pysoda/core/permissions/permissions.py +31 -0
  46. pysoda/core/pysoda/__init__.py +2 -0
  47. pysoda/core/pysoda/soda.py +34 -0
  48. pysoda/core/pysoda/soda_object.py +55 -0
  49. pysoda/core/upload_manifests/__init__.py +1 -0
  50. pysoda/core/upload_manifests/upload_manifests.py +37 -0
  51. pysoda/schema/__init__.py +0 -0
  52. pysoda/schema/code_description.json +629 -0
  53. pysoda/schema/dataset_description.json +295 -0
  54. pysoda/schema/manifest.json +60 -0
  55. pysoda/schema/performances.json +44 -0
  56. pysoda/schema/resources.json +39 -0
  57. pysoda/schema/samples.json +97 -0
  58. pysoda/schema/sites.json +38 -0
  59. pysoda/schema/soda_schema.json +664 -0
  60. pysoda/schema/subjects.json +131 -0
  61. pysoda/schema/submission_schema.json +28 -0
  62. pysoda/utils/__init__.py +9 -0
  63. pysoda/utils/authentication.py +381 -0
  64. pysoda/utils/config.py +68 -0
  65. pysoda/utils/exceptions.py +156 -0
  66. pysoda/utils/logger.py +6 -0
  67. pysoda/utils/metadata_utils.py +74 -0
  68. pysoda/utils/pennsieveAgentUtils.py +11 -0
  69. pysoda/utils/pennsieveUtils.py +118 -0
  70. pysoda/utils/profile.py +28 -0
  71. pysoda/utils/schema_validation.py +133 -0
  72. pysoda/utils/time_utils.py +5 -0
  73. pysoda/utils/upload_utils.py +108 -0
  74. pysodafair-0.1.62.dist-info/METADATA +190 -0
  75. pysodafair-0.1.62.dist-info/RECORD +77 -0
  76. pysodafair-0.1.62.dist-info/WHEEL +4 -0
  77. pysodafair-0.1.62.dist-info/licenses/LICENSE +21 -0
@@ -0,0 +1,664 @@
1
+ {
2
+ "type": "object",
3
+ "properties": {
4
+ "starting-point": {
5
+ "type": "object",
6
+ "properties": {
7
+ "origin": {
8
+ "type": "string",
9
+ "enum": ["ps", "local", "new"]
10
+ }
11
+ }
12
+ },
13
+ "ps-dataset-selected": {
14
+ "type": "object",
15
+ "properties": {
16
+ "dataset-name": { "type": "string" }
17
+ }
18
+ },
19
+ "ps-account-selected": {
20
+ "type": "object",
21
+ "properties": {
22
+ "account-name": { "type": "string" }
23
+ }
24
+ },
25
+ "guided-manifest-file-data": {
26
+ "type": "object",
27
+ "properties": {
28
+ "headers": {
29
+ "type": "array",
30
+ "items": {
31
+ "type": "string",
32
+ "minItems": 1,
33
+ "maxItems": 11,
34
+ "enum": [
35
+ "filename",
36
+ "timestamp",
37
+ "description",
38
+ "file type",
39
+ "entity",
40
+ "data modality",
41
+ "also in dataset",
42
+ "also in dataset path",
43
+ "data dictionary path",
44
+ "entity is transitive",
45
+ "Additional Metadata"
46
+ ]
47
+ }
48
+ },
49
+ "data": {
50
+ "type": "array",
51
+ "items": {
52
+ "type": "array",
53
+ "minItems": 1,
54
+ "maxItems": 11,
55
+ "items": {
56
+ "type": "string"
57
+ }
58
+ }
59
+ }
60
+ }
61
+ },
62
+ "dataset-validated": {
63
+ "type": "boolean"
64
+ },
65
+ "dataset-validation-errors": {
66
+ "type": "array",
67
+ "items": { "type": "string" }
68
+ },
69
+ "dataset-structure": {
70
+ "type": "object",
71
+ "properties": {
72
+ "folders": {
73
+ "type": "object",
74
+ "patternProperties": {
75
+ ".*": {
76
+ "type": "object",
77
+ "properties": {
78
+ "folders": {
79
+ "$ref": "#/properties/dataset-structure/properties/folders"
80
+ },
81
+ "files": {
82
+ "type": "object",
83
+ "patternProperties": {
84
+ ".*": {
85
+ "type": "object",
86
+ "properties": {
87
+ "timestamp": { "type": "string" },
88
+ "size": { "type": "number" },
89
+ "checksum": { "type": "string" },
90
+ "description": { "type": "string" },
91
+ "additional-metadata": { "type": "string" },
92
+ "extra-columns": { "type": "string" },
93
+ "extension": { "type": "string" },
94
+ "action": {
95
+ "type": "array",
96
+ "items": { "type": "string" }
97
+ },
98
+ "relativePath": { "type": "string" },
99
+ "path": { "type": "string" },
100
+ "location": {
101
+ "type": "string",
102
+ "enum": ["local", "pennsieve"]
103
+ }
104
+ },
105
+ "required": ["timestamp", "size", "checksum"]
106
+ }
107
+ },
108
+ "additionalProperties": false
109
+ }
110
+ }
111
+ }
112
+ },
113
+ "additionalProperties": false
114
+ },
115
+ "files": {
116
+ "type": "object",
117
+ "patternProperties": {
118
+ ".*": {
119
+ "type": "object",
120
+ "properties": {
121
+ "timestamp": { "type": "string" },
122
+ "size": { "type": "number" },
123
+ "checksum": { "type": "string" },
124
+ "description": { "type": "string" },
125
+ "additional-metadata": { "type": "string" },
126
+ "extra-columns": { "type": "string" },
127
+ "extension": { "type": "string" },
128
+ "action": {
129
+ "type": "array",
130
+ "items": { "type": "string" }
131
+ },
132
+ "relativePath": { "type": "string" },
133
+ "path": { "type": "string" },
134
+ "location": { "type": "string", "enum": ["local", "pennsieve"] }
135
+ },
136
+ "required": ["timestamp", "size", "checksum"]
137
+ }
138
+ },
139
+ "additionalProperties": false
140
+ },
141
+ "relativePath": { "type": "string" }
142
+ }
143
+ },
144
+ "dataset-metadata": {
145
+ "type": "object",
146
+ "properties": {
147
+ "description-metadata": {
148
+ "type": "object",
149
+ "properties": {
150
+ "description": {
151
+ "type": "object",
152
+ "properties": {
153
+ "study-purpose": { "type": "string" },
154
+ "data-collectoin": { "type": "string" },
155
+ "primary-conclusion": { "type": "string" }
156
+ }
157
+ },
158
+ "additional-links": {
159
+ "type": "array",
160
+ "items": {
161
+ "type": "object",
162
+ "properties": {
163
+ "link": { "type": "string" },
164
+ "relation": { "type": "string" },
165
+ "description": { "type": "string" },
166
+ "linkType": { "type": "string" },
167
+ "isFair": { "type": "boolean" }
168
+ }
169
+ }
170
+ },
171
+ "contributors": {
172
+ "type": "array",
173
+ "items": {
174
+ "type": "object",
175
+ "properties": {
176
+ "conID": { "type": "string" },
177
+ "conAffiliation": { "type": "string" },
178
+ "conName": { "type": "string" },
179
+ "conRole": { "type": "string" },
180
+ "contributorFirstName": { "type": "string" },
181
+ "contributorLastName": { "type": "string" }
182
+ }
183
+ }
184
+ },
185
+ "contributor-information": {
186
+ "type": "object",
187
+ "properties": {
188
+ "funding": {
189
+ "type": "array",
190
+ "items": { "type": "string" }
191
+ },
192
+ "acknowledgment": { "type": "string" }
193
+ }
194
+ },
195
+ "protocols": {
196
+ "type": "array",
197
+ "items": {
198
+ "type": "object",
199
+ "properties": {
200
+ "link": { "type": "string" },
201
+ "relationType": { "type": "string" },
202
+ "relation": { "type": "string" },
203
+ "description": { "type": "string" },
204
+ "additional-metadata": { "type": "boolean" }
205
+ }
206
+ }
207
+ },
208
+ "dataset-information": {
209
+ "type": "object",
210
+ "properties": {
211
+ "name": { "type": "string" },
212
+ "description": { "type": "string" },
213
+ "studyType": { "type": "string" },
214
+ "keywords": {
215
+ "type": "array",
216
+ "items": { "type": "string" }
217
+ },
218
+ "number of samples": { "type": "number" },
219
+ "number of subjects": { "type": "number" },
220
+ "study organ system": {
221
+ "type": "array",
222
+ "items": { "type": "string" }
223
+ },
224
+ "study approach": {
225
+ "type": "array",
226
+ "items": { "type": "string" }
227
+ },
228
+ "study technique": {
229
+ "type": "array",
230
+ "items": { "type": "string" }
231
+ },
232
+ "study purpose": { "type": "string" },
233
+ "study data collection": { "type": "string" },
234
+ "study primary conclusion": { "type": "string" },
235
+ "study collection title": { "type": "string" }
236
+ }
237
+ },
238
+ "study-information": {
239
+ "type": "object",
240
+ "properties": {
241
+ "study purpose": { "type": "string" },
242
+ "study data collection": { "type": "string" },
243
+ "study primary conclusion": { "type": "string" }
244
+ }
245
+ }
246
+ }
247
+ },
248
+ "shared-metadata": {
249
+ "type": "object",
250
+ "properties": {
251
+ "sparc-award": { "type": "string" },
252
+ "award-number": { "type": "string" }
253
+ }
254
+ },
255
+ "protocol-data": {
256
+ "type": "array"
257
+ },
258
+ "subject-metadata": {
259
+ "type": "array",
260
+ "minItems": "1",
261
+ "maxItems": "28",
262
+ "items": [
263
+ {
264
+ "type": "array",
265
+ "items": {
266
+ "type": "string",
267
+ "enum": [
268
+ "subject id",
269
+ "pool id",
270
+ "subject experimental group",
271
+ "age",
272
+ "sex",
273
+ "species",
274
+ "strain",
275
+ "RRID for strain",
276
+ "age category",
277
+ "also in dataset",
278
+ "member of",
279
+ "metadata only",
280
+ "laboratory internal id",
281
+ "date of birth",
282
+ "age range (min)",
283
+ "agre range (max)",
284
+ "body mass",
285
+ "genotype",
286
+ "phenotype",
287
+ "handedness",
288
+ "reference atlas",
289
+ "experimental log file path",
290
+ "experiment date",
291
+ "disease or disorder",
292
+ "intervention",
293
+ "disease model",
294
+ "protocol title",
295
+ "protocol uri or doi"
296
+ ]
297
+ }
298
+ }
299
+ ],
300
+ "additionalItems": {
301
+ "type": "array",
302
+ "items": {
303
+ "type": "string"
304
+ }
305
+ }
306
+ },
307
+ "sample-metadata": {
308
+ "type": "object",
309
+ "properties": {
310
+ "type": "array",
311
+ "minItems": "1",
312
+ "maxItems": "19",
313
+ "items": {
314
+ "type": "string",
315
+ "enum": [
316
+ "subject id",
317
+ "sample id",
318
+ "was derived from",
319
+ "pool id",
320
+ "sample experimental group",
321
+ "sample type",
322
+ "sample anatomical location",
323
+ "member of",
324
+ "also in dataset",
325
+ "protocol title",
326
+ "protocol url or doi",
327
+ "laboratory internal id",
328
+ "date of derivation",
329
+ "pathology",
330
+ "laterality",
331
+ "cell type",
332
+ "plane of section",
333
+ "reference atlas",
334
+ "experimental log file path"
335
+ ]
336
+ }
337
+ }
338
+ },
339
+ "submission-metadata": {
340
+ "$ref": "submission_schema.json"
341
+ },
342
+ "code-metadata": {
343
+ "type": "object",
344
+ "properties": {
345
+ "code_description": { "type": "string" }
346
+ }
347
+ },
348
+ "README.md": { "type": "string" },
349
+ "CHANGES": { "type": "string" },
350
+ "LICENSE": { "type": "string" },
351
+ "performances": {
352
+ "type": "array",
353
+ "items": [
354
+ {
355
+ "type": "array",
356
+ "minItems": 1,
357
+ "maxItems": 7,
358
+ "items": [
359
+ {
360
+ "type": "string",
361
+ "enum": ["performance id"]
362
+ },
363
+ {
364
+ "type": "string",
365
+ "enum": ["protocol url or doi"]
366
+ },
367
+ {
368
+ "type": "string",
369
+ "enum": ["date"]
370
+ },
371
+ {
372
+ "type": "string",
373
+ "enum": ["start datetime"]
374
+ },
375
+ {
376
+ "type": "string",
377
+ "enum": ["end datetime"]
378
+ },
379
+ {
380
+ "type": "string",
381
+ "enum": ["participants"]
382
+ },
383
+ {
384
+ "type": "string",
385
+ "enum": ["Additional Metadata"]
386
+ }
387
+ ]
388
+ }
389
+ ],
390
+ "additionalItems": {
391
+ "type": "array",
392
+ "minItems": 1,
393
+ "maxItems": 7,
394
+ "items": [
395
+ {
396
+ "type": "string"
397
+ },
398
+ {
399
+ "type": "string"
400
+ },
401
+ {
402
+ "type": "string"
403
+ },
404
+ {
405
+ "type": "string"
406
+ },
407
+ {
408
+ "type": "string"
409
+ },
410
+ {
411
+ "type": "string"
412
+ },
413
+ {
414
+ "type": "string"
415
+ }
416
+ ]
417
+ }
418
+ },
419
+ "sites": {
420
+ "type": "array",
421
+ "items": [
422
+ {
423
+ "type": "array",
424
+ "minItems": 1,
425
+ "maxItems": 7,
426
+ "items": [
427
+ {
428
+ "type": "string",
429
+ "enum": ["site id"]
430
+ },
431
+ {
432
+ "type": "string",
433
+ "enum": ["specimen id"]
434
+ },
435
+ {
436
+ "type": "string",
437
+ "enum": ["site type"]
438
+ },
439
+ {
440
+ "type": "string",
441
+ "enum": ["laboratory internal id"]
442
+ },
443
+ {
444
+ "type": "string",
445
+ "enum": ["coordinate system"]
446
+ },
447
+ {
448
+ "type": "string",
449
+ "enum": ["coordinate system position"]
450
+ },
451
+ {
452
+ "type": "string",
453
+ "enum": ["more..."]
454
+ }
455
+ ]
456
+ }
457
+ ],
458
+ "additionalItems": {
459
+ "type": "array",
460
+ "minItems": 1,
461
+ "maxItems": 7,
462
+ "items": [
463
+ {
464
+ "type": "string"
465
+ },
466
+ {
467
+ "type": "string"
468
+ },
469
+ {
470
+ "type": "string"
471
+ },
472
+ {
473
+ "type": "string"
474
+ },
475
+ {
476
+ "type": "string"
477
+ },
478
+ {
479
+ "type": "string"
480
+ },
481
+ {
482
+ "type": "string"
483
+ }
484
+ ]
485
+ }
486
+ },
487
+ "resources": {
488
+ "type": "array",
489
+ "items": [
490
+ {
491
+ "type": "array",
492
+ "minItems": 1,
493
+ "maxItems": 8,
494
+ "items": [
495
+ {
496
+ "type": "string",
497
+ "enum": ["RRID"]
498
+ },
499
+ {
500
+ "type": "string",
501
+ "enum": ["Type"]
502
+ },
503
+ {
504
+ "type": "string",
505
+ "enum": ["Name"]
506
+ },
507
+ {
508
+ "type": "string",
509
+ "enum": ["URL"]
510
+ },
511
+ {
512
+ "type": "string",
513
+ "enum": ["Vendor"]
514
+ },
515
+ {
516
+ "type": "string",
517
+ "enum": ["Version"]
518
+ },
519
+ {
520
+ "type": "string",
521
+ "enum": ["ID in protocol"]
522
+ },
523
+ {
524
+ "type": "string",
525
+ "enum": ["Additional Metadata"]
526
+ }
527
+ ]
528
+ }
529
+ ],
530
+ "additionalItems": {
531
+ "type": "array",
532
+ "minItems": 1,
533
+ "maxItems": 8,
534
+ "items": [
535
+ {
536
+ "type": "string"
537
+ },
538
+ {
539
+ "type": "string"
540
+ },
541
+ {
542
+ "type": "string"
543
+ },
544
+ {
545
+ "type": "string"
546
+ },
547
+ {
548
+ "type": "string"
549
+ },
550
+ {
551
+ "type": "string"
552
+ },
553
+ {
554
+ "type": "string"
555
+ },
556
+ {
557
+ "type": "string"
558
+ }
559
+ ]
560
+ }
561
+ }
562
+ }
563
+ },
564
+ "digital-metadata": {
565
+ "type": "object",
566
+ "properties": {
567
+ "description": { "type": "object" },
568
+ "pi-owner": {
569
+ "type": "object",
570
+ "properties": {
571
+ "name": { "type": "string" },
572
+ "userString": { "type": "string" },
573
+ "UUID": { "type": "string" }
574
+ }
575
+ },
576
+ "user-permissions": {
577
+ "type": "array",
578
+ "items": {
579
+ "type": "object",
580
+ "properties": {
581
+ "userString": { "type": "string" },
582
+ "UUID": { "type": "string" },
583
+ "permission": { "type": "string" }
584
+ }
585
+ }
586
+ },
587
+ "team-permissions": {
588
+ "type": "array",
589
+ "items": {
590
+ "type": "object",
591
+ "properties": {
592
+ "teamString": { "type": "string" },
593
+ "UUID": { "type": "string" },
594
+ "permission": { "type": "string" }
595
+ }
596
+ }
597
+ },
598
+ "license": { "type": "string" },
599
+ "name": { "type": "string" }
600
+ }
601
+ },
602
+ "generate-dataset": {
603
+ "type": "object",
604
+ "properties": {
605
+ "destination": { "type": "string", "enum": ["ps", "local"] },
606
+ "if-existing": {
607
+ "type": "string",
608
+ "enum": ["replace", "skip", "merge"]
609
+ },
610
+ "if-existing-files": { "type": "string", "enum": ["replace", "skip"] },
611
+ "generate-option": { "type": "string", "enum": ["new", "existing-ps"] },
612
+ "path": { "type": "string" },
613
+ "dataset-name": { "type": "string" }
614
+ }
615
+ },
616
+ "dataset-entity-structure": {
617
+ "type": "object",
618
+ "properties": {
619
+ "subjects": {
620
+ "type": "array",
621
+ "items": {
622
+ "type": "object",
623
+ "properties": {
624
+ "subjectId": { "type": "string" },
625
+ "metadata": { "type": "object" },
626
+ "samples": {
627
+ "type": "array",
628
+ "items": {
629
+ "type": "object",
630
+ "properties": {
631
+ "sampleId": { "type": "string" },
632
+ "metadata": { "type": "object" }
633
+ }
634
+ }
635
+ }
636
+ }
637
+ }
638
+ }
639
+ }
640
+ },
641
+ "dataset-entity-obj": {
642
+ "type": "object",
643
+ "properties": {
644
+ "bucketed-data": {
645
+ "type": "object",
646
+ "properties": {
647
+ "code": {
648
+ "type": "array",
649
+ "items": { "type": "string", "format": "file-path" }
650
+ },
651
+ "experimental-data": {
652
+ "type": "array",
653
+ "items": { "type": "string", "format": "file-path" }
654
+ },
655
+ "other": {
656
+ "type": "array",
657
+ "items": { "type": "string", "format": "file-path" }
658
+ }
659
+ }
660
+ }
661
+ }
662
+ }
663
+ }
664
+ }