示例#1
0
def saveMimicryEmbedding(model, outputFile, nChannels):
    tm = model.getTrackModel()
    trackIDs = tm.trackIDs(True)
    embSize = 14
    sliceNum = 0
    cutoff = 10
    embedding = ImageStack(embSize, embSize)

    for trackID in trackIDs:
        tracks = tm.trackSpots(trackID)
        # Let's sort them by frame.
        trackList = ArrayList(tracks)
        trackLength = len(trackList)
        if (trackLength <= cutoff):
            trackPic = FloatProcessor(nChannels, trackLength)
            trackPix = trackPic.getPixels()
            #print(len(trackPix))
            idxSpot = 0
            for spot in trackList:
                idxChan = 0
                for iChan in range(nChannels):
                    trackPix[idxSpot * (nChannels) +
                             idxChan] = spot.getFeature('MEAN_INTENSITY%02d' %
                                                        (iChan + 1))
                    idxChan += 1
                idxSpot += 1

            trackPic = ImagePlus("slice", trackPic)
            # padding
            IJ.run(
                trackPic, "Canvas Size...", "width=" + str(embSize) +
                " height=" + str(embSize) + " position=Center zero")
            trackPic = trackPic.getProcessor()
            embedding.addSlice(str(sliceNum), trackPic)
            sliceNum += 1
    # linear interpolation
    embedding = ImagePlus("embedding", embedding)
    IJ.run(
        embedding, "Size...", "width=" + str(embSize * 2) + " height=" +
        str(embSize * 2) + " depth=" + str(sliceNum + 1) +
        " constrain average interpolation=Bilinear")
    outputFile.replace('.csv', '_mimicry_embd.tif')
    IJ.saveAs(embedding, "Tiff", outputFile)
    embedding.close()
    return None