示例#1
0
class ChannelCore(LoggerObject):

    NAME = None
    _rank = None
    _is_virtual = False

    def __init__(self,
                 strChannelId,
                 # either number of zsclice or projection type
                 oZSliceOrProjection=1,
                 channelRegistration=None,
                 registration_start=None,
                 new_image_size=None,
                 strImageOutCompression="80",
                 strPathOutDebug=None,
                 lstFeatureCategories=None,
                 dctFeatureParameters=None,
                 lstFeatureNames=None,
                 bFlatfieldCorrection=False,
                 strBackgroundImagePath="",
                 fBackgroundCorrection="",
                 fNormalizeMin="",
                 fNormalizeMax="",
                 fNormalizeRatio="",
                 fNormalizeOffset="",
                 check_for_plugins=True):
        super(ChannelCore, self).__init__()

        # remove all the hungarian bullshit as soon as possible!
        self.strChannelId = strChannelId
        # either number of zsclice or projection type
        self.oZSliceOrProjection = oZSliceOrProjection
        self.channelRegistration = channelRegistration
        self.registration_start = registration_start
        self.new_image_size = new_image_size
        self.strImageOutCompression = strImageOutCompression
        self.strPathOutDebug = strPathOutDebug
        self.lstFeatureCategories = lstFeatureCategories
        self.dctFeatureParameters = dctFeatureParameters
        self.lstFeatureNames = lstFeatureNames
        self.bFlatfieldCorrection = bFlatfieldCorrection
        self.strBackgroundImagePath = strBackgroundImagePath
        self.fBackgroundCorrection = fBackgroundCorrection
        self.fNormalizeMin = fNormalizeMin
        self.fNormalizeMax = fNormalizeMax
        self.fNormalizeRatio = fNormalizeRatio
        self.fNormalizeOffset = fNormalizeOffset

        self._zslices = []
        self.containers = {}
        self._regions = {}
        self.meta_image = None
        self._features_calculated = False

        try:
            self.plugin_mgr = MetaPluginManager()[self.NAME.lower()]
            if self.plugin_mgr.number_loaded_plugins() < 1:
                if check_for_plugins:
                    raise RuntimeError(
                        ("You need to load at least one segmentation"
                         " plugin for channel '%s'" %self.NAME))
        except KeyError:
            self.plugin_mgr = None

    def __cmp__(self, channel):
        return cmp(self._rank, channel._rank)

    @classmethod
    def is_virtual(cls):
        return cls._is_virtual

    def region_names(self):
        return self._regions.keys()

    def get_region(self, name):
        return self._regions[name]

    def has_region(self, name):
        return self._regions.has_key(name)

    def get_container(self, name):
        return self.containers[name]

    def append_zslice(self, meta_image):
        self._zslices.append(meta_image)

    def clear(self):
        self._zslices = []
        self._regions = {}
        self.meta_image = None
        self.containers = {}
示例#2
0
class ChannelCore(LoggerObject):

    NAME = None
    _rank = None
    _is_virtual = False

    def __init__(
            self,
            strChannelId,
            # either number of zsclice or projection type
            oZSliceOrProjection=1,
            channelRegistration=None,
            registration_start=None,
            new_image_size=None,
            strImageOutCompression="80",
            strPathOutDebug=None,
            feature_groups=None,
            lstFeatureNames=None,
            bFlatfieldCorrection=False,
            strBackgroundImagePath="",
            fBackgroundCorrection="",
            fNormalizeMin="",
            fNormalizeMax="",
            fNormalizeRatio="",
            fNormalizeOffset="",
            check_for_plugins=True):
        super(ChannelCore, self).__init__()

        # remove all the hungarian bullshit as soon as possible!
        self.strChannelId = strChannelId
        # either number of zsclice or projection type
        self.oZSliceOrProjection = oZSliceOrProjection
        self.channelRegistration = channelRegistration
        self.registration_start = registration_start
        self.new_image_size = new_image_size
        self.strImageOutCompression = strImageOutCompression
        self.strPathOutDebug = strPathOutDebug
        self.feature_groups = feature_groups
        self.lstFeatureNames = lstFeatureNames
        self.bFlatfieldCorrection = bFlatfieldCorrection
        self.strBackgroundImagePath = strBackgroundImagePath
        self.fBackgroundCorrection = fBackgroundCorrection
        self.fNormalizeMin = fNormalizeMin
        self.fNormalizeMax = fNormalizeMax
        self.fNormalizeRatio = fNormalizeRatio
        self.fNormalizeOffset = fNormalizeOffset

        self._zslices = []
        self.containers = {}
        self._regions = {}
        self.meta_image = None
        self._features_calculated = False

        try:
            self.plugin_mgr = MetaPluginManager()[self.NAME.lower()]
            if self.plugin_mgr.number_loaded_plugins() < 1:
                if check_for_plugins:
                    raise RuntimeError(
                        ("You need to load at least one segmentation"
                         " plugin for channel '%s'" % self.NAME))
        except KeyError:
            self.plugin_mgr = None

    def __cmp__(self, channel):
        return cmp(self._rank, channel._rank)

    @classmethod
    def is_virtual(cls):
        return cls._is_virtual

    def region_names(self):
        return self._regions.keys()

    def get_region(self, name):
        return self._regions[name]

    def has_region(self, name):
        return self._regions.has_key(name)

    def get_container(self, name):
        return self.containers[name]

    def append_zslice(self, meta_image):
        self._zslices.append(meta_image)

    def clear(self):
        self._zslices = []
        self._regions = {}
        self.meta_image = None
        self.containers = {}