Ejemplo n.º 1
0
    def test_wrong_version_1(self):
        ia = DimSweep("a", 1, unit="")
        d1 = DataBlock()
        d1.b = hfarray([2], dims=(ia, ))
        d2 = DataBlock()
        d2.b = hfarray([3], dims=(ia, ))
        fname = testpath / "testdata/hdf5/v02/savetest/res_1.hdf5"

        with hdf5context(fname, mode="w") as fil:
            save_hdf5_v01(d1, fil)
            self.assertRaises(Exception, append_hdf5, d2, fil)
#            append_hdf5(d2, fil)
        fname.unlink()
Ejemplo n.º 2
0
 def test_cant_append(self):
     i1 = DimSweep("a", 1, unit="s", outputformat="")
     i2 = DimSweep("INDEX", 2, unit="s")
     iexpand = DimRep("INDEX", 1, unit="s", outputformat="")
     d1 = DataBlock()
     d1.b = hfarray([2], dims=(i1, ), outputformat="")
     d1.c = hfarray(3)
     d2 = DataBlock()
     d2.b = hfarray([3], dims=(i1, ))
     fname = testpath / "testdata/hdf5/v02/savetest/res_1.hdf5"
     with hdf5context(fname, mode="w") as fil:
         savefun(d1, fil, expandable=True, expanddim=iexpand)
         self.assertRaises(ValueError, append_hdf5, d2, fil)
     fname.unlink()
Ejemplo n.º 3
0
 def test_8(self):
     d = DataBlock()
     d.b = hfarray([2], dims=(DimSweep("a", 1), ))
     fname = testpath / "testdata/hdf5/v02/savetest/res_8.hdf5"
     with h5py.File(fname, mode="w") as fil:
         self.savefun[0](d, fil)
     fname.unlink()
Ejemplo n.º 4
0
 def setUp(self):
     self.d = DataBlock()
     self.fi = DimSweep("Freq", 3)
     self.gi = DimSweep("g", 4)
     self.hi = DimSweep("h", 4)
     self.d["Vds"] = hfarray([1, 2, 3], dims=(self.fi, ))
     self.d["Id"] = hfarray([1, 2, 3, 4], dims=(self.gi, ))
Ejemplo n.º 5
0
    def test_1(self):
        d = DataBlock()
        fi = DimSweep("Freq[Hz]", 3)
        gi = DimSweep("g", 4)
        dims = (fi, )
        d["a"] = hfarray([1, 2, 3], dims=dims, outputformat="%.5f", unit="V")
        d["b"] = hfarray([10, 20, 30],
                         dims=dims,
                         outputformat="%.7f",
                         unit="A")
        d["c"] = hfarray([10, 20, 30, 40],
                         dims=(gi, ),
                         outputformat="%.7f",
                         unit="A")

        w = d.filter(d["Freq[Hz]"] <= 1)
        self.assertEqual(id(d.comments), id(w.comments))
        self.assertEqual(w["Freq[Hz]"].dims, (DimSweep("Freq[Hz]", 2), ))
        self.assertEqual(w.a.dims, (DimSweep("Freq[Hz]", 2), ))
        self.assertEqual(w.b.dims, (DimSweep("Freq[Hz]", 2), ))
        self.assertEqual(w.c.dims, (DimSweep("g", 4), ))

        self.assertAllclose(w["Freq[Hz]"], [0, 1])
        self.assertAllclose(w.a, [1, 2])
        self.assertAllclose(w.b, [10, 20])
        self.assertAllclose(w.c, [10, 20, 30, 40])
        self.assertEqual(w.a.unit, "V")
        self.assertEqual(w.b.unit, "A")
        self.assertEqual(w.c.unit, "A")
Ejemplo n.º 6
0
 def test_copy_2(self):
     d = DataBlock()
     fi = DimSweep("Freq[Hz]", 3)
     dims = (fi, )
     d.comments = Comments(["Hej=10"])
     d["a"] = hfarray([1, 2, 3], dims=dims, outputformat="%.5f", unit="V")
     d["b"] = hfarray([10, 20, 30],
                      dims=dims,
                      outputformat="%.7f",
                      unit="A")
     c = d.copy()
     self.assertEqual(c.allvarnames, d.allvarnames)
     self.assertEqual(c.vardata.keys(), d.vardata.keys())
     self.assertEqual(c.ivardata.keys(), d.ivardata.keys())
     self.assertAllclose(c["Freq[Hz]"], d["Freq[Hz]"])
     self.assertAllclose(d.a, [1, 2, 3])
     self.assertAllclose(c.a, d.a)
     self.assertAllclose(c.b, d.b)
     self.assertFalse(id(d.comments) == id(c.comments))
     c.a[0] = 7
     c.b[0] = 7
     self.assertAllclose(c.a, [7, 2, 3])
     self.assertAllclose(c.b, [7, 20, 30])
     self.assertAllclose(d.a, [1, 2, 3])
     self.assertAllclose(d.b, [10, 20, 30])
Ejemplo n.º 7
0
 def test_error(self):
     fi = DimSweep("freq", [
         1,
     ])
     db = DataBlock()
     self.assertRaises(ValueError, dset.subset_datablock_by_dims, db,
                       (fi, fi))
Ejemplo n.º 8
0
    def test_5(self):
        d = DataBlock()
        d.comments = Comments([
            "Vgs=13", "Ig=14", "Datetime=2011-10-11 20:11:02", "Vds=-13",
            "Calibration=SOLT"
        ])
        fi = DimSweep("Freq", 3)
        gi = DimSweep("g", 4)
        d["Vds"] = hfarray([1, 2, 3], dims=(fi, ))
        d["Id"] = hfarray([1, 2, 3, 4], dims=(gi, ))
        d.comments.property["Ig"].unit = "mA"
        d.guess_units()
        d.values_from_property()

        self.assertEqual(d.Vds.unit, "V")
        self.assertAllclose(d.Vds, [1, 2, 3])
        self.assertEqual(d.Id.unit, "A")
        self.assertAllclose(d.Id, [1, 2, 3, 4])
        self.assertEqual(d.Freq.unit, "Hz")
        self.assertEqual(d.comments.property["Vgs"].unit, "V")
        self.assertEqual(d.comments.property["Ig"].unit, "mA")

        self.assertEqual(d.Ig, 14)
        self.assertEqual(d.Vgs, 13)
        self.assertEqual(d.Ig.unit, "mA")
        self.assertEqual(d.Vgs.unit, "V")
        self.assertTrue("Datetime" in d.allvarnames)
Ejemplo n.º 9
0
 def setUp(self):
     self.d = DataBlock()
     self.d.P = VA([0.5, -.3, .5])
     Sdims = (DimMatrix_i("i", 2), DimMatrix_j("j", 2))
     self.d.S = VA([[11, 12], [21, 22]], dims=Sdims)
     Wdims = (DimSweep("g", 1), DimMatrix_i("i", 2), DimMatrix_j("j", 2))
     self.d.W = VA([[[11, 12], [21, 22]]], dims=Wdims)
Ejemplo n.º 10
0
 def test_none(self):
     db = DataBlock()
     db.x = hfarray(1)
     fname = testpath / "testdata/hdf5/v02/slask.hdf5"
     savefun(db, fname)
     db = readfun(fname)
     self.assertIsNone(db.blockname)
     fname.unlink()
Ejemplo n.º 11
0
def db_iterator(indb, fmt_block_generator):
    datablock = {}
    used_ivars = set()
    for vname in indb.vardata.keys():
        if ismatrix(indb.vardata[vname]):
            dimsnames = get_dims_names(*indb[vname].dims)[:-2]
            names = get_dims_names(*indb[vname].dims)[-2:]
            used_ivars = used_ivars.union(names)
        else:
            dimsnames = get_dims_names(*indb[vname].dims)

        q = datablock.setdefault(dimsnames, DataBlock())
        if q.comments is None:
            q.comments = indb.comments
        q[vname] = indb[vname]
        q[vname].outputformat = indb[vname].outputformat

    #
    #Collect dangling ivars
    #
    for names in datablock.keys():
        used_ivars = used_ivars.union(names)

    for vname in set(indb.ivardata).difference(used_ivars):
        q = datablock.setdefault((vname, ), DataBlock())
        if q.comments is None:
            q.comments = Comments()
        q[vname] = indb.ivardata[vname]

    first = True

    #Handle block with scalar data first
    dbs = []
    if tuple() in datablock:
        dbs.append(datablock.pop(tuple()))
    for v in datablock.values():
        dbs.append(v)

    for db in dbs:
        for block_content in make_block_iterator(db, first):
            if first:
                first = False
            else:
                yield []
            for rad in fmt_block_generator(*block_content):
                yield rad
Ejemplo n.º 12
0
 def test_4(self):
     d = DataBlock()
     d.comments = Comments(["Hej=10", "Svejs=11"])
     dim = DimSweep("f", 3, outputformat="%.1f")
     d.freq = dim
     fname = testpath / "testdata/hdf5/v02/savetest/res_4.hdf5"
     self.savefun[0](d, fname)
     fname.unlink()
Ejemplo n.º 13
0
 def test_1(self):
     i1 = DimSweep("a", 1, unit="s", outputformat="")
     i2 = DimSweep("INDEX", 2)
     d1 = DataBlock()
     d1.b = hfarray([2], dims=(i1, ), outputformat="")
     d2 = DataBlock()
     d2.b = hfarray([3], dims=(i1, ))
     fname = testpath / "testdata/hdf5/v02/savetest/res_1.hdf5"
     with hdf5context(fname, mode="w") as fil:
         savefun(d1, fil, expandable=True)
         append_hdf5(d2, fil)
     d = readfun(fname)
     self.assertAllclose(hfarray([[2, 3]], dims=(i1, i2)), d.b)
     self.assertEqual(d.ivardata["a"].unit, "s")
     self.assertEqual(d.ivardata["a"].outputformat, "%d")
     self.assertEqual(d.b.outputformat, "%d")
     fname.unlink()
Ejemplo n.º 14
0
 def test_2(self):
     d = DataBlock()
     d.comments = Comments(["Hej=10"])
     #        import pdb;pdb.set_trace()
     d.b = hfarray([2], dims=(DimSweep("a", 1), ))
     fname = testpath / "testdata/hdf5/v02/savetest/res_2.hdf5"
     self.savefun[0](d, fname)
     fname.unlink()
Ejemplo n.º 15
0
 def test_normalize_names_3(self):
     db = DataBlock()
     db.b = hfarray(1)
     db["a1/a2 raw"] = hfarray(1)
     db["a12"] = hfarray(2)
     res = common.normalize_names(db)
     self.assertTrue("a1/a2 raw" in res.vardata)
     self.assertTrue("a12" in res.vardata)
Ejemplo n.º 16
0
    def test1(self):
        a = DataBlock()
        a.i = DimSweep("i", [1, 2, 3])

        def funk(a):
            dims = (DimSweep("i", [1]), DimSweep("j", [1]))
            a.i = hfarray([[1]], dims=dims)

        self.assertRaises(AttributeError, funk, a)
Ejemplo n.º 17
0
 def test_9(self):
     d = DataBlock()
     d.comments = Comments(["Hej=10"])
     d.b = hfarray([2], dims=(DimSweep("a", 1), ), unit="V")
     fname = testpath / "testdata/hdf5/v01/savetest/res_9.hdf5"
     self.savefun[0](d, fname)
     d2 = readfun(fname)
     self.assertEqual(d2.b.unit, "V")
     fname.unlink()
Ejemplo n.º 18
0
 def setUp(self):
     self.db = db = DataBlock()
     Sdims = (DimRep("freq", [1, 2]), DimRep("r", [1]), DimMatrix_i("i", 2),
              DimMatrix_j("j", 2))
     db.S = hfarray(np.array([[11, 12], [21, 22]])[None, None, :, :] *
                    np.array([[10], [20]])[..., None, None],
                    dims=Sdims)
     db.V = hfarray([1.23], Sdims[1:2])
     db.Y = hfarray([1.23], (DimRep("k", [1]), ))
Ejemplo n.º 19
0
 def test_10(self):
     d = DataBlock()
     d.blockname = "Foo"
     d.b = hfarray([2], dims=(DimSweep("a", 1), ), unit="V")
     fname = testpath / "testdata/hdf5/v01/savetest/res_10.hdf5"
     self.savefun[0](d, fname)
     d2 = readfun(fname)
     self.assertEqual(d2.blockname, "Foo")
     fname.unlink()
Ejemplo n.º 20
0
 def test_2(self):
     d = DataBlock()
     fi = DimSweep("Freq[Hz]", 3)
     gi = DimSweep("g", 4)
     dims = (fi, gi)
     d["a"] = hfarray([[1, 2, 3]] * 4,
                      dims=dims,
                      outputformat="%.5f",
                      unit="V")
     self.assertRaises(ValueError, d.filter, d.a < 2)
Ejemplo n.º 21
0
 def test_setitem_1(self):
     a = DataBlock()
     a.l = DimSweep("l", [.1, .2, .3])
     self.assertAllclose(a.l, [.1, .2, .3])
     self.assertAllclose(a.xvalue, [.1, .2, .3])
     self.assertEqual(a.xname, "l")
     a.w = DimSweep("w", [1.1, 1.2, 1.3])
     self.assertAllclose(a.w, [1.1, 1.2, 1.3])
     self.assertAllclose(a.xvalue, [.1, .2, .3])
     self.assertEqual(a.xname, "l")
Ejemplo n.º 22
0
def read_hdf5_handle(filehandle, **kw):
    if isinstance(filehandle, h5py.File):
        db = DataBlock()
        for k in filehandle:
            if "dimtype" not in filehandle[k].attrs:
                db[k] = getvar(filehandle, k)
        db.comments = Comments()
        return db
    else:
        raise IOError("filehandle should be a h5py File, is: %r" % filehandle)
Ejemplo n.º 23
0
def proc_info(info, f, data, fn, noisedata):
    info_list = info.upper().split()
    if len(info_list) == 5:
        info = freq_mult, twoporttype, datatype, rtype, z0 = info_list
    elif len(info_list) == 3:
        info = freq_mult, twoporttype, datatype = info_list
        z0 = 1.
    else:
        msg = ("# format should only have 5 values this one has %d" %
               len(info_list))
        raise TouchstoneError(msg)
    z0 = float(z0)
    f = f * freqmultdict[freq_mult]
    if fn is not None:
        fn = fn * freqmultdict[freq_mult]

    convfunc = dict(RI=re_im_to_complex,
                    DB=dB_angle_to_complex,
                    MA=mag_angle_to_complex)

    if datatype not in convfunc:
        pars = datatype
        msg = "Unknown dataformat: %s, valid formats: RI, DB, MAG" % pars
        raise TouchstoneError(msg)

    out = np.empty((data.shape[0], data.shape[1] // 2), dtype=np.complex128)

    out[...] = convfunc[datatype](data[:, ::2], data[:, 1::2])
    if out.shape[1] == 1:
        out.shape = (out.shape[0], 1, 1)
    elif out.shape[1] == 4:
        out.shape = (out.shape[0], 2, 2)
        out = out.transpose(0, 2, 1)
    else:
        N = int(sqrt(out.shape[1]))
        out.shape = (out.shape[0], N, N)

    dims = (DimSweep("freq", f, unit="Hz"), )
    if fn is not None and len(f) == len(fn) and np.allclose(f, fn):
        noisedims = dims
    elif fn is None:
        noisedims = None
    else:
        noisedims = (DimSweep("freqn", fn, unit="Hz"), )
    out = make_matrix(out, dims)
    f = hfarray(f, dims)
    db = DataBlock()
    db[info[1]] = out
    if noisedata is not None:
        db.Rn = hfarray(noisedata[..., -1], dims=noisedims) * z0
        db.Fmin = 10**(hfarray(noisedata[..., 0], dims=noisedims) / 10)
        db.Gopt = hfarray(convfunc[datatype](noisedata[:, 1], noisedata[:, 2]),
                          dims=noisedims)
    db.Z0 = hfarray(z0, unit="Ohm")
    return db
Ejemplo n.º 24
0
def merge_blocks(blocks, hyper=False, indexed=False):
    db = DataBlock()
    dimpartialgroups = OrderedDict()

    for b in blocks:
        parts = get_partials(b)
        partgroup = dimpartialgroups.setdefault(tuple(parts.keys()), {})
        for k, v in parts.items():
            partgroup.setdefault(k, []).extend(v)

    for idx, dims in enumerate(dimpartialgroups.values(), 1):
        for k, v in dims.items():
            dims = (DimSweep("INDEX%s" % idx, len(v)), )
            db[k] = hfarray([x.data[0] for x in v], dims=dims, unit=v[0].unit)

    varnames = set()
    for b in blocks:
        for k, v in b.ivardata.items():
            if k not in db:
                db[k] = v
        for k in b.vardata.keys():
            varnames.add(k)

    for vname in varnames:
        v = []
        for b in blocks:
            if vname not in b:
                continue
            partials = get_partials(b)
            v.append(b[vname])
        if v:
            k = tuple(partials.keys())
            if k:
                ri = (db[tuple(dimpartialgroups[k].keys())[0]].dims[0], )
            else:
                ri = tuple()
            value = hfarray(v, dims=ri + v[0].dims, unit=v[0].unit)
            if v[0].dims and isinstance(v[0].dims[0], DimSweep):
                value = value.reorder_dimensions(v[0].dims[0])
            db[vname] = value
    cmt = Comments()
    for block in blocks:
        if block.comments:
            cmt.extend(block.comments)
    db.comments = cmt
    db.blockname = blocks[0].blockname

    if hyper:
        for vnames in dimpartialgroups.keys():
            if vnames:
                hyperindex = db[vnames[0]].dims[0]
                db = db.hyper(vnames, hyperindex, all=True)
    db = db.squeeze()
    return db
Ejemplo n.º 25
0
 def test_2(self):
     d = DataBlock()
     fi = DimSweep("Freq[Hz]", 3)
     gi = DimSweep("P[W]", 3)
     dims = (fi, )
     dims2 = (fi, gi)
     dims3 = (gi, )
     d["f"] = hfarray([[1, 2, 3]] * 3, dims=dims2)
     d["P[W]"] = hfarray([10, 20, 30], dims=dims)
     self.assertEqual(d.allvarnames, ["Freq[Hz]", "P[W]", "f"])
     self.assertAllclose(d["P[W]"], [10, 20, 30])
Ejemplo n.º 26
0
 def setUp(self):
     self.db = db = DataBlock()
     fi = DimSweep("freq", [1e9, 2e9, 3e9, 4e9], unit="Hz")
     db.y = hfarray([1, 2, 3, 4], dims=(fi, ), unit="V")
     db.z = hfarray([1, 2, 3, 4 + 0j], dims=(fi, ), unit="Ohm")
     self.fig = plt.figure(1)
     self.ax = plt.subplot(111, projection=self.proj)
     self.lines = plt.plot(self.db.y)
     self.outpath = p = path(basepath / "savetest")
     if not p.exists():  # pragma: no cover
         p.makedirs()
Ejemplo n.º 27
0
 def test_5(self):
     d = DataBlock()
     d.comments = Comments(["Hej=10", "Svejs=11"])
     dim = DimSweep("f", 3, outputformat="%.1f")
     d.freq = dim
     d.date = hfarray("2012-08-13 08:03:01", dtype="datetime64[us]")
     fname = testpath / "testdata/hdf5/v02/savetest/res_5.hdf5"
     self.savefun[0](d, fname)
     d2 = readfun(fname)
     fname.unlink()
     self.assertEqual(d2.date, d.date)
Ejemplo n.º 28
0
 def test_intersection_2(self):
     d = DataBlock()
     fi = DimSweep("Freq[Hz]", [10, 20, 30, 40, 50])
     gi = DimSweep("g", 4)
     dims = (fi, gi)
     d["a"] = hfarray([[1, 2, 3, 4]] * 5,
                      dims=dims,
                      outputformat="%.5f",
                      unit="V")
     x = DimSweep("Freq[Hz]", [20, 40])
     dres = d.filter(hfarray(x))
     self.assertAllclose(dres["Freq[Hz]"], [20, 40])
Ejemplo n.º 29
0
 def test_1(self):
     d = DataBlock()
     d.b = hfarray([2], dims=(DimSweep("a", 1), ))
     f1 = testpath / "testdata/sp-data/savetest/res_1.txt"
     f2 = testpath / "testdata/sp-data/savetest/facit_1.txt"
     hftools.file_formats.spdata.save_spdata(d, f1)
     with open(f1) as resfil:
         with open(f2) as facitfil:
             for idx, (rad1, rad2) in enumerate(zip(resfil, facitfil)):
                 msg = "\nFailed on line %d\n  result: %r\n  facit: %r"
                 args = (idx + 1, rad1, rad2)
                 self.assertEqual(rad1, rad2, msg=msg % args)
Ejemplo n.º 30
0
    def test_10(self):
        d = DataBlock()
        d.comments = Comments(["Hej=10"])
        #        import pdb;pdb.set_trace()
        d.b = hfarray([2], dims=(DimSweep("a", 1), ), unit="V")
        d.b.outputformat = ""
        fname = testpath / "testdata/hdf5/v02/savetest/res_10.hdf5"
        self.savefun[0](d, fname)
        d2 = readfun(fname)
        self.assertEqual(d2.b.outputformat, "%d")

        fname.unlink()