Exemplo n.º 1
0
import sys, os
sys.path.append("/groups/cardona/home/cardonaa/lab/scripts/python/imagej/IsoView-GCaMP/")
from lib.io import writeN5
from net.imglib2.img.display.imagej import ImageJVirtualStack
from net.imglib2.view import Views
from ij import IJ

# Grab the 4D RandomAccessibleInterval from the open VirtualStack
f = ImageJVirtualStack.getDeclaredField("source")
f.setAccessible(True)
img4D = Views.dropSingletonDimensions(f.get(IJ.getImage().getStack()))

print img4D

writeN5(img4D,
        "/groups/cardona/cardonalab/Albert/2017-05-10_2_1019/",
        "2017-05-10_2_1019_0-399_409x509x305x800",
        [409, 509, 5, 1])
Exemplo n.º 2
0
"""

# Third approach: pull (CORRECT!), and much faster (delegates pixel-wise operations
# to java libraries)
# Defines a list of views (recipes, really) for transforming every stack slice
# and then materializes the view by copying it in a multi-threaded way into an ArrayImg.
from net.imglib2 import FinalInterval
from net.imglib2.converter import Converters, ColorChannelOrder
from net.imglib2.view import Views
from net.imglib2.img.display.imagej import ImageJFunctions as IL
from net.imglib2.realtransform import RealViews, AffineTransform2D
from net.imglib2.img.array import ArrayImgs
from net.imglib2.util import Intervals, ImgUtil
from net.imglib2.interpolation.randomaccess import NLinearInterpolatorFactory

img1 = Views.dropSingletonDimensions(IL.wrap(imp))
transform = AffineTransform2D()
transform.set(scale, 0, 0, 0, scale, 0)

# Origins and dimensions (hence, interval) of the target image
interval2 = FinalInterval([
    int(img1.dimension(0) * scale),
    int(img1.dimension(1) * scale),
    img1.dimension(2)
])
# Interval of a single stack slice of the target image
sliceInterval = FinalInterval([interval2.dimension(0), interval2.dimension(1)])

slices2 = []
for index in xrange(img1.dimension(2)):
    # One single 2D RGB slice
from net.imglib2.img.display.imagej import ImageJFunctions as IL
from net.imglib2.roi.geom.real import ClosedWritableSphere
from net.imglib2.roi import Masks, Regions
from itertools import imap, islice, izip
from jarray import zeros, array

baseDir = "/groups/zlatic/zlaticlab/Nadine/Raghav/analysis/2017-05-10/GCaMP6s_2_20170510_143413.corrected/"
srcDir = baseDir + "deconvolved/"
n5dir = "/groups/cardona/cardonalab/Albert/2017-05-10_2_1019/"
dataset_name = "2017-05-10_2_1019_0-399_409x509x305x800"

# Load entire 4D IsoView deconvolved and registered data set
img4D = readN5(n5dir, dataset_name)

# Remove the channel dimension which has size of 1
img4D = Views.dropSingletonDimensions(img4D)

print img4D

# A mask: only nuclei whose x,y,z coordinate has a non-zero value in the mask will be considered
mask = None

# Split CM00+CM01 (odd) from CM02+CM03 (even) into two series
series = ["CM00-CM01", "CM02-CM03"]
img4Da = Views.subsample(img4D, [1, 1, 1, 2])  # step
img4Db = Views.subsample(
    Views.interval(img4D, [0, 0, 0, 1], Intervals.maxAsLongArray(img4D)),
    [1, 1, 1, 2])  # step

showStack(img4Da, title="%s registered+deconvolved" % series[0])
showStack(img4Db, title="%s registered+deconvolved" % series[1])
Exemplo n.º 4
0
# Now read the file back as a stack using lib.io.TIFFSlices
slices = TIFFSlices(filepath,
                    types={1: TIFFSlices.types[64][:2] + (BitType, )})
img2 = slices.asLazyCachedCellImg()
IL.wrap(img, "bit img").show()

# Now read the file back using ImageJ's library (ij.io.TiffDecoder and FileInfoVirtualStack
# which uses ij.io.ImageReader to decode each slice's FileInfo data)
fistack = FileInfoVirtualStack(
    TiffDecoder(*os.path.split(filepath)).getTiffInfo())
imp = ImagePlus("bit img IJ", fistack)
imp.show()

# Now compare both images pixel-wise, and also to the original
img3 = Views.dropSingletonDimensions(
    IL.wrap(imp))  # remove bogus channel dimension
tmp = ArrayImgs.bits(Intervals.dimensionsAsLongArray(img))


def comparePixelWise(img1, img2):
    t1 = getTypeFromInterval(img1)
    t2 = getTypeFromInterval(img2)
    return 0 == sum(
        imap(cmp, imap(getattr(t1.getClass(), "getInteger"), img1.cursor()),
             imap(getattr(t2.getClass(), "getInteger"), img2.cursor())))


print comparePixelWise(img, img2)  # True
print comparePixelWise(
    img, img3
)  # False: still issues with the boundaries that don't end at byte boundaries?