def make_skel_from_json(json_path: str): """ Creates a skeleton object from the binary targets of the data sources in json Args: json_path: the path of the data source json file Returns: skel: the skeleton object """ data_sources_dict = WkwData.convert_ds_to_dict( WkwData.read_short_ds_json(json_path=json_path)) # Init with empty skeleton empty_skel_name = os.path.join(get_data_dir(), 'NML', 'empty_skel.nml') skel = wkskel.Skeleton(nml_path=empty_skel_name) # Loop over each bbox keys = list(data_sources_dict.keys()) num_nodes_perTree = 5 for idx, key in tqdm(enumerate(keys), desc='Making bbox nml', total=len(keys)): # Get minimum and maximum node id min_id = (num_nodes_perTree * idx) + 1 max_id = num_nodes_perTree * (idx + 1) # Encode the target in the tree name cur_target = data_sources_dict[key]['target_class'] cur_name = f'{key}, Debris: {cur_target[0]}, Myelin: {cur_target[1]}' # add current tree add_bbox_tree(skel=skel, bbox=data_sources_dict[key]['input_bbox'], tree_name=cur_name, node_id_min_max=[min_id, max_id]) return skel
import os from genEM3.data.wkwdata import WkwData from genEM3.util.path import get_data_dir # Read Json file json_names = ['dense_3X_10_10_2_um/original_merged_double_binary_v01.json', '10x_test_bboxes/10X_9_9_1_um_double_binary_v01.json'] ds_names = [os.path.join(get_data_dir(), j_name) for j_name in json_names] data_sources = [] dataset_path = '/tmpscratch/webknossos/Connectomics_Department/2018-11-13_scMS109_1to7199_v01_l4_06_24_fixed_mag8_artifact_pred/color/1' for ds in ds_names: cur_ds = WkwData.datasources_from_json(json_path=ds) cur_ds_dict = WkwData.convert_ds_to_dict(cur_ds) # all pathes use the artifact_pred dataset for s in cur_ds_dict: cur_source = cur_ds_dict[s] cur_source['input_path'] = dataset_path cur_source['target_path'] = dataset_path cur_ds_dict[s] = cur_source # Write out the jsons cur_ds_corrected_list = WkwData.convert_ds_to_list(datasources_dict=cur_ds_dict) WkwData.datasources_to_json(datasources=cur_ds_corrected_list, json_path=ds)
import os from genEM3.data.wkwdata import WkwData from genEM3.util.path import get_data_dir # Read the two jsons target_names = ['Debris', 'Myelin'] json_names = ['combined_20K_patches.json', 'combined_20K_patches_v2.json'] full_names = [ os.path.join(get_data_dir(), 'combined', f_name) for f_name in json_names ] ds_list = [WkwData.read_short_ds_json(name) for name in full_names] ds_dict = [WkwData.convert_ds_to_dict(ds) for ds in ds_list] # Get the difference between the two data sources from jsons diff_sources = WkwData.compare_ds_targets(two_datasources=ds_dict, source_names=json_names, target_names=target_names) print(diff_sources)