Exemple #1
0
    def upgrade_settings(self, setting_values, variable_revision_number, module_name):

        PC_DEFAULT = "Default output folder"
        PC_WITH_IMAGE = "Same folder as image"

        if variable_revision_number == 1:
            #
            # Minor change: Default output directory -> folder
            #
            new_setting_values = [setting_values[0]]
            for offset in range(1, len(setting_values), 6):
                dir_choice = setting_values[offset + 4]
                custom_path = setting_values[offset + 5]
                if dir_choice == PC_CUSTOM:
                    if custom_path[0] == ".":
                        dir_choice = DEFAULT_OUTPUT_SUBFOLDER_NAME
                    elif custom_path[0] == "&":
                        dir_choice = DEFAULT_OUTPUT_SUBFOLDER_NAME
                        custom_path = "." + custom_path[1:]
                    else:
                        dir_choice = ABSOLUTE_FOLDER_NAME
                directory = Directory.static_join_string(dir_choice, custom_path)
                new_setting_values += setting_values[offset : (offset + 4)]
                new_setting_values += [directory]
            setting_values = new_setting_values
            variable_revision_number = 2

        # Standardize input/output directory name references
        setting_values = list(setting_values)
        for offset in range(5, len(setting_values), VARIABLE_SETTING_COUNT):
            setting_values[offset] = Directory.upgrade_setting(setting_values[offset])

        return setting_values, variable_revision_number
Exemple #2
0
    def upgrade_settings(self, setting_values, variable_revision_number, module_name):
        """Provide backwards compatibility for old pipelines

        setting_values - the strings to be fed to settings
        variable_revision_number - the version number at time of saving
        module_name - name of original module
        """
        if variable_revision_number == 1:
            #
            # Added hole size questions
            #
            setting_values = setting_values + ["Yes", "10"]
            variable_revision_number = 2
        if variable_revision_number == 2:
            #
            # Added graph stuff
            #
            setting_values = setting_values + [
                "No",
                "None",
                Directory.static_join_string(DEFAULT_OUTPUT_FOLDER_NAME, "None"),
                "None",
                "None",
            ]
            variable_revision_number = 3
        return setting_values, variable_revision_number
Exemple #3
0
    def upgrade_settings(self, setting_values, variable_revision_number,
                         module_name):
        if variable_revision_number == 1:
            new_setting_values = [setting_values[0]]
            idx = 1
            for flag_idx in range(int(setting_values[0])):
                new_setting_values += setting_values[idx:idx + 4] + ["No"]
                meas_count = int(setting_values[idx])
                idx += 4
                for meas_idx in range(meas_count):
                    measurement_source = setting_values[idx]
                    if (measurement_source.startswith("Measurement for all")
                            or measurement_source == "All objects"):
                        measurement_source = S_ALL_OBJECTS
                    elif measurement_source == "Average for objects":
                        measurement_source = S_AVERAGE_OBJECT
                    elif measurement_source == "Image":
                        measurement_source = S_IMAGE
                    new_setting_values += [measurement_source]
                    new_setting_values += setting_values[(idx + 1):(idx + 7)]
                    idx += 7
            setting_values = new_setting_values
            variable_revision_number = 2

        if variable_revision_number == 2:
            # Added rules
            new_setting_values = [setting_values[0]]
            idx = 1
            for flag_idx in range(int(setting_values[0])):
                new_setting_values += setting_values[idx:idx +
                                                     N_FIXED_SETTINGS_PER_FLAG]
                meas_count = int(setting_values[idx])
                idx += N_FIXED_SETTINGS_PER_FLAG
                for meas_idx in range(meas_count):
                    measurement_source = setting_values[idx]
                    new_setting_values += [measurement_source]
                    new_setting_values += setting_values[
                        (idx + 1):(idx + N_SETTINGS_PER_MEASUREMENT_V2)] + [
                            Directory.static_join_string(
                                DEFAULT_INPUT_FOLDER_NAME, "None"),
                            "rules.txt",
                        ]
                    idx += N_SETTINGS_PER_MEASUREMENT_V2
            setting_values = new_setting_values

            variable_revision_number = 3

        if variable_revision_number == 3:
            # Added rules_class
            new_setting_values = setting_values[:1]
            idx = 1
            for flag_idx in range(int(setting_values[0])):
                new_setting_values += setting_values[idx:(
                    idx + N_FIXED_SETTINGS_PER_FLAG)]
                meas_count = int(setting_values[idx])
                idx += N_FIXED_SETTINGS_PER_FLAG
                for meas_idx in range(meas_count):
                    new_setting_values += setting_values[idx:(
                        idx + N_SETTINGS_PER_MEASUREMENT_V3)]
                    new_setting_values += ["1"]
                    idx += N_SETTINGS_PER_MEASUREMENT_V3
            setting_values = new_setting_values
            variable_revision_number = 4

        return setting_values, variable_revision_number
Exemple #4
0
    def upgrade_settings(self, setting_values, variable_revision_number, module_name):
        if variable_revision_number == 1:
            #
            # Added CPA rules
            #
            setting_values = (
                setting_values[:11]
                + [MODE_MEASUREMENTS, DEFAULT_INPUT_FOLDER_NAME, ".",]
                + setting_values[11:]
            )
            variable_revision_number = 2
        if variable_revision_number == 2:
            #
            # Forgot file name (???!!!)
            #
            setting_values = setting_values[:14] + ["rules.txt"] + setting_values[14:]
            variable_revision_number = 3
        if variable_revision_number == 3:
            #
            # Allowed multiple measurements
            # Structure changed substantially.
            #
            (
                target_name,
                object_name,
                measurement,
                filter_choice,
                enclosing_objects,
                wants_minimum,
                minimum_value,
                wants_maximum,
                maximum_value,
                wants_outlines,
                outlines_name,
                rules_or_measurements,
                rules_directory_choice,
                rules_path_name,
                rules_file_name,
            ) = setting_values[:15]
            additional_object_settings = setting_values[15:]
            additional_object_count = len(additional_object_settings) // 4

            setting_values = [
                target_name,
                object_name,
                rules_or_measurements,
                filter_choice,
                enclosing_objects,
                wants_outlines,
                outlines_name,
                rules_directory_choice,
                rules_path_name,
                rules_file_name,
                "1",
                str(additional_object_count),
                measurement,
                wants_minimum,
                minimum_value,
                wants_maximum,
                maximum_value,
            ] + additional_object_settings
            variable_revision_number = 4
        if variable_revision_number == 4:
            #
            # Used Directory to combine directory choice & custom path
            #
            rules_directory_choice = setting_values[7]
            rules_path_name = setting_values[8]
            if rules_directory_choice == DIR_CUSTOM:
                rules_directory_choice = ABSOLUTE_FOLDER_NAME
                if rules_path_name.startswith("."):
                    rules_directory_choice = DEFAULT_INPUT_SUBFOLDER_NAME
                elif rules_path_name.startswith("&"):
                    rules_directory_choice = DEFAULT_OUTPUT_SUBFOLDER_NAME
                    rules_path_name = "." + rules_path_name[1:]

            rules_directory = Directory.static_join_string(
                rules_directory_choice, rules_path_name
            )
            setting_values = setting_values[:7] + [rules_directory] + setting_values[9:]
            variable_revision_number = 5

        if variable_revision_number == 5:
            #
            # added rules class
            #
            setting_values = setting_values[:9] + ["1"] + setting_values[9:]
            variable_revision_number = 6

        if variable_revision_number == 6:
            #
            # Added per-object assignment
            #
            setting_values = (
                setting_values[:FIXED_SETTING_COUNT_V6]
                + [PO_BOTH]
                + setting_values[FIXED_SETTING_COUNT_V6:]
            )

            variable_revision_number = 7

        if variable_revision_number == 7:
            x_name = setting_values[1]

            y_name = setting_values[0]

            measurement_count = int(setting_values[10])

            additional_object_count = int(setting_values[11])

            n_measurement_settings = measurement_count * 5

            additional_object_settings = setting_values[13 + n_measurement_settings :]

            additional_object_names = additional_object_settings[::4]

            additional_target_names = additional_object_settings[1::4]

            new_additional_object_settings = sum(
                [
                    [object_name, target_name]
                    for object_name, target_name in zip(
                        additional_object_names, additional_target_names
                    )
                ],
                [],
            )

            setting_values = (
                [x_name, y_name]
                + setting_values[2:5]
                + setting_values[7 : 13 + n_measurement_settings]
                + new_additional_object_settings
            )

            variable_revision_number = 8

        slot_directory = 5

        setting_values[slot_directory] = Directory.upgrade_setting(
            setting_values[slot_directory]
        )

        return setting_values, variable_revision_number