Coverage for runmacs/processor/mixins/projectionmixin.py : 46%

Hot-keys on this page
r m x p toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
# -*- coding: utf-8 -*- # Filename: projectionmixin.py Helper mixin to support projection products ===========================================
This is part of the macsProcessor suite.
Copyright (C) 2014 Tobias Kölling
"""
'previewdata': ('x', 'y', 'color'), 'forwardmap': ('xy', 'sourcepixels'), 'reversemap': ('x', 'y'), 'grid': ('xy', 'x', 'y'), 'wavelength': ('spectral',),} # TODO: this should be individual for different projections 'previewdata': defaultPartDescriptions['previewdata'], 'forwardmap': defaultPartDescriptions['forwardmap'], 'reversemap': defaultPartDescriptions['reversemap'], 'grid': defaultPartDescriptions['grid'], 'wavelength': defaultPartDescriptions['wavelength']} 'previewdata': ('color',)}
def dataSize(self, alignedImage): xSize, ySize = self._getGrid().shape[1:] #TODO: normally this should not happen, search for the root cause! if xSize*ySize == 0: raise ValueError('projection has szie of 0!') return {'x': xSize, 'y': ySize, 'spectral': alignedImage.dataSize['spectral'], 'color': alignedImage.dataSize['color'], 'xy': 2, 'sourcepixels': alignedImage.dataSize['frames'] * alignedImage.dataSize['spatial']}
def _getRadianceBySpectral(self, start, stop): pv = self.components['alignedImage']['radiance'].T('spectral').S(start, stop) reverseMap = self['reversemap'].get() mask = reverseMap<self.dataSize['sourcepixels'] reverseMap = np.where(mask, reverseMap, 0) for block in pv: yield (np.ravel(block)[reverseMap])*mask
def _getPreviewdataByColor(self, start, stop): pv = self.components['alignedImage']['previewdata'].T('color').S(start, stop) reverseMap = self['reversemap'].get() mask = reverseMap<self.dataSize['sourcepixels'] reverseMap = np.where(mask, reverseMap, 0) for block in pv: yield (np.ravel(block)[reverseMap])*mask
def _getReversemap(self): import scipy.spatial kdt = scipy.spatial.cKDTree(zip(*self['forwardmap'].get())) queryGrid = self['grid'].get().transpose(1,2,0) _, indices = kdt.query(queryGrid, distance_upper_bound=(5. * self.pixelSize)) return indices
def _getWavelength(self): #nasty workaround, because np.nanmean is not available in numpy < 1.8.0 wavelength = self.components['alignedImage']['wavelength'].get() wavelengthMean = np.zeros(wavelength.shape[1], dtype='float32') for i, d in enumerate(wavelength.T): wavelengthMean[i] = np.mean(d[np.isfinite(d)]) return wavelengthMean |