def check_integrity(self, param, type=None):
        """
        check integrity of each option type
        if type is provided, use type instead of self.type_value --> allow recursive integrity checking
        """

        type_option = self.type_value
        if type is not None:
            type_option = type

        if type_option in self.OPTION_TYPES:
            return self.checkStandardType(param,type)

        elif type_option == "image_nifti":
            return self.checkIfNifti(param)

        elif type_option == "file":
            return self.checkFile(param)

        elif type_option == "file_output": # check if permission are required
            if not sct.check_write_permission(param):
                self.parser.usage.error("Error of writing permissions on file: "+param)
            return param

        elif type_option == "folder":
            return self.checkFolder(param)

        elif type_option == "folder_creation":
            return self.checkFolderCreation(param)

        elif type_option == "multiple_choice":
            """
            the choices are listed in example variable
            """
            if param not in self.example:
                self.parser.usage.error(self.name + " only takes " + self.parser.usage.print_list_with_brackets(self.example) + " as potential arguments.")
            return param

        elif isinstance(type_option, list):
            """
            This option is defined as a list delimited by a delimiter (that cannot be a space)
            For now, only one-layer list are available
            Examples:
            [[','],'int']
            [[':'],'coordinate']
            """
            delimiter = type_option[0][0]
            sub_type = type_option[1]
            param_splitted = param.split(delimiter)
            if len(param_splitted) != 0:
                return list([self.check_integrity(val,sub_type) for val in param_splitted])
            else:
                self.parser.usage.error("ERROR: Option "+self.name+" must be correctly written. See usage.")

        else:
            # self.parser.usage.error("ERROR: Type of option \"" + str(self.type_value) +"\" is not supported by the parser.")
            sct.printv("WARNING : Option "+str(self.type_value)+" does not exist and will have no effect on the execution of the script", "warining")
            sct.printv("Type -h to see supported options", "warning")
Esempio n. 2
0
    def check_integrity(self, param, type=None):
        """
        check integrity of each option type
        if type is provided, use type instead of self.type_value --> allow recursive integrity checking
        """

        type_option = self.type_value
        if type is not None:
            type_option = type

        if type_option in self.OPTION_TYPES:
            return self.checkStandardType(param,type)

        elif type_option == "image_nifti":
            return self.checkIfNifti(param)

        elif type_option == "file":
            return self.checkFile(param)

        elif type_option == "file_output": # check if permission are required
            if not sct.check_write_permission(param):
                self.parser.usage.error("Error of writing permissions on file: "+param)
            return param

        elif type_option == "folder":
            return self.checkFolder(param)

        elif type_option == "folder_creation":
            return self.checkFolderCreation(param)

        elif type_option == "multiple_choice":
            """
            the choices are listed in example variable
            """
            if param not in self.example:
                self.parser.usage.error(self.name + " only takes " + self.parser.usage.print_list_with_brackets(self.example) + " as potential arguments.")
            return param

        elif isinstance(type_option, list):
            """
            This option is defined as a list delimited by a delimiter (that cannot be a space)
            For now, only one-layer list are available
            Examples:
            [[','],'int']
            [[':'],'coordinate']
            """
            delimiter = type_option[0][0]
            sub_type = type_option[1]
            param_splitted = param.split(delimiter)
            if len(param_splitted) != 0:
                return list([self.check_integrity(val,sub_type) for val in param_splitted])
            else:
                self.parser.usage.error("ERROR: Option "+self.name+" must be correctly written. See usage.")

        else:
            # self.parser.usage.error("ERROR: Type of option \"" + str(self.type_value) +"\" is not supported by the parser.")
            sct.printv("WARNING : Option "+str(self.type_value)+" does not exist and will have no effect on the execution of the script", "warining")
            sct.printv("Type -h to see supported options", "warning")
Esempio n. 3
0
    def checkIntegrity(self, param, type=None):
        """
        check integrity of each option type
        :param param: option to test (could be a string, file name, etc.)
        :param type: if provided, use type instead of self.type_value to allow recursive integrity checking
        :return:
        """

        type_option = self.type_value
        if type is not None:
            type_option = type

        if type_option in self.OPTION_TYPES:
            return self.checkStandardType(param, type)

        elif type_option == "image_nifti":
            return self.checkIfNifti(param)

        elif type_option == "file":
            return self.checkFile(param)

        elif type_option == "file-transfo":
            if param.startswith("-"):
                self.checkFile(param[1:])
                return param
            else:
                return self.checkFile(param)

        elif type_option == "file_output":  # check if permission are required
            if not os.path.isdir(os.path.dirname(os.path.abspath(param))):
                self.parser.usage.error(
                    "Option %s parent folder doesn't exist for file %s" %
                    (self.name, param))
            if not sct.check_write_permission(param):
                self.parser.usage.error(
                    "Option %s no write permission for file %s" %
                    (self.name, param))
            return param

        elif type_option == "folder":
            return self.checkFolder(param)

        elif type_option == "folder_creation":
            return self.checkFolderCreation(param)

        elif type_option == "multiple_choice":
            """
            the choices are listed in example variable
            """
            if param not in self.example:
                self.parser.usage.error(
                    self.name + " only takes " +
                    self.parser.usage.print_list_with_brackets(self.example) +
                    " as potential arguments.")
            return param

        elif isinstance(type_option, list):
            """
            This option is defined as a list delimited by a delimiter (that cannot be a space)
            For now, only one-layer list are available
            Examples:
            [[','],'int']
            [[':'],'coordinate']
            """
            delimiter = type_option[0][0]
            sub_type = type_option[1]
            param_splitted = param.split(delimiter)
            if len(param_splitted) != 0:
                # check if files are separated by space (if "*" was used)
                if not param_splitted[0].find(' ') == -1:
                    # if so, split and return list
                    param_splitted = param_splitted[0].split(' ')
                return list([
                    self.checkIntegrity(val, sub_type)
                    for val in param_splitted
                ])
            else:
                self.parser.usage.error(
                    "Option " + self.name +
                    " must be correctly written. See usage.")

        else:
            # self.parser.usage.error("Type of option \"" + str(self.type_value) +"\" is not supported by the parser.")
            sct.printv(
                "Option " + str(self.type_value) +
                " does not exist and will have no effect on the execution of the script",
                1, "warning")
            sct.printv("Type -h to see supported options", 1, "warning")
Esempio n. 4
0
    def checkIntegrity(self, param, type=None):
        """
        check integrity of each option type
        :param param: option to test (could be a string, file name, etc.)
        :param type: if provided, use type instead of self.type_value to allow recursive integrity checking
        :return:
        """

        type_option = self.type_value
        if type is not None:
            type_option = type

        if type_option in self.OPTION_TYPES:
            return self.checkStandardType(param, type)

        elif type_option == "image_nifti":
            return self.checkIfNifti(param)

        elif type_option == "file":
            return self.checkFile(param)

        elif type_option == "file-transfo":
            if param.startswith("-"):
                self.checkFile(param[1:])
                return param
            else:
                return self.checkFile(param)

        elif type_option == "file_output":  # check if permission are required
            if not os.path.isdir(os.path.dirname(os.path.abspath(param))):
                self.parser.usage.error("Option %s parent folder doesn't exist for file %s" % (self.name, param))
            if not sct.check_write_permission(param):
                self.parser.usage.error("Option %s no write permission for file %s" % (self.name, param))
            return param

        elif type_option == "folder":
            return self.checkFolder(param)

        elif type_option == "folder_creation":
            return self.checkFolderCreation(param)

        elif type_option == "multiple_choice":
            """
            the choices are listed in example variable
            """
            if param not in self.example:
                self.parser.usage.error(self.name + " only takes " + self.parser.usage.print_list_with_brackets(self.example) + " as potential arguments.")
            return param

        elif isinstance(type_option, list):
            """
            This option is defined as a list delimited by a delimiter (that cannot be a space)
            For now, only one-layer list are available
            Examples:
            [[','],'int']
            [[':'],'coordinate']
            """
            delimiter = type_option[0][0]
            sub_type = type_option[1]
            param_splitted = param.split(delimiter)
            if len(param_splitted) != 0:
                # check if files are separated by space (if "*" was used)
                if not param_splitted[0].find(' ') == -1:
                    # if so, split and return list
                    param_splitted = param_splitted[0].split(' ')
                return list([self.checkIntegrity(val, sub_type) for val in param_splitted])
            else:
                self.parser.usage.error("Option " + self.name + " must be correctly written. See usage.")

        else:
            # self.parser.usage.error("Type of option \"" + str(self.type_value) +"\" is not supported by the parser.")
            sct.printv("Option " + str(self.type_value) + " does not exist and will have no effect on the execution of the script", 1, "warning")
            sct.printv("Type -h to see supported options", 1, "warning")