コード例 #1
0
def check_arg_input(parser, args):
    if not args.input:
        parser.error("-i, --input INPUT is required.")

    loader = Loader.get_loader(args.input)
    if loader == FSLoader:
        if os.path.isfile(
                args.input) and not is_a_supported_image_file_extension(
                    args.input):
            parser.error("Input {} file not supported format.".format(
                args.input))
        if os.path.isfile(args.input):
            check_image_file_validity(args.input)
    elif loader == HTTPLoader:
        if not check_url(args.input):
            parser.error(
                "Url {} of the http ressource doesn't exist or is not accesible."
                .format(args.input))
        if not is_a_supported_image_file_extension(args.input):
            parser.error(
                "Url {} is not file with a supported extension format.".format(
                    args.input))
    else:
        parser.error(
            "Input {} is not a valid file or directory or url.".format(
                args.input))
    return args.input
    def load(self, data, predictor):
        f = self.check_keys(data, "file", "")
        amount = self.check_keys(data, "amount", -1)
        print "Start file: " + str(data['file']) + "."

        from loader import Loader, BinaryLoader
        loader = Loader.get_loader(self.check_keys(data, "loader", "BinaryLoader"), BinaryLoader())
        print "Using Loader \"" + data["loader"] + "\" to load the data."

        if not loader.load(f, amount, predictor):
            print "Dataset \"" + data['file'] + "\" could not be loaded."
            return None
        return None
    def load(self, data, predictor):
        self.check_keys(data, "from", 0)
        self.check_keys(data, "file", "")
        self.check_keys(data, "to", -1)
        print "Start file: " + str(data['file']) + "."

        from loader import Loader, CTULoader
        loader = Loader.get_loader(self.check_keys(data, "loader", "CTULoader"), CTULoader())
        print "Using Loader \"" + data["loader"] + "\" to load the data."

        if not loader.load(data['file'], data['from'], data['to'], predictor.get_good_labels(), False):
            print "Dataset \"" + data['file'] + "\" could not be loaded."
            return None

        return loader.get_netflow()
コード例 #4
0
    def train(self, algorithm, data, feature, good_labels, config):
        fr = self.check_keys(data, "from", 0)
        file = self.check_keys(data, "file", "")
        to = self.check_keys(data, "to", -1)

        from loader import Loader, CTULoader
        loader = Loader.get_loader(
            self.check_keys(data, "loader", "CTULoader"), CTULoader())
        print "Using Loader \"" + data["loader"] + "\" to load the data."

        if not loader.load(file, fr, to):
            print "Training set \"" + file + "\" could not be loaded."
            return None

        return self.default(algorithm, loader, feature, file)
    def load(self, data, predictor):
        host = self.check_keys(data, "host", "")
        user = self.check_keys(data, "user", "")
        password = self.check_keys(data, "password", "")
        db = self.check_keys(data, "db", "")
        amount = self.check_keys(data, "amount", 2000)
        print "Start file: " + host+":"+db + "."

        from loader import Loader, PickleLoader
        loader = Loader.get_loader(self.check_keys(data, "loader", "PickleLoader"), PickleLoader())
        print "Using Loader \"" + data["loader"] + "\" to load the data."

        if not loader.load(host, user, password, db, amount, classify=True, db_file=predictor.get_db_file()):
            print "Dataset \"" + host+":"+db + "\" could not be loaded."
            return None
        return loader.get_netflow()
コード例 #6
0
    def _setup(self, *args):
        """
        Process Image Constructor.

        :param args: <dict> args parameter to run the image transformation (default use Conf.args)
        """
        self.__phases = select_phases(self._args)
        self.__input_path = self._args['input']
        self.__output_path = self._args['output']
        self.__altered_path = self._args.get('altered')
        self.__starting_step = self._args['steps'][0] if self._args.get(
            'steps') else 0
        self.__ending_step = self._args['steps'][1] if self._args.get(
            'steps') else None

        Conf.log.debug("All Phases : {}".format(self.__phases))
        Conf.log.debug("To Be Executed Phases : {}".format(
            self.__phases[self.__starting_step:self.__ending_step]))

        path = self.__altered_path if os.path.isfile(self.__input_path) or not self._args.get('folder_altered')  \
            else os.path.join(self._args['folder_altered'], os.path.basename(self.__output_path))

        self.__image_steps = [self.__input_path] + [
            os.path.join(path, "{}.png".format(p().__class__.__name__))
            for p in self.__phases[:self.__starting_step]
        ]
        Conf.log.info("Processing on {}".format(str(self.__image_steps)[2:-2]))
        Conf.log.debug(self.__image_steps)

        try:
            self.__image_steps = [
                (Loader.get_loader(x)).load(x) if isinstance(x, str) else x
                for x in self.__image_steps
            ]
        except (FileNotFoundError, AttributeError) as e:
            Conf.log.error(e)
            Conf.log.error(
                "{} is not able to resume because it not able to load required images. "
                .format(camel_case_to_str(self.__class__.__name__)))
            Conf.log.error(
                "Possible source of this error is that --altered argument is not a correct "
                "directory path that contains valid images.")
            sys.exit(1)
コード例 #7
0
    def train(self, algorithm, data, feature, good_labels, config):
        host = self.check_keys(data, "host", "")
        user = self.check_keys(data, "user", "")
        password = self.check_keys(data, "password", "")
        db = self.check_keys(data, "db", "")
        amount = self.check_keys(data, "amount", 10000)

        from loader import Loader, PickleLoader
        loader = Loader.get_loader(
            self.check_keys(data, "loader", "PickleLoader"), PickleLoader())
        print "Using Loader \"" + data["loader"] + "\" to load the data."

        if not loader.load(host,
                           user,
                           password,
                           db,
                           amount,
                           classify=True,
                           db_file=config.get_db_file()):
            print "Training set \"" + host + ":" + db + "\" could not be loaded."
            return None

        return self.default(algorithm, loader, feature, host + ":" + db)
コード例 #8
0
    def _setup(self, *args):
        """
        Process Image Constructor.

        :param args: <dict> args parameter to run the image transformation (default use Conf.args)
        """
        self.__phases = select_phases(self._args)
        self.__input_path = self._args['input']
        self.__output_path = self._args['output']
        self.__altered_path = self._args.get('altered')
        self.__starting_step = self._args['steps'][0] if self._args.get(
            'steps') else 0
        self.__ending_step = self._args['steps'][1] if self._args.get(
            'steps') else None

        Conf.log.debug("All Phases : {}".format(self.__phases))
        Conf.log.debug("To Be Executed Phases : {}".format(
            self.__phases[self.__starting_step:self.__ending_step]))

        imagename_no_ext = os.path.splitext(os.path.basename(
            self.__input_path))[0]
        if (self._args.get('folder_altered')):
            folder_name = imagename_no_ext + '_' + str(
                hashlib.md5(open(self.__input_path, 'rb').read()).hexdigest())
            folder_path = os.path.join(self._args['folder_altered'],
                                       folder_name)

            if (not os.path.isdir(folder_path)):
                os.makedirs(folder_path, exist_ok=True)

            self._args['folder_altered'] = folder_path
            path = self._args['folder_altered']

            self.__image_steps = [self.__input_path] + [
                os.path.join(path, "{}.png".format(p().__class__.__name__))
                for p in self.__phases[:self.__starting_step]
            ]
        elif (self.__altered_path):
            folder_name = imagename_no_ext + '_' + str(
                hashlib.md5(open(self.__input_path, 'rb').read()).hexdigest())
            folder_path = os.path.join(self.__altered_path, folder_name)

            if (not os.path.isdir(folder_path)):
                os.makedirs(folder_path, exist_ok=True)

            self.__altered_path = folder_path
            path = self.__altered_path

            self.__image_steps = [self.__input_path] + [
                os.path.join(path, "{}.png".format(p().__class__.__name__))
                for p in self.__phases[:self.__starting_step]
            ]
        else:
            # TODO: refactor me, please!
            self.__image_steps = [self.__input_path] + [
                self.__input_path for p in self.__phases[:self.__starting_step]
            ]

        Conf.log.info("Processing on {}".format(str(self.__image_steps)))

        try:
            self.__image_steps = [
                (Loader.get_loader(x)).load(x) if isinstance(x, str) else x
                for x in self.__image_steps
            ]
        except (FileNotFoundError, AttributeError) as e:
            Conf.log.error(e)
            Conf.log.error(
                "{} is not able to resume because it not able to load required images. "
                .format(camel_case_to_str(self.__class__.__name__)))
            Conf.log.error(
                "Possible source of this error is that --altered argument is not a correct "
                "directory path that contains valid images.")
            sys.exit(1)