print pd.DataFrame(b, columns=['Sum'] + df.columns.values.tolist(), index=['Sum'] + df.index.values.tolist()) if __name__ == '__main__': parser = argparse.ArgumentParser(description='Calculate F1 metric') parser.add_argument('-s', '--min-score', type=int, help='minimum truth object score', default=0) parser.add_argument('truth', nargs=1, help='truth table in yaml format') parser.add_argument('pred', nargs=1, help='prediction in MCL format') parser.add_argument('output', nargs='?', type=argparse.FileType('w'), default=sys.stdout, help='Output file') args = parser.parse_args() print 'Reading truth table...' truth = tt.read_truth(args.truth[0], args.min_score) print 'Reading prediction...' pred = tt.read_mcl(args.pred[0]) print 'Creating contingency table...' ct = tt.crosstab(truth.hard(), pred.hard()) print print 'Contigency table [rows=truth, cols=prediction] contains {0} elements'.format(ct.shape[0] * ct.shape[1]) print_table(ct) print if over_clustered(ct): add_padding_columns(ct) print 'Squaring table with dummy classes' print_table(ct)
#!/usr/bin/env python import truthtable as tt import numpy as np import sys table = tt.read_truth(sys.argv[1]) num_class = [] for k, v in table.asgn_dict.iteritems(): num_class.append(len(v)) print '#objects\tmean_size\tsd_size' print '{0}\t{1}\t{2}'.format(len(num_class), np.mean(num_class), np.std(num_class))
parser.add_argument('-s', '--min-score', type=int, help='minimum truth object score', default=0) parser.add_argument('truth', nargs=1, help='truth table in yaml format') parser.add_argument('pred', nargs=1, help='prediction in MCL format') parser.add_argument('output', nargs='?', type=argparse.FileType('w'), default=sys.stdout, help='Output file') args = parser.parse_args() print 'Reading truth table...' truth = tt.read_truth(args.truth[0], args.min_score) print 'Reading prediction...' pred = tt.read_mcl(args.pred[0]) print 'Creating contingency table...' ct = tt.crosstab(truth.hard(), pred.hard()) print print 'Contigency table [rows=truth, cols=prediction] contains {0} elements'.format( ct.shape[0] * ct.shape[1]) print_table(ct) print if over_clustered(ct): add_padding_columns(ct) print 'Squaring table with dummy classes'
with open(filename, 'w') as hout: hout.write(msg + '\n') parser = argparse.ArgumentParser(description='Calculate extended bcubed metric') parser.add_argument('truth', metavar='TRUTH', help='Truth table (yaml format)') parser.add_argument('pred', metavar='PREDICTION', help='Prediction table (mcl format)') parser.add_argument('output', metavar='OUTPUT',nargs='?', type=argparse.FileType('w'), default=sys.stdout, help='Output file (stdout)') parser.add_argument('-w','--weighted', default=False, action='store_true', help='Use truth object weights') parser.add_argument('-v', '--verbose', action='store_true', default=False, help='Verbose output') parser.add_argument('--hard', action='store_true', default=False, help='Extract hard truth prior to analysis') args = parser.parse_args() try: # read truth and convert to basic soft table truth = tt.read_truth(args.truth) if len(truth) == 0: raise RuntimeWarning('Truth table contains no assignments: {0}'.format(args.truth[0])) # collect object weights if requested weights = truth.get_weights() if args.weighted else None if args.verbose: print 'Truth Statistics' truth.print_tally() if args.hard: truth = truth.hard(True) else: truth = truth.soft(True)