From 91e7f146bac0f4221cf74c1d278c0ca3ecabf67b Mon Sep 17 00:00:00 2001 From: "Joachim Wuttke (o)" <j.wuttke@fz-juelich.de> Date: Wed, 30 Nov 2016 12:42:26 +0100 Subject: [PATCH] Corrections thanks to test data from Zach. --- pub/share/converters/i96-to-yda | 52 ++++++++++++++++++--------------- 1 file changed, 28 insertions(+), 24 deletions(-) diff --git a/pub/share/converters/i96-to-yda b/pub/share/converters/i96-to-yda index 56654c51..f72bc4e9 100755 --- a/pub/share/converters/i96-to-yda +++ b/pub/share/converters/i96-to-yda @@ -10,9 +10,8 @@ PROGNAME = "i96-to-y96" class FlowSeq( list ): pass class FlowODict( OrderedDict ): pass -def improved_dump(data, stream=None, Dumper=yaml.Dumper, **kwds): - class ImprovedDumper(Dumper): - pass +def improved_dump(data, stream=None, **kwds): + class ImprovedDumper(yaml.Dumper): pass def odict_representer(dumper, data): return dumper.represent_mapping( yaml.resolver.BaseResolver.DEFAULT_MAPPING_TAG, @@ -28,11 +27,11 @@ def improved_dump(data, stream=None, Dumper=yaml.Dumper, **kwds): data, flow_style=True ) ImprovedDumper.add_representer(OrderedDict, odict_representer) - ImprovedDumper.add_representer(FlowSeq, flowseq_representer) ImprovedDumper.add_representer(FlowODict, flowodict_representer) + ImprovedDumper.add_representer(FlowSeq, flowseq_representer) return yaml.dump(data, stream, ImprovedDumper, allow_unicode=True, encoding='utf-8', - default_flow_style=False, indent=4, width=70, **kwds) + default_flow_style=False, indent=2, width=80, **kwds) # Parse block number ib of ta, starting with line ita. # Return tuple ita,bh, where ita is first line of next block, @@ -54,7 +53,7 @@ def readBlock(ib, ta, ita): sys.exit(1) return ita+1, bh key = ta[ita][:ioffs].strip() - val = ta[ita][ioffs:].strip() + val = ta[ita][ioffs:] bh[key] = val # Print error message and terminate. @@ -98,41 +97,46 @@ ita = 1 ita, bh = readBlock(2, ta, ita) if not "fil" in bh: exxx("missing entry 'fil'") -oldname = bh["fil"] +oldname = bh["fil"].strip(' \t\r\n\0') ita, bh = readBlock(3, ta, ita) -if not "?cu" in bh: - exxx("missing entry '?cu'") -if bh["?cu"] != "0": +if ("?cu" in bh) and (int(bh["?cu"]) != 0): exxx("this is not a data file, but a curve, which is currently not supported") ita, bh = readBlock(4, ta, ita) for key,val in bh.items(): - rpar = OrderedDict() - s1 = val[:24] - s2 = val[24:] - rpar["name"] = key - rpar["unit"] = s1.strip() - rpar["val"] = float(s2.strip()) - rpar["stdv"] = 0 - out["RPar"].append( rpar ) + try: + rpar = OrderedDict() + s1 = val[:24] + s2 = val[24:] + rpar["name"] = key + rpar["unit"] = s1.strip() + rpar["val"] = float(s2.strip()) + rpar["stdv"] = 0 + out["RPar"].append( rpar ) + except ValueError as err: + exxx("Error in rpar {%s: %s}: %s" % (key, val, err)) ita, bh = readBlock(5, ta, ita) +zcoord = [] for key,val in bh.items(): - if key=="z2": - exxx("z2 not yet supported; please send input file to Joachim") coord = FlowODict() s1 = val[:24] s2 = val[24:] coord["name"] = s1.strip() coord["unit"] = s2.strip() - out["Coord"][key] = coord + if key[:1]=="z": + zcoord.append( coord ) + else: + out["Coord"][key] = coord +if len(coord)>0: + out["Coord"]["z"] = zcoord ita, bh = readBlock(6, ta, ita) for key,val in bh.items(): - out["History"].append( key ) - out["History"].append( "old filename: "+oldname ) - out["History"].append( "%s-%s: converted %s.i96 -> .yda" % (PROGNAME, VERSION, stem ) ) + out["History"].append( key.rstrip(' \t\r\n\0') ) +out["History"].append( "old filename: "+oldname ) +out["History"].append( "%s-%s: converted %s.i96 -> .yda" % (PROGNAME, VERSION, stem ) ) for i in range(3): m = re.match(r'\(.+\)', ta[ita]) -- GitLab