deriva-ml 1.10.0__py3-none-any.whl → 1.11.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.
deriva_ml/upload.py CHANGED
@@ -19,22 +19,20 @@ Here is the directory layout we support:
19
19
  asset
20
20
  <asset_table>
21
21
  file1, file2, ...
22
- <feature_name>.csv <- needs to have asset_name column remapped before uploading
23
- table
24
- <schema>
25
- <record_table>
26
- record_table.csv
27
- asset
28
- <schema>
29
- <asset_table>
30
- file1, file2, ....
31
- asset
32
- <schema>
33
- <asset_table>
34
- <metadata1>
35
- <metadata2>
36
- file1, file2, ....
37
-
22
+ <feature_name>.jsonl <- needs to have asset_name column remapped before uploading
23
+ table
24
+ <schema>
25
+ <record_table>
26
+ record_table.csv
27
+ asset
28
+ <schema>
29
+ <asset_table>
30
+ <metadata1>
31
+ <metadata2>
32
+ file1, file2, ....
33
+ asset-type
34
+ <schema>
35
+ file1.jsonl, file2.jsonl
38
36
  """
39
37
 
40
38
  import json
@@ -55,27 +53,21 @@ from deriva_ml.deriva_definitions import (
55
53
  DerivaMLException,
56
54
  FileUploadState,
57
55
  UploadState,
56
+ DerivaSystemColumns,
58
57
  )
59
58
  from deriva_ml.deriva_model import DerivaModel
60
59
 
60
+
61
+ try:
62
+ from icecream import ic
63
+ except ImportError: # Graceful fallback if IceCream isn't installed.
64
+ ic = lambda *a: None if not a else (a[0] if len(a) == 1 else a) # noqa
65
+
66
+
61
67
  upload_root_regex = r"(?i)^.*/deriva-ml"
62
68
 
63
69
  exec_dir_regex = upload_root_regex + r"/execution/(?P<execution_rid>[-\w]+)"
64
- exec_asset_dir_regex = (
65
- exec_dir_regex + r"/execution-asset/(?P<execution_asset_type>[-\w]+)"
66
- )
67
- exec_asset_regex = (
68
- exec_asset_dir_regex + r"/(?P<file_name>[-\w]+)[.](?P<file_ext>[a-z0-9]+)$"
69
- )
70
- exec_metadata_dir_regex = (
71
- exec_dir_regex + r"/execution-metadata/(?P<execution_metadata_type>[-\w]+)"
72
- )
73
70
 
74
- # May have more than one suffix
75
- exec_metadata_regex = (
76
- exec_metadata_dir_regex
77
- + r"/(?P<filename>[-\w]+([.][\w]+)*)[.](?P<file_ext>[a-z0-9]*)$"
78
- )
79
71
  feature_dir_regex = exec_dir_regex + r"/feature"
80
72
  feature_table_dir_regex = (
81
73
  feature_dir_regex
@@ -89,9 +81,8 @@ feature_asset_regex = (
89
81
  feature_asset_dir_regex
90
82
  + r"/(?P<file_name>[A-Za-z0-9_-]+)[.](?P<file_ext>[a-z0-9]*)$"
91
83
  )
92
- asset_path_regex = (
93
- upload_root_regex + r"/asset/(?P<schema>[-\w]+)/(?P<asset_table>[-\w]*)"
94
- )
84
+
85
+ asset_path_regex = exec_dir_regex + r"/asset/(?P<schema>[-\w]+)/(?P<asset_table>[-\w]*)"
95
86
 
96
87
  asset_file_regex = r"(?P<file_name>[-\w]+)[.](?P<file_ext>[a-z0-9]*)$"
97
88
 
@@ -101,24 +92,17 @@ table_regex = (
101
92
  )
102
93
 
103
94
 
104
- def is_execution_metadata_dir(path: Path) -> Optional[re.Match]:
105
- """Path matches the patten for execution metadata directory."""
106
- return re.match(exec_metadata_dir_regex + "$", path.as_posix())
107
-
108
-
109
- def is_execution_asset_dir(path: Path) -> Optional[re.Match]:
110
- """Path maths the pattern for execution asset directory"""
111
- return re.match(exec_asset_dir_regex + "$", path.as_posix())
112
-
113
-
114
95
  def is_feature_dir(path: Path) -> Optional[re.Match]:
115
96
  """Path matches the pattern for where the table for a feature would go."""
116
97
  return re.match(feature_table_dir_regex + "$", path.as_posix())
117
98
 
118
99
 
119
- def is_feature_asset_dir(path: Path) -> Optional[re.Match]:
120
- """Path matches the pattern for feature, asset, returns the feature components."""
121
- return re.match(feature_asset_dir_regex + "$", path.as_posix())
100
+ def normalize_asset_dir(path: str) -> Optional[tuple[str, str]]:
101
+ """Parse a path to an asset file and return the asset table name and file name"""
102
+
103
+ if not (m := re.match(asset_path_regex, path)):
104
+ return None
105
+ return f"{m['schema']}/{m['asset_table']}", Path(path).name
122
106
 
123
107
 
124
108
  def upload_root(prefix: Path | str) -> Path:
@@ -128,20 +112,6 @@ def upload_root(prefix: Path | str) -> Path:
128
112
  return path
129
113
 
130
114
 
131
- def asset_root(prefix: Path | str) -> Path:
132
- """Return the top level directory of where to put asset directories to be uploaded."""
133
- path = upload_root(prefix) / "asset"
134
- path.mkdir(exist_ok=True, parents=True)
135
- return path
136
-
137
-
138
- def asset_table_dir(prefix: Path, asset_schema, asset_table) -> Path:
139
- """Return the top level directory of where to asset table will be uploaded."""
140
- path = asset_root(prefix) / asset_schema / asset_table
141
- path.mkdir(exist_ok=True, parents=True)
142
- return path
143
-
144
-
145
115
  def execution_rids(prefix: Path | str) -> list[RID]:
146
116
  """Return a list of all the execution RIDS that have files waiting to be uploaded."""
147
117
  path = upload_root(prefix) / "execution"
@@ -155,42 +125,16 @@ def execution_root(prefix: Path | str, exec_rid) -> Path:
155
125
  return path
156
126
 
157
127
 
158
- def execution_asset_root(prefix: Path | str, exec_rid: str) -> Path:
159
- """Path to directory into which execution assets should be located"""
160
-
161
- path = execution_root(prefix, exec_rid) / "execution-asset"
162
- path.mkdir(parents=True, exist_ok=True)
163
- return path
164
-
165
-
166
- @validate_call(config=ConfigDict(arbitrary_types_allowed=True))
167
- def execution_asset_dir(prefix: Path | str, exec_rid: str, asset_type: str) -> Path:
168
- """Return the path to a directory in which to place execution assets of a specified type are to be uploaded."""
169
- path = execution_asset_root(prefix, exec_rid) / asset_type
170
- path.mkdir(parents=True, exist_ok=True)
171
- return path
172
-
173
-
174
- def execution_metadata_root(prefix: Path | str, exec_rid: str) -> Path:
175
- """Path to directory into which execution metadata should be located."""
176
- path = execution_root(prefix, exec_rid) / "execution-metadata"
177
- path.mkdir(parents=True, exist_ok=True)
178
- return path
179
-
180
-
181
- def execution_metadata_dir(
182
- prefix: Path | str, exec_rid: str, metadata_type: str
183
- ) -> Path:
184
- """Return the path to a directory in which to place execution metadata of a specified type are to be uploaded."""
185
-
186
- path = execution_metadata_root(prefix, exec_rid) / metadata_type
128
+ def feature_root(prefix: Path | str, exec_rid: str) -> Path:
129
+ """Return the path to the directory in which features for the specified execution should be placed."""
130
+ path = execution_root(prefix, exec_rid) / "feature"
187
131
  path.mkdir(parents=True, exist_ok=True)
188
132
  return path
189
133
 
190
134
 
191
- def feature_root(prefix: Path | str, exec_rid: str) -> Path:
135
+ def asset_root(prefix: Path | str, exec_rid: str) -> Path:
192
136
  """Return the path to the directory in which features for the specified execution should be placed."""
193
- path = execution_root(prefix, exec_rid) / "feature"
137
+ path = execution_root(prefix, exec_rid) / "asset"
194
138
  path.mkdir(parents=True, exist_ok=True)
195
139
  return path
196
140
 
@@ -221,41 +165,10 @@ def feature_value_path(
221
165
  """
222
166
  return (
223
167
  feature_dir(prefix, exec_rid, schema, target_table, feature_name)
224
- / f"{feature_name}.csv"
168
+ / f"{feature_name}.jsonl"
225
169
  )
226
170
 
227
171
 
228
- def feature_asset_dir(
229
- prefix: Path | str,
230
- exec_rid: str,
231
- schema: str,
232
- target_table: str,
233
- feature_name: str,
234
- asset_table: str,
235
- ) -> Path:
236
- """Return the path to a directory in which to place feature assets for a named feature are to be uploaded.
237
-
238
- Args:
239
- prefix: Location of upload root directory
240
- exec_rid: RID of the execution for the feature asset
241
- schema: Domain schema
242
- target_table: Name of the target table for the feature.
243
- feature_name: Name of the feature
244
- asset_table: Name of the asset table for the feature.
245
-
246
- Returns:
247
- Path to directory in which feature asset files are placed.
248
- """
249
- path = (
250
- feature_dir(prefix, exec_rid, schema, target_table, feature_name)
251
- / "asset"
252
- / asset_table
253
- )
254
-
255
- path.mkdir(parents=True, exist_ok=True)
256
- return path
257
-
258
-
259
172
  def table_path(prefix: Path | str, schema: str, table: str) -> Path:
260
173
  """Return the path to a CSV file in which to place table values that are to be uploaded.
261
174
 
@@ -286,7 +199,7 @@ def asset_table_upload_spec(model: DerivaModel, asset_table: str | Table):
286
199
  asset_table = model.name_to_table(asset_table)
287
200
  schema = model.name_to_table(asset_table).schema.name
288
201
  metadata_path = "/".join([rf"(?P<{c}>[-\w]+)" for c in metadata_columns])
289
- asset_path = f"{upload_root_regex}/asset/{schema}/{asset_table.name}/{metadata_path}/{asset_file_regex}"
202
+ asset_path = f"{exec_dir_regex}/asset/{schema}/{asset_table.name}/{metadata_path}/{asset_file_regex}"
290
203
  asset_table = model.name_to_table(asset_table)
291
204
  schema = model.name_to_table(asset_table).schema.name
292
205
  return {
@@ -321,72 +234,7 @@ def bulk_upload_configuration(model: DerivaModel) -> dict[str, Any]:
321
234
  if model.asset_metadata(t)
322
235
  ]
323
236
  return {
324
- "asset_mappings": [
325
- {
326
- # Upload any files that may have been created by the program execution. These are in the
327
- # Execution_Metadata directory
328
- "column_map": {
329
- "MD5": "{md5}",
330
- "URL": "{URI}",
331
- "Length": "{file_size}",
332
- "Filename": "{file_name}",
333
- "Execution_Metadata_Type": "{execution_metadata_type_name}",
334
- },
335
- "file_pattern": exec_metadata_regex,
336
- "target_table": ["deriva-ml", "Execution_Metadata"],
337
- "checksum_types": ["sha256", "md5"],
338
- "hatrac_options": {"versioned_urls": True},
339
- "hatrac_templates": {
340
- "hatrac_uri": "/hatrac/execution_metadata/{md5}.{file_name}",
341
- "content-disposition": "filename*=UTF-8''{file_name}.{file_ext}",
342
- },
343
- "record_query_template": "/entity/{target_table}/MD5={md5}&Filename={file_name}",
344
- "metadata_query_templates": [
345
- "/attribute/deriva-ml:Execution_Metadata_Type/Name={execution_metadata_type}/execution_metadata_type_name:=Name"
346
- ],
347
- },
348
- {
349
- # Upload the contents of the Execution_Asset directory.
350
- "column_map": {
351
- "MD5": "{md5}",
352
- "URL": "{URI}",
353
- "Length": "{file_size}",
354
- "Filename": "{file_name}",
355
- "Execution_Asset_Type": "{execution_asset_type_name}",
356
- },
357
- "file_pattern": exec_asset_regex,
358
- "target_table": ["deriva-ml", "Execution_Asset"],
359
- "checksum_types": ["sha256", "md5"],
360
- "hatrac_options": {"versioned_urls": True},
361
- "hatrac_templates": {
362
- "hatrac_uri": "/hatrac/execution_asset/{md5}.{file_name}",
363
- "content-disposition": "filename*=UTF-8''{file_name}.{file_ext}",
364
- },
365
- "record_query_template": "/entity/{target_table}/MD5={md5}&Filename={file_name}",
366
- "metadata_query_templates": [
367
- "/attribute/deriva-ml:Execution_Asset_Type/Name={execution_asset_type}/execution_asset_type_name:=Name"
368
- ],
369
- },
370
- {
371
- # Upload the assets for a feature table.
372
- "column_map": {
373
- "MD5": "{md5}",
374
- "URL": "{URI}",
375
- "Length": "{file_size}",
376
- "Filename": "{file_name}",
377
- },
378
- "file_pattern": feature_asset_regex, # Sets target_table, feature_name, asset_table
379
- "target_table": ["{schema}", "{asset_table}"],
380
- "checksum_types": ["sha256", "md5"],
381
- "hatrac_options": {"versioned_urls": True},
382
- "hatrac_templates": {
383
- "hatrac_uri": "/hatrac/{asset_table}/{md5}.{file_name}",
384
- "content-disposition": "filename*=UTF-8''{file_name}",
385
- },
386
- "record_query_template": "/entity/{target_table}/MD5={md5}&Filename={file_name}",
387
- },
388
- ]
389
- + asset_tables_with_metadata
237
+ "asset_mappings": asset_tables_with_metadata
390
238
  + [
391
239
  {
392
240
  # Upload assets into an asset table of an asset table without any metadata
@@ -396,7 +244,8 @@ def bulk_upload_configuration(model: DerivaModel) -> dict[str, Any]:
396
244
  "Length": "{file_size}",
397
245
  "Filename": "{file_name}",
398
246
  },
399
- "target_table": [model.domain_schema, "{asset_table}"],
247
+ "asset_type": "fetch",
248
+ "target_table": ["{schema}", "{asset_table}"],
400
249
  "file_pattern": asset_path_regex
401
250
  + "/"
402
251
  + asset_file_regex, # Sets schema, asset_table, file_name, file_ext
@@ -548,49 +397,63 @@ def upload_asset(
548
397
  raise e
549
398
 
550
399
 
551
- class UploadAssetDirectory:
552
- def __init__(self, model: DerivaModel, schema: str, table: str, prefix: Path):
553
- self.prefix = prefix
554
- self.path = asset_table_dir(
555
- prefix=prefix, asset_schema=schema, asset_table=table
400
+ def asset_file_path(
401
+ prefix: Path | str,
402
+ exec_rid: RID,
403
+ asset_table: Table,
404
+ file_name: str,
405
+ metadata: dict[str, Any],
406
+ ) -> Path:
407
+ """Return the file in which to place assets of a specified type are to be uploaded.
408
+
409
+ Args:
410
+ prefix: Path prefix to use.
411
+ exec_rid: RID to use.
412
+ asset_table: Table in which to place assets.
413
+ file_name: File name to use.
414
+ metadata: Any additional metadata to add to the asset
415
+ Returns:
416
+ Path to directory in which to place assets of type asset_type.
417
+ """
418
+ schema = asset_table.schema.name
419
+ asset_name = asset_table.name
420
+
421
+ path = execution_root(prefix, exec_rid) / "asset" / schema / asset_name
422
+ metadata = metadata or {}
423
+ asset_columns = {
424
+ "Filename",
425
+ "URL",
426
+ "Length",
427
+ "MD5",
428
+ "Description",
429
+ }.union(set(DerivaSystemColumns))
430
+ asset_metadata = {c.name for c in asset_table.columns} - asset_columns
431
+ if not (asset_metadata >= set(metadata.keys())):
432
+ raise DerivaMLException(
433
+ f"Metadata {metadata} does not match asset metadata {asset_metadata}"
556
434
  )
557
- self.table = table
558
- self.schema = schema
559
- self.model = model
560
-
561
- def create_file(self, file_name: str, metadata: dict[str, Any]) -> Path:
562
- """Return the file in which to place assets of a specified type are to be uploaded.
563
-
564
- Args:
565
- file_name: Name of file to which the contents of the asset will be placed
566
- metadata: Any additional metadata to add to the asset
567
- Returns:
568
- Path to directory in which to place assets of type asset_type.
569
- """
570
- metadata = metadata or {}
571
- asset_metadata = self.model.asset_metadata(self.table)
572
- if not (asset_metadata >= set(metadata.keys())):
573
- raise DerivaMLException(
574
- f"Metadata {metadata} does not match asset metadata {asset_metadata}"
575
- )
576
435
 
577
- path = self.path
578
- for m in self.model.asset_metadata(self.table):
579
- path = path / metadata.get(m, "None")
580
- path.mkdir(parents=True, exist_ok=True)
581
- return path / file_name
436
+ for m in asset_metadata:
437
+ path = path / metadata.get(m, "None")
438
+ path.mkdir(parents=True, exist_ok=True)
439
+ return path / file_name
440
+
582
441
 
442
+ def asset_type_path(prefix: Path | str, exec_rid: RID, asset_table: Table) -> Path:
443
+ """Return the path to a JSON line file in which to place asset_type information.
583
444
 
584
- def test_upload():
585
- """ """
586
- ead = execution_asset_dir("foo", "my-rid", "my-asset")
587
- emd = execution_metadata_dir("foo", "my-rid", "my-metadata")
588
- _fp = feature_value_path("foo", "my-rid", "my-schema", "my-target", "my-feature")
589
- fa = feature_asset_dir(
590
- "foo", "my-rid", "my-schema", "my-target", "my-feature", "my-asset"
445
+ Args:
446
+ prefix: Location of upload root directory
447
+ exec_rid: Execution RID
448
+ asset_table: Table in which to place assets.
449
+
450
+ Returns:
451
+ Path to the file in which to place asset_type values for the named asset..
452
+ """
453
+ path = (
454
+ execution_root(prefix, exec_rid=exec_rid)
455
+ / "asset-type"
456
+ / asset_table.schema.name
591
457
  )
592
- _tp = table_path("foo", "my-schema", "my-table")
593
- # _ad = create_asset_dir("foo", "my-schema", "my-asset")
594
- _is_md = is_execution_metadata_dir(emd)
595
- _is_ea = is_execution_asset_dir(ead)
596
- _is_fa = is_feature_asset_dir(fa)
458
+ path.mkdir(parents=True, exist_ok=True)
459
+ return path / f"{asset_table.name}.jsonl"
@@ -1,11 +1,12 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: deriva-ml
3
- Version: 1.10.0
3
+ Version: 1.11.0
4
4
  Summary: Utilities to simplify use of Dervia and Pandas to create reproducable ML pipelines
5
5
  Author-email: ISRD <isrd-dev@isi.edu>
6
6
  Requires-Python: >=3.10
7
7
  Description-Content-Type: text/markdown
8
8
  License-File: LICENSE
9
+ Requires-Dist: bump-my-version
9
10
  Requires-Dist: deriva~=1.7.7
10
11
  Requires-Dist: pandas
11
12
  Requires-Dist: regex~=2024.7.24
@@ -0,0 +1,27 @@
1
+ deriva_ml/__init__.py,sha256=r1Z9N5vtZkAET7emqhpAx2bf_xJUp5wHOc4_DIplsG8,1082
2
+ deriva_ml/database_model.py,sha256=58iweWRteLeKKjjeNA9_e7TbUb4Av92lxH2zKvZzwA8,14823
3
+ deriva_ml/dataset.py,sha256=HXzu30n42bDPWhyYC1n87uovU1ThXeafmZ3cqUD1gYw,60827
4
+ deriva_ml/dataset_aux_classes.py,sha256=YxjQnu2kS9kK_f8bGqhmgE6ty9GNeitCxfvReT9vaM0,6537
5
+ deriva_ml/dataset_bag.py,sha256=rA5BrcR1_j3-aj50vzfnoMTxaT2-CkNktYB-6HbunwQ,11848
6
+ deriva_ml/demo_catalog.py,sha256=9Qo3JD4bUIwnL3ngPctc2QBeWApvMR_5UyaK9ockTrY,11536
7
+ deriva_ml/deriva_definitions.py,sha256=2eSbTFQ-9rpctphN4PLo8WdtkzMfhfZr3vJeywt6xPM,8897
8
+ deriva_ml/deriva_ml_base.py,sha256=abATy0Qju3uyJnq9FdAXD3JjZqms04j1HBxdranox58,46265
9
+ deriva_ml/deriva_model.py,sha256=k6P74S0-7yMJw0KDt3apErTjIpCkCwz1f_1t3T-hbLE,12981
10
+ deriva_ml/execution.py,sha256=7xEg8oHyfVVD5TWPYGHM1Vj2CGPJhzhgPqprvm8E2-c,34187
11
+ deriva_ml/execution_configuration.py,sha256=ZdLHLTUcg5V1id1sVjbp7Nm5bjh42ATG7hOGKaiCSj4,4013
12
+ deriva_ml/execution_environment.py,sha256=bCRKrCELDbGQDo7_FKfw7e8iMzVjSRZK3baKkqH5-_0,3264
13
+ deriva_ml/feature.py,sha256=07g0uSrhumdopJluWuWSRMrzagaikAOihqB09bzXBP4,5475
14
+ deriva_ml/history.py,sha256=qTDLDs8Ow_6r7mDO0gZm0Fg81SWKOAgtCU5pzZoDRgM,2828
15
+ deriva_ml/test_functions.py,sha256=-eqLHjjCQCLBNAr1ofbZekNiCOfMISSACRxT_YHER8I,4396
16
+ deriva_ml/upload.py,sha256=RJLZjJrbDEfONbxsxt_tYChQU77FkJeByyONrFKjvAc,16143
17
+ deriva_ml/schema_setup/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
18
+ deriva_ml/schema_setup/annotations.py,sha256=v0gTpmWYxRqsQ-bcnQzsr8WowGv2pi9pZUsO3WWnu1U,9528
19
+ deriva_ml/schema_setup/create_schema.py,sha256=hNMc-v5tferd0UjfdB6nBw7Rc_o-Mg6NkPqQGie9YOw,11700
20
+ deriva_ml/schema_setup/policy.json,sha256=77sf0Imy6CAQV0_VwwbA56_KROJ05WXsvT-Wjtkk538,1633
21
+ deriva_ml/schema_setup/table_comments_utils.py,sha256=-2_ubEpoH7ViLVb-ZfW9wZbQ26DTKNgjkCABMzGu4i4,2140
22
+ deriva_ml-1.11.0.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
23
+ deriva_ml-1.11.0.dist-info/METADATA,sha256=H7JTu9ZNl-soQeX0oj2N_AELNu2r6n3NCP5o5LFF5M4,973
24
+ deriva_ml-1.11.0.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
25
+ deriva_ml-1.11.0.dist-info/entry_points.txt,sha256=ZiOvrYj022x544TQwi018ujeHRRDahNmwJnzn5ThacM,242
26
+ deriva_ml-1.11.0.dist-info/top_level.txt,sha256=I1Q1dkH96cRghdsFRVqwpa2M7IqJpR2QPUNNc5-Bnpw,10
27
+ deriva_ml-1.11.0.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (78.0.2)
2
+ Generator: setuptools (78.1.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -1,27 +0,0 @@
1
- deriva_ml/__init__.py,sha256=r1Z9N5vtZkAET7emqhpAx2bf_xJUp5wHOc4_DIplsG8,1082
2
- deriva_ml/database_model.py,sha256=58iweWRteLeKKjjeNA9_e7TbUb4Av92lxH2zKvZzwA8,14823
3
- deriva_ml/dataset.py,sha256=h7Zkhnhy66GhPg6O1ud-YCx-jFKAabWF-nwuIDsR8SU,60785
4
- deriva_ml/dataset_aux_classes.py,sha256=YxjQnu2kS9kK_f8bGqhmgE6ty9GNeitCxfvReT9vaM0,6537
5
- deriva_ml/dataset_bag.py,sha256=aOJxFA9t5apjE5BNBrk8Pi9R1Cp8AWnnaL-10P8ELrQ,11515
6
- deriva_ml/demo_catalog.py,sha256=1442Lbxmlq45_fgFx0SZPag6dZLimXCk57-TRFee3VA,11064
7
- deriva_ml/deriva_definitions.py,sha256=jNiInYA2Cb1GE4OOT1CofxBygdLDSOmNsw5Wl6NbZQE,8943
8
- deriva_ml/deriva_ml_base.py,sha256=Yo52Sb_9rujH7ew9aJ_Ys84NZU-Tc3TGV_O--wnaUQA,47307
9
- deriva_ml/deriva_model.py,sha256=B4gwr3-92IQU-mEZlusgNEnRyulD96esWGS67q9MzHk,12024
10
- deriva_ml/execution.py,sha256=nPTQ__QHoBTz0gUu8k4CSEeCD4UvttZfy2oDJr9HxKY,30294
11
- deriva_ml/execution_configuration.py,sha256=yksebWFjAfrar2955L8_D6vUnQlfuvcyrqjOIrvWW90,3368
12
- deriva_ml/execution_environment.py,sha256=bCRKrCELDbGQDo7_FKfw7e8iMzVjSRZK3baKkqH5-_0,3264
13
- deriva_ml/feature.py,sha256=7e8WYPCfJSrGxJh9oUTduYSnB5ekybRhXa_0HIigS_w,5459
14
- deriva_ml/history.py,sha256=qTDLDs8Ow_6r7mDO0gZm0Fg81SWKOAgtCU5pzZoDRgM,2828
15
- deriva_ml/test_functions.py,sha256=-eqLHjjCQCLBNAr1ofbZekNiCOfMISSACRxT_YHER8I,4396
16
- deriva_ml/upload.py,sha256=P35ViZzlNNbsXVbnTyq-G781nGHbX4md1tiCp3c_KKI,22264
17
- deriva_ml/schema_setup/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
18
- deriva_ml/schema_setup/annotations.py,sha256=v0gTpmWYxRqsQ-bcnQzsr8WowGv2pi9pZUsO3WWnu1U,9528
19
- deriva_ml/schema_setup/create_schema.py,sha256=BRdYeWW5I8HxuATkB1hkKuIw4n-JQu620xod7EQoVSE,10674
20
- deriva_ml/schema_setup/policy.json,sha256=77sf0Imy6CAQV0_VwwbA56_KROJ05WXsvT-Wjtkk538,1633
21
- deriva_ml/schema_setup/table_comments_utils.py,sha256=-2_ubEpoH7ViLVb-ZfW9wZbQ26DTKNgjkCABMzGu4i4,2140
22
- deriva_ml-1.10.0.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
23
- deriva_ml-1.10.0.dist-info/METADATA,sha256=EInfvOS4ru5OFfTQvNvFYVytQiuzHOXhiH3zISlNhmQ,942
24
- deriva_ml-1.10.0.dist-info/WHEEL,sha256=DK49LOLCYiurdXXOXwGJm6U4DkHkg4lcxjhqwRa0CP4,91
25
- deriva_ml-1.10.0.dist-info/entry_points.txt,sha256=ZiOvrYj022x544TQwi018ujeHRRDahNmwJnzn5ThacM,242
26
- deriva_ml-1.10.0.dist-info/top_level.txt,sha256=I1Q1dkH96cRghdsFRVqwpa2M7IqJpR2QPUNNc5-Bnpw,10
27
- deriva_ml-1.10.0.dist-info/RECORD,,