Beispiel #1
0
    def save(self, filename):
        from sourmash_lib import signature

        # this is here only for triggering the property load
        # before we reopen the file (and overwrite the previous
        # content...)
        self.data

        with open(filename, 'w') as fp:
            signature.save_signatures([self.data], fp)
Beispiel #2
0
def main():
    p = argparse.ArgumentParser()
    p.add_argument('sigfile')
    p.add_argument('--scaled', default=10000, type=int)
    args = p.parse_args()

    sigs = list(signature.load_signatures(args.sigfile))
    print('loaded {} signatures'.format(len(sigs)), file=sys.stderr)

    dsout = []

    for sig in sigs:
        sig.minhash = sig.minhash.downsample_scaled(args.scaled)
        dsout.append(sig)
    signature.save_signatures(dsout, sys.stdout)
Beispiel #3
0
def test_load_one_succeed(track_abundance):
    e1 = sourmash_lib.MinHash(n=1, ksize=20, track_abundance=track_abundance)
    sig1 = SourmashSignature(e1)

    x = save_signatures([sig1])

    y = load_one_signature(x)
    assert sig1 == y
Beispiel #4
0
def test_load_minified(track_abundance):
    sigfile = utils.get_test_data('genome-s10+s11.sig')
    sigs = load_signatures(sigfile)

    minified = save_signatures(sigs)
    with open(sigfile, 'r') as f:
        orig_file = f.read()
    assert len(minified) < len(orig_file)
    assert '\n' not in minified
Beispiel #5
0
def main():
    parser = argparse.ArgumentParser()
    parser.add_argument('sigfiles', nargs='+')
    parser.add_argument('--name', type=str, default='')
    args = parser.parse_args()

    assert args.name

    for sigfile in args.sigfiles:
        print('setting name on "%s" to "%s"' % (sigfile, args.name))

        with open(sigfile, 'rt') as fp:
            sigs = sig.load_signatures(fp)

        for s in sigs:
            s.d['name'] = args.name

        outputname = os.path.basename(sigfile)
        with open(outputname, 'wt') as fp:
            sig.save_signatures(sigs, fp)
Beispiel #6
0
def test_roundtrip(track_abundance):
    e = sourmash_lib.MinHash(n=1, ksize=20, track_abundance=track_abundance)
    e.add("AT" * 10)
    sig = SourmashSignature(e)
    s = save_signatures([sig])
    siglist = list(load_signatures(s))
    sig2 = siglist[0]
    e2 = sig2.minhash

    assert sig.similarity(sig2) == 1.0
    assert sig2.similarity(sig) == 1.0
Beispiel #7
0
def test_load_one_fail_multisig(track_abundance):
    e1 = sourmash_lib.MinHash(n=1, ksize=20, track_abundance=track_abundance)
    sig1 = SourmashSignature(e1)

    e2 = sourmash_lib.MinHash(n=1, ksize=20, track_abundance=track_abundance)
    sig2 = SourmashSignature(e2)

    x = save_signatures([sig1, sig2])

    with pytest.raises(ValueError):
        y = load_one_signature(x)
Beispiel #8
0
def test_roundtrip_empty(track_abundance):
    # edge case, but: empty minhash? :)
    e = sourmash_lib.MinHash(n=1, ksize=20, track_abundance=track_abundance)

    sig = SourmashSignature(e)
    s = save_signatures([sig])
    siglist = list(load_signatures(s))
    sig2 = siglist[0]
    e2 = sig2.minhash

    assert sig.similarity(sig2) == 0
    assert sig2.similarity(sig) == 0
Beispiel #9
0
def test_save_minified(track_abundance):
    e1 = sourmash_lib.MinHash(n=1, ksize=20, track_abundance=track_abundance)
    sig1 = SourmashSignature(e1, name="foo")

    e2 = sourmash_lib.MinHash(n=1, ksize=25, track_abundance=track_abundance)
    sig2 = SourmashSignature(e2, name="bar baz")

    x = save_signatures([sig1, sig2])
    assert '\n' not in x
    assert len(x.split('\n')) == 1

    y = list(load_signatures(x))
    assert len(y) == 2
    assert any(sig.name() == 'foo' for sig in y)
    assert any(sig.name() == 'bar baz' for sig in y)
Beispiel #10
0
def test_save_load_multisig(track_abundance):
    e1 = sourmash_lib.MinHash(n=1, ksize=20, track_abundance=track_abundance)
    sig1 = SourmashSignature(e1)

    e2 = sourmash_lib.MinHash(n=1, ksize=25, track_abundance=track_abundance)
    sig2 = SourmashSignature(e2)

    x = save_signatures([sig1, sig2])
    y = list(load_signatures(x))

    print(x)

    assert len(y) == 2
    assert sig1 in y  # order not guaranteed, note.
    assert sig2 in y
    assert sig1 != sig2
Beispiel #11
0
def test_roundtrip_max_hash(track_abundance):
    e = sourmash_lib.MinHash(n=0,
                             ksize=20,
                             track_abundance=track_abundance,
                             max_hash=10)
    e.add_hash(5)
    sig = SourmashSignature(e)
    s = save_signatures([sig])
    siglist = list(load_signatures(s))
    sig2 = siglist[0]
    e2 = sig2.minhash

    assert e.max_hash == e2.max_hash

    assert sig.similarity(sig2) == 1.0
    assert sig2.similarity(sig) == 1.0
Beispiel #12
0
 def save(self, filename):
     with open(filename, 'w') as fp:
         signature.save_signatures([self.data], fp)
Beispiel #13
0
def test_load_one_fail_nosig(track_abundance):
    x = save_signatures([])
    print((x, ))
    with pytest.raises(ValueError):
        y = load_one_signature(x)