zombie-squirrel 0.4.7__py3-none-any.whl → 0.5.1__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.
- zombie_squirrel/__init__.py +1 -1
- zombie_squirrel/squirrels.py +22 -1
- {zombie_squirrel-0.4.7.dist-info → zombie_squirrel-0.5.1.dist-info}/METADATA +2 -2
- zombie_squirrel-0.5.1.dist-info/RECORD +10 -0
- zombie_squirrel-0.4.7.dist-info/RECORD +0 -10
- {zombie_squirrel-0.4.7.dist-info → zombie_squirrel-0.5.1.dist-info}/WHEEL +0 -0
- {zombie_squirrel-0.4.7.dist-info → zombie_squirrel-0.5.1.dist-info}/licenses/LICENSE +0 -0
- {zombie_squirrel-0.4.7.dist-info → zombie_squirrel-0.5.1.dist-info}/top_level.txt +0 -0
zombie_squirrel/__init__.py
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Provides functions to fetch and cache project names, subject IDs, and asset
|
|
4
4
|
metadata from the AIND metadata database with support for multiple backends."""
|
|
5
5
|
|
|
6
|
-
__version__ = "0.
|
|
6
|
+
__version__ = "0.5.1"
|
|
7
7
|
|
|
8
8
|
from zombie_squirrel.squirrels import ( # noqa: F401
|
|
9
9
|
asset_basics,
|
zombie_squirrel/squirrels.py
CHANGED
|
@@ -143,6 +143,9 @@ def asset_basics(force_update: bool = False) -> pd.DataFrame:
|
|
|
143
143
|
"subject.subject_id",
|
|
144
144
|
"acquisition.acquisition_start_time",
|
|
145
145
|
"acquisition.acquisition_end_time",
|
|
146
|
+
"processing.data_processes.start_date_time",
|
|
147
|
+
"subject.subject_details.genotype",
|
|
148
|
+
"location",
|
|
146
149
|
]
|
|
147
150
|
|
|
148
151
|
if df.empty or force_update:
|
|
@@ -157,6 +160,9 @@ def asset_basics(force_update: bool = False) -> pd.DataFrame:
|
|
|
157
160
|
"subject_id",
|
|
158
161
|
"acquisition_start_time",
|
|
159
162
|
"acquisition_end_time",
|
|
163
|
+
"process_date",
|
|
164
|
+
"genotype",
|
|
165
|
+
"location",
|
|
160
166
|
]
|
|
161
167
|
)
|
|
162
168
|
client = MetadataDbClient(
|
|
@@ -183,7 +189,7 @@ def asset_basics(force_update: bool = False) -> pd.DataFrame:
|
|
|
183
189
|
asset_records = []
|
|
184
190
|
for i in range(0, len(keep_ids), BATCH_SIZE):
|
|
185
191
|
logging.info(f"Fetching asset basics batch {i // BATCH_SIZE + 1}...")
|
|
186
|
-
batch_ids = keep_ids[i
|
|
192
|
+
batch_ids = keep_ids[i: i + BATCH_SIZE]
|
|
187
193
|
batch_records = client.retrieve_docdb_records(
|
|
188
194
|
filter_query={"_id": {"$in": batch_ids}},
|
|
189
195
|
projection={field: 1 for field in FIELDS + ["_id", "_last_modified"]},
|
|
@@ -197,6 +203,16 @@ def asset_basics(force_update: bool = False) -> pd.DataFrame:
|
|
|
197
203
|
modalities = record.get("data_description", {}).get("modalities", [])
|
|
198
204
|
modality_abbreviations = [modality["abbreviation"] for modality in modalities if "abbreviation" in modality]
|
|
199
205
|
modality_abbreviations_str = ", ".join(modality_abbreviations)
|
|
206
|
+
|
|
207
|
+
# Get the process date, convert to YYYY-MM-DD if present
|
|
208
|
+
data_processes = record.get("processing", {}).get("data_processes", [])
|
|
209
|
+
if data_processes:
|
|
210
|
+
latest_process = data_processes[-1]
|
|
211
|
+
process_datetime = latest_process.get("start_date_time", None)
|
|
212
|
+
process_date = process_datetime.split("T")[0]
|
|
213
|
+
else:
|
|
214
|
+
process_date = None
|
|
215
|
+
|
|
200
216
|
flat_record = {
|
|
201
217
|
"_id": record["_id"],
|
|
202
218
|
"_last_modified": record.get("_last_modified", None),
|
|
@@ -206,6 +222,9 @@ def asset_basics(force_update: bool = False) -> pd.DataFrame:
|
|
|
206
222
|
"subject_id": record.get("subject", {}).get("subject_id", None),
|
|
207
223
|
"acquisition_start_time": record.get("acquisition", {}).get("acquisition_start_time", None),
|
|
208
224
|
"acquisition_end_time": record.get("acquisition", {}).get("acquisition_end_time", None),
|
|
225
|
+
"process_date": process_date,
|
|
226
|
+
"genotype": record.get("subject", {}).get("subject_details", {}).get("genotype", None),
|
|
227
|
+
"location": record.get("location", None),
|
|
209
228
|
}
|
|
210
229
|
records.append(flat_record)
|
|
211
230
|
|
|
@@ -300,6 +319,8 @@ def raw_to_derived(force_update: bool = False) -> pd.DataFrame:
|
|
|
300
319
|
raw_to_derived_map = {raw_id: [] for raw_id in raw_ids}
|
|
301
320
|
for derived_record in derived_records:
|
|
302
321
|
source_data_list = derived_record.get("data_description", {}).get("source_data", [])
|
|
322
|
+
if not source_data_list:
|
|
323
|
+
continue
|
|
303
324
|
derived_id = derived_record["_id"]
|
|
304
325
|
# Add this derived record to each raw record it depends on
|
|
305
326
|
for source_id in source_data_list:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: zombie-squirrel
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.5.1
|
|
4
4
|
Summary: Generated from aind-library-template
|
|
5
5
|
Author: Allen Institute for Neural Dynamics
|
|
6
6
|
License: MIT
|
|
@@ -17,7 +17,7 @@ Dynamic: license-file
|
|
|
17
17
|

|
|
18
18
|
[](https://github.com/semantic-release/semantic-release)
|
|
19
19
|

|
|
20
|
-

|
|
21
21
|

|
|
22
22
|
|
|
23
23
|
<img src="zombie-squirrel_logo.png" width="400" alt="Logo (image from ChatGPT)">
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
zombie_squirrel/__init__.py,sha256=ihoDdnYVX9vzrIOTRGU1EFj_vGu_6OgJHeOC_6bVyLQ,409
|
|
2
|
+
zombie_squirrel/acorns.py,sha256=4uBzYtYgW2oD5sOohNQUw4qfjmNjmAIK2RlL1Ge1Udo,2597
|
|
3
|
+
zombie_squirrel/squirrels.py,sha256=xFGckcm4hcmFVxQneqeloSZjoY6Qc2wvHT9Wws9L-Rk,12088
|
|
4
|
+
zombie_squirrel/sync.py,sha256=84Ta5beHiPuGBVzp9SCo7G1b4McTUohcUIf_TJbNIV8,518
|
|
5
|
+
zombie_squirrel/utils.py,sha256=woPxU4vYMUv-T0XOjV5ieViksU_q7It_n_5Ll4zpocA,289
|
|
6
|
+
zombie_squirrel-0.5.1.dist-info/licenses/LICENSE,sha256=U0Y7B3gZJHXpjJVLgTQjM8e_c8w4JJpLgGhIdsoFR1Y,1092
|
|
7
|
+
zombie_squirrel-0.5.1.dist-info/METADATA,sha256=CgLCs4WxISN0rMMXSCw0H-E90W8V87bXErZbRbZ26XU,1902
|
|
8
|
+
zombie_squirrel-0.5.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
9
|
+
zombie_squirrel-0.5.1.dist-info/top_level.txt,sha256=FmM0coe4AangURZLjM4JwwRv2B8H6oINYCoZLKLDCKA,16
|
|
10
|
+
zombie_squirrel-0.5.1.dist-info/RECORD,,
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
zombie_squirrel/__init__.py,sha256=IbDiH8pqVLYYrcBbidXKEabMpxdtSRAY28A9CFDmaTY,409
|
|
2
|
-
zombie_squirrel/acorns.py,sha256=4uBzYtYgW2oD5sOohNQUw4qfjmNjmAIK2RlL1Ge1Udo,2597
|
|
3
|
-
zombie_squirrel/squirrels.py,sha256=b1kQ2itTBo4o0e0r8Fg56YcJsiJAIqxzs86CSv0ExXE,11181
|
|
4
|
-
zombie_squirrel/sync.py,sha256=84Ta5beHiPuGBVzp9SCo7G1b4McTUohcUIf_TJbNIV8,518
|
|
5
|
-
zombie_squirrel/utils.py,sha256=woPxU4vYMUv-T0XOjV5ieViksU_q7It_n_5Ll4zpocA,289
|
|
6
|
-
zombie_squirrel-0.4.7.dist-info/licenses/LICENSE,sha256=U0Y7B3gZJHXpjJVLgTQjM8e_c8w4JJpLgGhIdsoFR1Y,1092
|
|
7
|
-
zombie_squirrel-0.4.7.dist-info/METADATA,sha256=82LMU9_1DwFxTv77PusoaeV9CHHw0Q10CEpmmFdP3h4,1903
|
|
8
|
-
zombie_squirrel-0.4.7.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
9
|
-
zombie_squirrel-0.4.7.dist-info/top_level.txt,sha256=FmM0coe4AangURZLjM4JwwRv2B8H6oINYCoZLKLDCKA,16
|
|
10
|
-
zombie_squirrel-0.4.7.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|