def image_directory(self):
     """Return the image directory
     """
     if self.location == DIR_DEFAULT_IMAGE:
         return preferences.get_default_image_directory()
     elif self.location == DIR_DEFAULT_OUTPUT:
         return preferences.get_default_output_directory()
     else:
         return preferences.get_absolute_path(self.location_other.value)
示例#2
0
 def image_directory(self):
     """Return the image directory
     """
     if self.location == DIR_DEFAULT_IMAGE:
         return preferences.get_default_image_directory()
     elif self.location == DIR_DEFAULT_OUTPUT:
         return preferences.get_default_output_directory()
     else:
         return preferences.get_absolute_path(self.location_other.value)
示例#3
0
    def save_pipeline(self, workspace, outf=None):
        '''Save the pipeline in Batch_data.mat
        
        Save the pickled image_set_list state in a setting and put this
        module in batch mode.

        if outf is not None, it is used as a file object destination.
        '''
        from cellprofiler.utilities.get_revision import version

        if self.wants_default_output_directory.value:
            path = cpprefs.get_default_output_directory()
        else:
            path = cpprefs.get_absolute_path(self.custom_output_directory.value)
        h5_path = os.path.join(path, F_BATCH_DATA_H5)
        
        image_set_list = workspace.image_set_list
        pipeline = workspace.pipeline
        m = cpmeas.Measurements(copy = workspace.measurements,
                                filename = h5_path)
        assert isinstance(image_set_list, cpi.ImageSetList)
        assert isinstance(pipeline, cpp.Pipeline)
        assert isinstance(m, cpmeas.Measurements)

        pipeline = pipeline.copy()
        target_workspace = cpw.Workspace(pipeline, None, None, None,
                                         m, image_set_list,
                                         workspace.frame)
        pipeline.prepare_to_create_batch(target_workspace, self.alter_path)
        bizarro_self = pipeline.module(self.module_num)
        assert isinstance(bizarro_self, CreateBatchFiles)
        state = image_set_list.save_state()
        state = zlib.compress(state)
        bizarro_self.revision.value = version
        bizarro_self.batch_state = np.array(state)
        if self.wants_default_output_directory:
            bizarro_self.custom_output_directory.value = \
                        self.alter_path(cpprefs.get_default_output_directory())
        bizarro_self.default_image_directory.value = \
                    self.alter_path(cpprefs.get_default_image_directory())
        bizarro_self.batch_mode.value = True
        pipeline.write_pipeline_measurement(m)
        

        if outf is None:
            mat_path = os.path.join(path, F_BATCH_DATA)
            if os.path.exists(mat_path) and workspace.frame is not None:
                import wx
                if (wx.MessageBox("%s already exists. Do you want to overwrite it?"%
                                  mat_path,
                                  "Overwriting %s" % F_BATCH_DATA,
                                  wx.YES_NO, workspace.frame) == wx.NO):
                    return
            pipeline.save(mat_path, format=cpp.FMT_MATLAB) # Matlab... it's like the vestigial hole in the head of CP.
        else:
            pipeline.save(outf, format=cpp.FMT_NATIVE)
示例#4
0
    def save_pipeline(self, workspace, outf=None):
        '''Save the pipeline in Batch_data.mat
        
        Save the pickled image_set_list state in a setting and put this
        module in batch mode.

        if outf is not None, it is used as a file object destination.
        '''
        from cellprofiler.utilities.version import version_number

        if outf is None:
            if self.wants_default_output_directory.value:
                path = cpprefs.get_default_output_directory()
            else:
                path = cpprefs.get_absolute_path(self.custom_output_directory.value)
            h5_path = os.path.join(path, F_BATCH_DATA_H5)
        else:
            h5_path = outf
        
        image_set_list = workspace.image_set_list
        pipeline = workspace.pipeline
        m = cpmeas.Measurements(copy = workspace.measurements,
                                filename = h5_path)
        try:
            assert isinstance(pipeline, cpp.Pipeline)
            assert isinstance(m, cpmeas.Measurements)
    
            orig_pipeline = pipeline
            pipeline = pipeline.copy()
            # this use of workspace.frame is okay, since we're called from
            # prepare_run which happens in the main wx thread.
            target_workspace = cpw.Workspace(pipeline, None, None, None,
                                             m, image_set_list,
                                             workspace.frame)
            pipeline.prepare_to_create_batch(target_workspace, self.alter_path)
            bizarro_self = pipeline.module(self.module_num)
            bizarro_self.revision.value = version_number
            if self.wants_default_output_directory:
                bizarro_self.custom_output_directory.value = \
                            self.alter_path(cpprefs.get_default_output_directory())
            bizarro_self.default_image_directory.value = \
                        self.alter_path(cpprefs.get_default_image_directory())
            bizarro_self.batch_mode.value = True
            pipeline.write_pipeline_measurement(m)
            orig_pipeline.write_pipeline_measurement(m, user_pipeline=True)
            #
            # Write the path mappings to the batch measurements
            #
            m.write_path_mappings(
                [(mapping.local_directory.value, mapping.remote_directory.value)
                 for mapping in self.mappings])
            return h5_path
        finally:
            m.close()
示例#5
0
    def save_pipeline(self, workspace, outf=None):
        '''Save the pipeline in Batch_data.mat

        Save the pickled image_set_list state in a setting and put this
        module in batch mode.

        if outf is not None, it is used as a file object destination.
        '''
        from cellprofiler.utilities.version import version_number

        if outf is None:
            if self.wants_default_output_directory.value:
                path = cpprefs.get_default_output_directory()
            else:
                path = cpprefs.get_absolute_path(self.custom_output_directory.value)
            h5_path = os.path.join(path, F_BATCH_DATA_H5)
        else:
            h5_path = outf

        image_set_list = workspace.image_set_list
        pipeline = workspace.pipeline
        m = cpmeas.Measurements(copy=workspace.measurements,
                                filename=h5_path)
        try:
            assert isinstance(pipeline, cpp.Pipeline)
            assert isinstance(m, cpmeas.Measurements)

            orig_pipeline = pipeline
            pipeline = pipeline.copy()
            # this use of workspace.frame is okay, since we're called from
            # prepare_run which happens in the main wx thread.
            target_workspace = cpw.Workspace(pipeline, None, None, None,
                                             m, image_set_list,
                                             workspace.frame)
            pipeline.prepare_to_create_batch(target_workspace, self.alter_path)
            bizarro_self = pipeline.module(self.module_num)
            bizarro_self.revision.value = version_number
            if self.wants_default_output_directory:
                bizarro_self.custom_output_directory.value = \
                    self.alter_path(cpprefs.get_default_output_directory())
            bizarro_self.default_image_directory.value = \
                self.alter_path(cpprefs.get_default_image_directory())
            bizarro_self.batch_mode.value = True
            pipeline.write_pipeline_measurement(m)
            orig_pipeline.write_pipeline_measurement(m, user_pipeline=True)
            #
            # Write the path mappings to the batch measurements
            #
            m.write_path_mappings(
                    [(mapping.local_directory.value, mapping.remote_directory.value)
                     for mapping in self.mappings])
            return h5_path
        finally:
            m.close()
示例#6
0
    def save_pipeline(self, workspace, outf=None):
        '''Save the pipeline in Batch_data.mat
        
        Save the pickled image_set_list state in a setting and put this
        module in batch mode.

        if outf is not None, it is used as a file object destination.
        '''
        from cellprofiler.utilities.version import version_number

        if outf is None:
            if self.wants_default_output_directory.value:
                path = cpprefs.get_default_output_directory()
            else:
                path = cpprefs.get_absolute_path(self.custom_output_directory.value)
            h5_path = os.path.join(path, F_BATCH_DATA_H5)
        else:
            h5_path = outf
        
        image_set_list = workspace.image_set_list
        pipeline = workspace.pipeline
        m = cpmeas.Measurements(copy = workspace.measurements,
                                filename = h5_path)
        assert isinstance(image_set_list, cpi.ImageSetList)
        assert isinstance(pipeline, cpp.Pipeline)
        assert isinstance(m, cpmeas.Measurements)

        pipeline = pipeline.copy()
        target_workspace = cpw.Workspace(pipeline, None, None, None,
                                         m, image_set_list,
                                         workspace.frame)
        pipeline.prepare_to_create_batch(target_workspace, self.alter_path)
        bizarro_self = pipeline.module(self.module_num)
        bizarro_self.revision.value = version_number
        if self.wants_default_output_directory:
            bizarro_self.custom_output_directory.value = \
                        self.alter_path(cpprefs.get_default_output_directory())
        bizarro_self.default_image_directory.value = \
                    self.alter_path(cpprefs.get_default_image_directory())
        bizarro_self.batch_mode.value = True
        pipeline.write_pipeline_measurement(m)
        del m
    def save_pipeline(self, workspace, outf=None):
        '''Save the pipeline in Batch_data.mat
        
        Save the pickled image_set_list state in a setting and put this
        module in batch mode.

        if outf is not None, it is used as a file object destination.
        '''
        from cellprofiler.utilities.get_revision import version

        if outf is None:
            if self.wants_default_output_directory.value:
                path = cpprefs.get_default_output_directory()
            else:
                path = cpprefs.get_absolute_path(self.custom_output_directory.value)
            h5_path = os.path.join(path, F_BATCH_DATA_H5)
        else:
            h5_path = outf
        
        image_set_list = workspace.image_set_list
        pipeline = workspace.pipeline
        m = cpmeas.Measurements(copy = workspace.measurements,
                                filename = h5_path)
        assert isinstance(image_set_list, cpi.ImageSetList)
        assert isinstance(pipeline, cpp.Pipeline)
        assert isinstance(m, cpmeas.Measurements)

        pipeline = pipeline.copy()
        target_workspace = cpw.Workspace(pipeline, None, None, None,
                                         m, image_set_list,
                                         workspace.frame)
        pipeline.prepare_to_create_batch(target_workspace, self.alter_path)
        bizarro_self = pipeline.module(self.module_num)
        bizarro_self.revision.value = version
        if self.wants_default_output_directory:
            bizarro_self.custom_output_directory.value = \
                        self.alter_path(cpprefs.get_default_output_directory())
        bizarro_self.default_image_directory.value = \
                    self.alter_path(cpprefs.get_default_image_directory())
        bizarro_self.batch_mode.value = True
        pipeline.write_pipeline_measurement(m)
        del m