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)
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)
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
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
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)
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
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)
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
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)
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
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
def save(self, filename): with open(filename, 'w') as fp: signature.save_signatures([self.data], fp)
def test_load_one_fail_nosig(track_abundance): x = save_signatures([]) print((x, )) with pytest.raises(ValueError): y = load_one_signature(x)