Mercurial > hg > cc > cirrus_work
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()