예제 #1
0
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)
예제 #2
0
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)
예제 #3
0
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)
예제 #4
0
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)
예제 #5
0
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)
예제 #9
0
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)
예제 #13
0
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)
예제 #15
0
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)
예제 #17
0
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)
예제 #18
0
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)
예제 #19
0
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)