Coder Social home page Coder Social logo

zwatershed's Introduction

convolutional network metric scripts

building

conda

  • conda install -c conda-forge zwatershed

pip

  • pip install zwatershed

from source

  • clone the repository
  • run ./make.sh

requirements

  • numpy, h5py, cython
  • if using parallel watershed, also requires multiprocessing or pyspark
  • in order to build the cython, requires a c++ compiler and boost

function api

  • (segs, rand) = zwatershed_and_metrics(segTrue, aff_graph, eval_thresh_list, seg_save_thresh_list)
    • returns segmentations and metrics
    • segs: list of segmentations
      • len(segs) == len(seg_save_thresh_list)
    • rand: dict
      • rand['V_Rand']: V_Rand score (scalar)
      • rand['V_Rand_split']: list of score values
        • len(rand['V_Rand_split']) == len(eval_thresh_list)
      • rand['V_Rand_merge']: list of score values,
        • len(rand['V_Rand_merge']) == len(eval_thresh_list)
  • segs = zwatershed(aff_graph, seg_save_thresh_list) - returns segmentations
    • segs: list of segmentations
      • len(segs) == len(seg_save_thresh_list)
These methods have versions which save the segmentations to hdf5 files instead of returning them
  • rand = zwatershed_and_metrics_h5(segTrue, aff_graph, eval_thresh_list, seg_save_thresh_list, seg_save_path)
  • zwatershed_h5(aff_graph, eval_thresh_list, seg_save_path)
All 4 methods have versions which take an edgelist representation of the affinity graph
  • (segs, rand) = zwatershed_and_metrics_arb(segTrue, node1, node2, edgeWeight, eval_thresh_list, seg_save_thresh_list)
  • segs = zwatershed_arb(seg_shape, node1, node2, edgeWeight, seg_save_thresh_list)
  • rand = zwatershed_and_metrics_h5_arb(segTrue, node1, node2, edgeWeight, eval_thresh_list, seg_save_thresh_list, seg_save_path)
  • zwatershed_h5_arb(seg_shape, node1, node2, edgeWeight, eval_thresh_list, seg_save_path)

parallel watershed - 4 steps

  • a full example is given in par_ex.ipynb
  1. Partition the subvolumes
    • partition_data = partition_subvols(pred_file,out_folder,max_len)
      • evenly divides the data in pred_file with the constraint that no dimension of any subvolume is longer than max_len
  2. Zwatershed the subvolumes
    1. eval_with_spark(partition_data[0])
      • with spark
    2. eval_with_par_map(partition_data[0],NUM_WORKERS)
      • with python multiprocessing map
    • after evaluating, subvolumes will be saved into the out_folder directory named based on their smallest indices in each dimension (ex. path/to/out_folder/0_0_0_vol)
  3. Stitch the subvolumes together
    • stitch_and_save(partition_data,outname)
      • stitch together the subvolumes in partition_data
      • save to the hdf5 file outname
        • outname['starts'] = list of min_indices of each subvolume
        • outname['ends'] = list of max_indices of each subvolume
        • outname['seg'] = full stitched segmentation
        • outname['seg_sizes'] = array of size of each segmentation
        • outname['rg_i'] = region graph for ith subvolume
  4. Threshold individual subvolumes by merging
    • seg_merged = merge_by_thresh(seg,seg_sizes,rg,thresh)
      • load in these areguments from outname

zwatershed's People

Contributors

jakirkham avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.