From 2db62ae1a5a0b2607dfc4803735fc5cd79bb0d78 Mon Sep 17 00:00:00 2001 From: aretasg Date: Sat, 23 Feb 2019 14:01:44 +0000 Subject: [PATCH 1/4] added a single file script to convert .res files to .png files --- README.md | 22 ++ README.rst | 51 ---- pycorn/pycorn.py => convert_res.py | 422 +++++++++++++++++++++++++++- examplescripts/pycorn-bin.py | 390 ------------------------- pycorn/__init__.py | 1 - pycorn/docs/CHANGES.txt | 58 ---- pycorn/docs/LICENSE.txt | 339 ---------------------- pycorn/docs/RES_files_layout.txt | 132 --------- pycorn/docs/USAGE_pycorn-bin.txt | 84 ------ pycorn/docs/USAGE_pycorn_module.txt | 34 --- setup.py | 28 -- 11 files changed, 433 insertions(+), 1128 deletions(-) create mode 100644 README.md delete mode 100644 README.rst rename pycorn/pycorn.py => convert_res.py (52%) delete mode 100644 examplescripts/pycorn-bin.py delete mode 100644 pycorn/__init__.py delete mode 100644 pycorn/docs/CHANGES.txt delete mode 100644 pycorn/docs/LICENSE.txt delete mode 100644 pycorn/docs/RES_files_layout.txt delete mode 100644 pycorn/docs/USAGE_pycorn-bin.txt delete mode 100644 pycorn/docs/USAGE_pycorn_module.txt delete mode 100644 setup.py diff --git a/README.md b/README.md new file mode 100644 index 0000000..6d0be27 --- /dev/null +++ b/README.md @@ -0,0 +1,22 @@ +# Convert .res files using PyCORN (adapted to work with pyinstaller) + +## Requirments + +* matplotlib + +## Features + +* convert_res.py is a modified PyCORN utility to generate .png plots from .res files +* It does not accept any arguments; +* When run converts every .res file in the same directory as the convert_res.py script. +* Works with PyInstaller allowing convert_res.py to be bundled and easily distrubuted to people not familiar with terminal/console. + +## Example usage + +``` +python convert_res.py +``` + +## Known issues + +On macOS when creating an executable using PyInstaller an error related to tkinter may be issued. Please refer to this [link](https://github.com/pyinstaller/pyinstaller/issues/3753) for a solution. diff --git a/README.rst b/README.rst deleted file mode 100644 index 37e9817..0000000 --- a/README.rst +++ /dev/null @@ -1,51 +0,0 @@ -====== -PyCORN -====== - -A script to extract data from UNICORN result (.res) files and plot them. - -.. image:: https://raw.githubusercontent.com/pyahmed/PyCORN/master/samples/sample1_2009Jun16no001_plot.jpg - -A script extract data from .res (results) files generated by UNICORN Chromatography software supplied with AKTA Systems. This script will find all data blocks, extract the data and write out csv-files. If you have matplotlib installed it will also plot all the curves including fractions if present. Plots can be saved in any format supported by matplotlib (default is pdf). Alternatively you may import pycorn into your script and access the data inside res-files. - ----- - -News ----- -PyCORN-WEB launched: -PyCORN is now available as a web-service. Just drop your res/zip file, get a preview of the plot (generated with plotly) - adjust as needed and download a high-quality PNG file. No need to open a terminal, no Python installation etc required :-) - -visit: http://pycornweb.appspot.com - -======= - -v0.19 released: - -- FIXED: Injection points not recognized properly (see https://github.com/pyahmed/PyCORN/issues/12) - - -Installation ------------- -- pip install pycorn - - -Known issues ------------- -- See https://github.com/pyahmed/PyCORN/issues - - -Requirements ------------- -- Python 2.7 or 3.x (Tested on Linux / Windows 7 / Mac OSX) -- optional: matplotlib (for plotting) -- optional: xlsxwriter (for xlsx-output) - -Usage ------ -- See pycorn/docs/USAGE_pycorn-bin.txt if you want to extract/plot data directly -- See pycorn/docs/USAGE_pycorn_module.txt if you want to import it into your script - - -License -------- -- GPLv2 see docs/LICENSE.txt diff --git a/pycorn/pycorn.py b/convert_res.py similarity index 52% rename from pycorn/pycorn.py rename to convert_res.py index addbf66..7e6eb2f 100644 --- a/pycorn/pycorn.py +++ b/convert_res.py @@ -1,9 +1,10 @@ +#!/usr/bin/env python # -*- coding: utf-8 -*- ''' PyCORN - script to extract data from .res (results) files generated by UNICORN Chromatography software supplied with ÄKTA Systems (c)2014-2016 - Yasar L. Ahmed -v0.18b +v0.18 ''' from __future__ import print_function @@ -14,7 +15,15 @@ import struct import codecs import os +import sys import io +import argparse +import matplotlib +matplotlib.use('TkAgg') +import matplotlib.pyplot as plt +from mpl_toolkits.axes_grid1 import host_subplot +from matplotlib.ticker import AutoMinorLocator +import mpl_toolkits.axisartist as AA class pc_res3(OrderedDict): """A class for holding the PyCORN/RESv3 data. @@ -176,7 +185,7 @@ def meta1_read(self, dat, show=False, do_it_for_inj_det=False): final_data = [] inj_vol_to_subtract = self.inject_vol if do_it_for_inj_det: - inj_vol_to_subtract = 0.0 + inj_vol_to_subtract = 0.0 for i in range(dat['d_start'], dat['d_end'], 180): dp = struct.unpack("dd158s", self.raw_data[i:i + 174]) # acc_time = dp[0] # not used atm @@ -222,7 +231,7 @@ def sensor_read(self, dat, show=False): for i in range(dat['adresse'] + 207, dat['adresse'] + 222, 15): s_unit = struct.unpack("15s", fread[i:i + 15]) s_unit_dec = (codecs.decode(s_unit[0], 'iso8859-1')).rstrip('\x00') - # FIX: in some files the unit for temperature reads 'C' instead of '°C' + # FIX: in some files the unit for temperature reads 'C' instead of '°C' if s_unit_dec == 'C': s_unit_dec = u'°C' for i in range(dat['d_start'], dat['d_end'], 8): @@ -270,7 +279,7 @@ def load(self, show=False): else: # TODO: Maybe we should keep this around? del self[name] - + class pc_uni6(OrderedDict): ''' A class for holding the pycorn/RESv6 data @@ -279,19 +288,19 @@ class pc_uni6(OrderedDict): # for manual zip-detection zip_magic_start = b'\x50\x4B\x03\x04\x2D\x00\x00\x00\x08' zip_magic_end = b'\x50\x4B\x05\x06\x00\x00\x00\x00' - + # hack to get pycorn-bin to move on SensData_id = 0 SensData_id2 = 0 Fractions_id = 0 Fractions_id2 = 0 - + def __init__(self, inp_file): OrderedDict.__init__(self) self.file_name = inp_file self.inject_vol = 0.0 self.run_name = 'blank' - + def load(self, show=False): ''' zip-files inside the zip-bundle are replaced by dicts, again with dicts with filename:content @@ -368,7 +377,7 @@ def zip2dict(inp): tmp_dict = {i:inp.read(i)} mydict.update(tmp_dict) return(mydict) - + @staticmethod def unpacker(inp): ''' @@ -382,7 +391,7 @@ def unpacker(inp): x = x[0] values.append(x) return(values) - + def xml_parse(self,show=False): ''' parses parts of the Chrom.1.Xml and creates a res3-like dict @@ -440,7 +449,7 @@ def xml_parse(self,show=False): print(d_fname) print(d_unit) self.update(chrom_dict) - + def clean_up(self): ''' deletes everything and just keeps relevant run-date @@ -450,4 +459,395 @@ def clean_up(self): for i in range(len(manifest)): file_name = manifest[i][0].text self.pop(file_name) - self.pop('Manifest.xml') \ No newline at end of file + self.pop('Manifest.xml') + +try: + # from mpl_toolkits.axes_grid1 import host_subplot + # from matplotlib.ticker import AutoMinorLocator + # import mpl_toolkits.axisartist as AA + # import matplotlib.pyplot as plt + plotting = True +except: + ImportError + print("WARNING: Matplotlib not found - Plotting disabled!") + plotting = False + +try: + # import xlsxwriter + xlsx = False +except: + ImportError + print("WARNING: xlsxwriter not found - xlsx-output disabled!") + xlsx = False + +pcscript_version = 0.14 + +parser = argparse.ArgumentParser( + description = "Extract data from UNICORN .res files to .csv/.txt and plot them (matplotlib required)", + epilog = "Make it so!") +parser.add_argument("-c", "--check", + help = "Perform simple check if file is supported", + action = "store_true") +parser.add_argument("-n", "--info", + help = "Display entries in header", + action = "store_true") +parser.add_argument("-i", "--inject", type = int, default = None, + help = "Set injection number # as zero retention, use -t to find injection points", + metavar="#") +parser.add_argument("-r", "--reduce", type = int, default = 1, + help = "Write/Plot only every n sample", + metavar="#") +parser.add_argument("-t", "--points", + help = "Display injection points", + action = "store_true") + +group0 = parser.add_argument_group('Extracting', 'Options for writing csv/txt files') +group0.add_argument("-e", "--extract", type=str, choices=['csv','xlsx'], + help = "Write data to csv or xlsx file for supported data blocks") + +group1 = parser.add_argument_group('Plotting', 'Options for plotting') +group1.add_argument("-p", "--plot", + help = 'Plot curves', + action = "store_true") +group1.add_argument("--no_fractions", + help="Disable plotting of fractions", + action = "store_true") +group1.add_argument("--no_inject", + help="Disable plotting of inject marker(s)", + action = "store_true") +group1.add_argument("--no_legend", + help="Disable legend for plot", + action = "store_true") +group1.add_argument("--no_title", + help="Disable title for plot", + action = "store_true") +group1.add_argument("--xmin", type = float, default=None, + help="Lower bound on the x-axis", + metavar="#") +group1.add_argument("--xmax", type = float, default=None, + help="Upper bound on the x-axis", + metavar="#") +group1.add_argument("--par1", type = str, default='Cond', + help="Data for 2nd y-axis (Default=Cond), to disable 2nd y-axis, use --par1 None") +group1.add_argument("--par2", type = str, default=None, + help="Data for 3rd y-axis (Default=None)") +group1.add_argument('-f', '--format', type = str, + choices=['svg','svgz','tif','tiff','jpg','jpeg', + 'png','ps','eps','raw','rgba','pdf','pgf'], + default = 'png', + help = "File format of plot files (default: pdf)") +group1.add_argument('-d', '--dpi', default=300, type=int, + help="DPI (dots per inch) for raster images (png, jpg, etc.). Default is 300.") +parser.add_argument("-u", "--user", + help = "Show stored user name", + action = "store_true") +parser.add_argument('--version', action='version', version=str(pcscript_version)) +# parser.add_argument("inp_res", +# help="Input .res file(s)", +# nargs='+', +# metavar=".res") +#args.no_inject +args = parser.parse_args() + +def mapper(min_val, max_val, perc): + ''' + calculate relative position in delta min/max + ''' + x = abs(max_val - min_val) * perc + if min_val < 0: + return (x - abs(min_val)) + else: + return (x + min_val) + + +def expander(min_val, max_val, perc): + ''' + expand -/+ direction of two values by a percentage of their delta + ''' + delta = abs(max_val - min_val) + x = delta * perc + return (min_val - x, max_val + x) + + +def xy_data(inp): + ''' + Takes a data block and returns two lists with x- and y-data + ''' + x_data = [x[0] for x in inp] + y_data = [x[1] for x in inp] + return x_data, y_data + + +def uvdata(inp): + ''' + helps in finding the useful data + ''' + UV_blocks = [i for i in inp if i.startswith('UV') or i.endswith('nm')] + for i in UV_blocks: + if i.endswith("_0nm"): + UV_blocks.remove(i) + + +def smartscale(inp): + ''' + input is the entire fdata block + checks user input/fractions to determine scaling of x/y-axis + returns min/max for x/y + ''' + UV_blocks = [i for i in inp.keys() if i.startswith('UV') and not i.endswith('_0nm')] + uv1_data = inp[UV_blocks[0]]['data'] + uv1_x, uv1_y = xy_data(uv1_data) + try: + uv2_data = inp[UV_blocks[1]]['data'] + uv2_x, uv2_y = xy_data(uv2_data) + uv3_data = inp[UV_blocks[2]]['data'] + uv3_x, uv3_y = xy_data(uv3_data) + except: + KeyError + uv2_data = None + uv3_data = None + try: + frac_data = inp['Fractions']['data'] + frac_x, frac_y = xy_data(frac_data) + frac_delta = [abs(a - b) for a, b in zip(frac_x, frac_x[1:])] + frac_delta.append(frac_delta[-1]) + except: + KeyError + frac_data = None + if args.xmin != None: + plot_x_min = args.xmin + else: + if frac_data: + plot_x_min = frac_data[0][0] + else: + plot_x_min = uv1_x[0] + if args.xmax: + plot_x_max = args.xmax + else: + if frac_data: + plot_x_max = frac_data[-1][0] + frac_delta[-1]*2 # recheck + else: + plot_x_max = uv1_x[-1] + if plot_x_min > plot_x_max: + print("Warning: xmin bigger than xmax - adjusting...") + plot_x_min = uv1_x[0] + if plot_x_max < plot_x_min: + print("Warning: xmax smaller than xmin - adjusting...") + plot_x_max = uv1_x[-1] + # optimize y_scaling + min_y_values = [] + max_y_values = [] + for i in UV_blocks: + tmp_x, tmp_y = xy_data(inp[i]['data']) + range_min_lst = [abs(a - plot_x_min) for a in tmp_x] + range_min_idx = range_min_lst.index(min(range_min_lst)) + range_max_lst = [abs(a - plot_x_max) for a in tmp_x] + range_max_idx = range_max_lst.index(min(range_max_lst)) + values_in_range = tmp_y[range_min_idx:range_max_idx] + min_y_values.append(min(values_in_range)) + max_y_values.append(max(values_in_range)) + plot_y_min_tmp = min(min_y_values) + plot_y_max_tmp = max(max_y_values) + plot_y_min, plot_y_max = expander(plot_y_min_tmp, plot_y_max_tmp, 0.085) + return plot_x_min, plot_x_max, plot_y_min, plot_y_max + +def plotterX(inp,fname): + plot_x_min, plot_x_max, plot_y_min, plot_y_max = smartscale(inp) + host = host_subplot(111, axes_class=AA.Axes) + host.set_xlabel("Elution volume (ml)") + host.set_ylabel("Absorbance (mAu)") + host.set_xlim(plot_x_min, plot_x_max) + host.set_ylim(plot_y_min, plot_y_max) + for i in inp.keys(): + if i.startswith('UV') and not i.endswith('_0nm'): + x_dat, y_dat = xy_data(inp[i]['data']) + print("Plotting: " + inp[i]['data_name']) + stl = styles[i[:4]] + p0, = host.plot(x_dat, y_dat, label=inp[i]['data_name'], color=stl['color'], + ls=stl['ls'], lw=stl['lw'],alpha=stl['alpha']) + if args.par1 == 'None': + args.par1 = None + if args.par1: + try: + par1_inp = args.par1 + par1 = host.twinx() + par1_data = inp[par1_inp] + stl = styles[par1_inp[:4]] + par1.set_ylabel(par1_data['data_name'] + " (" + par1_data['unit'] + ")", color=stl['color']) + x_dat_p1, y_dat_p1 = xy_data(par1_data['data']) + p1_ymin, p1_ymax = expander(min(y_dat_p1), max(y_dat_p1), 0.085) + par1.set_ylim(p1_ymin, p1_ymax) + print("Plotting: " + par1_data['data_name']) + p1, = par1.plot(x_dat_p1, y_dat_p1, label=par1_data['data_name'], + color=stl['color'], ls=stl['ls'], lw=stl['lw'], alpha=stl['alpha']) + except: + KeyError + if par1_inp != None: + print("Warning: Data block chosen for par1 does not exist!") + if args.par2: + try: + par2_inp = args.par2 + par2 = host.twinx() + offset = 60 + new_fixed_axis = par2.get_grid_helper().new_fixed_axis + par2.axis["right"] = new_fixed_axis(loc="right", axes=par2, offset=(offset, 0)) + par2.axis["right"].toggle(all=True) + par2_data = inp[par2_inp] + stl = styles[par2_inp[:4]] + par2.set_ylabel(par2_data['data_name'] + " (" + par2_data['unit'] + ")", color=stl['color']) + x_dat_p2, y_dat_p2 = xy_data(par2_data['data']) + p2_ymin, p2_ymax = expander(min(y_dat_p2), max(y_dat_p2), 0.075) + par2.set_ylim(p2_ymin, p2_ymax) + print("Plotting: " + par2_data['data_name']) + p2, = par2.plot(x_dat_p2, y_dat_p2, label=par2_data['data_name'], + color=stl['color'],ls=stl['ls'], lw=stl['lw'], alpha=stl['alpha']) + except: + KeyError + if par2_inp != None: + print("Warning: Data block chosen for par2 does not exist!") + if not args.no_fractions: + try: + frac_data = inp['Fractions']['data'] + frac_x, frac_y = xy_data(frac_data) + frac_delta = [abs(a - b) for a, b in zip(frac_x, frac_x[1:])] + frac_delta.append(frac_delta[-1]) + frac_y_pos = mapper(host.get_ylim()[0], host.get_ylim()[1], 0.015) + for i in frac_data: + host.axvline(x=i[0], ymin=0.065, ymax=0.0, color='r', linewidth=0.85) + host.annotate(str(i[1]), xy=(i[0] + frac_delta[frac_data.index(i)] * 0.55, frac_y_pos), + horizontalalignment='center', verticalalignment='bottom', size=8, rotation=90) + except: + KeyError + if inp.inject_vol != 0.0: + injections = inp.injection_points + host.axvline(x=0, ymin=0.10, ymax=0.0, color='#FF3292', + ls ='-', marker='v', markevery=2, linewidth=1.5, alpha=0.85, label='Inject') + host.set_xlim(plot_x_min, plot_x_max) + if not args.no_legend: + host.legend(fontsize=8, fancybox=True, labelspacing=0.4, loc='upper right', numpoints=1) + host.xaxis.set_minor_locator(AutoMinorLocator()) + host.yaxis.set_minor_locator(AutoMinorLocator()) + if not args.no_title: + plt.title(fname, loc='left', size=9) + plot_file = fname[:-4] + "_" + inp.run_name + "_plot." + args.format + plt.savefig(plot_file, bbox_inches='tight', dpi=args.dpi) + print("Plot saved to: " + plot_file) + plt.clf() + +def data_writer1(fname, inp): + ''' + writes sensor/run-data to csv-files + ''' + for i in inp.keys(): + print("Writing: " + inp[i]['data_name']) + outfile_base = fname[:-4] + "_" + inp.run_name + "_" + inp[i]['data_name'] + type = inp[i]['data_type'] + if type == 'meta': + data = inp[i]['data'] + data_to_write = data.encode('utf-8') + ext = '.txt' + sep = '\t' + with open(outfile_base + ext, 'wb') as fout: + fout.write(data_to_write) + else: + x_dat,y_dat = xy_data(inp[i]['data']) + ext = '.csv' + sep = ',' + with open(outfile_base + ext, 'wb') as fout: + for x,y in zip(x_dat,y_dat): + dp = str(x) + sep + str(y) + str('\r\n') + data_to_write = dp.encode('utf-8') + fout.write(data_to_write) + +def generate_xls(inp, fname): + ''' + Input = pycorn object + output = xlsx file + ''' + xls_filename = fname[:-4] + "_" + inp.run_name + ".xlsx" + workbook = xlsxwriter.Workbook(xls_filename) + worksheet = workbook.add_worksheet() + writable_blocks = [inp.Fractions_id, inp.Fractions_id2, inp.SensData_id, inp.SensData_id2] + d_list = [] + for i in inp.keys(): + if inp[i]['magic_id'] in writable_blocks: + d_list.append(i) + for i in d_list: + dat = inp[i]['data'] + try: + unit = inp[i]['unit'] + except: + KeyError + unit = 'Fraction' + header1 = (inp[i]['data_name'], '') + header2 = ('ml', unit) + dat.insert(0, header1) + dat.insert(1, header2) + row = 0 + col = d_list.index(i) *2 + print("Writing: " + i) + for x_val, y_val in (dat): + worksheet.write(row, col, x_val) + worksheet.write(row, col + 1, y_val) + row += 1 + workbook.close() + print("Data written to: " + xls_filename) + + +styles = {'UV':{'color': '#1919FF', 'lw': 1.6, 'ls': "-", 'alpha':1.0}, +'UV1_':{'color': '#1919FF', 'lw': 1.6, 'ls': "-", 'alpha':1.0}, +'UV2_':{'color': '#e51616', 'lw': 1.4, 'ls': "-", 'alpha':1.0}, +'UV3_':{'color': '#c73de6', 'lw': 1.2, 'ls': "-", 'alpha':1.0}, +'UV 1':{'color': '#1919FF', 'lw': 1.6, 'ls': "-", 'alpha':1.0}, +'UV 2':{'color': '#e51616', 'lw': 1.4, 'ls': "-", 'alpha':1.0}, +'UV 3':{'color': '#c73de6', 'lw': 1.2, 'ls': "-", 'alpha':1.0}, +'Cond':{'color': '#FF7C29', 'lw': 1.4, 'ls': "-", 'alpha':0.75}, +'Conc':{'color': '#0F990F', 'lw': 1.0, 'ls': "-", 'alpha':0.75}, +'Pres':{'color': '#C0CBBA', 'lw': 1.0, 'ls': "-", 'alpha':0.50}, +'Temp':{'color': '#b29375', 'lw': 1.0, 'ls': "-", 'alpha':0.75}, +'Inje':{'color': '#d56d9d', 'lw': 1.0, 'ls': "-", 'alpha':0.75}, +'pH':{'color': '#0C7F7F', 'lw': 1.0, 'ls': "-", 'alpha':0.75},} + + +def main2(): + + # path = os.path.abspath(__file__) + # path, file = os.path.split(path) + + # determine if application is a script file or frozen exe + if getattr(sys, 'frozen', False): + application_path = os.path.dirname(sys.executable) + elif __file__: + application_path = os.path.dirname(__file__) + + for f in os.listdir(application_path): + if f.lower().endswith('.res'): + fname = os.path.join(application_path, f) + # for fname in args.inp_res: + if args.inject == None: + args.inject = -1 + if (fname[-3:]).lower() == "zip": + fdata = pc_uni6(fname) + fdata.load() + fdata.xml_parse() + fdata.clean_up() + if (fname[-3:]).lower() == "res": + fdata = pc_res3(fname, reduce = args.reduce, inj_sel=args.inject) + fdata.load() + if args.extract == 'csv': + data_writer1(fname, fdata) + if args.extract == 'xlsx' and xlsx == True: + generate_xls(fdata, fname) + if args.check: + fdata.input_check(show=True) + if args.info: + fdata.showheader() + if args.points: + fdata.inject_det(show=True) + if args.user: + user = fdata.get_user() + print("User: " + user) + if plotting: + plotterX(fdata, fname) + +main2() diff --git a/examplescripts/pycorn-bin.py b/examplescripts/pycorn-bin.py deleted file mode 100644 index 0b0b56f..0000000 --- a/examplescripts/pycorn-bin.py +++ /dev/null @@ -1,390 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- -''' -PyCORN - script to extract data from .res (results) files generated -by UNICORN Chromatography software supplied with ÄKTA Systems -(c)2014-2016 - Yasar L. Ahmed -v0.18 -''' - -import argparse -from pycorn import pc_res3 -from pycorn import pc_uni6 - -try: - from mpl_toolkits.axes_grid1 import host_subplot - from matplotlib.ticker import AutoMinorLocator - import mpl_toolkits.axisartist as AA - import matplotlib.pyplot as plt - plotting = True -except: - ImportError - print("WARNING: Matplotlib not found - Plotting disabled!") - plotting = False - -try: - import xlsxwriter - xlsx = True -except: - ImportError - print("WARNING: xlsxwriter not found - xlsx-output disabled!") - xlsx = False - -pcscript_version = 0.14 - -parser = argparse.ArgumentParser( - description = "Extract data from UNICORN .res files to .csv/.txt and plot them (matplotlib required)", - epilog = "Make it so!") -parser.add_argument("-c", "--check", - help = "Perform simple check if file is supported", - action = "store_true") -parser.add_argument("-n", "--info", - help = "Display entries in header", - action = "store_true") -parser.add_argument("-i", "--inject", type = int, default = None, - help = "Set injection number # as zero retention, use -t to find injection points", - metavar="#") -parser.add_argument("-r", "--reduce", type = int, default = 1, - help = "Write/Plot only every n sample", - metavar="#") -parser.add_argument("-t", "--points", - help = "Display injection points", - action = "store_true") - -group0 = parser.add_argument_group('Extracting', 'Options for writing csv/txt files') -group0.add_argument("-e", "--extract", type=str, choices=['csv','xlsx'], - help = "Write data to csv or xlsx file for supported data blocks") - -group1 = parser.add_argument_group('Plotting', 'Options for plotting') -group1.add_argument("-p", "--plot", - help = 'Plot curves', - action = "store_true") -group1.add_argument("--no_fractions", - help="Disable plotting of fractions", - action = "store_true") -group1.add_argument("--no_inject", - help="Disable plotting of inject marker(s)", - action = "store_true") -group1.add_argument("--no_legend", - help="Disable legend for plot", - action = "store_true") -group1.add_argument("--no_title", - help="Disable title for plot", - action = "store_true") -group1.add_argument("--xmin", type = float, default=None, - help="Lower bound on the x-axis", - metavar="#") -group1.add_argument("--xmax", type = float, default=None, - help="Upper bound on the x-axis", - metavar="#") -group1.add_argument("--par1", type = str, default='Cond', - help="Data for 2nd y-axis (Default=Cond), to disable 2nd y-axis, use --par1 None") -group1.add_argument("--par2", type = str, default=None, - help="Data for 3rd y-axis (Default=None)") -group1.add_argument('-f', '--format', type = str, - choices=['svg','svgz','tif','tiff','jpg','jpeg', - 'png','ps','eps','raw','rgba','pdf','pgf'], - default = 'pdf', - help = "File format of plot files (default: pdf)") -group1.add_argument('-d', '--dpi', default=300, type=int, - help="DPI (dots per inch) for raster images (png, jpg, etc.). Default is 300.") -parser.add_argument("-u", "--user", - help = "Show stored user name", - action = "store_true") -parser.add_argument('--version', action='version', version=str(pcscript_version)) -parser.add_argument("inp_res", - help="Input .res file(s)", - nargs='+', - metavar=".res") -#args.no_inject -args = parser.parse_args() - -def mapper(min_val, max_val, perc): - ''' - calculate relative position in delta min/max - ''' - x = abs(max_val - min_val) * perc - if min_val < 0: - return (x - abs(min_val)) - else: - return (x + min_val) - - -def expander(min_val, max_val, perc): - ''' - expand -/+ direction of two values by a percentage of their delta - ''' - delta = abs(max_val - min_val) - x = delta * perc - return (min_val - x, max_val + x) - - -def xy_data(inp): - ''' - Takes a data block and returns two lists with x- and y-data - ''' - x_data = [x[0] for x in inp] - y_data = [x[1] for x in inp] - return x_data, y_data - - -def uvdata(inp): - ''' - helps in finding the useful data - ''' - UV_blocks = [i for i in inp if i.startswith('UV') or i.endswith('nm')] - for i in UV_blocks: - if i.endswith("_0nm"): - UV_blocks.remove(i) - - -def smartscale(inp): - ''' - input is the entire fdata block - checks user input/fractions to determine scaling of x/y-axis - returns min/max for x/y - ''' - UV_blocks = [i for i in inp.keys() if i.startswith('UV') and not i.endswith('_0nm')] - uv1_data = inp[UV_blocks[0]]['data'] - uv1_x, uv1_y = xy_data(uv1_data) - try: - uv2_data = inp[UV_blocks[1]]['data'] - uv2_x, uv2_y = xy_data(uv2_data) - uv3_data = inp[UV_blocks[2]]['data'] - uv3_x, uv3_y = xy_data(uv3_data) - except: - KeyError - uv2_data = None - uv3_data = None - try: - frac_data = inp['Fractions']['data'] - frac_x, frac_y = xy_data(frac_data) - frac_delta = [abs(a - b) for a, b in zip(frac_x, frac_x[1:])] - frac_delta.append(frac_delta[-1]) - except: - KeyError - frac_data = None - if args.xmin != None: - plot_x_min = args.xmin - else: - if frac_data: - plot_x_min = frac_data[0][0] - else: - plot_x_min = uv1_x[0] - if args.xmax: - plot_x_max = args.xmax - else: - if frac_data: - plot_x_max = frac_data[-1][0] + frac_delta[-1]*2 # recheck - else: - plot_x_max = uv1_x[-1] - if plot_x_min > plot_x_max: - print("Warning: xmin bigger than xmax - adjusting...") - plot_x_min = uv1_x[0] - if plot_x_max < plot_x_min: - print("Warning: xmax smaller than xmin - adjusting...") - plot_x_max = uv1_x[-1] - # optimize y_scaling - min_y_values = [] - max_y_values = [] - for i in UV_blocks: - tmp_x, tmp_y = xy_data(inp[i]['data']) - range_min_lst = [abs(a - plot_x_min) for a in tmp_x] - range_min_idx = range_min_lst.index(min(range_min_lst)) - range_max_lst = [abs(a - plot_x_max) for a in tmp_x] - range_max_idx = range_max_lst.index(min(range_max_lst)) - values_in_range = tmp_y[range_min_idx:range_max_idx] - min_y_values.append(min(values_in_range)) - max_y_values.append(max(values_in_range)) - plot_y_min_tmp = min(min_y_values) - plot_y_max_tmp = max(max_y_values) - plot_y_min, plot_y_max = expander(plot_y_min_tmp, plot_y_max_tmp, 0.085) - return plot_x_min, plot_x_max, plot_y_min, plot_y_max - -def plotterX(inp,fname): - plot_x_min, plot_x_max, plot_y_min, plot_y_max = smartscale(inp) - host = host_subplot(111, axes_class=AA.Axes) - host.set_xlabel("Elution volume (ml)") - host.set_ylabel("Absorbance (mAu)") - host.set_xlim(plot_x_min, plot_x_max) - host.set_ylim(plot_y_min, plot_y_max) - for i in inp.keys(): - if i.startswith('UV') and not i.endswith('_0nm'): - x_dat, y_dat = xy_data(inp[i]['data']) - print("Plotting: " + inp[i]['data_name']) - stl = styles[i[:4]] - p0, = host.plot(x_dat, y_dat, label=inp[i]['data_name'], color=stl['color'], - ls=stl['ls'], lw=stl['lw'],alpha=stl['alpha']) - if args.par1 == 'None': - args.par1 = None - if args.par1: - try: - par1_inp = args.par1 - par1 = host.twinx() - par1_data = inp[par1_inp] - stl = styles[par1_inp[:4]] - par1.set_ylabel(par1_data['data_name'] + " (" + par1_data['unit'] + ")", color=stl['color']) - x_dat_p1, y_dat_p1 = xy_data(par1_data['data']) - p1_ymin, p1_ymax = expander(min(y_dat_p1), max(y_dat_p1), 0.085) - par1.set_ylim(p1_ymin, p1_ymax) - print("Plotting: " + par1_data['data_name']) - p1, = par1.plot(x_dat_p1, y_dat_p1, label=par1_data['data_name'], - color=stl['color'], ls=stl['ls'], lw=stl['lw'], alpha=stl['alpha']) - except: - KeyError - if par1_inp != None: - print("Warning: Data block chosen for par1 does not exist!") - if args.par2: - try: - par2_inp = args.par2 - par2 = host.twinx() - offset = 60 - new_fixed_axis = par2.get_grid_helper().new_fixed_axis - par2.axis["right"] = new_fixed_axis(loc="right", axes=par2, offset=(offset, 0)) - par2.axis["right"].toggle(all=True) - par2_data = inp[par2_inp] - stl = styles[par2_inp[:4]] - par2.set_ylabel(par2_data['data_name'] + " (" + par2_data['unit'] + ")", color=stl['color']) - x_dat_p2, y_dat_p2 = xy_data(par2_data['data']) - p2_ymin, p2_ymax = expander(min(y_dat_p2), max(y_dat_p2), 0.075) - par2.set_ylim(p2_ymin, p2_ymax) - print("Plotting: " + par2_data['data_name']) - p2, = par2.plot(x_dat_p2, y_dat_p2, label=par2_data['data_name'], - color=stl['color'],ls=stl['ls'], lw=stl['lw'], alpha=stl['alpha']) - except: - KeyError - if par2_inp != None: - print("Warning: Data block chosen for par2 does not exist!") - if not args.no_fractions: - try: - frac_data = inp['Fractions']['data'] - frac_x, frac_y = xy_data(frac_data) - frac_delta = [abs(a - b) for a, b in zip(frac_x, frac_x[1:])] - frac_delta.append(frac_delta[-1]) - frac_y_pos = mapper(host.get_ylim()[0], host.get_ylim()[1], 0.015) - for i in frac_data: - host.axvline(x=i[0], ymin=0.065, ymax=0.0, color='r', linewidth=0.85) - host.annotate(str(i[1]), xy=(i[0] + frac_delta[frac_data.index(i)] * 0.55, frac_y_pos), - horizontalalignment='center', verticalalignment='bottom', size=8, rotation=90) - except: - KeyError - if inp.inject_vol != 0.0: - injections = inp.injection_points - host.axvline(x=0, ymin=0.10, ymax=0.0, color='#FF3292', - ls ='-', marker='v', markevery=2, linewidth=1.5, alpha=0.85, label='Inject') - host.set_xlim(plot_x_min, plot_x_max) - if not args.no_legend: - host.legend(fontsize=8, fancybox=True, labelspacing=0.4, loc='upper right', numpoints=1) - host.xaxis.set_minor_locator(AutoMinorLocator()) - host.yaxis.set_minor_locator(AutoMinorLocator()) - if not args.no_title: - plt.title(fname, loc='left', size=9) - plot_file = fname[:-4] + "_" + inp.run_name + "_plot." + args.format - plt.savefig(plot_file, bbox_inches='tight', dpi=args.dpi) - print("Plot saved to: " + plot_file) - plt.clf() - -def data_writer1(fname, inp): - ''' - writes sensor/run-data to csv-files - ''' - for i in inp.keys(): - print("Writing: " + inp[i]['data_name']) - outfile_base = fname[:-4] + "_" + inp.run_name + "_" + inp[i]['data_name'] - type = inp[i]['data_type'] - if type == 'meta': - data = inp[i]['data'] - data_to_write = data.encode('utf-8') - ext = '.txt' - sep = '\t' - with open(outfile_base + ext, 'wb') as fout: - fout.write(data_to_write) - else: - x_dat,y_dat = xy_data(inp[i]['data']) - ext = '.csv' - sep = ',' - with open(outfile_base + ext, 'wb') as fout: - for x,y in zip(x_dat,y_dat): - dp = str(x) + sep + str(y) + str('\r\n') - data_to_write = dp.encode('utf-8') - fout.write(data_to_write) - -def generate_xls(inp, fname): - ''' - Input = pycorn object - output = xlsx file - ''' - xls_filename = fname[:-4] + "_" + inp.run_name + ".xlsx" - workbook = xlsxwriter.Workbook(xls_filename) - worksheet = workbook.add_worksheet() - writable_blocks = [inp.Fractions_id, inp.Fractions_id2, inp.SensData_id, inp.SensData_id2] - d_list = [] - for i in inp.keys(): - if inp[i]['magic_id'] in writable_blocks: - d_list.append(i) - for i in d_list: - dat = inp[i]['data'] - try: - unit = inp[i]['unit'] - except: - KeyError - unit = 'Fraction' - header1 = (inp[i]['data_name'], '') - header2 = ('ml', unit) - dat.insert(0, header1) - dat.insert(1, header2) - row = 0 - col = d_list.index(i) *2 - print("Writing: " + i) - for x_val, y_val in (dat): - worksheet.write(row, col, x_val) - worksheet.write(row, col + 1, y_val) - row += 1 - workbook.close() - print("Data written to: " + xls_filename) - - -styles = {'UV':{'color': '#1919FF', 'lw': 1.6, 'ls': "-", 'alpha':1.0}, -'UV1_':{'color': '#1919FF', 'lw': 1.6, 'ls': "-", 'alpha':1.0}, -'UV2_':{'color': '#e51616', 'lw': 1.4, 'ls': "-", 'alpha':1.0}, -'UV3_':{'color': '#c73de6', 'lw': 1.2, 'ls': "-", 'alpha':1.0}, -'UV 1':{'color': '#1919FF', 'lw': 1.6, 'ls': "-", 'alpha':1.0}, -'UV 2':{'color': '#e51616', 'lw': 1.4, 'ls': "-", 'alpha':1.0}, -'UV 3':{'color': '#c73de6', 'lw': 1.2, 'ls': "-", 'alpha':1.0}, -'Cond':{'color': '#FF7C29', 'lw': 1.4, 'ls': "-", 'alpha':0.75}, -'Conc':{'color': '#0F990F', 'lw': 1.0, 'ls': "-", 'alpha':0.75}, -'Pres':{'color': '#C0CBBA', 'lw': 1.0, 'ls': "-", 'alpha':0.50}, -'Temp':{'color': '#b29375', 'lw': 1.0, 'ls': "-", 'alpha':0.75}, -'Inje':{'color': '#d56d9d', 'lw': 1.0, 'ls': "-", 'alpha':0.75}, -'pH':{'color': '#0C7F7F', 'lw': 1.0, 'ls': "-", 'alpha':0.75},} - - -def main2(): - for fname in args.inp_res: - if args.inject == None: - args.inject = -1 - if (fname[-3:]).lower() == "zip": - fdata = pc_uni6(fname) - fdata.load() - fdata.xml_parse() - fdata.clean_up() - if (fname[-3:]).lower() == "res": - fdata = pc_res3(fname, reduce = args.reduce, inj_sel=args.inject) - fdata.load() - if args.extract == 'csv': - data_writer1(fname, fdata) - if args.extract == 'xlsx' and xlsx == True: - generate_xls(fdata, fname) - if args.check: - fdata.input_check(show=True) - if args.info: - fdata.showheader() - if args.points: - fdata.inject_det(show=True) - if args.user: - user = fdata.get_user() - print("User: " + user) - if args.plot and plotting: - plotterX(fdata, fname) - -main2() diff --git a/pycorn/__init__.py b/pycorn/__init__.py deleted file mode 100644 index 9a3bcfa..0000000 --- a/pycorn/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from .pycorn import * diff --git a/pycorn/docs/CHANGES.txt b/pycorn/docs/CHANGES.txt deleted file mode 100644 index 13642ce..0000000 --- a/pycorn/docs/CHANGES.txt +++ /dev/null @@ -1,58 +0,0 @@ -v0.18 -====== -- FIXED: xmin being ignored when 0 -- FIXED: Files with capitalised name ending are not loaded - -v0.17 -====== -- Added experimental support for extracting and plotting UNICORN6 zip bundles - -v0.16b -====== -- Fixed line ending on non-Windows setups - -v0.15 -====== -- Added option to disable title for plot -- Added option to disable plotting inject marks -- Added option to disable legend - -v0.14 -====== -- Inject mark is also plotted -- xlsx output added (requires xlsxwriter) -- Fixed par1-error when selecting None -- Fixed par1/2-error when selecting data blocks with longer data name -- Minor changes & fixes -- Included Docs - -v0.13 -====== -- Conversion to of PyCORN to class-structure, allows using PyCORN in other scripts (by Wendell Smith) -- Plots are now UV + user selectable 2nd/3rd data block (2nd y-axis is Conductivity by default) -- Made some changes to adapt for PyPI -- Installation should place pycorn-bin.py in Python/Scripts-folder - -v0.12 -====== -- Logbook is extracted and written to txt-file -- Some parts rewritten -- Fractions are also plotted -- Improved scaling of y-axis (still not perfect) -- Option to set start/end-point for plotting -- Handles files that have been analyzed and re-saved - - - -v0.11 -====== -- changed data structure (now mostly dicts) -- made plotting independent of writing csv/txt files -- all plots contain (if present) fractions -- x-axis scaling is based on first and last fraction -- plots can be saved now in all matplotlib-supported formats (default: pdf) - - -v0.1 -====== -- Initial release diff --git a/pycorn/docs/LICENSE.txt b/pycorn/docs/LICENSE.txt deleted file mode 100644 index d7f1051..0000000 --- a/pycorn/docs/LICENSE.txt +++ /dev/null @@ -1,339 +0,0 @@ -GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - {description} - Copyright (C) {year} {fullname} - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - {signature of Ty Coon}, 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. diff --git a/pycorn/docs/RES_files_layout.txt b/pycorn/docs/RES_files_layout.txt deleted file mode 100644 index 33cdfe5..0000000 --- a/pycorn/docs/RES_files_layout.txt +++ /dev/null @@ -1,132 +0,0 @@ -UNICORN result files -==================== - -UNICORN is a control/evaluation software supplied with ÄKTA chromatography systems from GE Healthcare. Every chromatography run generates a result file (res-file), which is a binary file containing metadata about the run and data retrieved from various sensors in the chromatography system. Common sensors included in most ÄKTA-Systems cover UV-absorption, pH, conductivity, system pressure etc. - -The documentation supplied here is the result of reverse-engineering a limited number of such files obtained from ÄKTA Prime and ÄKTA Purifier systems. Different versions (especially newer ones) of UNICORN may generate files with different layout/encoding. - -General layout (s. samples/sample1.res) --------------------- -START --> HEADER --> DATA_BLOCKS -To follow along - open sample1.res (under samples/) in a hex-viewer/editor. Hex numbers given in parenthesis are from the sample1.res. Padding bytes may not be explicitly described throughout this document. - ----START--- -Res-files start with a few check/info bytes: -- first 16 bytes are "11 47 11 47 18 00 00 00 B0 02 00 00 20 6C 03 00" - most likely magic number to positively identify a res file -- next 4 bytes give EOF/file size (20 EA 0D 00) - probably allow a check if recorded file size matches actual file -- next 4 bytes are empty -- next 12 bytes contain string "UNICORN 3.10" (55 4E 49 43 4F 52 4E 20 33 2E 31 30) - file format version(?) -- at position 118 is the user name as used in Purifier systems or "prime" if the file originates from an ÄKTA Prime system. Length up to 40 characters. (70 72 69 6D 65) - ----HEADER--- -The header contains entries of the recorded data. Entries are made up of the original file name = run name ("Manual Run 3" for ex.) and name of data series (1_UV for ex.). Additionally their position in the file and several offsets are recorded. The header ends with the last entry called "LogBook" (notice capital "B"). -- Entries start at position 686, first entry is either CONFIG or Methods -- Entries are 344 bytes - FORMAT of entries - - 8 bytes magic-id defining type of data (meta/sensor/aux etc). WARNING: If a file has been opened and resaved the 2nd last byte is incremented by one (see table at the end, ... 01 14 --> 02 14) - - 296 bytes (incl. padding) Name of data entry (CONFIG, METHOD, Logbook, 1_UV, UV1_280nm etc.) - - 4 bytes int, size of the data block - - 4 bytes int, offset to next data block (from meta to meta) - - 4 bytes int, adresse of the data block (including some metadata) - - 4 bytes int, offset from metadata to actual data - -> S. example below - - entries that deal with data generated by the machine during the run (UV, pressure etc.) are preceeded by hex "00 00 01 00 04 00 01 14" - - Last entry is called "LogBook" (notice capital B! LogBook only occurs once per file) preceeded by hex value "00 00 00 01 00 02 00 01 13" -The entries are followed by lots of padding and eventually the data blocks which hold the data. - -Example values: -sample1.res UV-entry (at 2366) -C8 A0 01 00 00 A2 01 00 20 92 03 00 F0 00 00 00 -----V1----- ----V2----- ----V3----- ----V4----- -V1 (C8 A0 01 00) signed int, 106696 is the size of the data block including metadata -V2 (00 A2 01 00) signed int, 107008 is the offset to next data block (from meta to meta) -V3 (20 92 03 00) signed int, 234016 is the begin of the data block including metadata -V4 (F0 00 00 00) signed int, 240 is the offset from V2 to actual begin of data - ----DATA_BLOCKS--- -There are different types of data blocks: -- Sensor data, marked with "06 00 02 00 01 00 4E 00" (adresse specified in header) -- Metadata (type1, generated during the run), marked with "06 00 06 00 01 00 4E 00" (adresse specified in header) -- Metadata (type2, generated before run), no offset, pure string data, no special marker - -Structure of sensor data -8 bytes per pair -4 bytes sig/int Accumulated volume, divide by 100 to obtain value in ml -4 bytes sig/int Sensor value, divide by 1000/100/10 depending on sensor type - -Structure of meta-data/type1 (Logbook, Fractions etc.) -180 bytes per pair/trio -8 bytes double float accumulated time (in minutes?) -8 bytes double float accumulated volume (in ml) -164 bytes string Logbook-event, Fraction number or "Waste" - -Structure of meta-data/type2 (pure meta-data like method used during run) -- size defined in header (but maybe off by 1 or two bytes!) -- pure string -- string encoding is windows cp1250 / variants of it, depending on installed system - -There are two logbooks per file. Logbook and LogBook (notice capital B in 2nd one). They contain similar but not exactly the same information. LogBook is always the last entry in a res-file. LogBook contains entries acc. to system time -- strings in format like this "Concentration 0 %B.09, 21:51:45, Method : , Result : C:\...\prime\2009Jun16no001.RES" -- entries are separated by 202 bytes from begin to begin - ----- -Magic bytes preceeding header entries: -- System data shares same id -- Fractions and LogBook/Logbook have the same/similar format but have different id -- Ids are consistent across (at least two) different systems (Prime/Purifier) -- Ids for Logbook, sensor data (UV/cond/conc/...), Injection marks and fractions are changed if a file is opened and resaved (2nd last byte is incremented by one: - Logbook ... 48 04 --> ... 49 04 - Sens. data ... 01 14 --> ... 02 14 - Inj. mark ... 46 04 --> ... 47 04 - Fractions ... 44 04 --> ... 45 04 - ----Magic-ids--- -The following magic_ids have been found and assigned so far: -AKTA PRIME -HEX VALUE String -00 00 01 00 02 00 01 00 CONFIG -00 00 01 00 02 00 04 02 METHODINFO -00 00 01 00 02 00 03 22 CreationNotes = Program / plain text -00 00 01 00 04 00 48 04 Logbook -00 00 01 00 04 00 01 14 UV -00 00 01 00 04 00 01 14 Cond -00 00 01 00 04 00 01 14 pH -00 00 01 00 04 00 01 14 Pressure -00 00 01 00 04 00 01 14 Temp -00 00 01 00 04 00 01 14 Conc -00 00 01 00 04 00 44 04 Fractions -00 00 01 00 02 00 50 03 1 -00 00 01 00 02 00 01 13 LogBook - -AKTA PURIFIER -HEX VALUE String -00 00 01 00 02 00 01 02 Methods -00 00 01 00 02 00 07 22 MethodHistory -00 00 01 00 02 00 02 12 DOCUMENT -00 00 01 00 02 00 03 22 CreationNotes -00 00 01 00 02 00 55 22 StrategyInformation -00 00 01 00 02 00 10 22 MethodStrategyNotes -00 00 01 00 02 00 01 00 Methods Signatures -00 00 01 00 02 00 01 00 CONFIG -00 00 01 00 02 00 01 00 CALIB -00 00 01 00 02 00 04 02 METHODINFO -00 00 01 00 02 00 10 22 ResultStrategyNotes -00 00 01 00 04 00 48 04 Logbook -00 00 01 00 04 00 01 14 UV1_280nm -00 00 01 00 04 00 01 14 UV2_254nm -00 00 01 00 04 00 01 14 UV3_0nm -00 00 01 00 04 00 01 14 Cond -00 00 01 00 04 00 01 14 Cond% -00 00 01 00 04 00 01 14 Conc -00 00 01 00 04 00 01 14 Pressure -00 00 01 00 04 00 01 14 Flow -00 00 01 00 04 00 01 14 Temp -00 00 01 00 04 00 01 14 AuxIn1 -00 00 01 00 04 00 01 14 AuxOut1 -00 00 01 00 04 00 01 14 P960_Press -00 00 01 00 04 00 01 14 P960_Flow -00 00 01 00 04 00 46 04 Inject -00 00 01 00 02 00 01 13 LogBook diff --git a/pycorn/docs/USAGE_pycorn-bin.txt b/pycorn/docs/USAGE_pycorn-bin.txt deleted file mode 100644 index c3fad57..0000000 --- a/pycorn/docs/USAGE_pycorn-bin.txt +++ /dev/null @@ -1,84 +0,0 @@ -How to use PyCORN - -PyCORN may be used either via the pycorn-bin.py-script or imported as a module in your scripts (see USAGE_pycorn_module.txt). - -pycorn-bin.py: --------------- -The default installation places pycorn-bin.py in the python/scripts-folder and therefor ready-to-use on most platforms. This script re-implements most of the features of the original pycorn.py-script. Usage is very similar, as only a few paramters have changed. Data from UNICORN6 zip-bundles may also be plotted or extracted (experimental). - - -usage: pycorn-bin.py [-h] [-c] [-n] [-i #] [-r #] [-t] [-e] [-p] - [--no_fractions] [--xmin #] [--xmax #] [--par1 PAR1] - [--par2 PAR2] - [-f {svg,svgz,tif,tiff,jpg,jpeg,png,ps,eps,raw,rgba,pdf,pgf -}] - [-d DPI] [-u] [--version] - .res [.res ...] - -Extract data from UNICORN .res files to .csv/.txt and plot them (matplotlib -required) - -positional arguments: - .res Input .res file(s) - -optional arguments: - -h, --help show this help message and exit - -c, --check Perform simple check if file is supported - -n, --info Display entries in header - -i #, --inject # Set injection number # as zero retention, use -t to - find injection points - -r #, --reduce # Write/Plot only every n sample - -t, --points Display injection points - -u, --user Show stored user name - --version show program's version number and exit - -Extracting: - Options for writing csv/txt files - - -e {csv,xlsx}, --extract {csv,xlsx} - Write data to csv or xlsx file for supported data - blocks - -Plotting: - Options for plotting - - -p, --plot Plot curves - --no_fractions Disable plotting of fractions - --xmin # Lower bound on the x-axis - --xmax # Upper bound on the x-axis - --par1 PAR1 Data for 2nd y-axis (Default=Cond) - --par2 PAR2 Data for 3rd y-axis (Default=None) - -f {svg,svgz,tif,tiff,jpg,jpeg,png,ps,eps,raw,rgba,pdf,pgf}, --format {svg,svg -z,tif,tiff,jpg,jpeg,png,ps,eps,raw,rgba,pdf,pgf} - File format of plot files (default: pdf) - -d DPI, --dpi DPI DPI (dots per inch) for raster images (png, jpg, - etc.). Default is 300. - -Notes: -By default pycorn-bin.py will plot from first to last fraction, as that is usually the interesting part. If no fractions are present in the run then from beginning to end. To override this behaviour you can use the (both) optional --xmin/--xmax switches to specify beginning and end of the plot. - -Examples: -Show user who ran method: -pycorn-bin.py -u input.res - -Show injection points: -pycorn-bin.py -t input.res - -Extract data to csv files: -pycorn-bin.py -e csv input.res - - -Extract data to xlsx-file: -pycorn-bin.py -e xlsx input.res - -Plot all data: -pycorn-bin.py -p input.res - -Extract/plot data and adjust retention volume to injection point 1 (counting starts at 0!): -pycorn-bin.py -p -e -i 1 input.res - -Plot every third value: -pycorn-bin.py -p -r 3 input.res - -Plot from 100 to 200ml: -pycorn-bin.py -p --xmin 100 --xmax 200 input.res \ No newline at end of file diff --git a/pycorn/docs/USAGE_pycorn_module.txt b/pycorn/docs/USAGE_pycorn_module.txt deleted file mode 100644 index 46a0d0d..0000000 --- a/pycorn/docs/USAGE_pycorn_module.txt +++ /dev/null @@ -1,34 +0,0 @@ -Using the pycorn module: - -# Importing the module -from pycorn import pc_res3 - -# Create an instance of the pycorn object, there are a couple of options that can be specified: -# file_name = file name of the res-file that you want to load -# reduce = integer to only read every n sample (similar to the option found in UNICORN during export to asc) -# inj_sel = which injection point to use as zero-rentention. By default the last injection point is used (same as in UNICORN) - -# Create the instance using default options -my_res_file = pc_res3("sample1.res") - -# Parse the file -my_res_file.load() - -# Show available data -print(list(my_res_file.keys())) - ->>>[u'CreationNotes', u'Logbook', u'UV', u'Cond', u'pH', u'Pressure', u'Temp', u'Conc', u'Fractions'] - -# The above list is your key to access the data inside the file -# my_res_file[key][value] value can be: -# data: contains the actual data, either pure text or a list with x/y-pairs as tuples -# unit: the unit for this data block (mAu, ms/cm etc.) -# run_name: an internal name (like "Manual Run 8") - -# For example to read-out the the unit for the UV-block: -my_res_file['UV']['unit'] - -# To read the actual UV-data: -x = my_res_file['UV']['data'] -print(x[0:3]) ->>>[(0.0, -9.22), (0.06, -0.007), (0.13, -0.004)] diff --git a/setup.py b/setup.py deleted file mode 100644 index 616f3d0..0000000 --- a/setup.py +++ /dev/null @@ -1,28 +0,0 @@ -#!/usr/bin/env python -try: - from setuptools import setup -except ImportError: - print("setuptools not found, falling back to distutils") - from distutils.core import setup - -setup( - name='pycorn', - version='0.18', - author='Yasar L. Ahmed', - packages=['pycorn'], - extras_require = {'plotting': ["matplotlib"], 'xlsx-output': ['xlsxwriter']}, - scripts=['examplescripts/pycorn-bin.py'], - platforms=['Linux', 'Windows', 'MacOSX'], - zip_safe=False, - classifiers=["License :: OSI Approved :: GNU General Public License v2 (GPLv2)", - "Environment :: Console", - "Intended Audience :: Science/Research", - "Programming Language :: Python", - "Programming Language :: Python :: 2.7", - "Programming Language :: Python :: 3.4",], - package_data={'pycorn': ['docs/*.*']}, - license='GNU General Public License v2 (GPLv2)', - description='A script to extract data from UNICORN result (res) files', - long_description=open('README.rst').read(), - url='https://github.com/pyahmed/PyCORN', -) From 4cf693fd5e3471e9ccfe0e8e33d44bf65baa82e2 Mon Sep 17 00:00:00 2001 From: aretasg Date: Sat, 23 Feb 2019 14:23:55 +0000 Subject: [PATCH 2/4] modified original repo to include the script in examplescripts --- README.md | 22 - README.rst | 52 ++ examplescripts/pycorn-bin.py | 390 +++++++++++++++ .../res_to_png.py | 3 - pycorn/__init__.py | 1 + pycorn/docs/CHANGES.txt | 58 +++ pycorn/docs/LICENSE.txt | 339 +++++++++++++ pycorn/docs/RES_files_layout.txt | 132 +++++ pycorn/docs/USAGE_pycorn-bin.txt | 84 ++++ pycorn/docs/USAGE_pycorn_module.txt | 34 ++ pycorn/docs/USAGE_res_to_png.txt | 22 + pycorn/pycorn.py | 453 ++++++++++++++++++ setup.py | 28 ++ 13 files changed, 1593 insertions(+), 25 deletions(-) delete mode 100644 README.md create mode 100644 README.rst create mode 100644 examplescripts/pycorn-bin.py rename convert_res.py => examplescripts/res_to_png.py (99%) create mode 100644 pycorn/__init__.py create mode 100644 pycorn/docs/CHANGES.txt create mode 100644 pycorn/docs/LICENSE.txt create mode 100644 pycorn/docs/RES_files_layout.txt create mode 100644 pycorn/docs/USAGE_pycorn-bin.txt create mode 100644 pycorn/docs/USAGE_pycorn_module.txt create mode 100644 pycorn/docs/USAGE_res_to_png.txt create mode 100644 pycorn/pycorn.py create mode 100644 setup.py diff --git a/README.md b/README.md deleted file mode 100644 index 6d0be27..0000000 --- a/README.md +++ /dev/null @@ -1,22 +0,0 @@ -# Convert .res files using PyCORN (adapted to work with pyinstaller) - -## Requirments - -* matplotlib - -## Features - -* convert_res.py is a modified PyCORN utility to generate .png plots from .res files -* It does not accept any arguments; -* When run converts every .res file in the same directory as the convert_res.py script. -* Works with PyInstaller allowing convert_res.py to be bundled and easily distrubuted to people not familiar with terminal/console. - -## Example usage - -``` -python convert_res.py -``` - -## Known issues - -On macOS when creating an executable using PyInstaller an error related to tkinter may be issued. Please refer to this [link](https://github.com/pyinstaller/pyinstaller/issues/3753) for a solution. diff --git a/README.rst b/README.rst new file mode 100644 index 0000000..d0c90eb --- /dev/null +++ b/README.rst @@ -0,0 +1,52 @@ +====== +PyCORN +====== + +A script to extract data from UNICORN result (.res) files and plot them. + +.. image:: https://raw.githubusercontent.com/pyahmed/PyCORN/master/samples/sample1_2009Jun16no001_plot.jpg + +A script extract data from .res (results) files generated by UNICORN Chromatography software supplied with AKTA Systems. This script will find all data blocks, extract the data and write out csv-files. If you have matplotlib installed it will also plot all the curves including fractions if present. Plots can be saved in any format supported by matplotlib (default is pdf). Alternatively you may import pycorn into your script and access the data inside res-files. + +---- + +News +---- +PyCORN-WEB launched: +PyCORN is now available as a web-service. Just drop your res/zip file, get a preview of the plot (generated with plotly) - adjust as needed and download a high-quality PNG file. No need to open a terminal, no Python installation etc required :-) + +visit: http://pycornweb.appspot.com + +======= + +v0.19 released: + +- FIXED: Injection points not recognized properly (see https://github.com/pyahmed/PyCORN/issues/12) + + +Installation +------------ +- pip install pycorn + + +Known issues +------------ +- See https://github.com/pyahmed/PyCORN/issues + + +Requirements +------------ +- Python 2.7 or 3.x (Tested on Linux / Windows 7 / Mac OSX) +- optional: matplotlib (for plotting) +- optional: xlsxwriter (for xlsx-output) + +Usage +----- +- See pycorn/docs/USAGE_pycorn-bin.txt if you want to extract/plot data directly +- See pycorn/docs/USAGE_pycorn_module.txt if you want to import it into your script +- See pycorn/docs/USAGE_res_to_png.txt if you want to create a single executable using PyInstaller for generation of .png plots from .res files + + +License +------- +- GPLv2 see docs/LICENSE.txt diff --git a/examplescripts/pycorn-bin.py b/examplescripts/pycorn-bin.py new file mode 100644 index 0000000..0b0b56f --- /dev/null +++ b/examplescripts/pycorn-bin.py @@ -0,0 +1,390 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +''' +PyCORN - script to extract data from .res (results) files generated +by UNICORN Chromatography software supplied with ÄKTA Systems +(c)2014-2016 - Yasar L. Ahmed +v0.18 +''' + +import argparse +from pycorn import pc_res3 +from pycorn import pc_uni6 + +try: + from mpl_toolkits.axes_grid1 import host_subplot + from matplotlib.ticker import AutoMinorLocator + import mpl_toolkits.axisartist as AA + import matplotlib.pyplot as plt + plotting = True +except: + ImportError + print("WARNING: Matplotlib not found - Plotting disabled!") + plotting = False + +try: + import xlsxwriter + xlsx = True +except: + ImportError + print("WARNING: xlsxwriter not found - xlsx-output disabled!") + xlsx = False + +pcscript_version = 0.14 + +parser = argparse.ArgumentParser( + description = "Extract data from UNICORN .res files to .csv/.txt and plot them (matplotlib required)", + epilog = "Make it so!") +parser.add_argument("-c", "--check", + help = "Perform simple check if file is supported", + action = "store_true") +parser.add_argument("-n", "--info", + help = "Display entries in header", + action = "store_true") +parser.add_argument("-i", "--inject", type = int, default = None, + help = "Set injection number # as zero retention, use -t to find injection points", + metavar="#") +parser.add_argument("-r", "--reduce", type = int, default = 1, + help = "Write/Plot only every n sample", + metavar="#") +parser.add_argument("-t", "--points", + help = "Display injection points", + action = "store_true") + +group0 = parser.add_argument_group('Extracting', 'Options for writing csv/txt files') +group0.add_argument("-e", "--extract", type=str, choices=['csv','xlsx'], + help = "Write data to csv or xlsx file for supported data blocks") + +group1 = parser.add_argument_group('Plotting', 'Options for plotting') +group1.add_argument("-p", "--plot", + help = 'Plot curves', + action = "store_true") +group1.add_argument("--no_fractions", + help="Disable plotting of fractions", + action = "store_true") +group1.add_argument("--no_inject", + help="Disable plotting of inject marker(s)", + action = "store_true") +group1.add_argument("--no_legend", + help="Disable legend for plot", + action = "store_true") +group1.add_argument("--no_title", + help="Disable title for plot", + action = "store_true") +group1.add_argument("--xmin", type = float, default=None, + help="Lower bound on the x-axis", + metavar="#") +group1.add_argument("--xmax", type = float, default=None, + help="Upper bound on the x-axis", + metavar="#") +group1.add_argument("--par1", type = str, default='Cond', + help="Data for 2nd y-axis (Default=Cond), to disable 2nd y-axis, use --par1 None") +group1.add_argument("--par2", type = str, default=None, + help="Data for 3rd y-axis (Default=None)") +group1.add_argument('-f', '--format', type = str, + choices=['svg','svgz','tif','tiff','jpg','jpeg', + 'png','ps','eps','raw','rgba','pdf','pgf'], + default = 'pdf', + help = "File format of plot files (default: pdf)") +group1.add_argument('-d', '--dpi', default=300, type=int, + help="DPI (dots per inch) for raster images (png, jpg, etc.). Default is 300.") +parser.add_argument("-u", "--user", + help = "Show stored user name", + action = "store_true") +parser.add_argument('--version', action='version', version=str(pcscript_version)) +parser.add_argument("inp_res", + help="Input .res file(s)", + nargs='+', + metavar=".res") +#args.no_inject +args = parser.parse_args() + +def mapper(min_val, max_val, perc): + ''' + calculate relative position in delta min/max + ''' + x = abs(max_val - min_val) * perc + if min_val < 0: + return (x - abs(min_val)) + else: + return (x + min_val) + + +def expander(min_val, max_val, perc): + ''' + expand -/+ direction of two values by a percentage of their delta + ''' + delta = abs(max_val - min_val) + x = delta * perc + return (min_val - x, max_val + x) + + +def xy_data(inp): + ''' + Takes a data block and returns two lists with x- and y-data + ''' + x_data = [x[0] for x in inp] + y_data = [x[1] for x in inp] + return x_data, y_data + + +def uvdata(inp): + ''' + helps in finding the useful data + ''' + UV_blocks = [i for i in inp if i.startswith('UV') or i.endswith('nm')] + for i in UV_blocks: + if i.endswith("_0nm"): + UV_blocks.remove(i) + + +def smartscale(inp): + ''' + input is the entire fdata block + checks user input/fractions to determine scaling of x/y-axis + returns min/max for x/y + ''' + UV_blocks = [i for i in inp.keys() if i.startswith('UV') and not i.endswith('_0nm')] + uv1_data = inp[UV_blocks[0]]['data'] + uv1_x, uv1_y = xy_data(uv1_data) + try: + uv2_data = inp[UV_blocks[1]]['data'] + uv2_x, uv2_y = xy_data(uv2_data) + uv3_data = inp[UV_blocks[2]]['data'] + uv3_x, uv3_y = xy_data(uv3_data) + except: + KeyError + uv2_data = None + uv3_data = None + try: + frac_data = inp['Fractions']['data'] + frac_x, frac_y = xy_data(frac_data) + frac_delta = [abs(a - b) for a, b in zip(frac_x, frac_x[1:])] + frac_delta.append(frac_delta[-1]) + except: + KeyError + frac_data = None + if args.xmin != None: + plot_x_min = args.xmin + else: + if frac_data: + plot_x_min = frac_data[0][0] + else: + plot_x_min = uv1_x[0] + if args.xmax: + plot_x_max = args.xmax + else: + if frac_data: + plot_x_max = frac_data[-1][0] + frac_delta[-1]*2 # recheck + else: + plot_x_max = uv1_x[-1] + if plot_x_min > plot_x_max: + print("Warning: xmin bigger than xmax - adjusting...") + plot_x_min = uv1_x[0] + if plot_x_max < plot_x_min: + print("Warning: xmax smaller than xmin - adjusting...") + plot_x_max = uv1_x[-1] + # optimize y_scaling + min_y_values = [] + max_y_values = [] + for i in UV_blocks: + tmp_x, tmp_y = xy_data(inp[i]['data']) + range_min_lst = [abs(a - plot_x_min) for a in tmp_x] + range_min_idx = range_min_lst.index(min(range_min_lst)) + range_max_lst = [abs(a - plot_x_max) for a in tmp_x] + range_max_idx = range_max_lst.index(min(range_max_lst)) + values_in_range = tmp_y[range_min_idx:range_max_idx] + min_y_values.append(min(values_in_range)) + max_y_values.append(max(values_in_range)) + plot_y_min_tmp = min(min_y_values) + plot_y_max_tmp = max(max_y_values) + plot_y_min, plot_y_max = expander(plot_y_min_tmp, plot_y_max_tmp, 0.085) + return plot_x_min, plot_x_max, plot_y_min, plot_y_max + +def plotterX(inp,fname): + plot_x_min, plot_x_max, plot_y_min, plot_y_max = smartscale(inp) + host = host_subplot(111, axes_class=AA.Axes) + host.set_xlabel("Elution volume (ml)") + host.set_ylabel("Absorbance (mAu)") + host.set_xlim(plot_x_min, plot_x_max) + host.set_ylim(plot_y_min, plot_y_max) + for i in inp.keys(): + if i.startswith('UV') and not i.endswith('_0nm'): + x_dat, y_dat = xy_data(inp[i]['data']) + print("Plotting: " + inp[i]['data_name']) + stl = styles[i[:4]] + p0, = host.plot(x_dat, y_dat, label=inp[i]['data_name'], color=stl['color'], + ls=stl['ls'], lw=stl['lw'],alpha=stl['alpha']) + if args.par1 == 'None': + args.par1 = None + if args.par1: + try: + par1_inp = args.par1 + par1 = host.twinx() + par1_data = inp[par1_inp] + stl = styles[par1_inp[:4]] + par1.set_ylabel(par1_data['data_name'] + " (" + par1_data['unit'] + ")", color=stl['color']) + x_dat_p1, y_dat_p1 = xy_data(par1_data['data']) + p1_ymin, p1_ymax = expander(min(y_dat_p1), max(y_dat_p1), 0.085) + par1.set_ylim(p1_ymin, p1_ymax) + print("Plotting: " + par1_data['data_name']) + p1, = par1.plot(x_dat_p1, y_dat_p1, label=par1_data['data_name'], + color=stl['color'], ls=stl['ls'], lw=stl['lw'], alpha=stl['alpha']) + except: + KeyError + if par1_inp != None: + print("Warning: Data block chosen for par1 does not exist!") + if args.par2: + try: + par2_inp = args.par2 + par2 = host.twinx() + offset = 60 + new_fixed_axis = par2.get_grid_helper().new_fixed_axis + par2.axis["right"] = new_fixed_axis(loc="right", axes=par2, offset=(offset, 0)) + par2.axis["right"].toggle(all=True) + par2_data = inp[par2_inp] + stl = styles[par2_inp[:4]] + par2.set_ylabel(par2_data['data_name'] + " (" + par2_data['unit'] + ")", color=stl['color']) + x_dat_p2, y_dat_p2 = xy_data(par2_data['data']) + p2_ymin, p2_ymax = expander(min(y_dat_p2), max(y_dat_p2), 0.075) + par2.set_ylim(p2_ymin, p2_ymax) + print("Plotting: " + par2_data['data_name']) + p2, = par2.plot(x_dat_p2, y_dat_p2, label=par2_data['data_name'], + color=stl['color'],ls=stl['ls'], lw=stl['lw'], alpha=stl['alpha']) + except: + KeyError + if par2_inp != None: + print("Warning: Data block chosen for par2 does not exist!") + if not args.no_fractions: + try: + frac_data = inp['Fractions']['data'] + frac_x, frac_y = xy_data(frac_data) + frac_delta = [abs(a - b) for a, b in zip(frac_x, frac_x[1:])] + frac_delta.append(frac_delta[-1]) + frac_y_pos = mapper(host.get_ylim()[0], host.get_ylim()[1], 0.015) + for i in frac_data: + host.axvline(x=i[0], ymin=0.065, ymax=0.0, color='r', linewidth=0.85) + host.annotate(str(i[1]), xy=(i[0] + frac_delta[frac_data.index(i)] * 0.55, frac_y_pos), + horizontalalignment='center', verticalalignment='bottom', size=8, rotation=90) + except: + KeyError + if inp.inject_vol != 0.0: + injections = inp.injection_points + host.axvline(x=0, ymin=0.10, ymax=0.0, color='#FF3292', + ls ='-', marker='v', markevery=2, linewidth=1.5, alpha=0.85, label='Inject') + host.set_xlim(plot_x_min, plot_x_max) + if not args.no_legend: + host.legend(fontsize=8, fancybox=True, labelspacing=0.4, loc='upper right', numpoints=1) + host.xaxis.set_minor_locator(AutoMinorLocator()) + host.yaxis.set_minor_locator(AutoMinorLocator()) + if not args.no_title: + plt.title(fname, loc='left', size=9) + plot_file = fname[:-4] + "_" + inp.run_name + "_plot." + args.format + plt.savefig(plot_file, bbox_inches='tight', dpi=args.dpi) + print("Plot saved to: " + plot_file) + plt.clf() + +def data_writer1(fname, inp): + ''' + writes sensor/run-data to csv-files + ''' + for i in inp.keys(): + print("Writing: " + inp[i]['data_name']) + outfile_base = fname[:-4] + "_" + inp.run_name + "_" + inp[i]['data_name'] + type = inp[i]['data_type'] + if type == 'meta': + data = inp[i]['data'] + data_to_write = data.encode('utf-8') + ext = '.txt' + sep = '\t' + with open(outfile_base + ext, 'wb') as fout: + fout.write(data_to_write) + else: + x_dat,y_dat = xy_data(inp[i]['data']) + ext = '.csv' + sep = ',' + with open(outfile_base + ext, 'wb') as fout: + for x,y in zip(x_dat,y_dat): + dp = str(x) + sep + str(y) + str('\r\n') + data_to_write = dp.encode('utf-8') + fout.write(data_to_write) + +def generate_xls(inp, fname): + ''' + Input = pycorn object + output = xlsx file + ''' + xls_filename = fname[:-4] + "_" + inp.run_name + ".xlsx" + workbook = xlsxwriter.Workbook(xls_filename) + worksheet = workbook.add_worksheet() + writable_blocks = [inp.Fractions_id, inp.Fractions_id2, inp.SensData_id, inp.SensData_id2] + d_list = [] + for i in inp.keys(): + if inp[i]['magic_id'] in writable_blocks: + d_list.append(i) + for i in d_list: + dat = inp[i]['data'] + try: + unit = inp[i]['unit'] + except: + KeyError + unit = 'Fraction' + header1 = (inp[i]['data_name'], '') + header2 = ('ml', unit) + dat.insert(0, header1) + dat.insert(1, header2) + row = 0 + col = d_list.index(i) *2 + print("Writing: " + i) + for x_val, y_val in (dat): + worksheet.write(row, col, x_val) + worksheet.write(row, col + 1, y_val) + row += 1 + workbook.close() + print("Data written to: " + xls_filename) + + +styles = {'UV':{'color': '#1919FF', 'lw': 1.6, 'ls': "-", 'alpha':1.0}, +'UV1_':{'color': '#1919FF', 'lw': 1.6, 'ls': "-", 'alpha':1.0}, +'UV2_':{'color': '#e51616', 'lw': 1.4, 'ls': "-", 'alpha':1.0}, +'UV3_':{'color': '#c73de6', 'lw': 1.2, 'ls': "-", 'alpha':1.0}, +'UV 1':{'color': '#1919FF', 'lw': 1.6, 'ls': "-", 'alpha':1.0}, +'UV 2':{'color': '#e51616', 'lw': 1.4, 'ls': "-", 'alpha':1.0}, +'UV 3':{'color': '#c73de6', 'lw': 1.2, 'ls': "-", 'alpha':1.0}, +'Cond':{'color': '#FF7C29', 'lw': 1.4, 'ls': "-", 'alpha':0.75}, +'Conc':{'color': '#0F990F', 'lw': 1.0, 'ls': "-", 'alpha':0.75}, +'Pres':{'color': '#C0CBBA', 'lw': 1.0, 'ls': "-", 'alpha':0.50}, +'Temp':{'color': '#b29375', 'lw': 1.0, 'ls': "-", 'alpha':0.75}, +'Inje':{'color': '#d56d9d', 'lw': 1.0, 'ls': "-", 'alpha':0.75}, +'pH':{'color': '#0C7F7F', 'lw': 1.0, 'ls': "-", 'alpha':0.75},} + + +def main2(): + for fname in args.inp_res: + if args.inject == None: + args.inject = -1 + if (fname[-3:]).lower() == "zip": + fdata = pc_uni6(fname) + fdata.load() + fdata.xml_parse() + fdata.clean_up() + if (fname[-3:]).lower() == "res": + fdata = pc_res3(fname, reduce = args.reduce, inj_sel=args.inject) + fdata.load() + if args.extract == 'csv': + data_writer1(fname, fdata) + if args.extract == 'xlsx' and xlsx == True: + generate_xls(fdata, fname) + if args.check: + fdata.input_check(show=True) + if args.info: + fdata.showheader() + if args.points: + fdata.inject_det(show=True) + if args.user: + user = fdata.get_user() + print("User: " + user) + if args.plot and plotting: + plotterX(fdata, fname) + +main2() diff --git a/convert_res.py b/examplescripts/res_to_png.py similarity index 99% rename from convert_res.py rename to examplescripts/res_to_png.py index 7e6eb2f..7ea53d9 100644 --- a/convert_res.py +++ b/examplescripts/res_to_png.py @@ -811,9 +811,6 @@ def generate_xls(inp, fname): def main2(): - # path = os.path.abspath(__file__) - # path, file = os.path.split(path) - # determine if application is a script file or frozen exe if getattr(sys, 'frozen', False): application_path = os.path.dirname(sys.executable) diff --git a/pycorn/__init__.py b/pycorn/__init__.py new file mode 100644 index 0000000..9a3bcfa --- /dev/null +++ b/pycorn/__init__.py @@ -0,0 +1 @@ +from .pycorn import * diff --git a/pycorn/docs/CHANGES.txt b/pycorn/docs/CHANGES.txt new file mode 100644 index 0000000..13642ce --- /dev/null +++ b/pycorn/docs/CHANGES.txt @@ -0,0 +1,58 @@ +v0.18 +====== +- FIXED: xmin being ignored when 0 +- FIXED: Files with capitalised name ending are not loaded + +v0.17 +====== +- Added experimental support for extracting and plotting UNICORN6 zip bundles + +v0.16b +====== +- Fixed line ending on non-Windows setups + +v0.15 +====== +- Added option to disable title for plot +- Added option to disable plotting inject marks +- Added option to disable legend + +v0.14 +====== +- Inject mark is also plotted +- xlsx output added (requires xlsxwriter) +- Fixed par1-error when selecting None +- Fixed par1/2-error when selecting data blocks with longer data name +- Minor changes & fixes +- Included Docs + +v0.13 +====== +- Conversion to of PyCORN to class-structure, allows using PyCORN in other scripts (by Wendell Smith) +- Plots are now UV + user selectable 2nd/3rd data block (2nd y-axis is Conductivity by default) +- Made some changes to adapt for PyPI +- Installation should place pycorn-bin.py in Python/Scripts-folder + +v0.12 +====== +- Logbook is extracted and written to txt-file +- Some parts rewritten +- Fractions are also plotted +- Improved scaling of y-axis (still not perfect) +- Option to set start/end-point for plotting +- Handles files that have been analyzed and re-saved + + + +v0.11 +====== +- changed data structure (now mostly dicts) +- made plotting independent of writing csv/txt files +- all plots contain (if present) fractions +- x-axis scaling is based on first and last fraction +- plots can be saved now in all matplotlib-supported formats (default: pdf) + + +v0.1 +====== +- Initial release diff --git a/pycorn/docs/LICENSE.txt b/pycorn/docs/LICENSE.txt new file mode 100644 index 0000000..d7f1051 --- /dev/null +++ b/pycorn/docs/LICENSE.txt @@ -0,0 +1,339 @@ +GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + {description} + Copyright (C) {year} {fullname} + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + {signature of Ty Coon}, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/pycorn/docs/RES_files_layout.txt b/pycorn/docs/RES_files_layout.txt new file mode 100644 index 0000000..33cdfe5 --- /dev/null +++ b/pycorn/docs/RES_files_layout.txt @@ -0,0 +1,132 @@ +UNICORN result files +==================== + +UNICORN is a control/evaluation software supplied with ÄKTA chromatography systems from GE Healthcare. Every chromatography run generates a result file (res-file), which is a binary file containing metadata about the run and data retrieved from various sensors in the chromatography system. Common sensors included in most ÄKTA-Systems cover UV-absorption, pH, conductivity, system pressure etc. + +The documentation supplied here is the result of reverse-engineering a limited number of such files obtained from ÄKTA Prime and ÄKTA Purifier systems. Different versions (especially newer ones) of UNICORN may generate files with different layout/encoding. + +General layout (s. samples/sample1.res) +-------------------- +START --> HEADER --> DATA_BLOCKS +To follow along - open sample1.res (under samples/) in a hex-viewer/editor. Hex numbers given in parenthesis are from the sample1.res. Padding bytes may not be explicitly described throughout this document. + +---START--- +Res-files start with a few check/info bytes: +- first 16 bytes are "11 47 11 47 18 00 00 00 B0 02 00 00 20 6C 03 00" + most likely magic number to positively identify a res file +- next 4 bytes give EOF/file size (20 EA 0D 00) + probably allow a check if recorded file size matches actual file +- next 4 bytes are empty +- next 12 bytes contain string "UNICORN 3.10" (55 4E 49 43 4F 52 4E 20 33 2E 31 30) + file format version(?) +- at position 118 is the user name as used in Purifier systems or "prime" if the file originates from an ÄKTA Prime system. Length up to 40 characters. (70 72 69 6D 65) + +---HEADER--- +The header contains entries of the recorded data. Entries are made up of the original file name = run name ("Manual Run 3" for ex.) and name of data series (1_UV for ex.). Additionally their position in the file and several offsets are recorded. The header ends with the last entry called "LogBook" (notice capital "B"). +- Entries start at position 686, first entry is either CONFIG or Methods +- Entries are 344 bytes + FORMAT of entries + - 8 bytes magic-id defining type of data (meta/sensor/aux etc). WARNING: If a file has been opened and resaved the 2nd last byte is incremented by one (see table at the end, ... 01 14 --> 02 14) + - 296 bytes (incl. padding) Name of data entry (CONFIG, METHOD, Logbook, 1_UV, UV1_280nm etc.) + - 4 bytes int, size of the data block + - 4 bytes int, offset to next data block (from meta to meta) + - 4 bytes int, adresse of the data block (including some metadata) + - 4 bytes int, offset from metadata to actual data + -> S. example below + - entries that deal with data generated by the machine during the run (UV, pressure etc.) are preceeded by hex "00 00 01 00 04 00 01 14" + - Last entry is called "LogBook" (notice capital B! LogBook only occurs once per file) preceeded by hex value "00 00 00 01 00 02 00 01 13" +The entries are followed by lots of padding and eventually the data blocks which hold the data. + +Example values: +sample1.res UV-entry (at 2366) +C8 A0 01 00 00 A2 01 00 20 92 03 00 F0 00 00 00 +----V1----- ----V2----- ----V3----- ----V4----- +V1 (C8 A0 01 00) signed int, 106696 is the size of the data block including metadata +V2 (00 A2 01 00) signed int, 107008 is the offset to next data block (from meta to meta) +V3 (20 92 03 00) signed int, 234016 is the begin of the data block including metadata +V4 (F0 00 00 00) signed int, 240 is the offset from V2 to actual begin of data + +---DATA_BLOCKS--- +There are different types of data blocks: +- Sensor data, marked with "06 00 02 00 01 00 4E 00" (adresse specified in header) +- Metadata (type1, generated during the run), marked with "06 00 06 00 01 00 4E 00" (adresse specified in header) +- Metadata (type2, generated before run), no offset, pure string data, no special marker + +Structure of sensor data +8 bytes per pair +4 bytes sig/int Accumulated volume, divide by 100 to obtain value in ml +4 bytes sig/int Sensor value, divide by 1000/100/10 depending on sensor type + +Structure of meta-data/type1 (Logbook, Fractions etc.) +180 bytes per pair/trio +8 bytes double float accumulated time (in minutes?) +8 bytes double float accumulated volume (in ml) +164 bytes string Logbook-event, Fraction number or "Waste" + +Structure of meta-data/type2 (pure meta-data like method used during run) +- size defined in header (but maybe off by 1 or two bytes!) +- pure string +- string encoding is windows cp1250 / variants of it, depending on installed system + +There are two logbooks per file. Logbook and LogBook (notice capital B in 2nd one). They contain similar but not exactly the same information. LogBook is always the last entry in a res-file. LogBook contains entries acc. to system time +- strings in format like this "Concentration 0 %B.09, 21:51:45, Method : , Result : C:\...\prime\2009Jun16no001.RES" +- entries are separated by 202 bytes from begin to begin + +---- +Magic bytes preceeding header entries: +- System data shares same id +- Fractions and LogBook/Logbook have the same/similar format but have different id +- Ids are consistent across (at least two) different systems (Prime/Purifier) +- Ids for Logbook, sensor data (UV/cond/conc/...), Injection marks and fractions are changed if a file is opened and resaved (2nd last byte is incremented by one: + Logbook ... 48 04 --> ... 49 04 + Sens. data ... 01 14 --> ... 02 14 + Inj. mark ... 46 04 --> ... 47 04 + Fractions ... 44 04 --> ... 45 04 + +---Magic-ids--- +The following magic_ids have been found and assigned so far: +AKTA PRIME +HEX VALUE String +00 00 01 00 02 00 01 00 CONFIG +00 00 01 00 02 00 04 02 METHODINFO +00 00 01 00 02 00 03 22 CreationNotes = Program / plain text +00 00 01 00 04 00 48 04 Logbook +00 00 01 00 04 00 01 14 UV +00 00 01 00 04 00 01 14 Cond +00 00 01 00 04 00 01 14 pH +00 00 01 00 04 00 01 14 Pressure +00 00 01 00 04 00 01 14 Temp +00 00 01 00 04 00 01 14 Conc +00 00 01 00 04 00 44 04 Fractions +00 00 01 00 02 00 50 03 1 +00 00 01 00 02 00 01 13 LogBook + +AKTA PURIFIER +HEX VALUE String +00 00 01 00 02 00 01 02 Methods +00 00 01 00 02 00 07 22 MethodHistory +00 00 01 00 02 00 02 12 DOCUMENT +00 00 01 00 02 00 03 22 CreationNotes +00 00 01 00 02 00 55 22 StrategyInformation +00 00 01 00 02 00 10 22 MethodStrategyNotes +00 00 01 00 02 00 01 00 Methods Signatures +00 00 01 00 02 00 01 00 CONFIG +00 00 01 00 02 00 01 00 CALIB +00 00 01 00 02 00 04 02 METHODINFO +00 00 01 00 02 00 10 22 ResultStrategyNotes +00 00 01 00 04 00 48 04 Logbook +00 00 01 00 04 00 01 14 UV1_280nm +00 00 01 00 04 00 01 14 UV2_254nm +00 00 01 00 04 00 01 14 UV3_0nm +00 00 01 00 04 00 01 14 Cond +00 00 01 00 04 00 01 14 Cond% +00 00 01 00 04 00 01 14 Conc +00 00 01 00 04 00 01 14 Pressure +00 00 01 00 04 00 01 14 Flow +00 00 01 00 04 00 01 14 Temp +00 00 01 00 04 00 01 14 AuxIn1 +00 00 01 00 04 00 01 14 AuxOut1 +00 00 01 00 04 00 01 14 P960_Press +00 00 01 00 04 00 01 14 P960_Flow +00 00 01 00 04 00 46 04 Inject +00 00 01 00 02 00 01 13 LogBook diff --git a/pycorn/docs/USAGE_pycorn-bin.txt b/pycorn/docs/USAGE_pycorn-bin.txt new file mode 100644 index 0000000..c3fad57 --- /dev/null +++ b/pycorn/docs/USAGE_pycorn-bin.txt @@ -0,0 +1,84 @@ +How to use PyCORN + +PyCORN may be used either via the pycorn-bin.py-script or imported as a module in your scripts (see USAGE_pycorn_module.txt). + +pycorn-bin.py: +-------------- +The default installation places pycorn-bin.py in the python/scripts-folder and therefor ready-to-use on most platforms. This script re-implements most of the features of the original pycorn.py-script. Usage is very similar, as only a few paramters have changed. Data from UNICORN6 zip-bundles may also be plotted or extracted (experimental). + + +usage: pycorn-bin.py [-h] [-c] [-n] [-i #] [-r #] [-t] [-e] [-p] + [--no_fractions] [--xmin #] [--xmax #] [--par1 PAR1] + [--par2 PAR2] + [-f {svg,svgz,tif,tiff,jpg,jpeg,png,ps,eps,raw,rgba,pdf,pgf +}] + [-d DPI] [-u] [--version] + .res [.res ...] + +Extract data from UNICORN .res files to .csv/.txt and plot them (matplotlib +required) + +positional arguments: + .res Input .res file(s) + +optional arguments: + -h, --help show this help message and exit + -c, --check Perform simple check if file is supported + -n, --info Display entries in header + -i #, --inject # Set injection number # as zero retention, use -t to + find injection points + -r #, --reduce # Write/Plot only every n sample + -t, --points Display injection points + -u, --user Show stored user name + --version show program's version number and exit + +Extracting: + Options for writing csv/txt files + + -e {csv,xlsx}, --extract {csv,xlsx} + Write data to csv or xlsx file for supported data + blocks + +Plotting: + Options for plotting + + -p, --plot Plot curves + --no_fractions Disable plotting of fractions + --xmin # Lower bound on the x-axis + --xmax # Upper bound on the x-axis + --par1 PAR1 Data for 2nd y-axis (Default=Cond) + --par2 PAR2 Data for 3rd y-axis (Default=None) + -f {svg,svgz,tif,tiff,jpg,jpeg,png,ps,eps,raw,rgba,pdf,pgf}, --format {svg,svg +z,tif,tiff,jpg,jpeg,png,ps,eps,raw,rgba,pdf,pgf} + File format of plot files (default: pdf) + -d DPI, --dpi DPI DPI (dots per inch) for raster images (png, jpg, + etc.). Default is 300. + +Notes: +By default pycorn-bin.py will plot from first to last fraction, as that is usually the interesting part. If no fractions are present in the run then from beginning to end. To override this behaviour you can use the (both) optional --xmin/--xmax switches to specify beginning and end of the plot. + +Examples: +Show user who ran method: +pycorn-bin.py -u input.res + +Show injection points: +pycorn-bin.py -t input.res + +Extract data to csv files: +pycorn-bin.py -e csv input.res + + +Extract data to xlsx-file: +pycorn-bin.py -e xlsx input.res + +Plot all data: +pycorn-bin.py -p input.res + +Extract/plot data and adjust retention volume to injection point 1 (counting starts at 0!): +pycorn-bin.py -p -e -i 1 input.res + +Plot every third value: +pycorn-bin.py -p -r 3 input.res + +Plot from 100 to 200ml: +pycorn-bin.py -p --xmin 100 --xmax 200 input.res \ No newline at end of file diff --git a/pycorn/docs/USAGE_pycorn_module.txt b/pycorn/docs/USAGE_pycorn_module.txt new file mode 100644 index 0000000..46a0d0d --- /dev/null +++ b/pycorn/docs/USAGE_pycorn_module.txt @@ -0,0 +1,34 @@ +Using the pycorn module: + +# Importing the module +from pycorn import pc_res3 + +# Create an instance of the pycorn object, there are a couple of options that can be specified: +# file_name = file name of the res-file that you want to load +# reduce = integer to only read every n sample (similar to the option found in UNICORN during export to asc) +# inj_sel = which injection point to use as zero-rentention. By default the last injection point is used (same as in UNICORN) + +# Create the instance using default options +my_res_file = pc_res3("sample1.res") + +# Parse the file +my_res_file.load() + +# Show available data +print(list(my_res_file.keys())) + +>>>[u'CreationNotes', u'Logbook', u'UV', u'Cond', u'pH', u'Pressure', u'Temp', u'Conc', u'Fractions'] + +# The above list is your key to access the data inside the file +# my_res_file[key][value] value can be: +# data: contains the actual data, either pure text or a list with x/y-pairs as tuples +# unit: the unit for this data block (mAu, ms/cm etc.) +# run_name: an internal name (like "Manual Run 8") + +# For example to read-out the the unit for the UV-block: +my_res_file['UV']['unit'] + +# To read the actual UV-data: +x = my_res_file['UV']['data'] +print(x[0:3]) +>>>[(0.0, -9.22), (0.06, -0.007), (0.13, -0.004)] diff --git a/pycorn/docs/USAGE_res_to_png.txt b/pycorn/docs/USAGE_res_to_png.txt new file mode 100644 index 0000000..af1b823 --- /dev/null +++ b/pycorn/docs/USAGE_res_to_png.txt @@ -0,0 +1,22 @@ +# Create .png from .res files using PyCORN (adapted to work with pyinstaller) + +## Requirments + +* matplotlib + +## Features + +* res_to_png.py is a modified PyCORN utility to generate .png plots from .res files +* It does not accept any arguments; +* When run generates a png file for every .res file in the same directory as the res_to_png.py script. +* Works with PyInstaller allowing res_to_png.py to be bundled and easily distrubuted to people not familiar with terminal/console. + +## Example usage + +``` +python res_to_png.py +``` + +## Known issues + +On macOS when creating an executable using PyInstaller an error related to tkinter may be issued. Please refer to this [link](https://github.com/pyinstaller/pyinstaller/issues/3753) for a solution. diff --git a/pycorn/pycorn.py b/pycorn/pycorn.py new file mode 100644 index 0000000..addbf66 --- /dev/null +++ b/pycorn/pycorn.py @@ -0,0 +1,453 @@ +# -*- coding: utf-8 -*- +''' +PyCORN - script to extract data from .res (results) files generated +by UNICORN Chromatography software supplied with ÄKTA Systems +(c)2014-2016 - Yasar L. Ahmed +v0.18b +''' + +from __future__ import print_function +from collections import OrderedDict +from zipfile import ZipFile +from zipfile import is_zipfile +import xml.etree.ElementTree as ET +import struct +import codecs +import os +import io + +class pc_res3(OrderedDict): + """A class for holding the PyCORN/RESv3 data. + A subclass of `dict`, with the form `data_name`: `data`. + """ + + # first, some magic numbers + RES_magic_id = b'\x11\x47\x11\x47\x18\x00\x00\x00\xB0\x02\x00\x00\x20\x6C\x03\x00' + CNotes_id = b'\x00\x00\x01\x00\x02\x00\x03\x22' + Methods_id = b'\x00\x00\x01\x00\x02\x00\x01\x02' + Logbook_id = b'\x00\x00\x01\x00\x04\x00\x48\x04' + Logbook_id2 = b'\x00\x00\x01\x00\x04\x00\x49\x04' + SensData_id = b'\x00\x00\x01\x00\x04\x00\x01\x14' + SensData_id2 = b'\x00\x00\x01\x00\x04\x00\x02\x14' + Fractions_id = b'\x00\x00\x01\x00\x04\x00\x44\x04' + Fractions_id2 = b'\x00\x00\x01\x00\x04\x00\x45\x04' + Inject_id = b'\x00\x00\x01\x00\x04\x00\x46\x04' + Inject_id2 = b'\x00\x00\x01\x00\x04\x00\x47\x04' + LogBook_id = b'\x00\x00\x01\x00\x02\x00\x01\x13' # capital B! + + def __init__(self, file_name, reduce=1, inj_sel=-1): + OrderedDict.__init__(self) + self.file_name = file_name + self.reduce = reduce + self.injection_points = None + self.inj_sel = inj_sel + self.inject_vol = None + self.header_read = False + self.run_name = '' + + with open(self.file_name, 'rb') as f: + self.raw_data = f.read() + + def input_check(self, show=False): + ''' + Checks if input file is a supported res file + x = magic number, y = version string, z = file size/EOF + + Returns True or False + ''' + if show: print((" ---- \n Input file: {0}").format(self.file_name)) + + x = self.raw_data.find(self.RES_magic_id, 0, 16) + y = self.raw_data.find(b'UNICORN 3.10', 16, 36) + z = struct.unpack("i", self.raw_data[16:20]) + + if (x, y) == (0, 24): + if show: print(" Input is a UNICORN 3.10 file!") + x, y = (0, 0) + else: + if show: print(" Input is not a UNICORN 3.10 file!") + x, y = (1, 1) + + if z[0] == os.path.getsize(self.file_name): + if show: print(" File size check - OK") + z = 0 + else: + if show: print(" File size mismatch - file corrupted?") + z = 1 + if (x, y, z) != (0, 0, 0): + if show: print("\n File not supported - stop!") + return False + else: + if show: print("\n Alles safe! - Go go go!") + return True + + def readheader(self): + ''' + Extracts all the entries/declarations in the header (starts at position 686) + ''' + + # we only need to do this once + if self.header_read: return + self.header_read = True + + fread = self.raw_data + header_end = fread.find(self.LogBook_id) + 342 + for i in range(686, header_end, 344): + decl = struct.unpack("8s296s4i", fread[i:i + 320]) + full_label = codecs.decode(decl[1], 'iso8859-1').rstrip("\x00") + if full_label.find(':') == -1: + r_name = '' + d_name = full_label + else: + r_name = full_label[:full_label.find(':')] + d_name = full_label[full_label.find('_') + 1:] + x = dict(magic_id=decl[0], + run_name=r_name, + data_name=d_name, + d_size=decl[2], + off_next=decl[3], + adresse=decl[4], + off_data=decl[5], + d_start=decl[4] + decl[5], + d_end=decl[4] + decl[2]) + name = x['data_name'] + dat = self.get(name, dict()) + dat.update(x) + self[name] = dat + + def showheader(self, full=True): + ''' + Prints content of header + ''' + print((" ---- \n Header of {0}: \n").format(self.file_name)) + if full: + print(" MAGIC_ID, ENTRY_NAME, BLOCK_SIZE, OFFSET_TO_NEXT, ADRESSE, OFFSET_TO_DATA") + else: + print(" ENTRY_NAME, BLOCK_SIZE, OFFSET_TO_NEXT, ADRESSE, OFFSET_TO_DATA") + num_blocks = len(self.items()) + for i in range(num_blocks): + dtp = (list(self.items()))[i][1] + if full: + print(" ", dtp['magic_id'], dtp['data_name'], dtp['d_size'], dtp['off_next'], dtp['adresse'], + dtp['off_data']) + else: + print(" ", dtp['data_name'], dtp['d_size'], dtp['off_next'], dtp['adresse'], dtp['off_data']) + + def get_user(self): + ''' + Show stored user name + ''' + fread = self.raw_data[:512] + u = struct.unpack("40s", fread[118:158]) + dec_u = codecs.decode(u[0], 'iso8859-1').rstrip("\x00") + return dec_u + + def dataextractor(self, dat, show=False): + ''' + Identify data type by comparing magic id, then run appropriate + function to extract data, update orig. dict to include new data + ''' + meta1 = [ + self.Logbook_id, self.Logbook_id2, + self.Inject_id, self.Inject_id2, + self.Fractions_id, self.Fractions_id2] + meta2 = [self.CNotes_id, self.Methods_id] + sensor = [self.SensData_id, self.SensData_id2] + if dat['d_size'] == 0: + pass + elif dat['magic_id'] in meta1: + dat.update(data=self.meta1_read(dat, show=show), data_type= 'annotation') + return dat + elif dat['magic_id'] in meta2: + dat.update(data=self.meta2_read(dat, show=show), data_type= 'meta') + return dat + elif dat['magic_id'] in sensor: + values, unit = self.sensor_read(dat, show=show) + dat.update(data=values, unit=unit, data_type= 'curve') + return dat + + def meta1_read(self, dat, show=False, do_it_for_inj_det=False): + ''' + Extracts meta-data/type1, Logbook, fractions and Inject marks + for a specific datum + ''' + if show: + print((" Reading: {0}").format(dat['data_name'])) + final_data = [] + inj_vol_to_subtract = self.inject_vol + if do_it_for_inj_det: + inj_vol_to_subtract = 0.0 + for i in range(dat['d_start'], dat['d_end'], 180): + dp = struct.unpack("dd158s", self.raw_data[i:i + 174]) + # acc_time = dp[0] # not used atm + acc_volume = round(dp[1] - inj_vol_to_subtract, 4) + label = (codecs.decode(dp[2], 'iso8859-1')).rstrip('\x00') + merged_data = acc_volume, label + final_data.append(merged_data) + return (final_data) + + def meta2_read(self, dat, show=False): + ''' + Extracts meta-data/type2, Method/Program used in the run + ''' + if show: print((" Reading: {0}").format(dat['data_name'])) + start, size = dat['d_start'], dat['d_size'] + tmp_data = self.raw_data[start:start + size] + size = tmp_data.rfind(b'\n') # declared block-size in header is always off + # by a few bytes, hence it is redetermined here + if show and size != len(tmp_data): + print('meta2: reevaluated size {} -> {}'.format(size, len(tmp_data))) + + raw_data = codecs.decode(self.raw_data[start:start + size], 'iso8859-1') + if '\r' in raw_data: + data = raw_data + else: + data = raw_data.replace('\n', '\r\n') + return data + + def sensor_read(self, dat, show=False): + ''' + extracts sensor/run-data and applies correct division + ''' + final_data = [] + if "UV" in dat['data_name'] or "Cond" == dat['data_name'] or "Flow" == dat['data_name']: + sensor_div = 1000.0 + elif "Pressure" in dat['data_name']: + sensor_div = 100.0 + else: + sensor_div = 10.0 + if show: print((" Reading: {0}").format(dat['data_name'])) + + fread = self.raw_data + for i in range(dat['adresse'] + 207, dat['adresse'] + 222, 15): + s_unit = struct.unpack("15s", fread[i:i + 15]) + s_unit_dec = (codecs.decode(s_unit[0], 'iso8859-1')).rstrip('\x00') + # FIX: in some files the unit for temperature reads 'C' instead of '°C' + if s_unit_dec == 'C': + s_unit_dec = u'°C' + for i in range(dat['d_start'], dat['d_end'], 8): + sread = struct.unpack("ii", fread[i:i + 8]) + data = round((sread[0] / 100.0) - self.inject_vol, 4), sread[1] / sensor_div + final_data.append(data) + return (final_data[0::self.reduce], s_unit_dec) + + def inject_det(self, show=False): + ''' + Finds injection points - required for adjusting retention volume + ''' + inject_ids = [self.Inject_id, self.Inject_id2] + injections = [] + if self.injection_points == None: + self.injection_points = [0.0] + for i in self.values(): + if i['magic_id'] in inject_ids: + injections = self.meta1_read(i, show=show, do_it_for_inj_det=True) + for i in injections: + if i[0] != 0.0: + self.injection_points.append(i[0]) + if show: + print(" ---- \n Injection points: \n # \t ml") + for x, y in enumerate(self.injection_points): + print((" {0} \t {1}").format(x, y)) + + + def load(self, show=False): + ''' + extract all data and store in list + ''' + self.readheader() + self.run_name = self['Logbook']['run_name'] + self.inject_det() + try: + self.inject_vol = self.injection_points[self.inj_sel] + except IndexError: + print("\n WARNING - Injection point does not exist! Selected default.\n") + self.inject_vol = self.injection_points[-1] + for name, dat in list(self.items()): + dat = self.dataextractor(dat, show=show) + if dat is not None: + self[name] = dat + else: + # TODO: Maybe we should keep this around? + del self[name] + +class pc_uni6(OrderedDict): + ''' + A class for holding the pycorn/RESv6 data + A subclass of `dict`, with the form `data_name`: `data`. + ''' + # for manual zip-detection + zip_magic_start = b'\x50\x4B\x03\x04\x2D\x00\x00\x00\x08' + zip_magic_end = b'\x50\x4B\x05\x06\x00\x00\x00\x00' + + # hack to get pycorn-bin to move on + SensData_id = 0 + SensData_id2 = 0 + Fractions_id = 0 + Fractions_id2 = 0 + + def __init__(self, inp_file): + OrderedDict.__init__(self) + self.file_name = inp_file + self.inject_vol = 0.0 + self.run_name = 'blank' + + def load(self, show=False): + ''' + zip-files inside the zip-bundle are replaced by dicts, again with dicts with filename:content + Chrom.#_#_True (=zip-files) files are unpacked from binary to floats by unpacker() + To access x/y-value of Chrom.1_2: + udata = pc_uni6("mybundle.zip") + udata.load() + x = udata['Chrom.1_2_True']['CoordinateData.Volumes'] + y = udata['Chrom.1_2_True']['CoordinateData.Amplitudes'] + ''' + with open(self.file_name, 'rb') as f: + input_zip = ZipFile(f) + zip_data = self.zip2dict(input_zip) + self.update(zip_data) + proc_yes = [] + proc_no = [] + for i in self.keys(): + tmp_raw = io.BytesIO(input_zip.read(i)) + f_header = tmp_raw.read(9) + # tmp_raw.seek(0) + # the following if block is to fix the non-standard zip files + # by stripping out all the null-bytes at the end + # see https://bugs.python.org/issue24621 + if f_header == self.zip_magic_start: + proper_zip = tmp_raw.getvalue() + f_end = proper_zip.rindex(self.zip_magic_end) + 22 + tmp_raw = io.BytesIO(proper_zip[0:f_end]) + if is_zipfile(tmp_raw): + tmp_zip = ZipFile(tmp_raw) + x = {i:self.zip2dict(tmp_zip)} + self.update(x) + proc_yes.append(i) + else: + pass + proc_no.append(i) + if show: + print("Loaded " + self.file_name + " into memory") + print("\n-Supported-") + for i in proc_yes: + print(" " + i) + print("\n-Not supported-") + for i in proc_no: + print(" " + i) + # filter out data we dont deal with atm + to_process = [] + for i in self.keys(): + if "Chrom" in i and not "Xml" in i: + to_process.append(i) + if show: + print("\nFiles to process:") + for i in to_process: + print(" " + i) + for i in to_process: + for n in self[i].keys(): + if "DataType" in n: + a = self[i][n] + b = a.decode('utf-8') + x = b.strip("\r\n") + else: + x = self.unpacker(self[i][n]) + tmp_dict = {n:x} + self[i].update(tmp_dict) + if show: + print("Finished decoding x/y-data!") + + @staticmethod + def zip2dict(inp): + ''' + input = zip object + outout = dict with filename:file-object pairs + ''' + mydict = {} + for i in inp.NameToInfo: + tmp_dict = {i:inp.read(i)} + mydict.update(tmp_dict) + return(mydict) + + @staticmethod + def unpacker(inp): + ''' + input = data block + output = list of values + ''' + read_size = len(inp) - 48 + values = [] + for i in range(47, read_size, 4): + x = struct.unpack(" Date: Sun, 3 Mar 2019 22:25:13 +0000 Subject: [PATCH 3/4] res_to_png.py now import pycorn module instead of using a copy of classes in the script; fixed direcotry path issue when an empty string was returned instead --- examplescripts/res_to_png.py | 471 +------------------------------ examplescripts/sample1.res | Bin 0 -> 911904 bytes pycorn/docs/USAGE_res_to_png.txt | 13 +- 3 files changed, 22 insertions(+), 462 deletions(-) create mode 100644 examplescripts/sample1.res diff --git a/examplescripts/res_to_png.py b/examplescripts/res_to_png.py index 7ea53d9..290ef08 100644 --- a/examplescripts/res_to_png.py +++ b/examplescripts/res_to_png.py @@ -7,470 +7,25 @@ v0.18 ''' -from __future__ import print_function -from collections import OrderedDict -from zipfile import ZipFile -from zipfile import is_zipfile -import xml.etree.ElementTree as ET -import struct -import codecs -import os -import sys -import io import argparse -import matplotlib -matplotlib.use('TkAgg') -import matplotlib.pyplot as plt -from mpl_toolkits.axes_grid1 import host_subplot -from matplotlib.ticker import AutoMinorLocator -import mpl_toolkits.axisartist as AA - -class pc_res3(OrderedDict): - """A class for holding the PyCORN/RESv3 data. - A subclass of `dict`, with the form `data_name`: `data`. - """ - - # first, some magic numbers - RES_magic_id = b'\x11\x47\x11\x47\x18\x00\x00\x00\xB0\x02\x00\x00\x20\x6C\x03\x00' - CNotes_id = b'\x00\x00\x01\x00\x02\x00\x03\x22' - Methods_id = b'\x00\x00\x01\x00\x02\x00\x01\x02' - Logbook_id = b'\x00\x00\x01\x00\x04\x00\x48\x04' - Logbook_id2 = b'\x00\x00\x01\x00\x04\x00\x49\x04' - SensData_id = b'\x00\x00\x01\x00\x04\x00\x01\x14' - SensData_id2 = b'\x00\x00\x01\x00\x04\x00\x02\x14' - Fractions_id = b'\x00\x00\x01\x00\x04\x00\x44\x04' - Fractions_id2 = b'\x00\x00\x01\x00\x04\x00\x45\x04' - Inject_id = b'\x00\x00\x01\x00\x04\x00\x46\x04' - Inject_id2 = b'\x00\x00\x01\x00\x04\x00\x47\x04' - LogBook_id = b'\x00\x00\x01\x00\x02\x00\x01\x13' # capital B! - - def __init__(self, file_name, reduce=1, inj_sel=-1): - OrderedDict.__init__(self) - self.file_name = file_name - self.reduce = reduce - self.injection_points = None - self.inj_sel = inj_sel - self.inject_vol = None - self.header_read = False - self.run_name = '' - - with open(self.file_name, 'rb') as f: - self.raw_data = f.read() - - def input_check(self, show=False): - ''' - Checks if input file is a supported res file - x = magic number, y = version string, z = file size/EOF - - Returns True or False - ''' - if show: print((" ---- \n Input file: {0}").format(self.file_name)) - - x = self.raw_data.find(self.RES_magic_id, 0, 16) - y = self.raw_data.find(b'UNICORN 3.10', 16, 36) - z = struct.unpack("i", self.raw_data[16:20]) - - if (x, y) == (0, 24): - if show: print(" Input is a UNICORN 3.10 file!") - x, y = (0, 0) - else: - if show: print(" Input is not a UNICORN 3.10 file!") - x, y = (1, 1) - - if z[0] == os.path.getsize(self.file_name): - if show: print(" File size check - OK") - z = 0 - else: - if show: print(" File size mismatch - file corrupted?") - z = 1 - if (x, y, z) != (0, 0, 0): - if show: print("\n File not supported - stop!") - return False - else: - if show: print("\n Alles safe! - Go go go!") - return True - - def readheader(self): - ''' - Extracts all the entries/declarations in the header (starts at position 686) - ''' - - # we only need to do this once - if self.header_read: return - self.header_read = True - - fread = self.raw_data - header_end = fread.find(self.LogBook_id) + 342 - for i in range(686, header_end, 344): - decl = struct.unpack("8s296s4i", fread[i:i + 320]) - full_label = codecs.decode(decl[1], 'iso8859-1').rstrip("\x00") - if full_label.find(':') == -1: - r_name = '' - d_name = full_label - else: - r_name = full_label[:full_label.find(':')] - d_name = full_label[full_label.find('_') + 1:] - x = dict(magic_id=decl[0], - run_name=r_name, - data_name=d_name, - d_size=decl[2], - off_next=decl[3], - adresse=decl[4], - off_data=decl[5], - d_start=decl[4] + decl[5], - d_end=decl[4] + decl[2]) - name = x['data_name'] - dat = self.get(name, dict()) - dat.update(x) - self[name] = dat - - def showheader(self, full=True): - ''' - Prints content of header - ''' - print((" ---- \n Header of {0}: \n").format(self.file_name)) - if full: - print(" MAGIC_ID, ENTRY_NAME, BLOCK_SIZE, OFFSET_TO_NEXT, ADRESSE, OFFSET_TO_DATA") - else: - print(" ENTRY_NAME, BLOCK_SIZE, OFFSET_TO_NEXT, ADRESSE, OFFSET_TO_DATA") - num_blocks = len(self.items()) - for i in range(num_blocks): - dtp = (list(self.items()))[i][1] - if full: - print(" ", dtp['magic_id'], dtp['data_name'], dtp['d_size'], dtp['off_next'], dtp['adresse'], - dtp['off_data']) - else: - print(" ", dtp['data_name'], dtp['d_size'], dtp['off_next'], dtp['adresse'], dtp['off_data']) - - def get_user(self): - ''' - Show stored user name - ''' - fread = self.raw_data[:512] - u = struct.unpack("40s", fread[118:158]) - dec_u = codecs.decode(u[0], 'iso8859-1').rstrip("\x00") - return dec_u - - def dataextractor(self, dat, show=False): - ''' - Identify data type by comparing magic id, then run appropriate - function to extract data, update orig. dict to include new data - ''' - meta1 = [ - self.Logbook_id, self.Logbook_id2, - self.Inject_id, self.Inject_id2, - self.Fractions_id, self.Fractions_id2] - meta2 = [self.CNotes_id, self.Methods_id] - sensor = [self.SensData_id, self.SensData_id2] - if dat['d_size'] == 0: - pass - elif dat['magic_id'] in meta1: - dat.update(data=self.meta1_read(dat, show=show), data_type= 'annotation') - return dat - elif dat['magic_id'] in meta2: - dat.update(data=self.meta2_read(dat, show=show), data_type= 'meta') - return dat - elif dat['magic_id'] in sensor: - values, unit = self.sensor_read(dat, show=show) - dat.update(data=values, unit=unit, data_type= 'curve') - return dat - - def meta1_read(self, dat, show=False, do_it_for_inj_det=False): - ''' - Extracts meta-data/type1, Logbook, fractions and Inject marks - for a specific datum - ''' - if show: - print((" Reading: {0}").format(dat['data_name'])) - final_data = [] - inj_vol_to_subtract = self.inject_vol - if do_it_for_inj_det: - inj_vol_to_subtract = 0.0 - for i in range(dat['d_start'], dat['d_end'], 180): - dp = struct.unpack("dd158s", self.raw_data[i:i + 174]) - # acc_time = dp[0] # not used atm - acc_volume = round(dp[1] - inj_vol_to_subtract, 4) - label = (codecs.decode(dp[2], 'iso8859-1')).rstrip('\x00') - merged_data = acc_volume, label - final_data.append(merged_data) - return (final_data) - - def meta2_read(self, dat, show=False): - ''' - Extracts meta-data/type2, Method/Program used in the run - ''' - if show: print((" Reading: {0}").format(dat['data_name'])) - start, size = dat['d_start'], dat['d_size'] - tmp_data = self.raw_data[start:start + size] - size = tmp_data.rfind(b'\n') # declared block-size in header is always off - # by a few bytes, hence it is redetermined here - if show and size != len(tmp_data): - print('meta2: reevaluated size {} -> {}'.format(size, len(tmp_data))) - - raw_data = codecs.decode(self.raw_data[start:start + size], 'iso8859-1') - if '\r' in raw_data: - data = raw_data - else: - data = raw_data.replace('\n', '\r\n') - return data - - def sensor_read(self, dat, show=False): - ''' - extracts sensor/run-data and applies correct division - ''' - final_data = [] - if "UV" in dat['data_name'] or "Cond" == dat['data_name'] or "Flow" == dat['data_name']: - sensor_div = 1000.0 - elif "Pressure" in dat['data_name']: - sensor_div = 100.0 - else: - sensor_div = 10.0 - if show: print((" Reading: {0}").format(dat['data_name'])) - - fread = self.raw_data - for i in range(dat['adresse'] + 207, dat['adresse'] + 222, 15): - s_unit = struct.unpack("15s", fread[i:i + 15]) - s_unit_dec = (codecs.decode(s_unit[0], 'iso8859-1')).rstrip('\x00') - # FIX: in some files the unit for temperature reads 'C' instead of '°C' - if s_unit_dec == 'C': - s_unit_dec = u'°C' - for i in range(dat['d_start'], dat['d_end'], 8): - sread = struct.unpack("ii", fread[i:i + 8]) - data = round((sread[0] / 100.0) - self.inject_vol, 4), sread[1] / sensor_div - final_data.append(data) - return (final_data[0::self.reduce], s_unit_dec) - - def inject_det(self, show=False): - ''' - Finds injection points - required for adjusting retention volume - ''' - inject_ids = [self.Inject_id, self.Inject_id2] - injections = [] - if self.injection_points == None: - self.injection_points = [0.0] - for i in self.values(): - if i['magic_id'] in inject_ids: - injections = self.meta1_read(i, show=show, do_it_for_inj_det=True) - for i in injections: - if i[0] != 0.0: - self.injection_points.append(i[0]) - if show: - print(" ---- \n Injection points: \n # \t ml") - for x, y in enumerate(self.injection_points): - print((" {0} \t {1}").format(x, y)) - - - def load(self, show=False): - ''' - extract all data and store in list - ''' - self.readheader() - self.run_name = self['Logbook']['run_name'] - self.inject_det() - try: - self.inject_vol = self.injection_points[self.inj_sel] - except IndexError: - print("\n WARNING - Injection point does not exist! Selected default.\n") - self.inject_vol = self.injection_points[-1] - for name, dat in list(self.items()): - dat = self.dataextractor(dat, show=show) - if dat is not None: - self[name] = dat - else: - # TODO: Maybe we should keep this around? - del self[name] - -class pc_uni6(OrderedDict): - ''' - A class for holding the pycorn/RESv6 data - A subclass of `dict`, with the form `data_name`: `data`. - ''' - # for manual zip-detection - zip_magic_start = b'\x50\x4B\x03\x04\x2D\x00\x00\x00\x08' - zip_magic_end = b'\x50\x4B\x05\x06\x00\x00\x00\x00' - - # hack to get pycorn-bin to move on - SensData_id = 0 - SensData_id2 = 0 - Fractions_id = 0 - Fractions_id2 = 0 - - def __init__(self, inp_file): - OrderedDict.__init__(self) - self.file_name = inp_file - self.inject_vol = 0.0 - self.run_name = 'blank' - - def load(self, show=False): - ''' - zip-files inside the zip-bundle are replaced by dicts, again with dicts with filename:content - Chrom.#_#_True (=zip-files) files are unpacked from binary to floats by unpacker() - To access x/y-value of Chrom.1_2: - udata = pc_uni6("mybundle.zip") - udata.load() - x = udata['Chrom.1_2_True']['CoordinateData.Volumes'] - y = udata['Chrom.1_2_True']['CoordinateData.Amplitudes'] - ''' - with open(self.file_name, 'rb') as f: - input_zip = ZipFile(f) - zip_data = self.zip2dict(input_zip) - self.update(zip_data) - proc_yes = [] - proc_no = [] - for i in self.keys(): - tmp_raw = io.BytesIO(input_zip.read(i)) - f_header = tmp_raw.read(9) - # tmp_raw.seek(0) - # the following if block is to fix the non-standard zip files - # by stripping out all the null-bytes at the end - # see https://bugs.python.org/issue24621 - if f_header == self.zip_magic_start: - proper_zip = tmp_raw.getvalue() - f_end = proper_zip.rindex(self.zip_magic_end) + 22 - tmp_raw = io.BytesIO(proper_zip[0:f_end]) - if is_zipfile(tmp_raw): - tmp_zip = ZipFile(tmp_raw) - x = {i:self.zip2dict(tmp_zip)} - self.update(x) - proc_yes.append(i) - else: - pass - proc_no.append(i) - if show: - print("Loaded " + self.file_name + " into memory") - print("\n-Supported-") - for i in proc_yes: - print(" " + i) - print("\n-Not supported-") - for i in proc_no: - print(" " + i) - # filter out data we dont deal with atm - to_process = [] - for i in self.keys(): - if "Chrom" in i and not "Xml" in i: - to_process.append(i) - if show: - print("\nFiles to process:") - for i in to_process: - print(" " + i) - for i in to_process: - for n in self[i].keys(): - if "DataType" in n: - a = self[i][n] - b = a.decode('utf-8') - x = b.strip("\r\n") - else: - x = self.unpacker(self[i][n]) - tmp_dict = {n:x} - self[i].update(tmp_dict) - if show: - print("Finished decoding x/y-data!") - - @staticmethod - def zip2dict(inp): - ''' - input = zip object - outout = dict with filename:file-object pairs - ''' - mydict = {} - for i in inp.NameToInfo: - tmp_dict = {i:inp.read(i)} - mydict.update(tmp_dict) - return(mydict) - - @staticmethod - def unpacker(inp): - ''' - input = data block - output = list of values - ''' - read_size = len(inp) - 48 - values = [] - for i in range(47, read_size, 4): - x = struct.unpack("B86 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

EKK6fjc zM^UujGU)qM8J%BEbR8O?>(V^pwrG8JK|g1Dqwo1Zbe%_FIUI-OaWYoIJHq+sIdL~y zxA%nW(0zRnbK#@t=j2Yb4xUCoC-OtdOL%ji|6no;SVEzFD7YvHgY`d(B(>$WRexh*6s3eP51zMZaj?c)8pvAJsCcWo}VvaV|)Xx*LTr+{Qx~b zKgO2$MfeR`A3tI@ycqtC*3Um^J*6m`ct0Ilr&%M;jn;R8usGVj9QML0=;wTG9Dt3& z7TAxtecbPcj^78Z)4}L_GzzWP+tK%TDq5Gb(e=6ut-qz=D)e*d{_r96T-_S?pFr#P znYjKUx=*iSK|F*7@cr;Zbe~V5b@(-Uj((5U>o1rC|BUO`(E3PPEb;q68nkXQp>>o4 zt>64;ofSdP)zawq&r0a`(HiJETOV!T4AWv8^gZZ|e*fr&<~IO+UxuUOkBxXTI-i+n zozBC;csF{Uu0-d*7G0+Y(RzIZJzsaA>-99cuFs=&{0h4M2gAc?eICc!_-VvnqILQm zHo^<&xpN7v*DDbx6i=+zl-Ppn8PNUDhV3yAw!=bbJ(rBQJX(*{(0Z+l)??#{TcP#X z5v{}SXx;V0{x}ppPe;f72{?#&I(oj&iR%l|{+FZUtwz6xY(VStVRSy*(D!pUx(?4q zyg%aC(ev~jtcpj`bMhnfoIH(1@hrMe=Og|NtWnYGFETh}K~XOo8n%8Foegf1y5@gm@5IwvIoUmoK38_bOUT@MDIAH

_K*+Wt-S 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 cn1zg6}+`vz{n_u!U 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 literal 0 HcmV?d00001 diff --git a/pycorn/docs/USAGE_res_to_png.txt b/pycorn/docs/USAGE_res_to_png.txt index af1b823..d012f2a 100644 --- a/pycorn/docs/USAGE_res_to_png.txt +++ b/pycorn/docs/USAGE_res_to_png.txt @@ -3,19 +3,24 @@ ## Requirments * matplotlib +* pycorn ## Features -* res_to_png.py is a modified PyCORN utility to generate .png plots from .res files -* It does not accept any arguments; -* When run generates a png file for every .res file in the same directory as the res_to_png.py script. -* Works with PyInstaller allowing res_to_png.py to be bundled and easily distrubuted to people not familiar with terminal/console. +* res_to_png.py is a modified pycorn-bin.py script to generate .png plots from .res files; +* The script was purposly designed having bundling with PyInstaller in mind for easy distribution and use for people not familiar with the command line interface; +* It does not require any arguments; +* When run, generates a png file for every .res file in the same directory as the res_to_png.py script. ## Example usage ``` python res_to_png.py ``` +or +``` +pyinstaller -F -w res_to_png.py +``` ## Known issues From 20a08315cc4e352fce9186b48c28f3c039fb03ea Mon Sep 17 00:00:00 2001 From: aretasg Date: Sun, 3 Mar 2019 22:30:34 +0000 Subject: [PATCH 4/4] cleanup; changed name for the script and updated accrodingly --- .../{res_to_png.py => pycorn-res2png.py} | 0 examplescripts/sample1.res | Bin 911904 -> 0 bytes ...res_to_png.txt => USAGE_pycorn-res2png.txt} | 12 ++++++------ 3 files changed, 6 insertions(+), 6 deletions(-) rename examplescripts/{res_to_png.py => pycorn-res2png.py} (100%) delete mode 100644 examplescripts/sample1.res rename pycorn/docs/{USAGE_res_to_png.txt => USAGE_pycorn-res2png.txt} (60%) diff --git a/examplescripts/res_to_png.py b/examplescripts/pycorn-res2png.py similarity index 100% rename from examplescripts/res_to_png.py rename to examplescripts/pycorn-res2png.py diff --git a/examplescripts/sample1.res b/examplescripts/sample1.res deleted file mode 100644 index 1af7764a0b70069a31d3830ebac245702d19d1d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 911904 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

EKK6fjc zM^UujGU)qM8J%BEbR8O?>(V^pwrG8JK|g1Dqwo1Zbe%_FIUI-OaWYoIJHq+sIdL~y zxA%nW(0zRnbK#@t=j2Yb4xUCoC-OtdOL%ji|6no;SVEzFD7YvHgY`d(B(>$WRexh*6s3eP51zMZaj?c)8pvAJsCcWo}VvaV|)Xx*LTr+{Qx~b zKgO2$MfeR`A3tI@ycqtC*3Um^J*6m`ct0Ilr&%M;jn;R8usGVj9QML0=;wTG9Dt3& z7TAxtecbPcj^78Z)4}L_GzzWP+tK%TDq5Gb(e=6ut-qz=D)e*d{_r96T-_S?pFr#P znYjKUx=*iSK|F*7@cr;Zbe~V5b@(-Uj((5U>o1rC|BUO`(E3PPEb;q68nkXQp>>o4 zt>64;ofSdP)zawq&r0a`(HiJETOV!T4AWv8^gZZ|e*fr&<~IO+UxuUOkBxXTI-i+n zozBC;csF{Uu0-d*7G0+Y(RzIZJzsaA>-99cuFs=&{0h4M2gAc?eICc!_-VvnqILQm zHo^<&xpN7v*DDbx6i=+zl-Ppn8PNUDhV3yAw!=bbJ(rBQJX(*{(0Z+l)??#{TcP#X z5v{}SXx;V0{x}ppPe;f72{?#&I(oj&iR%l|{+FZUtwz6xY(VStVRSy*(D!pUx(?4q zyg%aC(ev~jtcpj`bMhnfoIH(1@hrMe=Og|NtWnYGFETh}K~XOo8n%8Foegf1y5@gm@5IwvIoUmoK38_bOUT@MDIAH

_K*+Wt-S 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 cn1zg6}+`vz{n_u!U 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 diff --git a/pycorn/docs/USAGE_res_to_png.txt b/pycorn/docs/USAGE_pycorn-res2png.txt similarity index 60% rename from pycorn/docs/USAGE_res_to_png.txt rename to pycorn/docs/USAGE_pycorn-res2png.txt index d012f2a..1c3c1d2 100644 --- a/pycorn/docs/USAGE_res_to_png.txt +++ b/pycorn/docs/USAGE_pycorn-res2png.txt @@ -7,21 +7,21 @@ ## Features -* res_to_png.py is a modified pycorn-bin.py script to generate .png plots from .res files; -* The script was purposly designed having bundling with PyInstaller in mind for easy distribution and use for people not familiar with the command line interface; +* pycorn-res2png.py is a modified pycorn-bin.py script to generate .png plots from .res files; +* The script was purposly designed having bundling with PyInstaller in mind for an easy distribution and use for people not familiar with the command line interface; * It does not require any arguments; -* When run, generates a png file for every .res file in the same directory as the res_to_png.py script. +* When run, generates a png file for every .res file in the same directory as the pycorn-res2png.py script. ## Example usage ``` -python res_to_png.py +python pycorn-res2png.py ``` or ``` -pyinstaller -F -w res_to_png.py +pyinstaller -F -w pycorn-res2png.py ``` -## Known issues +## Known issues when using with PyInstaller On macOS when creating an executable using PyInstaller an error related to tkinter may be issued. Please refer to this [link](https://github.com/pyinstaller/pyinstaller/issues/3753) for a solution.