Git Product home page Git Product logo

dox-distribution's Introduction

DOX-Distribution

Quantitative analysis of doxorubicin (DOX) distribution relative to drug eluting beads in fluorescence microscopy images.

Requirements

  • MATLAB with image processing toolbox
  • Grayscale fluorescence microscopy images in tif format
  • Untreated samples to establish a threshold for DOX intensity detection
  • Intensity to concentration calibration equation
  • Images acquired with standard exposure and settings (example image was taken by Hama monochrome camera with 500 ms exposure time)

Prior to running the DOX-Distribution make sure images are placed at right directory with proper naming format. Locations for untreated and treated samples are following: Untreated samples: /DOX-Distribution/Data/Tissue Samples/Blanks/[Sample Name].tif Treated samples: /DOX-Distribution/Data/Tissue Samples/[Sample Name]/[Sample Name].tif

Sample Names generally starts off with 'W' Example included in /DOX-Distribution/Data/Tissue Samples/

Pipeline

  1. Initialize the process by running BlankSampleAnalysis.m script:

    • Codes --> Analysis --> BlankSampleAnalysis.m
    • The input images for this script are located at the untreated samples directory.
    • The output from this script is BlankIntensity.mat file containing average and standard deviation of untreated samples' intensities.
  2. Implement intensity to concentration calibration equation in int2con.m function:

    • Codes --> Functions --> int2con.m
  3. Generate otsu's bead segmentation threshold by running OtsuThresholdGenerator.m:

    • Codes --> Segmentation --> OtsuThresholdGenerator.m
    • The input image for this script are located at the treated samples directory. note: only have to select one input image that has a fair amount of beads
    • The output from this script is OtsuThresholdBead.mat located in the same directory as the script.
  4. Segment the beads by running BeadSegAuto.m script (this script will iterate through all the samples):

    • Codes --> Segmentation --> BeadSegAuto.m
    • The input images for this script are located at the treated samples directory.
    • The output from this script is BeadMask.mat file containing binary mask for segmented beads.

    ** If necessary run BeadSegManual.m script to manually subtract false positive regions from the bead mask **

    ** This script will bring two figures, one figure will display original image and other will display image with bead mask overlay **

    ** Drag the mouse over the desired region. Once the region is selected press enter on the MATLAB console to add another region. If not satisfied with the previous selection, press R. After all desired regions are selected press y. **

  5. Segment the tissue by running TissueSegAuto.m script (this script will iterate through all the samples):

    • Codes --> Segmentation --> TissueSegAuto.m
    • The input images and BeadMasks for this script are located at the treated samples directory.
    • The output from this script is TissueMask.mat file containing binary mask for segmented tissue.

    ** If necessary run TissueSegManual.m script to manually subtract false positive regions from the Tissue mask **

    ** This script will bring two figures, one figure will display image with no beads and other will display image with tissue mask overlay **

    ** Drag the mouse over the desired region. Once the region is selected press enter on the MATLAB console to add another region. If not satisfied with the previous selection, press R. After all desired regions are selected press y. **

  6. Denoise tissue section only by running Smoothing.m script:

    • Codes --> Denoising --> Smoothing.m
    • The input images and TissueMasks for this script are located at the treated samples directories.
    • The output from this script is Smu13mm_[sample name].tif file (Smu is label for filtered image and 13mm is the kernel radius)
  7. Detect doxorobucin at multiple threshold in tissue by running DoxDetection.m:

    • Codes --> DOX Quantification --> DoxDetection.m
    • The inputs consist of filtered images and average and standard deviation of untreated samples' intensities.
      • Filtered images are located at the sample directory.
      • Average and standard deviation of untreated samples' intensities are located in untreated samples directory as mentioned above.
    • The output from this script is [filtered image name]STD[respective threshold].mat.
      • Each output .mat file contains binary mask for doxorubicin for given threshold.
    • (Thresholds are established from untreated samples. Minimum threshold is 2 standard deviation above the average intensity and maximum threshold is 5 standard deviation above the average intensity)
  8. Combine all doxorubicin masks with respective thresholds by running MultilayerDoxMask.m:

    • Codes --> DOX Quantification --> MultilayerDoxMask.m
    • The inputs consist of filtered image and doxorubicin detected binary masks from the previous step.
    • The output from this script is MultilayerDrugMask.mat containning a sum of all previously generated doxorubicin masks.
  9. Generate doxoubicin Heatmap to visualize spatial doxorubicin distribution by running Heatmap.m:

    • Codes --> Display --> Heatmap.m
    • The inputs consist of original images and MultilayerMask from the treated sample directories
    • The output of this script is a heatmap figure saved as HeatmapScaleBar.tif. Red in the heatmap indicates higher concentration of doxorubicin and blue indicates lower concentration of doxorubicin.
  10. Identify bead clusters and their area by running ClusterCounter.mat:

    • Codes --> Counting --> ClusterCounter.mat
    • The inputs consists of original images and BeadMasks from the treated sample directories.
    • The output from this script is BeadCluster.mat containing number of clusters, and area of those clusters in mm

    -- Cluster area filter threshold could be modified for the desired area --

  11. Map average doxorubicin concentration to distance by running Distance2Concentration.m:

    • Codes --> DOX Quantification --> Distance2Concentration.m
    • The inputs consist of filtered image and TissueMask from the sample directory.
      • This script incorporates manual selection of the cluster to be analyzed.
      • Max distance for analysis should be modified. In this example only goes up to 200 pixels from the selected region.
      • There will be two figures one of them will have area labeled and other will just have BeadCluster binary mask overlay.
    • The output from this script is [filtered file name]_Dist2Con.mat.
      • the script also depicts a concentration vs distance plot.

Additional Scripts

  • BeadCounter.m : Counts the beads
  • IndAnalysis.m and GroupAnalysis.m : Quantifies average concentration and total amount of doxorubicin present in the tissue
  • GraphGenerator.m: Generates graphs from IndAnalysis.m and GroupAnalysis.m data
  • MaskSlideShow.m: A slideshow of the masks (i.e beads, tissue, doxorubicin) on top of original image from the treated samples
  • Exposure Calibration: Calibrating exposure to intensity and concentration
  • Miscallenous: Other methods of bead segmentation and analysis (i.e kmeans)

Figures

Acknowledgement

  • Center of Clinical Oncology, Radiology and Imaging Science, NIH Clinical Center, National Institutes of Health, Bethesda, MD
  • National Institutes of Biomedical Imaging and Bioengineering, National Institutes of Health, Bethesda, MD

dox-distribution's People

Contributors

inkiyad 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.