aboutsummaryrefslogtreecommitdiff
path: root/utils/delete-zdabs
diff options
context:
space:
mode:
Diffstat (limited to 'utils/delete-zdabs')
-rwxr-xr-xutils/delete-zdabs57
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()