Skip to content
Snippets Groups Projects
Commit 868a87e4 authored by Christopher Randolph Rhodes's avatar Christopher Randolph Rhodes
Browse files

Classifier modification test is now obsolete, since generation works

parent f6efd5db
No related branches found
No related tags found
No related merge requests found
from pathlib import Path
import shutil
import h5py
import numpy as np
from extensions.chaeo.accessors import MonoPatchStack, MonoPatchStackFromFile
from extensions.chaeo.models import PatchStackObjectClassifier
def modify_ilastik_object_classifier(template_ilp: Path, lane: int = 0):
proj_dir = template_ilp.parent
proj_name = template_ilp.stem
proj_new_ilp = shutil.copy(template_ilp, proj_dir / ('mod_' + proj_name + '.ilp'))
with h5py.File(proj_dir / proj_new_ilp, 'r+') as h5:
# delete ObjectExtraction / RegionFeatures / 0000
# delete ObjectClassification/ClassifierForests
keys_to_delete = [
f'ObjectExtraction/RegionFeatures/{lane:04d}',
'ObjectClassification/ClassifierForests'
]
for key in keys_to_delete:
if key in h5.keys():
del h5[key]
assert key not in h5.keys()
# make links to input data relative
for gk in ['Raw Data', 'Segmentation Image']:
key = f'Input Data/infos/lane{lane:04d}/{gk}'
assert h5[f'{key}/location'][()] == 'FileSystem'.encode()
pa = Path(h5[f'{key}/filePath'][()].decode())
# assert pa.is_absolute()
rel_pa = pa.name
assert (proj_dir / rel_pa).exists()
del h5[f'{key}/filePath']
h5[f'{key}/filePath'] = rel_pa
assert h5[f'{key}/filePath'][()] == rel_pa.encode()
return proj_new_ilp
if __name__ == '__main__':
where = Path('c:/Users/rhodes/projects/proj0011-plankton-seg/exp0009/output/labeled_patches-20231030-0001')
where_ilp = where / 'auto_obj_before.ilp'
new_ilp = modify_ilastik_object_classifier(where_ilp)
# new_ilp = 'mod_auto_obj_before.ilp'
model = PatchStackObjectClassifier({'project_file': where / new_ilp})
raw = MonoPatchStackFromFile(where / 'zstack_train_raw.tif')
mask = MonoPatchStackFromFile(where / 'zstack_train_mask.tif')
labels = MonoPatchStackFromFile(where / f'zstack_train_label.tif')
result, _ = model.infer(raw, mask)
assert isinstance(result, MonoPatchStack)
print(f'Unique labels in truth set: {np.unique(labels.data)}')
print(f'Unique labels in inferred set: {np.unique(result.data)}')
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment