# HG changeset patch # User Henry S. Thompson # Date 1698932942 0 # Node ID e1881804855f9f24011feebecfaab5a84380580d # Parent cac9fb70a4ca8147919cf351aed3784bcd50cb55 sic diff -r cac9fb70a4ca -r e1881804855f bin/by_year.py --- /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()