From 6d8585ea97135e0d4c75981fbf47352093e911e2 Mon Sep 17 00:00:00 2001 From: jaseg Date: Sat, 12 May 2018 14:16:04 +0200 Subject: Repo re-org --- research/colorspace/csv_to_svg_path.py | 43 ++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100755 research/colorspace/csv_to_svg_path.py (limited to 'research/colorspace/csv_to_svg_path.py') diff --git a/research/colorspace/csv_to_svg_path.py b/research/colorspace/csv_to_svg_path.py new file mode 100755 index 0000000..5f638ed --- /dev/null +++ b/research/colorspace/csv_to_svg_path.py @@ -0,0 +1,43 @@ +#!/usr/bin/env python3 +import textwrap + +def svg_path_from_points(points, r): + points_joined = ' '.join(f'{x:.6f} {y:.6f}' for x, y in points) + return textwrap.dedent(f''' + + + + + + + ''').strip() + +if __name__ == '__main__': + import argparse + parser = argparse.ArgumentParser() + parser.add_argument('locus_csv', help='CSV file containing locus coordinates. Format: lambda, x, y, z.') + parser.add_argument('-r', '--radius', type=float, default=100, help='Radius of plot area in mm') + args = parser.parse_args() + + import csv, ast + points = [] + with open(args.locus_csv, newline='') as f: + for row in csv.reader(f): + # use literal_eval to handle entries like "1.153E-5" + λ, x, y, z = (ast.literal_eval(e.strip()) for e in row) + points.append((x*args.radius*2, y*args.radius*2)) + + print(svg_path_from_points(points, args.radius)) -- cgit