IP Library Granted Patent US 10,965,467
Granted Patent B1
US 10,965,467 · App. 17/069,471 · Granted Mar 30, 2021

Reversible hash generators for pairs of complementary sequences

Inventors: Jonathan Darrel Coker (Rochester, MN); Travis Roger Oenning (Rochester, MN); Balamurugan Anandan (Los Angeles, CA)
Assignee: OmniTier Storage, Inc.
H04L9/3236G06N3/123H04L9/0866
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,965,467
App. No.
17/069,471
Granted
Mar 30, 2021
Kind
B1
Abstract

A first string, having a first string value, that is associated with a sample set of material is received where a second string, having a complementary value relative to the first string value, is also associated with the sample set of material. A reversible hash generator is used to generate a determinative hash using the first string value, where a second hash, corresponding to the second string, is able to be determined directly from the determinative hash and without the reversible hash generator processing the complementary value of the second string. It is determined whether at least one of the first string or the second string is stored in a memory using the determinative hash.

Claims (63)

1. A method, comprising:

receiving a first string, having a first string value, that is associated with a sample set of material, wherein a second string, having a complementary value relative to the first string value, is also associated with the sample set of material;

use a reversible hash generator to generate a determinative hash using the first string value, wherein a second hash, corresponding to the second string, is able to be determined directly from the determinative hash and without the reversible hash generator processing the complementary value of the second string; and

determine whether at least one of the first string or the second string is stored in a memory using the determinative hash.

2. The method of claim 1 , wherein the second string includes a reverse complement of the first string.

3. The method of claim 1 , wherein determining whether at least one of the first string or the second string is stored in the memory includes:

generating a canonized hash, having a canonized hash value, based at least in part on the determinative hash, wherein the canonized hash value is the same value for the first string and the second string; and

performing a hash table lookup, including by sending the canonized hash to a hash table.

4. The method of claim 1 , wherein determining whether at least one of the first string or the second string is stored in the memory includes:

generating a canonized hash, having a canonized hash value, based at least in part on the determinative hash, wherein the canonized hash value is the same value for the first string and the second string; and

performing a hash table lookup, including by sending the canonized hash to a hash table, wherein generating the canonized hash includes:

generating, directly from the determinative hash, a second hash that corresponds to the second string; and

using the determinative hash and the second hash to generate the canonized hash.

5. The method of claim 1 , wherein using the reversible hash generator to generate the determinative hash includes using a reversible Bose-Chaudhuri-Hocquenghem (BCH) encoder that generates a parity, wherein the determinative hash is based at least in part on the parity.

6. The method of claim 1 , wherein:

using the reversible hash generator to generate the determinative hash includes using a reversible Bose-Chaudhuri-Hocquenghem (BCH) encoder that generates a parity that includes a first portion and a second and non-overlapping portion, wherein the determinative hash is based at least in part on the first portion of the parity; and

determining whether at least one of the first string or the second string is stored in the memory includes generating a canonized hash based at least in part on the first portion of the parity and the second and non-overlapping portion of the parity.

7. The method of claim 1 , wherein:

using the reversible hash generator to generate the determinative hash includes using a reversible Bose-Chaudhuri-Hocquenghem (BCH) encoder that generates a parity that includes a first portion and a second and non-overlapping portion, wherein the determinative hash is based at least in part on the first portion of the parity; and

determining whether at least one of the first string or the second string is stored in the memory includes generating a canonized hash based at least in part on the first portion of the parity and the second and non-overlapping portion of the parity, wherein generating the canonized hash includes combining a first value that is based at least in part on the first portion of the parity and a second value that is based at least in part on the second and non-overlapping portion of the parity.

8. The method of claim 1 , wherein:

using the reversible hash generator to generate the determinative hash includes using a reversible Bose-Chaudhuri-Hocquenghem (BCH) encoder that generates a parity that includes a first portion and a second and non-overlapping portion, wherein the determinative hash is based at least in part on the first portion of the parity; and

determining whether at least one of the first string or the second string is stored in the memory includes generating a canonized hash based at least in part on the first portion of the parity and the second and non-overlapping portion of the parity, wherein:

generating the canonized hash includes combining a first value that is based at least in part on the first portion of the parity and a second value that is based at least in part on the second and non-overlapping portion of the parity; and

the canonized hash includes a rolling hash.

9. A system, comprising:

a memory that is configured to store strings; and

a hash table controller that is configured to:

receive a first string, having a first string value, that is associated with a sample set of material, wherein a second string, having a complementary value relative to the first string value, is also associated with the sample set of material;

use a reversible hash generator to generate a determinative hash using the first string value, wherein a second hash, corresponding to the second string, is able to be determined directly from the determinative hash and without the reversible hash generator processing the complementary value of the second string; and

determine whether at least one of the first string or the second string is stored in the memory using the determinative hash.

10. The system of claim 1 , wherein the second string includes a reverse complement of the is first string.

11. The system of claim 1 , further comprising a hash table, wherein the hash table controller is configured to determine whether at least one of the first string or the second string is stored in the memory, including by:

generating a canonized hash, having a canonized hash value, based at least in part on the determinative hash, wherein the canonized hash value is the same value for the first string and the second string; and

performing a hash table lookup, including by sending the canonized hash to the hash table.

12. The system of claim 1 , further comprising a hash table, wherein the hash table controller is configured to determine whether at least one of the first string or the second string is stored in the memory, including by:

generating a canonized hash, having a canonized hash value, based at least in part on the determinative hash, wherein the canonized hash value is the same value for the first string and the second string; and

performing a hash table lookup, including by sending the canonized hash to the hash table, wherein generating the canonized hash includes:

generating, directly from the determinative hash, a second hash that corresponds to the second string; and

using the determinative hash and the second hash to generate the canonized hash.

13. The system of claim 9 , wherein the hash table controller is configured to use the reversible hash generator to generate the determinative hash, including by using a reversible Bose-Chaudhuri-Hocquenghem (BCH) encoder that generates a parity, wherein the determinative hash is based at least in part on the parity.

14. The system of claim 9 , wherein:

the hash table controller is configured to use the reversible hash generator to generate the determinative hash, including by using a reversible Bose-Chaudhuri-Hocquenghem (BCH) encoder that generates a parity that includes a first portion and a second and non-overlapping portion, wherein the determinative hash is based at least in part on the first portion of the parity; and

the hash table controller is configured to determine whether at least one of the first string or the second string is stored in the memory, including by generating a canonized hash based at least in part on the first portion of the parity and the second and non-overlapping portion of the parity.

15. The system of claim 9 , wherein:

the hash table controller is configured to use the reversible hash generator to generate the determinative hash, including by using a reversible Bose-Chaudhuri-Hocquenghem (BCH) encoder that generates a parity that includes a first portion and a second and non-overlapping portion, wherein the determinative hash is based at least in part on the first portion of the parity; and

the hash table controller is configured to determine whether at least one of the first string or the second string is stored in the memory, including by generating a canonized hash based at least in part on the first portion of the parity and the second and non-overlapping portion of the parity, wherein generating the canonized hash includes combining a first value that is based at least in part on the first portion of the parity and a second value that is based at least in part on the second and non-overlapping portion of the parity.

16. The system of claim 9 , wherein:

the hash table controller is configured to use the reversible hash generator to generate the determinative hash, including by using a reversible Bose-Chaudhuri-Hocquenghem (BCH) encoder that generates a parity that includes a first portion and a second and non-overlapping portion, wherein the determinative hash is based at least in part on the first portion of the parity; and

the hash table controller is configured to determine whether at least one of the first string or the second string is stored in the memory, including by generating a canonized hash based at least in part on the first portion of the parity and the second and non-overlapping portion of the parity, wherein:

generating the canonized hash includes combining a first value that is based at least in part on the first portion of the parity and a second value that is based at least in part on the second and non-overlapping portion of the parity; and

the canonized hash includes a rolling hash.

17. A computer program product embodied in a non-transitory computer readable medium and comprising computer instructions for:

receiving a first string, having a first string value, that is associated with a sample set of material, wherein a second string, having a complementary value relative to the first string value, is also associated with the sample set of material;

use a reversible hash generator to generate a determinative hash using the first string value, wherein a second hash, corresponding to the second string, is able to be determined directly from the determinative hash and without the reversible hash generator processing the complementary value of the second string; and

determine whether at least one of the first string or the second string is stored in a memory using the determinative hash.

18. The computer program product of claim 17 , wherein the computer instructions for determining whether at least one of the first string or the second string is stored in the memory include computer instructions for:

generating a canonized hash, having a canonized hash value, based at least in part on the determinative hash, wherein the canonized hash value is the same value for the first string and the second string; and

performing a hash table lookup, including by sending the canonized hash to a hash table.

19. The computer program product of claim 17 , wherein the computer instructions for using the reversible hash generator to generate the determinative hash include computer instructions for using a reversible Bose-Chaudhuri-Hocquenghem (BCH) encoder that generates a parity, wherein the determinative hash is based at least in part on the parity.

20. The computer program product of claim 17 , wherein:

the computer instructions for using the reversible hash generator to generate the determinative hash include computer instructions for using a reversible Bose-Chaudhuri-Hocquenghem (BCH) encoder that generates a parity that includes a first portion and a second and non-overlapping portion, wherein the determinative hash is based at least in part on the first portion of the parity; and

the computer instructions for determining whether at least one of the first string or the second string is stored in the memory include computer instructions for generating a canonized hash based at least in part on the first portion of the parity and the second and non-overlapping portion of the parity, wherein generating the canonized hash includes combining a first value that is based at least in part on the first portion of the parity and a second value that is based at least in part on the second and non-overlapping portion of the parity.

Assignments (2)
CHANGE OF NAME Recorded Jul 11, 2023
From: OMNITIER STORAGE, INC.
To: OMNITIER, INC.
Reel/Frame 064383/0910 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 20, 2020
From: COKER, JONATHAN DARREL; OENNING, TRAVIS ROGER; ANANDAN, BALAMURUGAN
To: OMNITIER STORAGE, INC.
Reel/Frame 054433/0606 →