diff options
Diffstat (limited to 'utils/delete-zdabs')
-rwxr-xr-x | utils/delete-zdabs | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/utils/delete-zdabs b/utils/delete-zdabs new file mode 100755 index 0000000..5c1bc2d --- /dev/null +++ b/utils/delete-zdabs @@ -0,0 +1,57 @@ +#!/usr/bin/env python +""" +Script to delete zdab files which have all been successfully fit. +""" +from sddm.logger import Logger + +log = Logger() + +if __name__ == '__main__': + import argparse + import sqlite3 + import os + from os.path import join, split, exists + import numpy as np + + parser = argparse.ArgumentParser("concatenate fit results from grid jobs into a single file") + parser.add_argument("--db", type=str, help="database file", default=None) + parser.add_argument('--loglevel', + help="logging level (debug, verbose, notice, warning)", + default='notice') + parser.add_argument('--logfile', default=None, + help="filename for log file") + args = parser.parse_args() + + log.set_verbosity(args.loglevel) + + if args.logfile: + log.set_logfile(args.logfile) + + home = os.path.expanduser("~") + + if args.db is None: + args.db = join(home,'state.db') + + conn = sqlite3.connect(args.db) + + c = conn.cursor() + + results = c.execute('SELECT filename, state FROM state').fetchall() + + unique_filenames = set(row[0] for row in results) + + for filename in unique_filenames: + if not exists(filename): + continue + + head, tail = split(filename) + + success = [row[1] == 'SUCCESS' for row in results if row[0] == filename] + + if all(success): + log.notice("deleting %s because all %i jobs were successfull" % (tail, len(success))) + os.remove(filename) + else: + log.debug("skipping %s because %i jobs failed" % (tail, len(success) - np.count_nonzero(success))) + + conn.close() |