changeset 167:e1881804855f

sic
author Henry S. Thompson <ht@inf.ed.ac.uk>
date Thu, 02 Nov 2023 13:49:02 +0000
parents cac9fb70a4ca
children f95858689037
files bin/by_year.py
diffstat 1 files changed, 45 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/bin/by_year.py	Thu Nov 02 13:49:02 2023 +0000
@@ -0,0 +1,45 @@
+#!/usr/bin/python3
+'''Split stamped data by year
+Usage: origin-year output-dir by_year.py year-file sorted-ks-file.tsv [field]
+If field is given, ks-file is tsv and stamp is in that field,
+which, as for cut, is 1-origin'''
+
+import sys, os, os.path
+
+if len(sys.argv)>5:
+  (origin, outdir, year_file, in_file, field) = sys.argv[1:]
+  field=int(field)-1
+else:
+  (origin, outdir, year_file, in_file) = sys.argv[1:]
+  field=3
+
+if not os.access(outdir,os.F_OK):
+  os.mkdir(outdir)
+
+origin = float(origin)
+current = origin
+is_first = True
+with open(year_file,'r') as years, open(in_file,'r') as stamped:
+  y = years.readline()
+  l = stamped.readline()
+  while y:
+    y = float(y)
+    if is_first:
+      ysuf = 'prev'
+    else:
+      ysuf = str(current-1)
+    with open(os.path.join(outdir,'ks_%s.tsv'%ysuf),'w') as y_file:
+      while l:
+        if float(l.split('\t')[field]) < y:
+          y_file.write(l)
+        else:
+          break
+        l = stamped.readline()
+    y = years.readline()
+    current += 1
+    is_first = False
+  else:
+    with open(os.path.join(outdir,'ks_post.tsv'),'w') as y_file:
+      while l:
+        y_file.write(l)
+        l = stamped.readline()