示例#1
0
    def load(self, fname):
        _, extension = os.path.splitext(fname)

        if extension == '.pkl':
            return super().load(fname)
        elif extension == '.csv':
            return ScoreExport.from_csv(fname)
示例#2
0
    def next(self):
        self.__bounds()
        if self.i > len(self.items):
            raise StopIteration()

        label, fname, load = self.items[self.i]
        _, extension = os.path.splitext(fname)
        logger.info(label, fname, load)

        self.i += 1

        if extension == '.csv':
            return (label, ScoreExport.from_csv(fname).roc())

        obj = load(fname)
        return (label, self._get_export(obj))
示例#3
0
    def difference(self, args):
        base = load_pickle(args.diff[0])

        p_args = []
        args_ = args.diff[1:-1]
        args_ = [tuple(args_[i:i + 2]) for i in range(0, len(args_), 2)]
        for label, fname in args_:
            _, extension = os.path.splitext(fname)
            if extension == '.csv':
                scores = ScoreExport.from_csv(fname)
            elif extension == '.pkl':
                scores = load_pickle(fname)

            p_args.append((label, scores))

        fname = self.f(args.diff[-1])

        print(p_args)

        # other = [load_pickle(x) for x in args.diff[1:]]
        plots.performance.p_diff(base, p_args, fname)
示例#4
0
    def call(self, args):
        swap = None
        score_export = None

        if args.load:
            obj = self.load(args.load[0])

            if isinstance(obj, SWAP):
                swap = obj
                score_export = swap.score_export()
            elif isinstance(obj, ScoreExport):
                score_export = obj

        if args.scores_from_csv:
            fname = args.scores_from_csv[0]
            score_export = ScoreExport.from_csv(fname)

        if args.run:
            swap = self.run_swap(args)
            score_export = swap.score_export()

        if swap is not None:

            if args.save:
                manifest = self.manifest(swap, args)
                self.save(swap, self.f(args.save[0]), manifest)

            if args.subject:
                fname = self.f(args.subject[0])
                plots.traces.plot_subjects(swap.history_export(), fname)

            if args.user:
                fname = self.f(args.user[0])
                plots.plot_user_cm(swap, fname)

            # if args.utraces:
            #     fname = self.f(args.user[0])
            #     plots.traces.plot_user(swap, fname)

            if args.log:
                fname = self.f(args.log[0])
                write_log(swap, fname)

            if args.stats:
                s = swap.stats_str()
                print(s)
                logger.debug(s)

            if args.test:
                from swap.utils.golds import GoldGetter
                gg = GoldGetter()
                logger.debug('applying new gold labels')
                swap.set_gold_labels(gg.golds)
                swap.process_changes()
                logger.debug('done')

            if args.test_reorder:
                self.reorder_classifications(swap)

            if args.export_user_scores:
                fname = self.f(args.export_user_scores[0])
                self.export_user_scores(swap, fname)

        if score_export is not None:
            if args.save_scores:
                fname = self.f(args.save_scores[0])
                self.save(score_export, fname)

            if args.hist:
                fname = self.f(args.hist[0])
                plots.plot_class_histogram(fname, score_export)

            if args.dist:
                data = [s.getScore() for s in swap.subjects]
                plots.plot_pdf(data,
                               self.f(args.dist[0]),
                               swap,
                               cutoff=float(args.dist[1]))

            if args.presrec:
                fname = self.f(args.presrec[0])
                plots.distributions.sklearn_purity_completeness(
                    fname, score_export)

            if args.scores_to_csv:
                self.scores_to_csv(score_export, args.scores_to_csv[0])

        if args.diff:
            self.difference(args)

        if args.shell:
            import code
            code.interact(local=locals())

        return swap
示例#5
0
    def call(self, args):
        swap = None
        scores = None

        if args.load:
            obj = self.load(args.load[0])

            if isinstance(obj, SWAP):
                swap = obj
                scores = swap.score_export()
            elif isinstance(obj, ScoreExport):
                scores = obj

        if args.scores_from_csv:
            fname = args.scores_from_csv[0]
            scores = ScoreExport.from_csv(fname)

        if args.run:
            swap = self.run_swap(args)
            scores = swap.score_export()

        if swap is not None:

            if args.save:
                manifest = self.manifest(swap, args)
                self.save(swap, self.f(args.save[0]), manifest)

            if args.log:
                fname = self.f(args.log[0])
                write_log(swap, fname)

            if args.stats:
                s = swap.stats_str()
                print(s)
                logger.debug(s)

            if args.test:
                from swap.utils.golds import GoldGetter
                gg = GoldGetter()
                logger.debug('applying new gold labels')
                swap.set_gold_labels(gg.golds)
                swap.process_changes()
                logger.debug('done')

            if args.test_reorder:
                self.reorder_classifications(swap)

            if args.export_user_scores:
                fname = self.f(args.export_user_scores[0])
                self.export_user_scores(swap, fname)

        if scores is not None:
            if args.save_scores:
                DB().subjects.save_scores(scores)

            if args.scores_to_csv:
                self.scores_to_csv(scores, args.scores_to_csv[0])

        self.plot(args, swap, scores)

        if args.shell:
            import code
            code.interact(local=locals())

        return swap