コード例 #1
0
ファイル: main.py プロジェクト: marieisaac/cellfinder
def run_all(args, what_to_run, atlas):
    from cellfinder.detect import detect
    from cellfinder.classify import classify
    from cellfinder.analyse import analyse
    from cellfinder.figures import figures

    from cellfinder.tools import prep

    args, what_to_run = prep.prep_channel_specific_general(args, what_to_run)

    if what_to_run.detect:
        logging.info("Detecting cell candidates")
        args = prep.prep_candidate_detection(args)
        detect.main(args)
    else:
        logging.info("Skipping cell detection")

    if what_to_run.classify:
        args = prep.prep_classification(args, what_to_run)
        if what_to_run.classify:
            logging.info("Running cell classification")
            what_to_run.cells_exist = classify.main(args)

        else:
            logging.info("No cells were detected, skipping classification.")

    else:
        logging.info("Skipping cell classification")

    what_to_run.update_if_cells_required()

    if what_to_run.analyse or what_to_run.figures:
        downsampled_space = get_downsampled_space(
            atlas, args.brainreg_paths.boundaries_file_path)

    if what_to_run.analyse:
        logging.info("Analysing cell positions")
        analyse.run(args, atlas, downsampled_space)
    else:
        logging.info("Skipping cell position analysis")

    if what_to_run.figures:
        logging.info("Generating figures")
        figures.run(args, atlas, downsampled_space.shape)
    else:
        logging.info("Skipping figure generation")
コード例 #2
0
def run_all(args, what_to_run):
    from cellfinder.detect import detect
    from cellfinder.classify import classify
    import cellfinder.summarise.count_summary as cell_count_summary
    from cellfinder.figures import figures
    from cellfinder.tools import prep
    from cellfinder.standard_space.cells_to_standard_space import (
        transform_cells_to_standard_space,
    )

    args, what_to_run = prep.prep_channel_specific_general(args, what_to_run)

    if what_to_run.detect:
        logging.info("Detecting cell candidates")
        args = prep.prep_candidate_detection(args)
        detect.main(args)
    else:
        logging.info("Skipping cell detection")

    if what_to_run.classify:
        logging.info("Running cell classification")
        args = prep.prep_classification(args)
        classify.main(args)
    else:
        logging.info("Skipping cell classification")

    if what_to_run.summarise:
        logging.info("Summarising cell counts")
        cell_count_summary.analysis_run(args)

    else:
        logging.info("Skipping cell count summary")

    if what_to_run.standard_space:
        logging.info("Converting cells to standard space")
        args = prep.standard_space_prep(args)
        transform_cells_to_standard_space(args)
    else:
        logging.info("Skipping converting cells to standard space")

    if what_to_run.figures:
        logging.info("Generating figures")
        args = prep.figures_prep(args)
        figures.figures(args)
    else:
        logging.info("Skipping figure generation")
コード例 #3
0
def run_all(args, what_to_run, atlas):

    from cellfinder_core.detect import detect
    from cellfinder_core.classify import classify
    from cellfinder_core.tools import prep
    from cellfinder_core.tools.IO import read_with_dask

    from cellfinder.analyse import analyse
    from cellfinder.figures import figures

    from cellfinder.tools.prep import (
        prep_candidate_detection,
        prep_channel_specific_general,
    )

    points = None
    signal_array = None
    args, what_to_run = prep_channel_specific_general(args, what_to_run)

    if what_to_run.detect:
        logging.info("Detecting cell candidates")
        args = prep_candidate_detection(args)
        signal_array = read_with_dask(
            args.signal_planes_paths[args.signal_channel]
        )

        points = detect.main(
            signal_array,
            args.start_plane,
            args.end_plane,
            args.voxel_sizes,
            args.soma_diameter,
            args.max_cluster_size,
            args.ball_xy_size,
            args.ball_z_size,
            args.ball_overlap_fraction,
            args.soma_spread_factor,
            args.n_free_cpus,
            args.log_sigma_size,
            args.n_sds_above_mean_thresh,
        )
        ensure_directory_exists(args.paths.points_directory)

        save_cells(
            points,
            args.paths.detected_points,
            save_csv=args.save_csv,
            artifact_keep=args.artifact_keep,
        )

    else:
        logging.info("Skipping cell detection")
        points = get_cells(args.paths.detected_points)

    if what_to_run.classify:
        model_weights = prep.prep_classification(
            args.trained_model,
            args.model_weights,
            args.install_path,
            args.model,
            args.n_free_cpus,
        )
        if what_to_run.classify:
            if points is None:
                points = get_cells(args.paths.detected_points)
            if signal_array is None:
                signal_array = read_with_dask(
                    args.signal_planes_paths[args.signal_channel]
                )
            logging.info("Running cell classification")
            background_array = read_with_dask(args.background_planes_path[0])

            points = classify.main(
                points,
                signal_array,
                background_array,
                args.n_free_cpus,
                args.voxel_sizes,
                args.network_voxel_sizes,
                args.batch_size,
                args.cube_height,
                args.cube_width,
                args.cube_depth,
                args.trained_model,
                model_weights,
                args.network_depth,
            )
            save_cells(
                points,
                args.paths.classified_points,
                save_csv=args.save_csv,
            )

            what_to_run.cells_exist = cells_exist(args.paths.classified_points)

        else:
            logging.info("No cells were detected, skipping classification.")

    else:
        logging.info("Skipping cell classification")

    what_to_run.update_if_cells_required()

    if what_to_run.analyse or what_to_run.figures:
        downsampled_space = get_downsampled_space(
            atlas, args.brainreg_paths.boundaries_file_path
        )

    if what_to_run.analyse:
        points = get_cells(args.paths.classified_points, cells_only=True)
        if len(points) == 0:
            logging.info("No cells detected, skipping cell position analysis")
        else:
            logging.info("Analysing cell positions")
            analyse.run(args, points, atlas, downsampled_space)
    else:
        logging.info("Skipping cell position analysis")

    if what_to_run.figures:
        points = get_cells(args.paths.detected_points, cells_only=True)
        if len(points) == 0:
            logging.info("No cells detected, skipping")
        else:
            logging.info("Generating figures")
            figures.run(args, atlas, downsampled_space.shape)
    else:
        logging.info("Skipping figure generation")