Skip to content
Snippets Groups Projects
Commit 07e9d627 authored by Constantin Pape's avatar Constantin Pape
Browse files

Update registration mechanism and fix edu names

parent a92a627c
No related branches found
No related tags found
No related merge requests found
...@@ -47,26 +47,19 @@ def create_auxiliary_gene_file(meds_path, out_file, return_result=False): ...@@ -47,26 +47,19 @@ def create_auxiliary_gene_file(meds_path, out_file, return_result=False):
names_dset = 'gene_names' names_dset = 'gene_names'
dset = 't00000/s00/0/cells' dset = 't00000/s00/0/cells'
# NOTE special treatment of edu will not be necessary if we add MED postfix to them again # get all the med files in the image folder
# get all the meds in the folder
# 1.) meds
med_files = glob(os.path.join(meds_path, "*MED.h5")) med_files = glob(os.path.join(meds_path, "*MED.h5"))
gene_names = [os.path.splitext(os.path.basename(f))[0][:-4] for f in med_files] gene_names = [os.path.splitext(os.path.basename(f))[0][:-4] for f in med_files]
# 2.) edu
edu_files = glob(os.path.join(meds_path, "*edu*"))
gene_names += [os.path.splitext(os.path.basename(f))[0] for f in edu_files]
all_files = med_files + edu_files
# find out where the gene name actually starts (the 5th dash-separated word) # find out where the gene name actually starts (the 5th dash-separated word)
name_start = find_nth(gene_names[0], '-', 4) + 1 name_start = find_nth(gene_names[0], '-', 4) + 1
# cut all the preceeding prospr-... part # cut all the preceeding prospr-... part
gene_names = [name[name_start:] for name in gene_names] gene_names = [name[name_start:] for name in gene_names]
num_genes = len(all_files) num_genes = len(med_files)
assert len(gene_names) == num_genes, "%i, %i" % (len(gene_names), len(num_genes)) assert len(gene_names) == num_genes, "%i, %i" % (len(gene_names), len(num_genes))
with h5py.File(all_files[0], 'r') as f: with h5py.File(med_files[0], 'r') as f:
spatial_shape = f[dset].shape spatial_shape = f[dset].shape
shape = (num_genes,) + spatial_shape shape = (num_genes,) + spatial_shape
......
...@@ -12,7 +12,7 @@ import numpy as np ...@@ -12,7 +12,7 @@ import numpy as np
import pandas as pd import pandas as pd
from pybdv import make_bdv from pybdv import make_bdv
from scripts.files import copy_release_folder, make_folder_structure, make_bdv_server_file from scripts.files import copy_release_folder, make_folder_structure, make_bdv_server_file, get_source_names
from scripts.files.xml_utils import get_h5_path_from_xml, write_simple_xml from scripts.files.xml_utils import get_h5_path_from_xml, write_simple_xml
from scripts.release_helper import add_version from scripts.release_helper import add_version
from scripts.extension.registration import ApplyRegistrationLocal, ApplyRegistrationSlurm from scripts.extension.registration import ApplyRegistrationLocal, ApplyRegistrationSlurm
...@@ -41,7 +41,7 @@ def get_tags(new_tag): ...@@ -41,7 +41,7 @@ def get_tags(new_tag):
return tag, new_tag return tag, new_tag
def get_out_name(prefix, name): def parse_prospr(prefix, name):
name = os.path.split(name)[1] name = os.path.split(name)[1]
name = os.path.splitext(name)[0] name = os.path.splitext(name)[0]
name = name.split('--')[0] name = name.split('--')[0]
...@@ -50,9 +50,6 @@ def get_out_name(prefix, name): ...@@ -50,9 +50,6 @@ def get_out_name(prefix, name):
# name = name.split('-')[0] # name = name.split('-')[0]
if name in REGION_NAMES: if name in REGION_NAMES:
name = '-'.join([prefix, 'segmented', name]) name = '-'.join([prefix, 'segmented', name])
# TODO edus shouls still have MED postfix !
elif name.startswith('edu'): # edus are no meds
name = '-'.join([prefix, name])
else: else:
name = '-'.join([prefix, name, 'MED']) name = '-'.join([prefix, name, 'MED'])
return name return name
...@@ -79,7 +76,7 @@ def copy_to_h5(inputs, output_folder): ...@@ -79,7 +76,7 @@ def copy_to_h5(inputs, output_folder):
def apply_registration(input_folder, new_folder, def apply_registration(input_folder, new_folder,
transformation_file, source_prefix, transformation_file, source_prefix,
target, max_jobs): target, max_jobs, name_parser):
task = ApplyRegistrationSlurm if target == 'slurm' else ApplyRegistrationLocal task = ApplyRegistrationSlurm if target == 'slurm' else ApplyRegistrationLocal
tmp_folder = './tmp_registration' tmp_folder = './tmp_registration'
os.makedirs(tmp_folder, exist_ok=True) os.makedirs(tmp_folder, exist_ok=True)
...@@ -98,7 +95,7 @@ def apply_registration(input_folder, new_folder, ...@@ -98,7 +95,7 @@ def apply_registration(input_folder, new_folder,
# output_folder = os.path.join(new_folder, 'images') # output_folder = os.path.join(new_folder, 'images')
output_folder = os.path.join(tmp_folder, 'outputs') output_folder = os.path.join(tmp_folder, 'outputs')
os.makedirs(output_folder, exist_ok=True) os.makedirs(output_folder, exist_ok=True)
output_names = [get_out_name(source_prefix, name) for name in inputs] output_names = [name_parser(source_prefix, name) for name in inputs]
outputs = [os.path.join(output_folder, name) for name in output_names] outputs = [os.path.join(output_folder, name) for name in output_names]
# update the task config # update the task config
...@@ -142,7 +139,7 @@ def apply_registration(input_folder, new_folder, ...@@ -142,7 +139,7 @@ def apply_registration(input_folder, new_folder,
copy_to_h5(outputs, output_folder) copy_to_h5(outputs, output_folder)
def update_gene_attributes(new_folder, target): def update_prospr(new_folder, target):
# update the auxiliaty gene volume # update the auxiliaty gene volume
image_folder = os.path.join(new_folder, 'images') image_folder = os.path.join(new_folder, 'images')
...@@ -173,8 +170,12 @@ def update_gene_attributes(new_folder, target): ...@@ -173,8 +170,12 @@ def update_gene_attributes(new_folder, target):
write_genes_table(seg_path, aux_out_path, out_path, write_genes_table(seg_path, aux_out_path, out_path,
labels, tmp_folder, target) labels, tmp_folder, target)
# TODO we should register the virtual cells here as well
def update_regestration(transformation_file, input_folder, source_prefix, target, max_jobs,
# we should encode the source prefix and the transformation file to be used
# in a config file in the transformation folder
def update_registration(transformation_file, input_folder, source_prefix, target, max_jobs,
new_tag=None): new_tag=None):
""" Update the prospr segmentation. """ Update the prospr segmentation.
This is a special case of 'update_patch', that applies a new prospr registration. This is a special case of 'update_patch', that applies a new prospr registration.
...@@ -187,6 +188,10 @@ def update_regestration(transformation_file, input_folder, source_prefix, target ...@@ -187,6 +188,10 @@ def update_regestration(transformation_file, input_folder, source_prefix, target
max_jobs [int] - max number of jobs for computation max_jobs [int] - max number of jobs for computation
new_tag [str] - new version tag (default: None) new_tag [str] - new version tag (default: None)
""" """
prefixes = get_source_names()
if source_prefix not in prefixes:
raise ValueError("Invalid source name %s" % source_prefix)
tag, new_tag = get_tags(new_tag) tag, new_tag = get_tags(new_tag)
print("Updating platy browser from", tag, "to", new_tag) print("Updating platy browser from", tag, "to", new_tag)
...@@ -198,16 +203,21 @@ def update_regestration(transformation_file, input_folder, source_prefix, target ...@@ -198,16 +203,21 @@ def update_regestration(transformation_file, input_folder, source_prefix, target
# copy the release folder # copy the release folder
copy_release_folder(folder, new_folder, exclude_prefixes=[source_prefix]) copy_release_folder(folder, new_folder, exclude_prefixes=[source_prefix])
if source_prefix == "prospr-6dpf-1-whole":
name_parser = parse_prospr
else:
raise NotImplementedError
# apply new registration to all files of the source prefix # apply new registration to all files of the source prefix
transformation_file = os.path.abspath(transformation_file) transformation_file = os.path.abspath(transformation_file)
apply_registration(input_folder, new_folder, apply_registration(input_folder, new_folder,
transformation_file, source_prefix, transformation_file, source_prefix,
target, max_jobs) target, max_jobs, name_parser)
# TODO we should register virtual cells here too
# update gene table if source_prefix == "prospr-6dpf-1-whole":
update_gene_attributes(new_folder, target) update_prospr(new_folder, target)
else:
raise NotImplementedError
add_version(new_tag) add_version(new_tag)
make_bdv_server_file(new_folder, os.path.join(new_folder, 'misc', 'bdv_server.txt'), make_bdv_server_file(new_folder, os.path.join(new_folder, 'misc', 'bdv_server.txt'),
...@@ -236,5 +246,5 @@ if __name__ == '__main__': ...@@ -236,5 +246,5 @@ if __name__ == '__main__':
new_tag = args.new_tag new_tag = args.new_tag
new_tag = None if new_tag == '' else new_tag new_tag = None if new_tag == '' else new_tag
update_regestration(args.transformation_file, args.input_folder, args.source_prefix, update_registration(args.transformation_file, args.input_folder, args.source_prefix,
args.target, args.max_jobs, new_tag) args.target, args.max_jobs, new_tag)
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