Esempio n. 1
0
def save_touchstone(db, filename):
    """Write a Datablock to a touchstone-format file with name filename.
    """
    with open(filename, "w") as fil:
        for comment in db.comments.fullcomments:
            fil.write("!" + comment)
            fil.write("\n")
        for k, v in db.vardata.items():
            if v.shape == ():
                fil.write("!%s: %s\n" % (k, v.outputformat % v))
#            fil.write("\t".join(rad))
        fil.write("#HZ S RI R 50\n")


        header, columns = make_col_from_matrix([db.S.dims[0].name, "S"], [hfarray(db.S.dims[0]), db.S],
                                               "%s[%s,%s]", fortranorder=True)
        fmts = [x.outputformat for x in columns]

        for row in zip(*columns):
            out = []
            for elem, fmt in zip(row, fmts):
                if iscomplexobj(elem):
                    out.append(fmt % elem.real)
                    out.append(fmt % elem.imag)
                else:
                    out.append(fmt % elem)
            fil.write("\t".join(out))
            fil.write("\n")
Esempio n. 2
0
 def test_make_col_from_matrix_2(self):
     header = ["S"]
     dims = (DimSweep("f", 1), DimMatrix_i("i", 2), DimMatrix_j("j", 2), )
     columns = [hfarray([[[11, 12], [21, 22]]], dims=dims)]
     res = common.make_col_from_matrix(header, columns, "%s%s%s",
                                       fortranorder=True)
     self.assertEqual(res, (["S11", "S21", "S12", "S22"],
                            [11, 21, 12, 22]))
Esempio n. 3
0
 def test_make_col_from_matrix_1(self):
     header = ["S", "P"]
     dims = (DimSweep("f", 1), DimMatrix_i("i", 2), DimMatrix_j("j", 2), )
     columns = [hfarray([[[11, 12], [21, 22]]], dims=dims),
                hfarray([10], dims=dims[:1])]
     res = common.make_col_from_matrix(header, columns, "%s%s%s")
     self.assertEqual(res, (["S11", "S12", "S21", "S22", "P"],
                            [11, 12, 21, 22, 10]))
Esempio n. 4
0
 def test_make_col_from_matrix_2(self):
     header = ["S"]
     dims = (
         DimSweep("f", 1),
         DimMatrix_i("i", 2),
         DimMatrix_j("j", 2),
     )
     columns = [hfarray([[[11, 12], [21, 22]]], dims=dims)]
     res = common.make_col_from_matrix(header,
                                       columns,
                                       "%s%s%s",
                                       fortranorder=True)
     self.assertEqual(res, (["S11", "S21", "S12", "S22"], [11, 21, 12, 22]))
Esempio n. 5
0
 def test_make_col_from_matrix_1(self):
     header = ["S", "P"]
     dims = (
         DimSweep("f", 1),
         DimMatrix_i("i", 2),
         DimMatrix_j("j", 2),
     )
     columns = [
         hfarray([[[11, 12], [21, 22]]], dims=dims),
         hfarray([10], dims=dims[:1])
     ]
     res = common.make_col_from_matrix(header, columns, "%s%s%s")
     self.assertEqual(
         res, (["S11", "S12", "S21", "S22", "P"], [11, 12, 21, 22, 10]))
Esempio n. 6
0
def format_sp_block(sweepvars, header, fmts, columns, blockname, comments):
    for comment in comments.fullcomments:
        yield ["!" + comment.lstrip("!")]
    for iname, fmt, value in sweepvars:
        yield [("!@%s=" + fmt) % (iname, value)]
    header, columns = make_col_from_matrix(header, columns, "%s%s%s")
    outheader = format_complex_header(header, columns, "%s", "Re(%s)", "Im(%s)", padheader=True)

    yield outheader
    fmts = [x.outputformat for x in columns]
    for row in zip(*columns):
        out = []
        for elem, fmt in zip(row, fmts):
            out.extend(format_elem(fmt, elem))
        yield out
Esempio n. 7
0
def format_sp_block(sweepvars, header, fmts, columns, blockname, comments):
    for comment in comments.fullcomments:
        yield ["!" + comment.lstrip("!")]
    for iname, fmt, value in sweepvars:
        yield [("!@%s=" + fmt) % (iname, value)]
    header, columns = make_col_from_matrix(header, columns, "%s%s%s")
    outheader = format_complex_header(header, columns, "%s", "Re(%s)",
                                      "Im(%s)")

    yield outheader
    fmts = [x.outputformat for x in columns]
    for row in zip(*columns):
        out = []
        for elem, fmt in zip(row, fmts):
            out.extend(format_elem(fmt, elem))
        yield out
Esempio n. 8
0
def format_touchstone_block(sweepvars, header, fmts,
                            columns, blockname, comments):
    for comment in comments.fullcomments:
        yield ["!" + comment]
    yield [comments.property.get("INFO", ["#HZ S RI R 50"])[0]]
    header, columns = make_col_from_matrix(header, columns,
                                           "%s[%s,%s]", fortranorder=True)
    fmts = [x.outputformat for x in columns]
    for row in zip(*columns):
        out = []
        for elem, fmt in zip(row, fmts):
            if iscomplexobj(elem):
                out.append(fmt % elem.real)
                out.append(fmt % elem.imag)
            else:
                out.append(fmt % elem)
        yield out
Esempio n. 9
0
def format_touchstone_block(sweepvars, header, fmts, columns, blockname,
                            comments):
    for comment in comments.fullcomments:
        yield ["!" + comment]
    yield [comments.property.get("INFO", ["#HZ S RI R 50"])[0]]
    header, columns = make_col_from_matrix(header,
                                           columns,
                                           "%s[%s,%s]",
                                           fortranorder=True)
    fmts = [x.outputformat for x in columns]
    for row in zip(*columns):
        out = []
        for elem, fmt in zip(row, fmts):
            if iscomplexobj(elem):
                out.append(fmt % elem.real)
                out.append(fmt % elem.imag)
            else:
                out.append(fmt % elem)
        yield out
Esempio n. 10
0
def save_touchstone(db, filename, sep="\t", format="RI"):
    """Write a Datablock to a touchstone-format file with name filename.
    """
    fmt = format.upper()

    if fmt not in ["RI", "MA", "DB"]:
        raise TouchstoneError(f'Format {fmt} unknown, use "RI", "MA" or "DB"')
    with open(filename, "w") as fil:
        for comment in db.comments.fullcomments:
            print(f"!{comment}", file=fil)
        for k, v in db.vardata.items():
            if v.shape == ():
                print(f"!{k}: {v.outputformat}", file=fil)
        print(f"#HZ S {fmt} R 50", file=fil)

        header, columns = make_col_from_matrix([db.S.dims[0].name, "S"],
                                               [hfarray(db.S.dims[0]), db.S],
                                               "%s[%s,%s]",
                                               fortranorder=True)
        fmts = [x.outputformat for x in columns]
        out = []
        for row in zip(*columns):
            rowout = []
            for elem, numfmt in zip(row, fmts):
                if iscomplexobj(elem):
                    if fmt == "RI":
                        rowout.append(numfmt % elem.real)
                        rowout.append(numfmt % elem.imag)
                    elif fmt == "MA":
                        rowout.append(numfmt % abs(elem))
                        rowout.append(numfmt % np.angle(elem, deg=True))
                    elif fmt == "DB":
                        rowout.append(numfmt % dB(elem))
                        rowout.append(numfmt % np.angle(elem, deg=True))
                    else:
                        raise TouchstoneError(
                            "Format error unknown format {fmt}")
                else:
                    rowout.append(numfmt % elem)
            out.append(rowout)
        for rad in pad_columns(out):
            print(*rad, sep=sep, file=fil)
Esempio n. 11
0
def save_touchstone(db, filename, sep="\t", format="RI"):
    """Write a Datablock to a touchstone-format file with name filename.
    """
    fmt = format.upper()
 
    if fmt not in ["RI", "MA", "DB"]:
        raise TouchstoneError(f'Format {fmt} unknown, use "RI", "MA" or "DB"')
    with open(filename, "w") as fil:
        for comment in db.comments.fullcomments:
            print(f"!{comment}", file=fil)
        for k, v in db.vardata.items():
            if v.shape == ():
                print(f"!{k}: {v.outputformat}", file=fil)
        print(f"#HZ S {fmt} R 50", file=fil)


        header, columns = make_col_from_matrix([db.S.dims[0].name, "S"], [hfarray(db.S.dims[0]), db.S],
                                               "%s[%s,%s]", fortranorder=True)
        fmts = [x.outputformat for x in columns]
        out = []
        for row in zip(*columns):
            rowout = []
            for elem, numfmt in zip(row, fmts):
                if iscomplexobj(elem):
                    if fmt == "RI":
                        rowout.append(numfmt % elem.real)
                        rowout.append(numfmt % elem.imag)
                    elif fmt == "MA":
                        rowout.append(numfmt % abs(elem))
                        rowout.append(numfmt % np.angle(elem, deg=True))
                    elif fmt == "DB":
                        rowout.append(numfmt % dB(elem))
                        rowout.append(numfmt % np.angle(elem, deg=True))
                    else:
                        raise TouchstoneError("Format error unknown format {fmt}")
                else:
                    rowout.append(numfmt % elem)
            out.append(rowout)
        for rad in pad_columns(out):
            print(*rad, sep=sep, file=fil)