def render_tiles_2d(tiles_fname, output_dir, tile_size, output_type, jar_file, output_pattern=None, blend_type=None, threads_num=None): tiles_url = utils.path2url(tiles_fname) threads_str = "" if threads_num is not None: threads_str = "--threads {}".format(threads_num) blend_str = "" if blend_type is not None: blend_str = "--blendType {}".format(blend_type) pattern_str = "" if output_pattern is not None: pattern_str = "--outputNamePattern {}".format(output_pattern) java_cmd = 'java -Xmx32g -XX:ParallelGCThreads=1 -Djava.awt.headless=true -cp "{0}" org.janelia.alignment.RenderTiles --targetDir {1} --tileSize {2} \ {3} {4} --outputType {5} {6} --url {7}' .format(\ jar_file, output_dir, tile_size, threads_str, blend_str, output_type, pattern_str, tiles_url) utils.execute_shell_command(java_cmd)
def normalize_coordinates(tile_fnames_or_dir, output_dir, jar_file): all_files = [] for file_or_dir in tile_fnames_or_dir: if not os.path.exists(file_or_dir): print("{0} does not exist (file/directory), skipping".format(file_or_dir)) continue if os.path.isdir(file_or_dir): actual_dir_files = glob.glob(os.path.join(file_or_dir, '*.json')) all_files.extend(actual_dir_files) else: all_files.append(file_or_dir) if len(all_files) == 0: print "No files for normalization found. Exiting." return print "Normalizing coordinates of {0} files".format(all_files) files_urls = [] for file_name in all_files: tiles_url = utils.path2url(file_name) files_urls.append(tiles_url) list_file = os.path.join(output_dir, "all_files.txt") print "list_file", list_file utils.write_list_to_file(list_file, files_urls) list_file_url = utils.path2url(list_file) java_cmd = 'java -Xmx3g -XX:ParallelGCThreads=1 -Djava.awt.headless=true -cp "{0}" org.janelia.alignment.NormalizeCoordinates --targetDir {1} {2}'.format( jar_file, output_dir, list_file_url) utils.execute_shell_command(java_cmd)
def create_meshes(tiles_fname, output_dir, jar_file, threads_num=4): tiles_url = utils.path2url(os.path.abspath(tiles_fname)) # Compute the Sift features `for each tile in the tile spec file java_cmd = 'java -Xmx32g -XX:ParallelGCThreads=1 -Djava.awt.headless=true -cp "{0}" org.janelia.alignment.SaveMesh --targetDir {1} --threads {2} --inputfile {3}'.format(\ jar_file, output_dir, threads_num, tiles_url) utils.execute_shell_command(java_cmd)
def match_multiple_sift_features(tiles_file, features_file, index_pairs, jar, out_fname, conf_args): tiles_url = utils.path2url(os.path.abspath(tiles_file)) java_cmd = 'java -Xmx4g -Djava.awt.headless=true -cp "{0}" org.janelia.alignment.MatchSiftFeatures --tilespecfile {1} --featurefile {2} {3} --targetPath {4} {5}'.format( jar, tiles_url, features_file, " ".join("--indices {}:{}".format(a, b) for a, b in index_pairs), out_fname, conf_args) utils.execute_shell_command(java_cmd)
def filter_ransac(corr_file, compared_url, out_fname, jar_file, conf=None): # When matching layers, no need to take bounding box into account conf_args = utils.conf_args_from_file(conf, 'FilterRansac') java_cmd = 'java -Xmx3g -XX:ParallelGCThreads=1 -Djava.awt.headless=true -cp "{0}" org.janelia.alignment.FilterRansac --inputfile {1} --comparedUrl {2} \ --targetPath {3} {4}'.format(jar_file, utils.path2url(corr_file), compared_url, out_fname, conf_args) utils.execute_shell_command(java_cmd)
def block_matching_test_params(tile_files, jar_file, conf=None, threads_num=4): #conf_args = utils.conf_args(conf, 'MatchLayersByMaxPMCC') java_cmd = 'java -Xmx16g -XX:ParallelGCThreads=1 -cp "{0}" org.janelia.alignment.TestBlockMatchingParameters --tilespecFiles {1} \ --threads {2} {3}'.format( jar_file, " ".join(utils.path2url(f) for f in tile_files), threads_num, conf) utils.execute_shell_command(java_cmd)
def filter_local_smoothness(corr_file, out_fname, jar_file, conf=None): # When matching layers, no need to take bounding box into account conf_args = utils.conf_args_from_file(conf, 'FilterLocalSmoothness') java_cmd = 'java -Xmx3g -XX:ParallelGCThreads=1 -Djava.awt.headless=true -cp "{0}" org.janelia.alignment.FilterLocalSmoothness --inputfile {1} \ --targetPath {2} {3}'.format( jar_file, utils.path2url(corr_file), out_fname, conf_args) utils.execute_shell_command(java_cmd)
def optimize_elastic_transform(correspondence_file, tilespec_file, fixed_tiles, output_file, jar_file, conf_fname=None): corr_url = utils.path2url(correspondence_file) tiles_url = utils.path2url(tilespec_file) conf_args = utils.conf_args_from_file(conf_fname, 'OptimizeMontageElastic') fixed_str = "" if fixed_tiles != None: fixed_str = "--fixedTiles {0}".format(" ".join(map(str, fixed_tiles))) java_cmd = 'java -Xmx10g -XX:ParallelGCThreads=1 -Djava.awt.headless=true -cp "{0}" org.janelia.alignment.OptimizeMontageElastic {1} --corrfile {2} --tilespecfile {3} {4} --targetPath {5}'.format(\ jar_file, conf_args, corr_url, tiles_url, fixed_str, output_file) utils.execute_shell_command(java_cmd)
def render_2d(tiles_fname, output_fname, width, jar_file, threads_num=None): tiles_url = utils.path2url(tiles_fname) threads_str = "" if threads_num is not None: threads_str = "--threads {}".format(threads_num) width_str = "--width {}".format(width) if width == -1: width_str = "--fullImage" java_cmd = 'java -Xmx32g -XX:ParallelGCThreads=1 -Djava.awt.headless=true -cp "{0}" org.janelia.alignment.Render --out {1} {2} \ {3} --hide --url {4}'.format(\ jar_file, output_fname, width_str, threads_str, tiles_url) utils.execute_shell_command(java_cmd)
def match_single_sift_features_and_filter(tiles_file, features_file1, features_file2, jar, out_fname, index_pair, conf_fname=None): tiles_url = utils.path2url(os.path.abspath(tiles_file)) conf_args = utils.conf_args_from_file(conf_fname, 'MatchSiftFeaturesAndFilter') java_cmd = 'java -Xmx3g -XX:ParallelGCThreads=1 -Djava.awt.headless=true -cp "{0}" org.janelia.alignment.MatchSiftFeaturesAndFilter \ --tilespecfile {1} --featurefile1 {2} --featurefile2 {3} --indices {4} --targetPath {5} {6}'.format( jar, tiles_url, features_file1, features_file2, "{}:{}".format(index_pair[0], index_pair[1]), out_fname, conf_args) utils.execute_shell_command(java_cmd)
def create_layer_sift_features(tiles_fname, out_fname, jar_file, meshes_dir=None, conf=None, threads_num=4): meshes_str = '' if meshes_dir is not None: meshes_str = '--meshesDir "{0}"'.format(meshes_dir) tiles_url = utils.path2url(os.path.abspath(tiles_fname)) conf_args = utils.conf_args_from_file(conf, 'ComputeSiftFeatures') # Compute the Sift features `for each tile in the tile spec file java_cmd = 'java -Xmx11g -XX:ParallelGCThreads=1 -Djava.awt.headless=true -cp "{0}" org.janelia.alignment.ComputeLayerSiftFeatures --url {1} --targetPath {2} --threads {3} {4} {5}'.format(\ jar_file, tiles_url, out_fname, threads_num, meshes_str, conf_args) utils.execute_shell_command(java_cmd)
def match_layers_sift_features(tiles_file1, features_file1, tiles_file2, features_file2, out_fname, jar_file, conf=None, threads_num=4): # When matching layers, no need to take bounding box into account conf_args = utils.conf_args_from_file(conf, 'MatchSiftFeatures') java_cmd = 'java -Xmx3g -XX:ParallelGCThreads=1 -Djava.awt.headless=true -cp "{0}" org.janelia.alignment.MatchLayersSiftFeatures --threads {1} --tilespec1 {2} \ --featurefile1 {3} --tilespec2 {4} --featurefile2 {5} --targetPath {6} {7}'.format( jar_file, threads_num, utils.path2url(tiles_file1), utils.path2url(features_file1), utils.path2url(tiles_file2), utils.path2url(features_file2), out_fname, conf_args) utils.execute_shell_command(java_cmd)
def create_sift_features(tiles_fname, out_fname, index, jar_file, conf_fname=None, threads_num=None): threads_str = "" if threads_num != None: threads_str = "--threads {0}".format(threads_num) tiles_url = utils.path2url(os.path.abspath(tiles_fname)) conf_args = utils.conf_args_from_file(conf_fname, 'ComputeSiftFeatures') # Compute the Sift features `for each tile in the tile spec file java_cmd = 'java -Xmx5g -XX:ParallelGCThreads=1 -Djava.awt.headless=true -cp "{0}" org.janelia.alignment.ComputeSiftFeatures --index {1} \ --url {2} --targetPath {3} {4} {5}' .format(\ jar_file, index, tiles_url, out_fname, threads_str, conf_args) utils.execute_shell_command(java_cmd)
def match_layers_by_max_pmcc(jar_file, tiles_file1, tiles_file2, models_file, image_width, image_height, fixed_layers, out_fname, meshes_dir1=None, meshes_dir2=None, conf=None, threads_num=None, auto_add_model=False): conf_args = utils.conf_args_from_file(conf, 'MatchLayersByMaxPMCC') meshes_str = '' if meshes_dir1 is not None: meshes_str += ' --meshesDir1 "{0}"'.format(meshes_dir1) if meshes_dir2 is not None: meshes_str += ' --meshesDir2 "{0}"'.format(meshes_dir2) fixed_str = "" if fixed_layers != None: fixed_str = "--fixedLayers {0}".format(" ".join(map(str, fixed_layers))) threads_str = "" if threads_num != None: threads_str = "--threads {0}".format(threads_num) auto_add_model_str = "" if auto_add_model: auto_add_model_str = "--autoAddModel" java_cmd = 'java -Xmx16g -XX:ParallelGCThreads={0} -Djava.awt.headless=true -cp "{1}" org.janelia.alignment.MatchLayersByMaxPMCC --inputfile1 {2} --inputfile2 {3} \ --modelsfile1 {4} --imageWidth {5} --imageHeight {6} {7} {8} {9} --targetPath {10} {11} {12}'.format( utils.get_gc_threads_num(threads_num), jar_file, utils.path2url(tiles_file1), utils.path2url(tiles_file2), utils.path2url(models_file), int(image_width), int(image_height), threads_str, auto_add_model_str, meshes_str, out_fname, fixed_str, conf_args) utils.execute_shell_command(java_cmd)
def render_3d(tile_fnames_or_dir_fname, output_dir, from_layer, to_layer, scale, from_x, from_y, to_x, to_y, jar_file, threads_num=1): list_file_url = utils.path2url(tile_fnames_or_dir_fname) java_cmd = 'java -Xmx32g -XX:ParallelGCThreads=1 -cp "{0}" org.janelia.alignment.Render3D --targetDir {1} --scale {2} \ --threads {3} --fromLayer {4} --toLayer {5} --fromX {6} --fromY {7} --toX {8} --toY {9} --hide {10}' .format(\ jar_file, output_dir, scale, threads_num, from_layer, to_layer, from_x, from_y, to_x, to_y, list_file_url) utils.execute_shell_command(java_cmd)
def optimize_layers_affine(tile_files, corr_files, model_files, fixed_layers, out_dir, max_layer_distance, jar_file, conf=None, skip_layers=None, threads_num=4, manual_matches=None): conf_args = utils.conf_args_from_file(conf, 'OptimizeLayersAffine') fixed_str = "" if fixed_layers != None: fixed_str = " ".join("--fixedLayers {0}".format(str(fixed_layer)) for fixed_layer in fixed_layers) skip_str = "" if skip_layers != None: skip_str = "--skipLayers {0}".format(skip_layers) manual_matches_str = "" if manual_matches is not None: manual_matches_str = " ".join("--manualMatches {}".format(a) for a in manual_matches) # Assuming that at least 4 threads will be allocated for this job, and increasing the number of gc threads to 4 will make it faster java_cmd = 'java -Xmx46g -XX:ParallelGCThreads={0} -Djava.awt.headless=true -cp "{1}" org.janelia.alignment.OptimizeLayersAffine --tilespecFiles {2} --corrFiles {3} \ --modelFiles {4} {5} {6} --threads {7} --maxLayersDistance {8} {9} --targetDir {10} {11}'.format( utils.get_gc_threads_num(threads_num), jar_file, " ".join(utils.path2url(f) for f in tile_files), " ".join(utils.path2url(f) for f in corr_files), " ".join(utils.path2url(f) for f in model_files), fixed_str, manual_matches_str, threads_num, max_layer_distance, skip_str, out_dir, conf_args) utils.execute_shell_command(java_cmd)
def match_multiple_pmcc(tiles_file, index_pairs, fixed_tiles, jar, out_fname, conf_fname=None, threads_num=None): tiles_url = utils.path2url(os.path.abspath(tiles_file)) fixed_str = "" if fixed_tiles != None: fixed_str = "--fixedTiles {0}".format(" ".join(map(str, fixed_tiles))) threads_str = "" if threads_num != None: threads_str = "--threads {0}".format(threads_num) conf_args = utils.conf_args_from_file(conf_fname, 'MatchByMaxPMCC') java_cmd = 'java -Xmx27g -XX:ParallelGCThreads=1 -Djava.awt.headless=true -cp "{0}" org.janelia.alignment.MatchByMaxPMCC --inputfile {1} {2} {3} {4} --targetPath {5} {6}'.format( jar, tiles_url, fixed_str, " ".join("--indices {}:{}".format(a, b) for a, b in index_pairs), threads_str, out_fname, conf_args) utils.execute_shell_command(java_cmd)
def update_bounding_box(tiles_fname, output_dir, jar_file, threads_num=1): tiles_url = utils.path2url(tiles_fname) java_cmd = 'java -Xmx9g -XX:ParallelGCThreads=1 -Djava.awt.headless=true -cp "{0}" org.janelia.alignment.UpdateBoundingBox --threads {1} --targetDir {2} {3}'.format(\ jar_file, threads_num, output_dir, tiles_url) utils.execute_shell_command(java_cmd)
def call_java_debug_match_pmcc(input_file, out_dir, jar_file): input_url = utils.path2url(os.path.abspath(input_file)) java_cmd = 'java -Xmx4g -Djava.awt.headless=true -cp "{0}" org.janelia.alignment.DebugCorrespondence --inputfile {1} --targetDir {2}'.format(\ jar_file, input_url, out_dir) utils.execute_shell_command(java_cmd)