SYSTEMS, METHODS, AND DEVICES FOR ANALYSIS OF GENETIC MATERIAL

Information

  • Patent Application
  • 20180203975
  • Publication Number
    20180203975
  • Date Filed
    January 04, 2018
    6 years ago
  • Date Published
    July 19, 2018
    6 years ago
Abstract
A representation of a nucleic acid sequence encodes a particular gene having at least one intron. An intron signature value corresponding to the at least one intron is determined based on a first computational function applied to at least one portion of the representation of the nucleic acid sequence corresponding to the at least one intron. A protein signature value is determined, being based on a second computational function applied to a representation of a protein. In a database, an association is formed between the intron and protein signature values. This process is repeated for each of a plurality of nucleic acid sequences. Nucleic acid sequences in the database are ordered based on a sort of corresponding intron signature values. An ordering determined by the sort is used to determine or confirm a role or function of a portion of a given nucleic acid sequence.
Description
COPYRIGHT STATEMENT

This patent document contains material subject to copyright protection. The copyright owner has no objection to the reproduction of this patent document or any related materials in the files of the United States Patent and Trademark Office, but otherwise reserves all copyrights whatsoever.


SOURCE CODE APPENDIX

This application includes a source code appendix with example computer source code. The source code appendix is considered part of this application for all purposes.


FIELD OF THE INVENTION

This invention relates to genetic engineering and microbiology, and, more particularly, to systems, methods, and devices for analysis of genetic material such as nucleotide sequences.


SUMMARY

The present invention is specified in the claims as well as in the below description. The following summary is exemplary and not limiting. Presently preferred embodiments are particularly specified in the dependent claims and the description of various embodiments.


In one embodiment, a computer-implemented method, implemented by hardware in combination with software, may comprise obtaining a representation of a nucleic acid sequence. The nucleic acid sequence may encode a particular gene and the particular gene may encode a particular protein. The nucleic acid sequence may comprise at least one intron. The embodiment may also comprise determining an intron signature value corresponding to the intron, with the intron signature value being based on a first computational function applied to one or more portions of the representation of the nucleic acid sequence corresponding to the at least one intron. The embodiment may also comprise determining a protein signature value corresponding to the particular protein, with the protein signature value being based on a second computational function applied to a representation of the particular protein, and forming, in a database, an association between the intron signature value and the protein signature value.


In another aspect, the method may comprise repeating the above acts for each of a plurality of nucleic acid sequences.


In another aspect, the computer-implemented method may also comprise using the formed association between the intron signature value and the protein signature value to determine or confirm at least one aspect of a genetic function of a particular nucleic acid sequence.


In another aspect, the computer-implemented method may comprise using the formed association between the intron signature value and the protein signature value to determine or confirm at least one aspect of a genetic function of a particular nucleic acid sequence for each of a plurality of nucleic acid sequences.


In another embodiment, a computer-implemented method, implemented by hardware in combination with software, may comprise obtaining a representation of a nucleic acid sequence, with the nucleic acid sequence comprising multiple non-overlapping nucleic acid subsequences, with each of the nucleic acid subsequences encoding an amino acid. The embodiment may also comprise determining a particular amino acid encoded by a particular nucleic acid subsequence of the multiple non-overlapping nucleic acid subsequences. The particular nucleic acid subsequence may comprise a first nucleotide, a second nucleotide adjacent to the first nucleotide, and a third nucleotide adjacent to the second nucleotide, by considering a nucleotide pair consisting of: (i) the first nucleotide and the second nucleotide, or (ii) the second nucleotide and the third nucleotide.


In another embodiment, a computer-implemented method of encoding a nucleic acid sequence, the method implemented by hardware in combination with software, may comprise obtaining a representation of the nucleic acid sequence, with the nucleic acid sequence comprising multiple non-overlapping nucleic acid subsequences, with each nucleic acid subsequences encoding an amino acid. The embodiment may also comprise determining a plurality of subsequences of the nucleic acid sequence, with the plurality of subsequences determined by a binary counting of the nucleic acid sequence, and determining a digital signature for the nucleic acid sequence based on a computational hash function applied to the plurality of subsequences of the nucleic acid sequence.


In another aspect, the computer-implemented method may comprise using the digital signature for the nucleic acid sequence to determine or confirm at least one aspect of a genetic function of the nucleic acid sequence.


In another embodiment, a computer implemented method, implemented by hardware in combination with software, may comprise obtaining a particular character string, with the particular character string being a representation of a first one or more portions of a particular nucleic acid sequence. The particular nucleic acid sequence may comprise a second one or more portions that may encode a particular protein, with the first one or more portions of the particular nucleic acid sequence being distinct from the second one or more portions of the particular nucleic acid sequence. The embodiment may also comprise determining a plurality of hash values of a corresponding plurality of substrings associated with the particular character string, determining a signature value for the first one or more portions of the particular nucleic acid sequence based on the first plurality of hash values, and forming an association in a database between the signature value for the first one or more portions of the particular nucleic acid sequence and the particular protein. The embodiment may also comprise using the association formed between the signature value for the first one or more portions of the particular nucleic acid sequence and the particular protein to determine or confirm at least one aspect of a genetic function of the particular nucleic acid sequence.


In another aspect, the computer-implemented method may comprise also using other associations in the database between other signature values of other character strings to determine or confirm the at least one aspect of a genetic function of the particular nucleic acid sequence.


In yet another embodiment, a computer-implemented method, implemented by hardware in combination with software, may comprise determining a particular intron signature value corresponding to a particular intron, with the particular intron signature value being based on a first computational function applied to one or more portions of a representation of a particular nucleic acid sequence corresponding to the particular intron. The embodiment may also comprise determining a particular protein signature value corresponding to a particular protein, with the protein signature value being based on a second computational hash function applied to a representation of the particular protein, and adding a record to a database, with the record comprising a first field for the particular intron signature value and a second field for the particular protein signature value computational hash function applied to a representation of the particular protein. The database may comprise a plurality of records corresponding to a plurality of nucleic acid sequences, with each of the records comprising an intron signature value and a corresponding protein signature value, with each of the intron signature values having been determined for and based on the first computational function applied to a portion of a corresponding nucleic acid sequence, the corresponding nucleic acid sequence encoding a particular gene, and each of the protein signature values having been determined based on a second computational hash function applied to a representation of a protein associated with the corresponding nucleic acid sequence.


In another aspect, the computer-implemented method may comprise using information in the database to determine or confirm at least one aspect of a genetic function of the particular nucleic acid sequence.


In another embodiment, a non-transitory computer-readable recording medium storing one or more programs, which, when executed, may cause one or more processors to obtain a representation of a nucleic acid sequence, with the nucleic acid sequence encoding a particular gene and the particular gene encoding a particular protein. The nucleic acid sequence may comprise at least one intron. The embodiment may also comprise causing the one or more processors to determine an intron signature value corresponding to the at least one intron, with the intron signature value being based on a first computational function applied to one or more portions of the representation of the nucleic acid sequence corresponding to the at least one intron, and to determine a protein signature value corresponding to the particular protein, with the protein signature value being based on a second computational function applied to a representation of the particular protein. The embodiment may also comprise causing the one or more processors to form, in a database, an association between the intron signature value and the protein signature value.


In another aspect, the non-transitory computer-readable recording medium, storing one or more programs, which, when executed, may cause one or more processors to use the association between the intron signature value and the protein signature value to determine or confirm at least one aspect of a genetic function of a particular nucleic acid sequence.


In another embodiment, a non-transitory computer-readable recording medium storing one or more programs, which, when executed, may cause one or more processors to obtain a representation of a nucleic acid sequence, with the nucleic acid sequence comprising multiple non-overlapping nucleic acid subsequences, and with each of the nucleic acid subsequences encoding an amino acid. The embodiment may also comprise causing the one or more processors to determine a plurality of subsequences of the nucleic acid sequence, with the plurality of subsequences being determined by a binary counting of the nucleic acid sequence, and to determine a digital signature for the nucleic acid sequence based on a computational hash function applied to the plurality of subsequences of the nucleic acid sequence.


In another aspect, the non-transitory computer-readable recording medium, storing one or more programs, which, when executed, may cause one or more processors to use the digital signature for the nucleic acid sequence to determine or confirm at least one aspect of a genetic function of the nucleic acid sequence.


In another embodiment, a non-transitory computer-readable recording medium storing one or more programs, which, when executed, may cause one or more processors to obtain a particular character string, with the particular character string being a representation of a first one or more portions of a particular nucleic acid sequence, with the particular nucleic acid sequence comprising a second one or more portions that encode a particular protein, and with the first one or more portions of the particular nucleic acid sequence being distinct from the second one or more portions of the particular nucleic acid sequence. The embodiment may also comprise causing the one or more processors to determine a plurality of hash values of a corresponding plurality of substrings associated with the particular character string, and to determine a signature value for the first one or more portions of the particular nucleic acid sequence based on the first plurality of hash values. The embodiment may also comprise causing the one or more processors to form an association in a database between the signature value for the first one or more portions of the particular nucleic acid sequence and the particular protein, and to use the association to determine or confirm at least one aspect of a genetic function of the particular nucleic acid sequence.


In another aspect, the non-transitory computer-readable recording medium, storing one or more programs, which, when executed, may cause one or more processors to use other associations in the database between other signature values of other character strings to determine or confirm the at least one aspect of a genetic function of the particular nucleic acid sequence.


In another embodiment, a non-transitory computer-readable recording medium storing one or more programs, which, when executed, may cause one or more processors to determine a particular intron signature value corresponding to a particular at least one intron, with the particular intron signature value being based on a first computational function applied to one or more portions of a representation of a particular nucleic acid sequence corresponding to the particular at least one intron. The embodiment may also comprise causing the one or more processors to determine a particular protein signature value corresponding to a particular protein, with the protein signature value being based on a second computational hash function applied to a representation of the particular protein, and to add a record to a database, with the record comprising a first field for the particular intron signature value and a second field for the particular protein signature value. The database may comprise a plurality of records corresponding to a plurality of nucleic acid sequences, with each of the records comprising an intron signature value and a corresponding protein signature value, with each of the intron signature values having been determined for and based on the first computational function applied to a portion of a corresponding nucleic acid sequence, the corresponding nucleic acid sequence encoding a particular gene, and each of the protein signature values having been determined based on a second computational hash function applied to a representation of a protein associated with the corresponding nucleic acid sequence.


In another aspect, the non-transitory computer-readable recording medium, storing one or more programs, which, when executed, may cause one or more processors to use information in the database to determine or confirm at least one aspect of a genetic function of the particular nucleic acid sequence.


Other aspects of the invention are discussed herein.


Below, further numbered embodiments of the invention will be discussed.


1. A computer-implemented method, implemented by hardware in combination with software, the method comprising:


(A) obtaining a representation of a nucleic acid sequence, wherein the nucleic acid sequence encodes a particular gene and the particular gene encodes a particular protein, the nucleic acid sequence comprising at least one intron;


(B) determining an intron signature value corresponding to the at least one intron, the intron signature value being based on a first computational function applied to one or more portions of the representation of the nucleic acid sequence corresponding to the at least one intron;


(C) determining a protein signature value corresponding to the particular protein, the protein signature value being based on a second computational function applied to a representation of the particular protein; and


(D) forming, in a database, an association between the intron signature value and the protein signature value.


2. The method according to the previous embodiment, further comprising: (E) repeating acts (A) to (D) for each of a plurality of nucleic acid sequences.


3. The method according to any of the previous embodiments further comprising: (F) using the association formed in (D) to determine or confirm at least one aspect of a genetic function of a particular nucleic acid sequence.


4. The method according to any of the previous embodiments further comprising: (F) using the association formed in (D) to determine or confirm at least one aspect of a genetic function of a particular nucleic acid sequence.


5. A computer-implemented method, implemented by hardware in combination with software, the method comprising:


(A) obtaining a representation of a nucleic acid sequence, the nucleic acid sequence comprising multiple non-overlapping nucleic acid subsequences, each of the nucleic acid subsequences encoding an amino acid;


(B) determining a particular amino acid encoded by a particular nucleic acid subsequence of the multiple non-overlapping nucleic acid subsequences, wherein the particular nucleic acid subsequence comprises a first nucleotide, a second nucleotide adjacent to the first nucleotide, and a third nucleotide adjacent to the second nucleotide, by considering a nucleotide pair consisting of: (i) the first nucleotide and the second nucleotide, or (ii) the second nucleotide and the third nucleotide.


6. A computer-implemented method of encoding a nucleic acid sequence, the method implemented by hardware in combination with software, the method comprising:


(A) obtaining a representation of the nucleic acid sequence, the nucleic acid sequence comprising multiple non-overlapping nucleic acid subsequences, each of the nucleic acid subsequences encoding an amino acid;


(B) determining a plurality of subsequences of the nucleic acid sequence, wherein the plurality of subsequences are determined by a binary counting of the nucleic acid sequence;


(C) determining a digital signature for the nucleic acid sequence based on a computational hash function applied to the plurality of subsequences of the nucleic acid sequence.


7. A method according to the previous embodiment further comprising: (D) using the digital signature for the nucleic acid sequence to determine or confirm at least one aspect of a genetic function of the nucleic acid sequence.


8. A computer implemented method, implemented by hardware in combination with software, the method comprising:


(A) obtaining a particular character string, the particular character string being representation of a first one or more portions of a particular nucleic acid sequence, wherein the particular nucleic acid sequence comprises a second one or more portions that encode a particular protein, the first one or more portions of the particular nucleic acid sequence being distinct from the second one or more portions of the particular nucleic acid sequence;


(B) determining a plurality of hash values of a corresponding plurality of substrings associated with the particular character string;


(C) determining a signature value for the first one or more portions of the particular nucleic acid sequence based on the first plurality of hash values;


(D) forming an association in a database between the signature value for the first one or more portions of the particular nucleic acid sequence and the particular protein; and


(E) using the association formed in (D) to determine or confirm at least one aspect of a genetic function of the particular nucleic acid sequence.


9. A method according to the previous embodiment wherein the using in (E) also uses other associations in the database between other signature values of other character strings to determine or confirm the at least one aspect of a genetic function of the particular nucleic acid sequence.


10. A computer-implemented method, implemented by hardware in combination with software, the method comprising:


(A) determining a particular intron signature value corresponding to a particular at least one intron, the particular intron signature value being based on a first computational function applied to one or more portions of a representation of a particular nucleic acid sequence corresponding to the particular at least one intron;


(B) determining a particular protein signature value corresponding to a particular protein, the protein signature value being based on a second computational hash function applied to a representation of the particular protein;


(C) adding a record to a database, the record comprising a first field for the particular intron signature value and a second field for the particular protein signature value,


wherein the database comprises a plurality of records corresponding to a plurality of nucleic acid sequences, each of the records comprising an intron signature value and a corresponding protein signature value, each of the intron signature values having been determined for and based on the first computational function applied to a portion of a corresponding nucleic acid sequence, the corresponding nucleic acid sequence encoding a particular gene, and each of the protein signature values having been determined based on a second computational hash function applied to a representation of a protein associated with the corresponding nucleic acid sequence.


11. A method according to the previous embodiment, further comprising: (D) using information in the database to determine or confirm at least one aspect of a genetic function of the particular nucleic acid sequence.


12. A non-transitory computer-readable recording medium storing one or more programs, which, when executed, cause one or more processors to, at least:


(a) obtain a representation of a nucleic acid sequence, wherein the nucleic acid sequence encodes a particular gene and the particular gene encodes a particular protein, the nucleic acid sequence comprising at least one intron;


(b) determine an intron signature value corresponding to the at least one intron, the intron signature value being based on a first computational function applied to one or more portions of the representation of the nucleic acid sequence corresponding to the at least one intron;


(c) determine a protein signature value corresponding to the particular protein, the protein signature value being based on a second computational function applied to a representation of the particular protein; and


(d) form, in a database, an association between the intron signature value and the protein signature value.


13. The non-transitory computer-readable recording medium according to the previous embodiment, wherein the one or more programs, when executed, cause one or more processors to, at least: (f) use the association formed in (d) to determine or confirm at least one aspect of a genetic function of a particular nucleic acid sequence.


14. A non-transitory computer-readable recording medium storing one or more programs, which, when executed, cause one or more processors to, at least:


(a) obtain a representation of the nucleic acid sequence, the nucleic acid sequence comprising multiple non-overlapping nucleic acid subsequences, each of the nucleic acid subsequences encoding an amino acid;


(b) determine a plurality of subsequences of the nucleic acid sequence, wherein the plurality of subsequences are determined by a binary counting of the nucleic acid sequence;


(c) determine a digital signature for the nucleic acid sequence based on a computational hash function applied to the plurality of subsequences of the nucleic acid sequence.


15. The non-transitory computer-readable recording medium according to the previous embodiment, wherein the one or more programs, when executed, cause one or more processors to, at least: (d) use the digital signature for the nucleic acid sequence to determine or confirm at least one aspect of a genetic function of the nucleic acid sequence.


16. A non-transitory computer-readable recording medium storing one or more programs, which, when executed, cause one or more processors to, at least:


(a) obtain a particular character string, the particular character string being representation of a first one or more portions of a particular nucleic acid sequence, wherein the particular nucleic acid sequence comprises a second one or more portions that encode a particular protein, the first one or more portions of the particular nucleic acid sequence being distinct from the second one or more portions of the particular nucleic acid sequence;


(b) determine a plurality of hash values of a corresponding plurality of substrings associated with the particular character string;


(c) determine a signature value for the first one or more portions of the particular nucleic acid sequence based on the first plurality of hash values;


(d) form an association in a database between the signature value for the first one or more portions of the particular nucleic acid sequence and the particular protein; and


(e) use the association formed in (d) to determine or confirm at least one aspect of a genetic function of the particular nucleic acid sequence.


17. The non-transitory computer-readable recording medium according to the previous embodiment, wherein the using the association in (e) also uses other associations in the database between other signature values of other character strings to determine or confirm the at least one aspect of a genetic function of the particular nucleic acid sequence.


18. A non-transitory computer-readable recording medium storing one or more programs, which, when executed, cause one or more processors to, at least:


(a) determine a particular intron signature value corresponding to a particular at least one intron, the particular intron signature value being based on a first computational function applied to one or more portions of a representation of a particular nucleic acid sequence corresponding to the particular at least one intron;


(b) determine a particular protein signature value corresponding to a particular protein, the protein signature value being based on a second computational hash function applied to a representation of the particular protein;


(c) add a record to a database, the record comprising a first field for the particular intron signature value and a second field for the particular protein signature value,


wherein the database comprises a plurality of records corresponding to a plurality of nucleic acid sequences, each of the records comprising an intron signature value and a corresponding protein signature value, each of the intron signature values having been determined for and based on the first computational function applied to a portion of a corresponding nucleic acid sequence, the corresponding nucleic acid sequence encoding a particular gene, and each of the protein signature values having been determined based on a second computational hash function applied to a representation of a protein associated with the corresponding nucleic acid sequence.


19. The non-transitory computer-readable recording medium according to the previous embodiment, wherein the one or more programs, when executed, cause one or more processors to, at least: (d) use information in the database to determine or confirm at least one aspect of a genetic function of the particular nucleic acid sequence.


The above features along with additional details of the invention, are described further in the examples below, which are intended to further illustrate the invention but are not intended to limit its scope in any way.





BRIEF DESCRIPTION OF THE DRAWINGS

Objects, features, and characteristics of the present invention as well as the methods of operation and functions of the related elements of structure, and the combination of parts and economies of manufacture, will become more apparent upon consideration of the following description and the appended claims with reference to the accompanying drawings, all of which form a part of this specification.



FIG. 1 shows an overview of a system according to embodiments hereof; and



FIGS. 2A and 2B show exemplary database organizations according to embodiments hereof and



FIG. 3 is a schematic diagram of a computer system used in embodiments hereof.





DETAILED DESCRIPTION OF THE PRESENTLY PREFERRED EXEMPLARY EMBODIMENTS
Glossary and Abbreviations

As used herein, unless used or described otherwise, the following terms or abbreviations have the following meanings:


“alphanumeric” means consisting of or using both letters and numbers;


“alphanumeric character” means a character that is either a letter or a number;


“alphanumeric string” means a character string consisting of letters and/or numbers;


“DNA” means deoxyribonucleic acid;


“DNA sequence” means a representation of the order in which the nucleotide bases are arranged within a nucleic acid sequence;


“exon” means a segment of a DNA or RNA molecule containing information coding for a protein or peptide sequence;


“FNV” means the Fowler-Noll-Vo hash function;


“genome” means the nuclear or organellar DNA content of a biological individual or sample;


“intron” means the part of a nucleotide sequence that's not an exon;


“RNA” means ribonucleic acid.


As used herein, the term “mechanism” refers to any device(s), process(es), service(s), or combination thereof. A mechanism may be implemented in hardware, software, firmware, using a special-purpose device, or any combination thereof. A mechanism may be integrated into a single device or it may be distributed over multiple devices. The various components of a mechanism may be co-located or distributed. The mechanism may be formed from other mechanisms. In general, as used herein, the term “mechanism” may thus be considered to be shorthand for the term device(s) and/or process(es) and/or service(s).


DESCRIPTION
Background and Overview

The background section of patent application no. PCT/US15/30478, filed May 13, 2015, published as WO 2015/175602 on Nov. 19, 2015, is fully incorporated herein for all purposes.


A DNA sequence is a sequence of nucleotide bases selected from the four nucleotide bases adenine (A), cytosine (C), guanine (G), and thymine (T). For notational convenience, and following convention, these bases are abbreviated herein as A, C, G, and T. That is, a DNA sequence S may be written as s1s2 . . . sk, wherein each element si in the sequence is selected from the set {A, C, T, G}.


As is well known, within the nucleus of a cell a DNA sequence takes the form of a double helix formed with base pairs. Within the base pairs, an adenine (A) nucleotide pairs with a thymine (T) nucleotide (and vice versa) and a cytosine (C) nucleotide pairs with a guanine (G) nucleotide (and vice versa).


As conventionally understood, a DNA sequence encodes a genetic function, and a DNA sequence may contain a gene, e.g., encoding for a protein.


There are twenty (20) amino acids (alanine, arginine, asparagine, aspartate, cysteine, glutamate, glutamine, glycine, histidine, isoleucine, leucine, lysine, methionine, phenylalanine, proline, serine, threonine, tryptophan, tyrosine, and valine) and all proteins are formed from combinations of these amino acids.


In order for a cell to perform a genetic function encoded in DNA (i.e., in a gene of the DNA) a copy of a portion of the DNA is made or transcribed onto messenger RNA (mRNA) to be passed from the nucleus into the cell. Transcription need not (and usually does not) read or copy the entire DNA, only the parts within the DNA that hold the information to perform the required function—e.g., to make the desired protein. In the case of protein production, a starting point is found in the DNA for the desired protein and then a transcript of the DNA is made (using RNA) up to an end point in the DNA.


The RNA copies at least a portion of the DNA using complementary bases according to the following rules:

















DNA
to
RNA









T

A



C

G



G

C



A

U










For RNA, the complement of A is U (Uracil), not thymine (T).


Thus an RNA sequence R may be written as r1r2 . . . rk, wherein each ri is selected from the set {A, C, U, G}.


When DNA is transcribed to RNA each “T” is replaced by a “U”, otherwise the sequence remains the same.


Before being sent from the nucleus into the cytoplasm of the cell, the RNA may undergo further processing, as explained here.


Recall that each gene may code for a specific protein and that the DNA that makes up a gene provides the code. However, not all of the DNA within a gene may directly code for proteins. The parts of DNA that codes directly for proteins are called exons. Non-coding portions of DNA that are within a gene and are between exons (coding portions) are referred to as introns. A gene may thus comprise one or exons interspersed with one or more introns. (E.g., as shown in the following:

    • <EXON1><INTRON1><EXON2><INTRON2><EXON3><INTRON4><EXON4>


Processing of the transcribed RNA in the nucleus removes the introns so that the messenger RNA (mRNA) only contains the exons for a gene. E.g., for the above example, the mRNA would consist of:

    • <EXON-T1><EXON-T2><EXON-T3><EXON-T4>


where <EXON-Tk> is the RNA sequence corresponding to the DNA sequence <EXONk>.


The mRNA comprising the gene's concatenated exons is passed out of the cell's nucleus to the cytoplasm where translation of the mRNA to a protein occurs. Specifically, once the mRNA is made from transcription, the mRNA moves from the cell's nucleus into the cytoplasm where a ribosome assembles amino acids associated with another molecule known as tRNA that match the codon of mRNA sequences moving through the ribosome (as specified or encoded in the mRNA) according to the following process.


The bases in an RNA sequence may conveniently be grouped into triples called codons. As conventionally understood, one triple or codon—the first codon of the mRNA transcript—encodes a start codon. The most common start codon is AUG. A stop codon (or termination codon) is a nucleotide triplet within mRNA that signals termination of translation. There are several stop codons, specifically, in RNA: UAG, UAA, and UGA (in DNA: TAG, TAA, TGA).


Each codon (other than the start and stop codons) corresponds to one of the twenty amino acids (recall that there are twenty (20) amino acids and all proteins are formed from combinations of these amino acids). As there are four bases, there are sixty four possible codons (i.e., there are 64 triples that can be formed from the bases A, C, G, T (or A, C, G, U). As there are 20 amino acids and 64 possible codons that code for amino acids (less the start and stop codons), some amino acids are produced by more than one codon. For example, as shown in the table below, the four mRNA codons CCU, CCC, CCA, CCG all correspond to the amino acid proline. Similarly, the four mRNA codons GCU, GCC, GCA, GCG all correspond to the amino acid alanine. Notably, these codons differ only in their third nucleotide.


Translation from codon to protein occurs as follows:


1. In the cell's cytoplasm a ribosome recognizes the start codon in the mRNA and reads the mRNA one codon at a time.


2. An amino acid (one of the twenty) attached to an available tRNA molecule in the Cytoplasm is attracted by the ribosome and joined to form a sequence of amino acids based on the underlying mRNA codon's being processed through the ribosome, according to the rules in the following table, until a “stop” codon (ATG, ATT, ACT for DNA or UAA, UAG, UGA for RNA) is reached.














Amino Acid
DNA Base Triplets
M-RNA Codons







Alanine
CGA, CGG, CGT, CGC
GCU, GCC, GCA, GCG


Arginine
GCA, GCG, GCT, GCC
CGU, CGC, CGA, CGG



TCT, TCC
AGA, AGG


asparagine
TTA, TTG
AAU, AAC


aspartate
CTA, CTG
GAU, GAC


Cysteine
ACA, ACG
UGU, UGC


glutamate
CTT, CTC
GAA, GAG


glutamine
GTT, GTC
CAA, GAG


glycine
CCA, CCG, CCT, CCC
GGU, GGC, GGA, GGG


histidine
GTA, GTG
CAU, CAC


isoleucine
TAA, TAG, TAT
AUU, AUC, AUA


leucine
AAT, AAC, GAA, GAG
UUA, UUG, CUU, CUC



GAT, GAC
CUA, CUG


lysine
TTT, TTC
AAA, AAG


methionine
TAC
AUG


phenylalanine
AAA, AAG
UUU, UUC


proline
GGA, GGG, GGT, GGC
CCU, CCC, CCA, CCG


serine
AGA, AGG, ACT, AGC
UCU, UCC, UCA, UCG



TCA, TCG
AGU, AGC


stop
ATG, ATT, ACT
UAA, UAG, UGA


threonine
TGA, TGG, TGT, TGC
ACU, ACC, ACA, ACG


tryptophan
ACC
UGG


tyrosine
ATA, ATG
UAU, UAC


valine
CAA, CAG, CAT, CAC
GUU, GUC, GUA, GUG









The System

With reference now to FIG. 1, a system 100 according to embodiments hereof includes a number of mechanisms 102 interacting with one or more databases 104.


The exemplary mechanisms 102 may include database mechanism(s) 106, including database access mechanism(s) 108 and database maintenance mechanism(s) 110, signature determination mechanism(s) 112, which may include hashing mechanism(s) 114 and permuting mechanism(s) 116. Additionally, the mechanisms 102 may include sequence acquisition mechanism(s) 118, interface mechanism(s) 120, miscellaneous and auxiliary mechanism(s) 122, and analysis mechanism(s) 124. The interface mechanism(s) 120 may include user interface (UI) mechanism(s) 126.


The mechanisms may include the following mechanisms (described below): the “Pattern” mechanism; the “count” mechanisms; the “offset count, bigger length” mechanism; the “offset count, ignore length” mechanism; the iScore mechanism; the Signature mechanism; PhV mechanism; and the Position in Vector (PiV) mechanism.


The databases 104 may include one or more sequence databases 128 and one or more association databases 130.


With reference now to FIGS. 2A and 2B, the sequence database(s) 128 may include a mapping of sequence identifiers to corresponding sequences such as DNA sequences, RNA sequences, proteins, or the like. The sequences may correspond to introns or exons. The sequence identifiers may be arbitrarily assigned by the system.


The association database(s) 130 preferably include a mapping of signatures (described in greater detail below) to associated and corresponding DNA sequences (e.g., as identified by their sequence identifiers). The signatures may also map to one or more of: (i) one or more intron sequences (e.g., as identified by their sequence identifiers), (ii) one or more exon sequences (e.g., as identified by their sequence identifiers), and (iii) a protein. It should be appreciated that a particular signature may not map to all of the fields. It should also be appreciated that the database may include other mappings, e.g., from intron signatures to genetic functions or the like. The protein, if included, may be identified by a protein identifier that maps to a separate protein database (not shown) or it may be identified by a sequence identifier, mapping to the sequence database 128.


In the exemplary mappings in FIGS. 2A and 2B, the k-th row shows that signature Sk maps to DNA sequence identified by sequence identifier IDk (that maps to a DNA sequence in the sequence database 128 in FIG. 2B). Signature Sk may also map to (i) a sequence of one or more introns (identified by a corresponding one or more sequence identifiers ID-I-k . . . ); (ii) a sequence of one or more exons (identified by a corresponding one or more sequence identifiers ID-E-k . . . ); and (iii) a protein (identified by a corresponding sequence identifier Pk).


In FIGS. 2A and 2B the mappings are shown as tables. Those of ordinary skill in the art will realize and appreciate, upon reading this description, that these are merely exemplary representations of the databases and their mappings, and that different and/or other database organizations and/or representations may be used. It should be appreciated that the system is not limited by the particular database implementation or organization.


Data Representation

For computational purposes, e.g., in order to record and manipulate nucleotide (DNA and RNA) sequences, genetic sequencing data representing nucleotide sequences or peptide sequences are typically stored in a text format, such as FASTA or FASTQ, using single-letter codes to represent the nucleotides or amino acids. In the FASTA format, the bases adenine (A), cytosine (C), guanine (G), and thymine (T) are represented by the four ASCII letters “A”, “C”, “G”, and “T”, respectively. For RNA the base thymine (T) is replaced by the base uracil (U), represented by the letter “U”. Thus the nucleotides that constitute DNA and RNA may be expressed in five distinct characters (A, G, C, T, or U for adenine, guanine, cytosine, thymine, or uracil, respectively).


However, if space and storage requirements are a concern, 3 bits may be used to represent each character.


As there are five values to be considered in each type of sequence, 3 bits are sufficient to store each sequence element (i.e., each nucleotide).


For some computational purposes a DNA (or RNA) sequence may be considered to be a character string with the characters selected from (and limited to) “A”, “C”, “G”, and “T” (or “U” instead of “T” for RNA).


In conventional programming languages, such sequences may be represented as strings of characters.


Since arithmetic functions will be performed on these strings (e.g., to compute their hashes), each letter may also be assigned a numeric value. It should be appreciated that standard encoding of values for the letters (e.g., ASCII) may be used, as long as the encoding is consistent across the system. In some embodiments the letters may be assigned the values, e.g., 1, 2, 3, 4, and 5 for the letters “A”, “C”, “G”, “T”, and “U”, respectively. In these embodiments the DNA sequence “AAGCGT” would correspond to the numerical sequence (or number) “113234”, whereas the RNA sequence “AAGCGU” would correspond to the numerical sequence (or number) “113235”. Using this approach, a DNA or RNA sequence may be directly manipulated and operated on arithmetically. Those of ordinary skill in the art will realize and appreciate, upon reading this description, that different and/or other encodings of DNA and RNA sequences may be used, and that some of these encodings will provide more efficient storage than others, and that some of these encodings will provide more efficient computation than others. It should also be appreciated that different coding and storage schemes may be used for different aspects of the system, again, as long as consistency is maintained. For example, it may be efficient to store data in one form and to operate on those data in another form. Those of ordinary skill in the art will understand how to select an encoding scheme that balances storage and computing requirements.


By convention the 20 amino acids are sometimes identified by their first three letters (e.g., “glu” for “glutamine”, etc.), although for storage and computation purposes they are typically given one-letter abbreviations. The following table shows the standard 3 and 1 letter abbreviations for the twenty amino acids.

















Amino Acid
3-Letter
1-Letter









Alanine
Ala
A



Arginine
Arg
R



Asparagine
Asn
N



Aspartic acid
Asp
D



Cysteine
Cys
C



Glutamic acid
Glu
E



Glutamine
Gln
Q



Glycine
Gly
G



Histidine
His
H



Isoleucine
Ile
I



Leucine
Leu
L



Lysine
Lys
K



Methionine
Met
M



Phenylalanine
Phe
F



Proline
Pro
P



Serine
Ser
S



Threonine
Thr
T



Tryptophan
Trp
W



Tyrosine
Tyr
Y



Valine
Val
V










Thus, as with DNA and RNA sequences, a protein may be represented by a character string (e.g., with the letters drawn from the alphabet in the 1-letter column in the table above). In order to operate arithmetically on sequences that represent proteins, each of the twenty characters may be assigned a different numeric value (e.g., 1 to 20 or the characters ASCII numeric value or some other value).


Mechanisms

For the purposes of this description, some of the mechanisms and algorithms are described as operating on alphanumeric strings (i.e., strings of characters). In some of the descriptions arbitrary characters are used to describe operation of aspects of some algorithms. As should be appreciated, the characters in the strings may represent DNA or RNA or protein sequences.


The “Pattern” Mechanism

A version of this pattern mechanism is described in our co-pending patent application no. PCT/US15/30478, the entire contents of which are hereby fully incorporated herein by reference for all purposes. An exemplary version of this procedure is described here.


For a given sequence or alphanumeric string S=S0S1 . . . Sn, where each element Si of the sequence is an alphabetic character: for each Si in S, the Pattern mechanism generates a set of subsequences that, inter alia, preserve sequences between letters in the original string S=S0S1 . . . Sn. The subsequence is preferably ordered and preferably includes the characters which are directly adjacent to Si in a forward direction. In a presently preferred implementation, the substring length is greater or equal than 8. Although this mechanism is described here for substring lengths greater than or equal to 8, it should be appreciated that other lengths, including zero (0) may be used. Thus, e.g., Pattern1(S) allows substrings of any length greater than or equal to 1. For the remainder of this description, unless stated otherwise, and without loss of generality, the function Pattern(S) refers to Pattern8(S).

    • Pattern8(Si)=Si-7 . . . Si|Si-8 . . . Si|Si-9 . . . Si| . . . |S0S1 . . . Si


Note that Pattern8(S) is an ordered sequence of zero or more substrings. For notational purposes, these substrings or sub-sequences are shown in the text separated by the bar (“|”) character.


Consider the example where S=G0T1G2G3G4C5C6C7A8G9A10C11


For this example, as an aid to the explanation, each letter is also given a subscript showing its position in the string.







Pattern


(

G
0

)


=

Empty






(

no





subsequences





longer





than





8

)









Pattern


(

C
7

)


=

GTGGGCCC






(


i
.
e
.

,


G
0



T
1



G
2



G
3



G
4



C
5



C
6



C
7



)














Pattern


(

A
8

)


=


TGGGCCCA
|

GTGGGCCCA







(


i
.
e
.

,


T
1



G
2



G
3



G
4



C
5



C
6



C
7



A
8






and






G
0



T
1



G
2



G
3



G
4



C
5



C
6



C
7



A
8



)

.





Pattern


(

G
9

)





=

GGGCCCAG



TGGGCCCAG



GTGGGCCCAG
















Pattern


(

C
11

)


=

GCCCAGAC



GGCCCAGAC



GGGCCCAGAC







TGGGCCCAGAC



GTGGGCCCAGAC











...







The pattern for the entire string S is the ordered sequence of the patterns for each Si in S. For the example above, where S=G0T1G2G3G4C5C6C7A8G9A10C11

    • P=Pattern(S)=Pattern(G0)|Pattern(C7)|Pattern(AB) . . . |Pattern(C11)


This corresponds to the following ordered sequence of fifteen strings:









GTGGGCCC | TGGGCCCA | GTGGGCCCA | GGGCCCAG |





TGGGCCCAG | GTGGGCCCAG | GGCCCAGA | GGGCCCAGA |





TGGGCCCAGA | GTGGGCCCAGA | GCCCAGAC | GGCCCAGAC |





GGGCCCAGAC | TGGGCCCAGAC | GTGGGCCCAGAC






The index into the ordered pattern sequence is referred to herein as the “offset,” with the first element being element zero. Thus, in the example above, the first element, i.e., the element at offset=0, is P0=GTGGGCCC=Pattern(S)0, the second element, at offset=1, is P1=TGGGCCCA, and so on, where P14=GTGGGCCCAGAC.


As another example, for the string S′=1234567890ABCDEFGHIJ, P′=Pattern(S′) corresponds to the following ordered sequence of strings:

    • 12345678|23456789|123456789|34567890|234567890|1234567890|4567890A|34567890A|234567890A|1234567890A|567890AB|4567890AB|34567890AB|234567890AB|1234567890AB|67890ABC|567890ABC|4567890ABC|34567890ABC|234567890ABC|1234567890ABC|7890ABCD|67890ABCD|567890ABCD|4567890ABCD|34567890ABCD|234567890ABCD|1234567890ABCD|890ABCDE|7890ABCDE|67890ABCDE|567890ABCDE|4567890ABCDE|34567890ABCDE|234567890ABCDE|1234567890ABCDE|90ABCDEF|890ABCDEF|7890ABCDEF|67890ABCDEF|567890ABCDEF|4567890ABCDEF|34567890ABCDEF|234567890ABCDEF|1234567890ABCDEF|0ABCDEFG|90ABCDEFG|890ABCDEFG|7890ABCDEFG|67890ABCDEFG|567890ABCDEFG|4567890ABCDEFG|34567890ABCDEFG|234567890ABCDEFG|1234567890ABCDEFG|ABCDEFGH|0ABCDEFGH|90ABCDEFGH|890ABCDEFGH|7890ABCDEFGH|67890ABCDEFGH|567890ABCDEFGH|4567890ABCDEFGH|34567890ABCDEFGH|234567890ABCDEFGH|1234567890ABCDEFGH|BCDEFGHI|ABCDEFGHI|0ABCDEFGHI|90ABCDEFGHI|890ABCDEFGHI|7890ABCDEFGHI|67890ABCDEFGHI|567890ABCDEFGHI|4567890ABCDEFGHI|34567890ABCDEFGHI|234567890ABCDEFGHI|1234567890ABCDEFGHI|CDEFGHIJ|BCDEFGHIJ|ABCDEFGHIJ|OABCDEFGHIJ|90ABCDEFGHIJ|890ABCDEFGHIJ|7890ABCDEFGHIJ|67890ABCDEFGHIJ|567890ABCDEFGHIJ|4567890ABCDEFGHIJ|34567890ABCDEFGHIJ|234567890ABCDEFGHIJ|1234567890ABCDEFGHIJ


In the above example, Pattern(S′)=P′ has 91 elements, with the element P′0 at offset zero being “12345678”, and the 91st element P′90 at offset 90 being “1234567890ABCDEFGHIJ”.


When the string S corresponds to a DNA or RNA or protein sequence, then Pattern(S) is a pattern for that DNA or RNA or protein sequence.


The “Count” Mechanisms

The count mechanisms operate on pattern sequences (i.e., on ordered alphanumeric sequences). Each count mechanism determines a count for each element of the sequence on which it operates. That is, if a sequence has k elements or subsequences (numbered from offset 0 to offset k−1), then that sequence will have k count values for each kind of count.


When the ordered sequence of elements corresponds to a pattern for a string, the count mechanism determines the count for that pattern.


When the ordered sequence of elements E corresponds to a pattern of a DNA or RNA or protein sequence, then Count(E) (for a particular count mechanism) provides corresponding count values for that DNA or RNA or protein sequence.


The “Offset Count, Bigger Length” Mechanism

For an ordered sequence of k elements E=[E0, E1 . . . Ek-1], the “offset count, bigger length” mechanism determines a corresponding vector or array of k count values, as follows:


For each sequence element Ej, for j=0 to k−1, (i.e., for subsequence Ej) start the count at zero (0), and then compare that subsequence Ej to all the subsequences in the ordered sequence E. The count for the j-th element (Ej) increments by 1 if a target subsequence is longer than and contains compared subsequence (Ej).


For example, for the following ordered sequence E









GTGGGCCC | TGGGCCCA | GTGGGCCCA | GGGCCCAG |





TGGGCCCAG | GTGGGCCCAG | GGCCCAGA | GGGCCCAGA |





TGGGCCCAGA | GTGGGCCCAGA | GCCCAGAC | GGCCCAGAC |





GGGCCCAGAC | TGGGCCCAGAC | GTGGGCCCAGAC






For the third element, E2=Subsequence2=GTGGGCCCA matches at offsets 5, 9 and 14 (GTGGGCCCAG, GTGGGCCCAGA, and GTGGGCCCAGAC). To aid in this explanation, the matching parts of the sequence are underlined and in italics. Thus, in this example,

    • Offset_Count_Bigger_Length(Subsequence2)=3


When an ordered sequence of elements E corresponds to a pattern of a DNA or RNA or protein sequence, then Offset_Count_Bigger_Length(E) provides corresponding count values for that DNA or RNA or protein sequence.


The “Offset Count, Ignore Length” Mechanism

For an ordered sequence of k elements E[E0, E1 . . . Ek-1], the “offset count, bigger length” mechanism determines a corresponding vector or array of k count values, as follows:


For each sequence element Ej, for j=0 to k−1, (i.e., for subsequence E) start the count at zero (0), and then, compare that subsequence to all the subsequences. The count for the j-th element (Ej) increments by 1 if either (i) the target subsequence contains the compared subsequence, or (ii) the compared subsequence contains target subsequence.


For example:











 0 GTGGGCCC |







 1 TGGGCCCA |







 2 GTGGGCCCA |







 3 GGGCCCAG |







 4 TGGGCCCAG |







 5 GTGGGCCCAG |







 6 GGCCCAGA |







 7 GGGCCCAGA |







 8 TGGGCCCAGA |







 9 GTGGGCCCAGA |







10 GCCCAGAC |







11 GGCCCAGAC |







12 GGGCCCAGAC |







13 TGGGCCCAGAC |







14 GTGGGCCCAGAC






For the third element, E2=Subsequence2=GTGGGCCCA matches at offsets 5, 9 and 14 (GTGGGCCCAG, GTGGGCCCAGA, and GTGGGCCCAGAC), as with the Offset_Count_Bigger_Length mechanism. In this case, Offset_Count_Ignore_Length also matches elements at offsets 0 and 1. Thus, in this example,

    • Offset_Count_Ignore_Length(Subsequence2)=6


It should be apparent that for an particular element of a sequence,


Offset_Count_Ignore_Length will always be greater than or equal to


Offset_Count_Bigger_Length.


When an ordered sequence of elements E corresponds to a pattern of a DNA or RNA or protein sequence, then Offset_Count_Ignore_Length(E) provides corresponding count values for that DNA or RNA or protein sequence.


The iScore Mechanism

For an ordered sequence of k elements E[E0, E1 . . . Ek-1], the iScore mechanism determines a corresponding value for each element EE, for j=0 to k−1, (i.e., for subsequence EE) of the sequence, as follows:






iScore(Ej)=(Offset_Count_Ignore_Length(Ej)−Offset_Count_Bigger_Length(Ej))÷Length(Ej)


In the above example, for Subsequence2=GTGGGCCCA,






iScore(Subsequence2=GTGGGCCCA)=(6−3)/9=0.33333


When the ordered sequence of elements corresponds to a pattern for a string, the iScore mechanism determines the iScores for that pattern.


When an ordered sequence of elements E corresponds to a pattern of a DNA or RNA or protein sequence, then iScore(E) provides corresponding iScore values for that DNA or RNA or protein sequence.


In the case of a nucleotide sequence, the iScore mechanism provides count of subsequence recurrence or inter-inclusiveness based on a one-nucleotide advance.


Example

This example shows the iScore values for the sequence











S = “GTGCCCCCGGACTACATTTT”.






The pattern mechanism applied to the string S (i.e., Pattern8(S)=Pattern8(GTGCCCCCGGACTACATTTT) gives the following ordered sequence (with 91 elements):









GTGCCCCC|TGCCCCCG|GTGCCCCCG|GCCCCCGG|TGCCCCCGG|





GTGCCCCCGG|CCCCCGGA|GCCCCCGGA|TGCCCCCGGA|





GTGCCCCCGGA|CCCCGGAC|CCCCCGGAC|GCCCCCGGAC|





TGCCCCCGGAC|GTGCCCCCGGAC|CCCGGACT|CCCCGGACT|





CCCCCGGACT|GCCCCCGGACT|TGCCCCCGGACT|GTGCCCCCGGACT|





CCGGACTA|CCCGGACTA|CCCCGGACTA|CCCCCGGACTA|





GCCCCCGGACTA|TGCCCCCGGACTA|GTGCCCCCGGACTA|





CGGACTAC|CCGGACTAC|CCCGGACTAC|CCCCGGACTAC|





CCCCCGGACTAC|GCCCCCGGACTAC|TGCCCCCGGACTAC|





GTGCCCCCGGACTAC|GGACTACA|CGGACTACA|CCGGACTACA|





CCCGGACTACA|CCCCGGACTACA|CCCCCGGACTACA|





GCCCCCGGACTACA|TGCCCCCGGACTACA|GTGCCCCCGGACTACA|





GACTACAT|GGACTACAT|CGGACTACAT|CCGGACTACAT|





CCCGGACTACAT|CCCCGGACTACAT|CCCCCGGACTACAT|





GCCCCCGGACTACAT|TGCCCCCGGACTACAT|





GTGCCCCCGGACTACAT|ACTACATT|GACTACATT|GGACTACATT|





CGGACTACATT|CCGGACTACATT|CCCGGACTACATT|





CCCCGGACTACATT|CCCCCGGACTACATT|GCCCCCGGACTACATT|





TGCCCCCGGACTACATT|GTGCCCCCGGACTACATT|CTACATTT|





ACTACATTT|GACTACATTT|GGACTACATTT|CGGACTACATTT|





CCGGACTACATTT|CCCGGACTACATTT|CCCCGGACTACATTT|





CCCCCGGACTACATTT|GCCCCCGGACTACATTT|





TGCCCCCGGACTACATTT|GTGCCCCCGGACTACATTT|TACATTTT|





CTACATTTT|ACTACATTTT|GACTACATTTT|GGACTACATTTT|





CGGACTACATTTT|CCGGACTACATTTT|CCCGGACTACATTTT|





CCCCGGACTACATTTT|CCCCCGGACTACATTTT|





GCCCCCGGACTACATTTT|TGCCCCCGGACTACATTTT|





GTGCCCCCGGACTACATTTT






The following table shows the iScores for each element of Pattern8(S) (with the iScore values truncated to three decimal places, for convenience of display).




















Offset
Offset





Subse-
Count
Count



Off-

quence
Bigger
ignore



set
Subsequence
Length
Length
Length
iScore




















0
GTGCCCCC
8
12
13
0.125





1
TGCCCCCG
8
23
24
0.125





2
GTGCCCCCG
9
11
14
0.333





3
G CCCCGG
8
32
33
0.125





4
TGCCCCCGG
9
21
24
0.333





5
GTGCCCCCGG
10
10
16
0.600





6
CCCCCGGA
8
39
40
0.125





7
GCCCCCGGA
9
29
32
0.333





8
TGCCCCCGGA
10
19
25
0.600





9
GTGCCCCCGGA
11
9
19
0.909





10
CCCCGGAC
8
44
45
0.125





11
CCCCCGGAC
9
35
38
0.333





12
GCCCCCGGAC
10
26
32
0.600





13
TGCCCCCGGAC
11
17
27
0.909





14
GTGCCCCCGGAC
12
8
23
1.250





15
CCCGGACT
8
47
48
0.125





16
CCCCGGACT
9
39
42
0.333





17
CCCCCGGACT
10
31
37
0.600





18
GCCCCCGGACT
11
23
33
0.909





19
TGCCCCCGGACT
12
15
30
1.250





20
GTGCCCCCGGACT
13
7
28
1.615





21
CCGGACTA
8
48
49
0.125





22
CCCGGACTA
9
41
44
0.333





23
CCCCGGACTA
10
34
40
0.600





24
CCCCCGGACTA
11
27
37
0.909





25
GCCCCCGGACTA
12
20
35
1.250





26
TGCCCCCGGACTA
13
13
34
1.615





27
GTGCCCCCGGACTA
14
6
34
2.000





28
CGGACTAC
8
47
48
0.125





29
CCGGACTAC
9
41
44
0.333





30
CCCGGACTAC
10
35
41
0.600





31
CCCCGGACTAC
11
29
39
0.909





32
CCCCCGGACTAC
12
23
38
1.250





33
GCCCCCGGACTAC
13
17
38
1.615





34
TGCCCCCGGACTAC
14
11
39
2.000





35
GTGCCCCCGGACTAC
15
5
41
2.400





36
GGACTACA
8
44
45
0.125





37
CGGACTACA
9
39
42
0.333





38
CCGGACTACA
10
34
40
0.600





39
CCCGGACTACA
11
29
39
0.909





40
CCCCGGACTACA
12
24
39
1.250





41
CCCCCGGACTACA
13
19
40
1.615





42
GCCCCCGGACTACA
14
14
42
2.000





43
TGCCCCCGGACTACA
15
9
45
2.400





44
GTGCCCCCGGACTACA
16
4
49
2.813





45
GACTACAT
8
39
40
0.125





46
GGACTACAT
9
35
38
0.333





47
CGGACTACAT
10
31
37
0.600





48
CCGGACTACAT
11
27
37
0.909





49
CCCGGACTACAT
12
23
38
1.250





50
CCCCGGACTACAT
13
19
40
1.615





51
CCCCCGGACTACAT
14
15
43
2.000





52
GCCCCCGGACTACAT
15
11
47
2.400





53
TGCCCCCGGACTACAT
16
7
52
2.813





54
GTGCCCCCGGACTACAT
17
3
58
3.235





55
ACTACATT
8
32
33
0.125





56
GACTACATT
9
29
32
0.333





57
GGACTACATT
10
26
32
0.600





58
CGGACTACATT
11
23
33
0.909





59
CCGGACTACATT
12
20
35
1.250





60
CCCGGACTACATT
13
17
38
1.615





61
CCCCGGACTACATT
14
14
42
2.000





62
CCCCCGGACTACATT
15
11
47
2.400





63
GCCCCCGGACTACATT
16
8
53
2.813





54
TGCCCCCGGACTACATT
17
5
50
3.235





65
GTGCCCCCGGACTACATT
18
2
68
3.667





66
CTACATTT
8
23
24
0.125





67
ACTACATTT
9
21
24
0.333





68
GACTACATTT
10
19
25
0.600





69
GGACTACATTT
11
17
27
0.909





70
CGGACTACATTT
12
15
30
1.250





71
CCGGACTACATTT
13
13
34
1.615





72
CCCGGACTACATTT
14
11
39
2.000





73
CCCCGGACTACATTT
15
9
45
2.400





74
CCCCCGGACTACATTT
16
7
52
2.813





75
GCCCCCGGACTACATTT
17
5
60
3.235





76
TGCCCCCGGACTACATTT
18
3
59
3.667





77
GTGCCCCCGGACTACATTT
19
1
79
4.105





78
TACATTTT
8
12
13
0.125





79
CTACATTTT
9
11
14
0.333





80
ACTACATTTT
10
10
16
0.600





81
GACTACATTTT
11
9
19
0.909





82
GGACTACATTTT
12
8
23
1.250





83
CGGACTACATTTT
13
7
28
1.615





84
CCGGACTACATTTT
14
6
34
2.000





85
CCCGGACTACATTTT
15
5
41
2.400





86
CCCCGGACTACATTTT
16
4
49
2.813





87
CCCCCGGACTACATTTT
17
3
58
3.235





88
GCCCCCGGACTACATTTT
18
2
68
3.667





89
TGCCCCCGGACTACATTTT
19
1
79
4.105





90
GTGCCCCCGGACTACATTTT
20
0
91
4.550









Complementary Subsequences

For a give DNA sequence (S), the complementary sequence (C) is a sequence formed using complementary bases according to the following rules:

















DNA
to
RNA









T

A



C

G



G

C



A

U










Note that on the RNA the complement of A is U (Uracil), not thymine (T).


An RNA sequence R may be written as r1r2 . . . rk, wherein each ri is selected from the set {A, C, U, G}. When DNA is transcribed to RNA each “T” is replaced by a “U”, otherwise the sequence remains the same.


For example, the complementary sequence of “GTAAGCCT” is “AGGCTTAC.”


For a given sequence S, the reverse complementary sequence of S is the complement of the reverse of S.


In embodiments hereof, the system maintains a count the occurrence of all subsequences that include any subsequence's complement.


The Signature Mechanism

The signature mechanism provides a signature value of an alphanumeric string, where the value may be used, e.g., as a database index or key for that string.


In presently preferred implementations the signature (VS) for a particular sequence (represented, e.g., as a character string S=s1s2 . . . sn) is obtained as follows:

    • 1: Generate sequence (or ordered list) of sub strings of S using, e.g., the pattern function (described above, e.g., Pattern8(S))
    • 2: Generate sequence of hash values, one for each element of the ordered list of substrings.
    • 3: Generate signature FS as a function of the sequence of hash values of the substrings. Preferably the signature FS is a hash of the concatenated sequence of hash values of the substrings.
    • 4: Repeat steps 2 to 4 for the reverse (R) of string S to obtain a signature RS of the reverse string R.
    • 5: Generate VS as a function of FS and RS (e.g., FS+RS) Where the sequence S corresponds to an intron, the value
      • VS=signature (S)
    • is a signature for that intron.
    • Where the sequence S corresponds to an exon, the value
      • VS=signature (S)
    • is a signature for that exon.
    • Where the sequence S corresponds to a protein, the value
      • VS=signature (S)
    • is a signature for that protein.


Where the sequence S corresponds to a plurality of introns in a gene, the value VS is an intron signature for that gene. For example, suppose a gene has the form:

    • <EXON1><INTRON1><EXON2><INTRON2><EXON3><INTRON3><EXON4>


Then the introns for that gene are:

    • <INTRON1><INTRON2><INTRON3>


and VS=signature(<INTRON1><INTRON2><INTRON3>) may be considered an intron signature of the gene.


In some embodiments, the hashes of the reverse of the string may be omitted (in 4), and the value VS is a function of FS, e.g., VS=FS. Other information, e.g., the length of the string S, may be used to determine Vs.


A requirement of the signature function is that two identical strings have the same signature.


As is well known, a hash function is a function that converts its input into a numeric value, called its hash value. Preferably the hash function is a non-cryptographic hash function such as FNV (e.g., FNV1-64 Bit). Exemplary source code for the FNV hashing function (in the Ruby programming language) is shown in Appendix I to Application PCT/US15/30478, which as been incorporated into this application for all purposes.


For example, using the exemplary FNV source code in Appendix I to Application PCT/US15/30478, the function call puts FNV. calculate(“ABCDE”) generates the hash value 813007184206524010 corresponding to the string “ABCDE”.


It should be appreciated that any hash function may be used, and that FNV is merely provided by way of example. Furthermore, while any hash function may be used, preferred embodiments hereof use two-way or reversible hash functions. In preferred embodiments the same hash function must be used for all independent entities in the string to produce the result.


PhV Mechanism

Recall that a given gene has a number of transcripts, some of which may be protein coding. For example, MEN1 has 15 protein-coding transcripts and BRCA1 has 25 are protein-coding transcripts.


For a given gene with k protein-coding transcripts (T1, T2 . . . Tk), the PhV mechanism generates an ordered sequence (or vector) of k values, where the i-th value is signature(Ti). Thus, e.g., for the MEN1 gene with 15 protein-coding transcripts,

    • PhV(MEN1)=[signature(T1), signature(T2), . . . signature(Tk)]


Position in Vector (PiV) Mechanism

For a given gene G with m protein-coding transcripts (m≥1), a Pattern mechanism (e.g., Pattern8) is applied to the intron values for each of the m transcripts, giving m ordered sequences of elements, one for the intron(s) of each transcript.


For the purposes of this description, and without loss of generality, the ordered sequence of elements for the intron(s) of the i-th transcript is referred to here as Ei. If a gene has m protein-coding transcripts, then m ordered sequences of transcripts (E1, E2 . . . Em) are generated.


For each of the m ordered sequences of transcripts (E1, E2 . . . Em), the iScore mechanism is applied to the components of Ei, giving, for each element of Ei (i.e., at each offset in Ei) a corresponding iScore.


The Position in Vector (PiV) mechanism determines an ordered sequence (or vector) of vector index values for each offset of an intron subsequence. The vector index values for each PiV are in the range 1 to m for a gene that has m protein-coding transcripts (m≥1).


The protein hash vector mechanism (described above), applied to the proteins of the gene, gives a vector with m protein signatures (sometimes also referred to as protein hashes).


For a particular intron subsequence (e.g., Ei), at a given offset (e.g., offset=j), the PiV for the given offset j is determined by comparing the iScore values for each of the other intron subsequences for this gene at the given offset j. If the sorted iScore values match the protein hash vector for the gene under consideration, then the PiV uses those indices. Since iValues may be the same for multiple indices, some PiV indices with the same iValue may be reordered. On the other hand, if the sorted iScore values do not match the protein hash vector (PhV) for the gene under consideration, then the PiV uses a max-order for the indices, where the max-order tries to maximize the match of the order of the PhV.


Position in Vector (PiV) is determined using subsequence hashes at the same nucleotide from zero. The ordered subsequence hashes are compared to the original position of the transcript protein hash, the constant of each transcript in the set being analyzed.


The cumulative PiV is a count, for all subsequences, of the number of times they are assigned to each PiV.


It should be appreciated that PhV and PiV are each relativity measures of all transcripts at an offset. Both maximize the ordering of transcripts based on the same application of ordering rules. PiV begins using iScore, PhV protein hash. Protein is the constant for each transcript at all offsets. Using its hash causes each transcript at any offset to start in the same order. Whereas, iScore is a variable that potentially starts each transcript in a different order at each offset.


The rules of max-order for transcripts of an offset may be summarized (for some embodiments) as: PiV is initially grouped by iScore, PhV by hash. Each are subsequently reordered within their sub-group boundaries by the reciprocal PhV or iScore to obtain a final ordering that is maximized at the offset.


Our objective is to discover transcripts at offsets that retain the same position in each of their respective vectors, because sequence text of transcripts that retain position at offsets, using both methods exposes a dominant subset.


Example

Recall that MEM1 has 15 transcripts (ENST00000413626; ENST00000429702; ENST00000394376; ENST00000377326; ENST00000450708; ENST00000377313; ENST00000424912; ENST00000377321; ENST00000315422; ENST00000443283; ENST00000337652; ENST00000312049; ENST00000377316; ENST00000440873; ENST00000394374).


For the MEM1 gene, at offset 1,000, the subsequences for the introns of each transcript are shown in the following table:
















Sequence
Compared Sequence









ENST00000413626
GCACAGTCGTAGAGAGGG







ENST00000429702
GGGCACGCTTCCTGCCTG







ENST00000394376
CCAGCTAAAGCGGCTGAA







ENST00000377326
CCCACTTCTTCAAAACCC







ENST00000450708
AGGACTCTCCTTGGGGTT







ENST00000377313
CCCTCCATGGTTTACAGA







ENST00000424912
CCAGCTAAAGCGGCTGAA







ENST00000377321
GGGGTTTGGGGGCTTGAC







ENST00000315422
GAGCTGTGCGTGTGTCGG







ENST00000443283
GACCCTAGGGGCGGGACT







ENST00000337652
GGGCACGCTTCCTGCCTG







ENST00000312049
GACCCTAGGGGCGGGACT







ENST00000377316
CCCACTTCTTCAAAACCC







ENST00000440873
GGGGTTTGGGGGCTTGAC







ENST00000394374
GAGCTGTGCGTGTGTCGG










The following table is an iScore matrix for the MEM1 gene at offset 1,000.

















Sequence
iScore
Position in iScore Vector




















ENST00000413626
3.722222222
13



ENST00000429702
3.666666667
10



ENST00000394376
3.666666667
7



ENST00000377326
3.666666667
12



ENST00000450708
3.666666667
2



ENST00000377313
3.666666667
5



ENST00000424912
3.666666667
9



ENST00000377321
3.666666667
8



ENST00000315422
3.666666667
11



ENST00000443283
3.777777778
14



ENST00000337652
3.666666667
4



ENST00000312049
3.777777778
15



ENST00000377316
3.666666667
1



ENST00000440873
3.666666667
3



ENST00000394374
3.666666667
6










Example

For the BRCA1 gene at offset 7,000, the subsequences for the introns of each transcript are shown in the following table:













Sequence
Compared Sequence







ENST00000477152
GGACAGGGGGCCCAAGTGATGCTCTGGGGTA



CTGGCGTGGGAGAGTGGATTTCCGAAGCTGA



CAGATGGGTATTCTTTGACGGGGGGTAGGGG



CGGAACCTGAGA





ENST00000493795
GGAAAGGGACAGGGGGCCCAAGTGATGCTCT



GGGGTACTGGCGTGGGAGAGTGGATTTCCGA



AGCTGACAGATGGGTATTCTTTGACGGGGGG



TAGGGGCGGAAC





ENST00000487825
GAATGACACTCAAGTGCTGTCCATGAAAACT



CAGGAAGTTTGCACAATTACTTTCTATGACG



TGGTGATAAGACCTTTTAGTCTAGGTTAATT



TTAGTTCTGTAT





ENST00000461221
GGGGCGGAACCTGAGAGGCGTAAGGCGTTGT



GAACCCTGGGGAGGGGGGCAGTTTGTAGGTC



GCGAGGGAAGCGCTGAGGATCAGGAAGGGGG



CACTGAGTGTCC





ENST00000357654
GGACAGGGGGCCCAAGTGATGCTCTGGGGTA



CTGGCGTGGGAGAGTGGATTTCCGAAGCTGA



CAGATGGGTATTCTTTGACGGGGGGTAGGGG



CGGAACCTGAGA





ENST00000471181
GGACAGGGGGCCCAAGTGATGCTCTGGGGTA



CTGGCGTGGGAGAGTGGATTTCCGAAGCTGA



CAGATGGGTATTCTTTGACGGGGGGTAGGGG



CGGAACCTGAGA





ENST00000351666
ATTAATTTGGGATTCCTATGATTATCTCCTA



TGCAAATGAACAGAATTGACCTTACATACTA



GGGAAGAAAAGACATGTCTAGTAAGATTAGG



CTATTGTAATTG





ENST00000461798
GGAAAGGGACAGGGGGCCCAAGTGATGCTCT



GGGGTACTGGCGTGGGAGAGTGGATTTCCGA



AGCTGACAGATGGGTATTCTTTGACGGGGGG



TAGGGGCGGAAC





ENST00000493919
GGAAAGGGACAGGGGGCCCAAGTGATGCTCT



GGGGTACTGGCGTGGGAGAGTGGATTTCCGA



AGCTGACAGATGGGTATTCTTTGACGGGGGG



TAGGGGCGGAAC





ENST00000489037
GGGGCGGAACCTGAGAGGCGTAAGGCGTTGT



GAACCCTGGGGAGGGGGGCAGTTTGTAGGTC



GCGAGGGAAGCGCTGAGGATCAGGAAGGGGG



CACTGAGTGTCC





ENST00000412061
CTTAACAGGCACTGAAAAGAGAGTGGGTAGA



TACAGTACTGTAATTAGATTATTCTGAAGAC



CATTTGGGACCTTTACAACCCACAAAATCTC



TTGGCAGAGTTA





ENST00000468300
GGAAAGGGACAGGGGGCCCAAGTGATGCTCT



GGGGTACTGGCGTGGGAGAGTGGATTTCCGA



AGCTGACAGATGGGTATTCTTTGACGGGGGG



TAGGGGCGGAAC





ENST00000470026
GGGGCGGAACCTGAGAGGCGTAAGGCGTTGT



GAACCCTGGGGAGGGGGGCAGTTTGTAGGTC



GCGAGGGAAGCGCTGAGGATCAGGAAGGGGG



CACTGAGTGTCC





ENST00000478531
GGAAAGGGACAGGGGGCCCAAGTGATGCTCT



GGGGTACTGGCGTGGGAGAGTGGATTTCCGA



AGCTGACAGATGGGTATTCTTTGACGGGGGG



TAGGGGCGGAAC





ENST00000497488
GGACAGGGGGCCCAAGTGATGCTCTGGGGTA



CTGGCGTGGGAGAGTGGATTTCCGAAGCTGA



CAGATGGGTATTCTTTGACGGGGGGTAGGGG



CGGAACCTGAGA





ENST00000494123
GGAAAGGGACAGGGGGCCCAAGTGATGCTCT



GGGGTACTGGCGTGGGAGAGTGGATTTCCGA



AGCTGACAGATGGGTATTCTTTGACGGGGGG



TAGGGGCGGAAC





ENST00000473961
GAATGACACTCAAGTGCTGTCCATGAAAACT



CAGGAAGTTTGCACAATTACTTTCTATGACG



TGGTGATAAGACCTTTTAGTCTAGGTTAATT



TTAGTTCTGTAT





ENST00000354071
GGACAGGGGGCCCAAGTGATGCTCTGGGGTA



CTGGCGTGGGAGAGTGGATTTCCGAAGCTGA



CAGATGGGTATTCTTTGACGGGGGGTAGGGG



CGGAACCTGAGA





ENST00000461574
TGTTTGCCCCAGTCTATTTATAGAAGTGAGC



TAAATGTTTATGCTTTTGGGGAGCACATTTT



ACAAATTTCCAAGTATAGTTAAAGGAACTGC



TTCTTAAACTTG





ENST00000492859
GGACAGGGGGCCCAAGTGATGCTCTGGGGTA



CTGGCGTGGGAGAGTGGATTTCCGAAGCTGA



CAGATGGGTATTCTTTGACGGGGGGTAGGGG



CGGAACCTGAGA





ENST00000346315
GGAAAGGGACAGGGGGCCCAAGTGATGCTCT



GGGGTACTGGCGTGGGAGAGTGGATTTCCGA



AGCTGACAGATGGGTATTCTTTGACGGGGGG



TAGGGGCGGAAC





ENST00000352993
GGACAGGGGGCCCAAGTGATGCTCTGGGGTA



CTGGCGTGGGAGAGTGGATTTCCGAAGCTGA



CAGATGGGTATTCTTTGACGGGGGGTAGGGG



CGGAACCTGAGA





ENST00000586385
GGGGCGGAACCTGAGAGGCGTAAGGCGTTGT



GAACCCTGGGGAGGGGGGCAGTTTGTAGGTC



GCGAGGGAAGCGCTGAGGATCAGGAAGGGGG



CACTGAGTGTCC





ENST00000591849
GGACAGGGGGCCCAAGTGATGCTCTGGGGTA



CTGGCGTGGGAGAGTGGATTTCCGAAGCTGA



CAGATGGGTATTCTTTGACGGGGGGTAGGGG



CGGAACCTGAGA





ENST00000476777
GGACAGGGGGCCCAAGTGATGCTCTGGGGTA



CTGGCGTGGGAGAGTGGATTTCCGAAGCTGA



CAGATGGGTATTCTTTGACGGGGGGTAGGGG



CGGAACCTGAGA





ENST00000309486
GGAAAGGGACAGGGGGCCCAAGTGATGCTCT



GGGGTACTGGCGTGGGAGAGTGGATTTCCGA



AGCTGACAGATGGGTATTCTTTGACGGGGGG



TAGGGGCGGAAC





ENST00000484087
GAATGACACTCAAGTGCTGTCCATGAAAACT



CAGGAAGTTTGCACAATTACTTTCTATGACG



TGGTGATAAGACCTTTTAGTCTAGGTTAATT



TTAGTTCTGTAT





ENST00000491747
GGAAAGGGACAGGGGGCCCAAGTGATGCTCT



GGGGTACTGGCGTGGGAGAGTGGATTTCCGA



AGCTGACAGATGGGTATTCTTTGACGGGGGG



TAGGGGCGGAAC





ENST00000591534
GGACAGGGGGCCCAAGTGATGCTCTGGGGTA



CTGGCGTGGGAGAGTGGATTTCCGAAGCTGA



CAGATGGGTATTCTTTGACGGGGGGTAGGGG



CGGAACCTGAGA









The following table is an iScore matrix for the BRCA1 gene at offset 7,000.














Sequence
iScore
Position in iScore Vector

















ENST00000477152
46.2285714285714
18


ENST00000493795
46.2285714285714
21


ENST00000487825
46.2
2


ENST00000461221
46.2190476190476
9


ENST00000357654
46.2285714285714
13


ENST00000471181
46.2285714285714
27


ENST00000351666
46.2380952380952
29


ENST00000461798
46.2285714285714
10


ENST00000493919
46.2285714285714
26


ENST00000489037
46.2190476190476
7


ENST00000412061
46.2095238095238
5


ENST00000468300
46.2285714285714
12


ENST00000470026
46.2190476190476
6


ENST00000478531
46.2285714285714
20


ENST00000497488
46.2285714285714
25


ENST00000494123
46.2285714285714
14


ENST00000473961
46.2
3


ENST00000354071
46.2285714285714
24


ENST00000461574
46.2
4


ENST00000492859
46.2285714285714
22


ENST00000346315
46.2285714285714
28


ENST00000352993
46.2285714285714
23


ENST00000586385
46.2190476190476
8


ENST00000591849
46.2285714285714
16


ENST00000476777
46.2285714285714
11


ENST00000309486
46.2285714285714
17


ENST00000484087
46.2
1


ENST00000491747
46.2285714285714
15


ENST00000591534
46.2285714285714
19









Computing

Programs that implement such methods (as well as other types of data) may be stored and transmitted using a variety of media (e.g., computer readable media) in a number of manners. Hard-wired circuitry or custom hardware may be used in place of, or in combination with, some or all of the software instructions that can implement the processes of various embodiments. Thus, various combinations of hardware and software may be used instead of software only.



FIG. 3 is a schematic diagram of a computer system 300 upon which embodiments of the present disclosure may be implemented and carried out.


According to the present example, the computer system 300 includes a bus 302 (i.e., interconnect), one or more processors 304, one or more communications ports 314, a main memory 306, removable storage media 310, read-only memory 308, and a mass storage 312. Communication port(s) 314 may be connected to one or more networks by way of which the computer system 300 may receive and/or transmit data.


As used herein, a “processor” means one or more microprocessors, central processing units (CPUs), computing devices, microcontrollers, digital signal processors, or like devices or any combination thereof, regardless of their architecture. An apparatus that performs a process can include, e.g., a processor and those devices such as input devices and output devices that are appropriate to perform the process.


Processor(s) 304 can be (or include) any known processor, such as, but not limited to, an Intel® Itanium® or Itanium 2® processor(s), AMID® Opteron® or Athlon MP® processor(s), or Motorola® lines of processors, and the like. Communications port(s) 314 can be any of an RS-232 port for use with a modem based dial-up connection, a 10/100 Ethernet port, a Gigabit port using copper or fiber, or a USB port, and the like. Communications port(s) 314 may be chosen depending on a network such as a Local Area Network (LAN), a Wide Area Network (WAN), a CDN, or any network to which the computer system 300 connects. The computer system 300 may be in communication with peripheral devices (e.g., display screen 316, input device(s) 318) via Input/Output (I/O) port 320. Some or all of the peripheral devices may be integrated into the computer system 300, and the input device(s) 318 may be integrated into the display screen 316 (e.g., in the case of a touch screen).


Main memory 306 can be Random Access Memory (RAM), or any other dynamic storage device(s) commonly known in the art. Read-only memory 308 can be any static storage device(s) such as Programmable Read-Only Memory (PROM) chips for storing static information such as instructions for processor(s) 304. Mass storage 312 can be used to store information and instructions. For example, hard disks such as the Adaptec® family of Small Computer Serial Interface (SCSI) drives, an optical disc, an array of disks such as Redundant Array of Independent Disks (RAID), such as the Adaptec® family of RAID drives, or any other mass storage devices may be used.


Bus 302 communicatively couples processor(s) 304 with the other memory, storage and communications blocks. Bus 302 can be a PCI/PCI-X, SCSI, a Universal Serial Bus (USB) based system bus (or other) depending on the storage devices used, and the like. Removable storage media 310 can be any kind of external hard-drives, floppy drives, IOMEGA® Zip Drives, Compact Disc-Read Only Memory (CD-ROM), Compact Disc-Re-Writable (CD-RW), Digital Versatile Disk-Read Only Memory (DVD-ROM), etc.


Embodiments herein may be provided as one or more computer program products, which may include a machine-readable medium having stored thereon instructions, which may be used to program a computer (or other electronic devices) to perform a process. As used herein, the term “machine-readable medium” refers to any medium, a plurality of the same, or a combination of different media, which participate in providing data (e.g., instructions, data structures) which may be read by a computer, a processor or a like device. Such a medium may take many forms, including but not limited to, non-volatile media, volatile media, and transmission media. Non-volatile media include, for example, optical or magnetic disks and other persistent memory. Volatile media include dynamic random access memory, which typically constitutes the main memory of the computer. Transmission media include coaxial cables, copper wire and fiber optics, including the wires that comprise a system bus coupled to the processor. Transmission media may include or convey acoustic waves, light waves and electromagnetic emissions, such as those generated during radio frequency (RF) and infrared (IR) data communications.


The machine-readable medium may include, but is not limited to, floppy diskettes, optical discs, CD-ROMs, magneto-optical disks, ROMs, RAMs, erasable programmable read-only memories (EPROMs), electrically erasable programmable read-only memories (EEPROMs), magnetic or optical cards, flash memory, or other type of media/machine-readable medium suitable for storing electronic instructions. Moreover, embodiments herein may also be downloaded as a computer program product, wherein the program may be transferred from a remote computer to a requesting computer by way of data signals embodied in a carrier wave or other propagation medium via a communication link (e.g., modem or network connection).


Various forms of computer readable media may be involved in carrying data (e.g. sequences of instructions) to a processor. For example, data may be (i) delivered from RAM to a processor; (ii) carried over a wireless transmission medium; (iii) formatted and/or transmitted according to numerous formats, standards or protocols; and/or (iv) encrypted in any of a variety of ways well known in the art.


A computer-readable medium can store (in any appropriate format) those program elements that are appropriate to perform the methods.


As shown, main memory 306 is encoded with application(s) 322 that support(s) the functionality as discussed herein (an application 322 may be an application that provides some or all of the functionality of one or more of the mechanisms described herein). Application(s) 322 (and/or other resources as described herein) can be embodied as software code such as data and/or logic instructions (e.g., code stored in the memory or on another computer readable medium such as a disk) that supports processing functionality according to different embodiments described herein.


During operation of one embodiment, processor(s) 304 accesses main memory 306 via the use of bus 302 in order to launch, run, execute, interpret or otherwise perform the logic instructions of the application(s) 322. Execution of application(s) 322 produces processing functionality of the service(s) or mechanism(s) related to the application(s). In other words, the process(es) 324 represents one or more portions of the application(s) 322 performing within or upon the processor(s) 304 in the computer system 300.


It should be noted that, in addition to the process(es) 324 that carries(carry) out operations as discussed herein, other embodiments herein include the application 322 itself (i.e., the un-executed or non-performing logic instructions and/or data). The application 322 may be stored on a computer readable medium (e.g., a repository) such as a disk or in an optical medium. According to other embodiments, the application 322 can also be stored in a memory type system such as in firmware, read only memory (ROM), or, as in this example, as executable code within the main memory 306 (e.g., within Random Access Memory or RAM). For example, application 322 may also be stored in removable storage media 310, read-only memory 308, and/or mass storage device 312.


The application(s) 322 may correspond, at least in part, to one or more of the mechanisms 102 shown in FIG. 1. For example, each of the “Pattern” mechanism; the “count” mechanisms; the “offset count, bigger length” mechanism; the “offset count, ignore length” mechanism; the iScore mechanism; the Signature mechanism; PhV mechanism; and the Position in Vector (PiV) mechanism may conveniently be implemented by one or more application(s) 322 that, when executed, run as corresponding processes 324.


Those skilled in the art will understand that the computer system 300 can include other processes and/or software and hardware components, such as an operating system that controls allocation and use of hardware resources.


Those skilled in the art will understand that the computer system 300 can include other processes and/or software and hardware components, such as an operating system that controls allocation and use of hardware resources.


As discussed herein, embodiments of the present invention include various steps or operations. A variety of these steps may be performed by hardware components or may be embodied in machine-executable instructions, which may be used to cause a general-purpose or special-purpose processor programmed with the instructions to perform the operations. Alternatively, the steps may be performed by a combination of hardware, software, and/or firmware. The term “module” refers to a self-contained functional component, which can include hardware, software, firmware or any combination thereof.


One of ordinary skill in the art will readily appreciate and understand, upon reading this description, that embodiments of an apparatus may include a computer/computing device operable to perform some (but not necessarily all) of the described process.


Embodiments of a computer-readable medium storing a program or data structure include a computer-readable medium storing a program that, when executed, can cause a processor to perform some (but not necessarily all) of the described process.


Where a process is described herein, those of skill in the art will appreciate that the process may operate without any user intervention. In another embodiment, the process includes some human intervention (e.g., a step is performed by or with the assistance of a human).


As used in this description, the term “portion” means some or all. So, for example, “A portion of X” may include some of “X” or all of “X”. In the context of a sequence, the term “portion” means some or all of the sequence.


As used herein, including in the claims, the phrase “at least some” means “one or more,” and includes the case of only one. Thus, e.g., the phrase “at least some ABCs” means “one or more ABCs”, and includes the case of only one ABC.


As used herein, including in the claims, the phrase “based on” means “based in part on” or “based, at least in part, on,” and is not exclusive. Thus, e.g., the phrase “based on factor X” means “based in part on factor X” or “based, at least in part, on factor X.” Unless specifically stated by use of the word “only”, the phrase “based on X” does not mean “based only on X.”


As used herein, including in the claims, the phrase “using” means “using at least,” and is not exclusive. Thus, e.g., the phrase “using X” means “using at least X.” Unless specifically stated by use of the word “only”, the phrase “using X” does not mean “using only X.”


In general, as used herein, including in the claims, unless the word “only” is specifically used in a phrase, it should not be read into that phrase.


As used herein, including in the claims, the phrase “overlap” means “at least partially overlap.” Unless specifically stated, “overlap” does not mean fully overlap. Thus, by way of non-limiting example, the sequence “ABCD” may be said to overlap the sequence “BCDE” and the sequence “ABCDE” and the sequence “DEFG”.


As used herein, including in the claims, the phrase “distinct” means “at least partially distinct.” Unless specifically stated, distinct does not mean fully distinct. Thus, e.g., the phrase, “X is distinct from Y” means that “X is at least partially distinct from Y,” and does not mean that “X is fully distinct from Y.” Thus, as used herein, including in the claims, the phrase “X is distinct from Y” means that X differs from Y in at least some way. It should be appreciated that two fully or partially overlapping sequences can be distinct. As a non-limiting example, the sequence “BCD” overlaps and is distinct from the sequence “ABCDE”.


As used herein, including in the claims, a list may include only one item, and, unless otherwise stated, a list of multiple items need not be ordered in any particular manner. A list may include duplicate items. For example, as used herein, the phrase “a list of XYZs” may include one or more “XYZs”.


It should be appreciated that the words “first”, “second”, “third,” and so on, if used in the claims, are used to distinguish or identify, and not to show a serial or numerical limitation. Similarly, the use of letter or numerical labels (such as “(a)”, “(b)”, and the like) are used to help distinguish and/or identify, and not to show any serial or numerical limitation or ordering.


No ordering is implied by any of the labeled boxes in any of the flow diagrams unless specifically shown and stated. When disconnected boxes are shown in a diagram the activities associated with those boxes may be performed in any order, including fully or partially in parallel.


While the invention has been described in connection with and with respect to protein, DNA, and RNA molecules, those of ordinary skill in the art will realize and appreciate, upon reading this description, that these techniques may be applied to other molecules, including molecules in a genome (including non-coding molecules).


While the invention has been described in connection with what is presently considered to be the most practical and preferred embodiments, it is to be understood that the invention is not to be limited to the disclosed embodiment, but on the contrary, is intended to cover various modifications and equivalent arrangements included within the spirit and scope of the appended claims.

Claims
  • 1. A computer-implemented method, implemented by hardware in combination with software, said method comprising: (A) obtaining a representation of a nucleic acid sequence, wherein said nucleic acid sequence encodes a particular gene and said particular gene encodes a particular protein, said nucleic acid sequence comprising at least one intron;(B) determining an intron signature value corresponding to said at least one intron, said intron signature value being based on a first computational function applied to one or more portions of said representation of said nucleic acid sequence corresponding to said at least one intron;(C) determining a protein signature value corresponding to said particular protein, said protein signature value being based on a second computational function applied to a representation of said particular protein; and(D) forming, in a database, an association between said intron signature value and said protein signature value.
  • 2. The method of claim 1 further comprising: (E) repeating acts (A) to (D) for each of a plurality of nucleic acid sequences.
  • 3. The method of claim 1 further comprising: (F) using said association formed in (D) to determine or confirm at least one aspect of a genetic function of a particular nucleic acid sequence.
  • 4. The method of claim 2 further comprising: (F) using said association formed in (D) to determine or confirm at least one aspect of a genetic function of a particular nucleic acid sequence.
  • 5. A computer-implemented method, implemented by hardware in combination with software, said method comprising: (A) obtaining a representation of a nucleic acid sequence, said nucleic acid sequence comprising multiple non-overlapping nucleic acid subsequences, each of said nucleic acid subsequences encoding an amino acid;(B) determining a particular amino acid encoded by a particular nucleic acid subsequence of said multiple non-overlapping nucleic acid subsequences, wherein said particular nucleic acid subsequence comprises a first nucleotide, a second nucleotide adjacent to said first nucleotide, and a third nucleotide adjacent to said second nucleotide, by considering a nucleotide pair consisting of: (i) said first nucleotide and said second nucleotide, or (ii) said second nucleotide and said third nucleotide.
  • 6. A computer-implemented method of encoding a nucleic acid sequence, the method implemented by hardware in combination with software, the method comprising: (A) obtaining a representation of said nucleic acid sequence, said nucleic acid sequence comprising multiple non-overlapping nucleic acid subsequences, each of said nucleic acid subsequences encoding an amino acid;(B) determining a plurality of subsequences of said nucleic acid sequence, wherein said plurality of subsequences are determined by a binary counting of said nucleic acid sequence;(C) determining a digital signature for said nucleic acid sequence based on a computational hash function applied to said plurality of subsequences of said nucleic acid sequence.
  • 7. The method of claim 6 further comprising: (D) using said digital signature for said nucleic acid sequence to determine or confirm at least one aspect of a genetic function of said nucleic acid sequence.
  • 8. A computer implemented method, implemented by hardware in combination with software, the method comprising: (A) obtaining a particular character string, said particular character string being representation of a first one or more portions of a particular nucleic acid sequence, wherein said particular nucleic acid sequence comprises a second one or more portions that encode a particular protein, said first one or more portions of said particular nucleic acid sequence being distinct from said second one or more portions of said particular nucleic acid sequence;(B) determining a plurality of hash values of a corresponding plurality of substrings associated with said particular character string;(C) determining a signature value for said first one or more portions of said particular nucleic acid sequence based on said first plurality of hash values;(D) forming an association in a database between said signature value for said first one or more portions of said particular nucleic acid sequence and said particular protein; and(E) using said association formed in (D) to determine or confirm at least one aspect of a genetic function of said particular nucleic acid sequence.
  • 9. The method of claim 8 wherein said using in (E) also uses other associations in said database between other signature values of other character strings to determine or confirm said at least one aspect of a genetic function of said particular nucleic acid sequence.
  • 10. A computer-implemented method, implemented by hardware in combination with software, said method comprising: (A) determining a particular intron signature value corresponding to a particular at least one intron, said particular intron signature value being based on a first computational function applied to one or more portions of a representation of a particular nucleic acid sequence corresponding to said particular at least one intron;(B) determining a particular protein signature value corresponding to a particular protein, said protein signature value being based on a second computational hash function applied to a representation of said particular protein;(C) adding a record to a database, said record comprising a first field for said particular intron signature value and a second field for said particular protein signature value,wherein said database comprises a plurality of records corresponding to a plurality of nucleic acid sequences, each of said records comprising an intron signature value and a corresponding protein signature value, each of said intron signature values having been determined for and based on said first computational function applied to a portion of a corresponding nucleic acid sequence, said corresponding nucleic acid sequence encoding a particular gene, and each of said protein signature values having been determined based on a second computational hash function applied to a representation of a protein associated with said corresponding nucleic acid sequence.
  • 11. The method of claim 10, further comprising: (D) using information in said database to determine or confirm at least one aspect of a genetic function of said particular nucleic acid sequence.
  • 12. A non-transitory computer-readable recording medium storing one or more programs, which, when executed, cause one or more processors to, at least: (a) obtain a representation of a nucleic acid sequence, wherein said nucleic acid sequence encodes a particular gene and said particular gene encodes a particular protein, said nucleic acid sequence comprising at least one intron;(b) determine an intron signature value corresponding to said at least one intron, said intron signature value being based on a first computational function applied to one or more portions of said representation of said nucleic acid sequence corresponding to said at least one intron;(c) determine a protein signature value corresponding to said particular protein, said protein signature value being based on a second computational function applied to a representation of said particular protein; and(d) form, in a database, an association between said intron signature value and said protein signature value.
  • 13. The non-transitory computer-readable recording medium of claim 12, wherein the one or more programs, when executed, cause one or more processors to, at least: (f) use said association formed in (d) to determine or confirm at least one aspect of a genetic function of a particular nucleic acid sequence.
  • 14. A non-transitory computer-readable recording medium storing one or more programs, which, when executed, cause one or more processors to, at least: (a) obtain a representation of said nucleic acid sequence, said nucleic acid sequence comprising multiple non-overlapping nucleic acid subsequences, each of said nucleic acid subsequences encoding an amino acid;(b) determine a plurality of subsequences of said nucleic acid sequence, wherein said plurality of subsequences are determined by a binary counting of said nucleic acid sequence;(c) determine a digital signature for said nucleic acid sequence based on a computational hash function applied to said plurality of subsequences of said nucleic acid sequence.
  • 15. The non-transitory computer-readable recording medium of claim 12, wherein the one or more programs, when executed, cause one or more processors to, at least: (d) use said digital signature for said nucleic acid sequence to determine or confirm at least one aspect of a genetic function of said nucleic acid sequence.
  • 16. A non-transitory computer-readable recording medium storing one or more programs, which, when executed, cause one or more processors to, at least: (a) obtain a particular character string, said particular character string being representation of a first one or more portions of a particular nucleic acid sequence, wherein said particular nucleic acid sequence comprises a second one or more portions that encode a particular protein, said first one or more portions of said particular nucleic acid sequence being distinct from said second one or more portions of said particular nucleic acid sequence;(b) determine a plurality of hash values of a corresponding plurality of substrings associated with said particular character string;(c) determine a signature value for said first one or more portions of said particular nucleic acid sequence based on said first plurality of hash values;(d) form an association in a database between said signature value for said first one or more portions of said particular nucleic acid sequence and said particular protein; and(e) use said association formed in (d) to determine or confirm at least one aspect of a genetic function of said particular nucleic acid sequence.
  • 17. The non-transitory computer-readable recording medium of claim 16, wherein said using said association in (e) also uses other associations in said database between other signature values of other character strings to determine or confirm said at least one aspect of a genetic function of said particular nucleic acid sequence.
  • 18. A non-transitory computer-readable recording medium storing one or more programs, which, when executed, cause one or more processors to, at least: (a) determine a particular intron signature value corresponding to a particular at least one intron, said particular intron signature value being based on a first computational function applied to one or more portions of a representation of a particular nucleic acid sequence corresponding to said particular at least one intron;(b) determine a particular protein signature value corresponding to a particular protein, said protein signature value being based on a second computational hash function applied to a representation of said particular protein;(c) add a record to a database, said record comprising a first field for said particular intron signature value and a second field for said particular protein signature value,wherein said database comprises a plurality of records corresponding to a plurality of nucleic acid sequences, each of said records comprising an intron signature value and a corresponding protein signature value, each of said intron signature values having been determined for and based on said first computational function applied to a portion of a corresponding nucleic acid sequence, said corresponding nucleic acid sequence encoding a particular gene, and each of said protein signature values having been determined based on a second computational hash function applied to a representation of a protein associated with said corresponding nucleic acid sequence.
  • 19. The non-transitory computer-readable recording medium of claim 18, wherein the one or more programs, when executed, cause one or more processors to, at least: (d) use information in said database to determine or confirm at least one aspect of a genetic function of said particular nucleic acid sequence.
RELATED APPLICATION

This application claims priority from U.S. Provisional Patent application No. 62/443,136, filed Jan. 6, 2017, the entire contents of which are hereby fully incorporated herein by reference for all purposes. This application is a continuation-in-part (CIP) of U.S. patent application Ser. No. 15/345,505, filed Nov. 7, 2016, which is a continuation of PCT/US2015/030478, filed May 13, 2015, which claims priority from copending (i) U.S. Provisional Patent Application No. 61/993,846, filed May 15, 2014; and (ii) U.S. Provisional Patent Application No. 62/015,492, filed Jun. 22, 2014, the entire contents of each of which are hereby fully incorporated herein by reference for all purposes.

Provisional Applications (3)
Number Date Country
62443136 Jan 2017 US
61993846 May 2014 US
62015492 Jun 2014 US
Continuations (1)
Number Date Country
Parent PCT/US15/30478 May 2015 US
Child 15345505 US
Continuation in Parts (1)
Number Date Country
Parent 15345505 Nov 2016 US
Child 15861673 US