Example #1
0
 def data(self):
     if self._data is None:
         buf = BytesIO(self.storage.load(self._path))
         with TextIOWrapper(buf) as data:
             from sourmash_lib import signature
             self._data = signature.load_one_signature(data)
     return self._data
Example #2
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
Example #3
0
def main():
    p = argparse.ArgumentParser()
    p.add_argument('benchmark_sig')
    p.add_argument('signature_location')
    p.add_argument('overhead_values', nargs='+', type=float)
    p.add_argument('-o', '--output', default=None)
    args = p.parse_args()

    # load reference sig
    benchmark_sig = signature.load_one_signature(args.benchmark_sig)
    print('loaded benchmark {}'.format(args.benchmark_sig), file=sys.stderr)
    benchmark = benchmark_sig.minhash

    # load frontier sigs
    mh_list = []
    for overhead in args.overhead_values:
        overhead = float(overhead)
        p = int(overhead * 100)
        filename = 'frontier.p{:02d}.sig'.format(p)
        filename = os.path.join(args.signature_location, filename)
        with open(filename) as fp:
            sig = signature.load_one_signature(fp)
            mh_list.append((overhead, sig.minhash))
            print('loaded {}'.format(filename), file=sys.stderr)

    print(len(mh_list))

    mh_list.sort()

    fieldnames = ['overhead', 'containment', 'similarity']
    outfp = sys.stdout
    if args.output:
        outfp = open(args.output, 'w')
    w = csv.DictWriter(outfp, fieldnames)
    w.writeheader()

    for (overhead, mh) in mh_list:
        containment = benchmark.contained_by(mh)
        similarity = benchmark.similarity(mh)
        w.writerow(
            dict(overhead=overhead,
                 containment=containment,
                 similarity=similarity))
Example #4
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)
Example #5
0
def test_load_one_fail_nosig(track_abundance):
    x = save_signatures([])
    print((x, ))
    with pytest.raises(ValueError):
        y = load_one_signature(x)