This relates generally to identifying a genetic condition from sequenced genomes (or portions of genomes).
Certain genetic conditions can be associated with the number of functional copies of one or more genes and/or single nucleotide polymorphisms in an individual's genome. As such, identification of such genetic conditions can be accomplished using information about the above, and a method of determining such genetic conditions, while reducing the need for human involvement in making such determinations, is desirable.
The disclosures of all publications, patents, and patent applications referred to herein are each hereby incorporated by reference in their entireties. To the extent that any reference incorporated by reference conflicts with the instant disclosure, the instant disclosure shall control.
Various genetic conditions can be associated with an individual having fewer than two functional copies of a specific gene in their genome (e.g., for autosomal dominant conditions, such as Lynch syndrome), or an individual having fewer than one functional copy of a specific gene in their genome (e.g., for autosomal recessive conditions). For example, an individual's lack of a functional copy of the CYP21A2 gene can lead to the individual having congenital adrenal hyperplasia (CAH). Data relating to the number of copies of genetic material corresponding to the gene of interest in the individual's genome, and data relating to the number of sequencing reads from a location in the gene of interest in the individual's genome that have a single nucleotide polymorphism at that location can be used to determine whether the individual has two (or one, or none) functional copies of the gene of interest and/or the nature of mutations in the gene of interest, if any. The examples of the disclosure provide various ways in which a machine learning algorithm can be used to make such determinations.
In the following description of examples, reference is made to the accompanying drawings which form a part hereof, and in which it is shown by way of illustration specific examples that can be practiced. It is to be understood that other examples can be used and structural changes can be made without departing from the scope of the disclosed examples.
Various genetic conditions can be associated with an individual having fewer than two functional copies of a specific gene in their genome (e.g., for autosomal dominant conditions, such as Lynch syndrome), or an individual having fewer than one functional copy of a specific gene in their genome (e.g., for autosomal recessive conditions). For example, an individual's lack of a functional copy of the CYP21A2 gene can lead to the individual having congenital adrenal hyperplasia (CAH). Data relating to the number of copies of genetic material corresponding to the gene of interest in the individual's genome, and data relating to the number of sequencing reads from a location in the gene of interest in the individual's genome that have a single nucleotide polymorphism at that location can be used to determine whether the individual has two (or one, or none) functional copies of the gene of interest and/or the nature of mutations in the gene of interest, if any. The examples of the disclosure provide various ways in which a machine learning algorithm can be used to make such determinations.
If an individual does not have the requisite number (e.g., two or one) of functional copies of the gene of interest (e.g., genes 104A and 104B), that individual may exhibit any of several inherited genetic conditions. For example, in reference to the CYP21A2 gene, the individual's lack of at least one functional copies of that gene can lead to the individual having congenital adrenal hyperplasia (CAH). Furthermore, the presence of only a single functional copy of the CYP21A2 gene indicates that this person is a carrier. If two carriers of an autosomal recessive condition have a child, the child has a 25% chance of inheriting zero functional copies and thus being affected. Thus, it can be beneficial to accurately determine whether an individual does not have two functional copies of the gene of interest so as to be able to diagnose that individual as carrying a corresponding genetic condition. Specifically, the examples of the disclosure can be used to identify any one or more of the following: two functional copies of the gene of interest; one functional copy of the gene of interest, one non-functional copy of the gene of interest (e.g., due to a mutation at one or more locations in the gene); less than two copies of the gene of interest (e.g., only one copy of the gene of interest) and/or whether those copies are functional or non-functional; more than two copies of the gene of interest (e.g., three copies of the gene of interest) and/or whether those copies are functional or non-functional, etc. Further, it is understood that while some of the examples of the disclosure are provided in the context of determining whether an individual has CAH by determining one or more characteristics of the individual's CYP21A2 genes, the examples of the disclosure can be used to diagnose other genetic conditions related to other genes (and/or pseudogenes) in analogous manners, as mentioned above.
In some examples, whether an individual has two functional copies of the gene of interest (e.g., the CYP21A2 gene) can be determined using “copy number data” and “single nucleotide polymorphism (SNP) data” relating to the gene of interest and/or the corresponding pseudogene (e.g., the CYP21A1P pseudogene) in the individual's genome. In some examples of the disclosure, “SNP data” can be data associated with a given location in the gene and/or the pseudogene of interest that is indicative of the number of sequencing reads from a sample that have a deleterious SNP (relative to a reference genome, a reference portion of a genome or a reference sequence) at that location. For example, the SNP data can be a ratio of the number of sequencing reads that detected a SNP at that location to the number of sequencing reads that did not detect a SNP at that location, or a ratio of the number of sequencing reads that detected a SNP at that location to the total number of sequencing reads obtained at that location (whether or not those reads detected a SNP at that location). In some examples, the SNP data can be count data and/or fraction data indicative of the relative abundance of the wild type versus mutant base at each locus, and in some examples, and in some examples can also include SNP call data that can be binary (e.g., indicating that a particular location is wild type or mutant) or descriptive (e.g., indicating that a particular location has a particular nucleotide). In some examples of the disclosure, “copy number data” can be data that indicates the number of copies of genetic material corresponding to the gene of interest and/or the corresponding pseudogene that are detected, on average, during sequencing of the individual's genome at various locations (e.g., single base pair locations or regions, such as clusters of base pairs) in the genome.
Referring again to
Copy number data 212 and 214 can indicate the number of copies of one or more segments of the CYP21A2 gene and/or the CYP21A1P pseudogene. The line plots in copy number data 212 and 214 can correspond to copy number data for the individual of interest. In some examples, copy number data for other patients can be used to assess the significance of the copy number data variation of one patient (e.g., the individual of interest) as compared to the noise level of typical samples on that flow cell (e.g., used as data against which the copy number data for the current sample is validated). The segments of the CYP21A2 gene and/or the CYP21A1P pseudogene to which copy number data 212 and 214 correspond can correspond to a specific genetic locus (e.g., a single base) or can correspond to a sequencing read arising from a probe targeted to a region of the gene or pseudogene. For example, in some examples, one or more sequencing probes can be used to sequence the genome at different positions within the CYP21A2 gene and/or the CYP21A1P pseudogene to obtain copy number data corresponding to given positions in those genes/pseudogenes. Because a given sequencing run can include noise from various sources (e.g., probes, DNA, etc.), the sequencing can be normalized based on GC content, read mappability to a reference genome, performance of other samples in a multiplexed sequencing run, or any other normalization method known in the art. In some examples, copy number data and/or SNP data for a given location can be determined from a reading of a single probe corresponding to that location, or from readings of multiple probes at different locations to create normalized copy number and/or SNP data for that given location. In some examples, copy number data 212 and 214 can be determined based on counts of probe reads of pair-end sequencing that are normalized within the sample, and across the sample, to give the copy number at each probe binding site. For example, in the example of
The above-described SNP and copy number data can be obtained from a genomic sample of interest with the goal of determining the carrier status of the individual from which the genomic sample was collected, as described above. Different carrier statuses can be associated with different copy number and/or SNP data. For example, in the context of the CYP21A2 gene and the CYP21A1P pseudogene, P31L carrier status can be associated with the SNP and copy number data described with reference to
According to examples of the disclosure, machine learning algorithms can be used to receive as inputs SNP and/or copy number data, as described above, and output determinations relating to whether or not the sequenced genome is associated with one or more genetic conditions (e.g., output information about one or more carrier statuses of the individual). Some of the machine learning algorithms that can be used in accordance with the examples of the disclosure can be convolutional neural networks (CNNs) (e.g., which can be effective, because genetic data can be spatially correlated), support vector machines (SVMs), random forest, etc. Because DNA, and thus genes and pseudogenes of interest, can have a sequential character, recurrent neural networks (RNNs) can be especially conducive for use in such applications, because RNNs make use of sequential information in their operation in that the output of a RNN for a given element in a sequence depends on the operations of the RNN during the previous one or more elements in the sequence—such operation that is grounded in sequential operations aligns with the sequential character of DNA. Exemplary uses of RNNs to identify carrier statuses of sequenced genomes will now be described.
In some examples, it can be beneficial to only input SNP and copy number data for a genome being sequenced to RNN 304 if that data is not considered to be outlier data (e.g., data in which one or more anomalies are detected). Anomalies in CYP21A2 might include noisy sequencing data or uncommon forms of genetic variation.
If RNN 304 is able to produce variant calls 308 with relatively high confidence levels (e.g., confidence levels greater than a threshold confidence level, such as 0.8, 0.9 or 1.0 on the above-described scale from 0 to 1), then it can output those variant calls at 308. In some examples, RNN 304 may be required to produce variant calls 308 at the above relatively high confidence level, and those variant calls may be required to be in agreement with another variant calling algorithm (a non-RNN-based variant caller, or a variant caller other than the RNN-based caller described here, such as a variant calling algorithm that uses base counting and a log-odds ratio threshold to classify variants, or a variant calling algorithm based on manual review of the sequencing data) in order for RNN 304 to output those variant calls at 308. However, if RNN 304 is not able to produce variant calls 308 at such a high confidence level (e.g., the confidence level is less than or equal to the above threshold confidence level and/or the variant calls produced by RNN 304 are not in agreement with the other variant calling algorithm), then RNN 304 does not output variant calls 308; rather, the SNP data, copy number data, variant calls and/or confidence levels are flagged for review (e.g., flagged for human review) at 310 (e.g., as described with reference to 310 in
As previously mentioned, various machine learning algorithms and/or architectures can be utilized in making carrier status determinations based on SNP and copy number data according to the examples of the disclosure. In some examples, RNNs can be utilized.
f
t=σ(Wf·[ht−1,xt]+bf)
i
t=σ(Wi·[ht−1,xt]+bi)
{tilde over (C)}
t=tanh(WC·[ht−1,xt]+bC)
C
t
=f
t
*C
t−1
+i
t
*C
r=state of cell/layer t
σt=σ(Wo·[ht−1,xt]+bo)
h
t
=o
t*tanh(Ct)
where xt can be the input vector for the LSTM cell, ft can be the forget gate's activation function, it can be the input gate's activation function, ot can be the output gate's activation function, ht can be the output vector of the LSTM cell, W and b can be weight matrix and bias vector parameters that can be learned during training, σ can be a Sigmoid function, and * can be a Hadamard (entry-wise) product.
Because genomic samples that are not carriers for one or more genetic conditions, such as CAH, can far outnumber genomic samples that are carriers for one or more genetic conditions (e.g., because genetic conditions can be relatively rare), the data on which RNN 400 can be trained and/or to which RNN 400 can be applied can have a relatively large class imbalance between negative samples (e.g., genomic samples that are not carriers for one or more genetic conditions) and positive samples (e.g., genomic samples that are carriers for one or more genetic conditions). As such, it can be beneficial to utilize weighted cross-entropy loss functions in the RNN-based processes of the disclosure to up-weight the significance of positive samples on RNN operation when training the RNN. One exemplary weighted cross-entropy loss function can be expressed as:
where yij can be the carrier status for a given patient (sample) i and variant j (e.g., if patient (sample) i is a carrier for variant j, yij=1, and if patient (sample) i is not a carrier for variant j, yij=0), ŷij can be the probability of finding yij=1, and C3 can be expressed as:
A loss function (e.g., the weighted cross-entropy loss function above) can be a metric that measures how well the predictions of the variant callers of the disclosure agree with the provided training data (e.g., higher is worse agreement, lower is better agreement). In some examples, the RNN parameters can be varied so as to gradually decrease this loss function so as to train the RNN, as described in this disclosure. In the specific loss function shown above, the average cross-entropy loss over all N samples in the relevant set (e.g., the size of the training set). Further, the respective losses over each of the M variants of interest can be summed (e.g., 11 variants in the case of one of the CAH callers of the disclosure).
The SNP, copy number and carrier status (“variant call”) data used to train the RNNs of the disclosure and used during the operation of the RNNs of the disclosure to determine carrier status can be represented in any suitable manner, though some ways of representing the above data can result in better RNN performance (e.g., more accurate carrier status determinations, faster carrier status determinations, etc.) than others.
In some examples, the values for each entry in array y 504 can be binary (e.g., 0 for non-carrier, and 1 for carrier). In some examples, the values for each entry can indicate the confidence with which such carrier status is expressed/determined (e.g., 0 for 100% confident non-carrier, 1 for 100% confident carrier, and decimal values between 0 and 1 corresponding to different non-carrier or carrier confidence levels). In some examples, the values for each entry in array y 504 can be binary for training purposes, and can indicate the confidence with which such carrier status is expressed/determined when the RNN is being used to determine variant calls. The ordering of the entries in array y 504 can be varied. Because RNNs can be especially effective in the context of sequential data, the performance of the RNN-based processes of the disclosure can be improved by representing the carrier status data in array y 504 in a manner having a sequential characteristic that corresponds to the sequence of the genetic material in the gene/pseudogene of interest. For example, in some examples, the ordering of the entries in array y 504 can correspond to the positioning of the mutations in the gene/pseudogene of interest associated with each carrier status. For example, an entry for a carrier status that is associated with a mutation closest to the 5′ end of the gene/pseudogene of interest can be located at the first position in array y 504, an entry for a carrier status that is associated with a mutation closest to the 3′ end of the gene/pseudogene of interest can be located at the last position in array y 504, and entries for carrier statuses that are associated with mutations at other positions in the gene/pseudogene can be located at other corresponding positions in array y 504. In some examples, the ordering of the carrier status entries in array y 504 may not correspond to the positioning of the mutations in the gene/pseudogene of interest associated with each carrier status, and may be independent of such positioning.
In some examples, SNP and copy number data can be combined into a single one-dimensional input array x. The ordering of the entries in array x can be varied. For example, in array x 502A, copy number and SNP data can be arranged such that copy number data from the 5′ end of the gene of interest to the 3′ end of the gene of interest can be located in the first part of array x 502A (e.g., the first 28 entries of array x 502A in the case where copy number data from 28 positions across the gene is available), copy number data from the 5′ end of the corresponding pseudogene to the 3′ end of the corresponding pseudogene can be located in the second part of array x 502A (e.g., the second 28 entries of array x 502A in the case where copy number data from 28 positions across the pseudo gene is available), and SNP data from the 5′ end of the gene and/or pseudogene to the 3′ end of the gene and/or pseudogene can be located in the third part of array x 502A (e.g., the last 20 entries of array x 502A in the case where SNP data from 10 positions across the gene is available, and SNP data from 10 positions across the pseudogene is available, or the last 10 entries of array x 502A in the case where SNP data from 10 positions across the gene is available but no SNP data from the pseudogene is available or utilized). For example, the contents and order of array x can be expressed as:
x=[CNgene,i,CNgene,i+1,CNgene,i+2, . . . ,CNpseudogene,i,CNpseudogene,i+1,CNpseudogene,i+2, . . . ,SNPgene,i,SNPgene,i+1,SNPgene,i+2, . . . ,SNPpseudogene,i,SNPpseudogene,i+1,SNPpseudogene,i+2, . . . ]
where CNgene,i can be the copy number data for the gene at position i, SNPgene,i can be the SNP data for the gene at position i, CNpseudogene,i can be the copy number data for the pseudogene at position i, and SNPpseudogene,i can be the SNP data for the gene at position i. If no copy number or SNP data exists for a given position in the gene or pseudogene, the corresponding entry in array x can be omitted. The above arrangement of the SNP and copy number data is illustrated in array x 502A of
Because RNNs can be especially effective in the context of sequential data, the performance of the RNN-based processes of the disclosure can be improved by representing the SNP and copy number data in a manner have a sequential characteristic that corresponds to the sequence of the genetic material in the gene/pseudogene of interest. For example, SNP and copy number data can be organized in array x such that the order in which the SNP and copy number data appears in array x corresponds to the location in the gene/pseudogene to which the SNP and copy number data corresponds. More specifically, SNP and copy number data corresponding to a position closest to the 5′ end of the gene/pseudogene can be located at the front end of array x, SNP and copy number data corresponding to a position closest to the 3′ end of the gene/pseudogene can be located at the back end of array x, and SNP and copy number data corresponding to other positions in the gene/pseudogene can be located at other corresponding positions in array x. For example, the contents and order of array x can be expressed as:
x=[CNgene,i,SNPgene,i,CNpseudogene,i,SNPpseudogene,i,CNgene,i+1,SNPgene,i+1,CNpseudogene,i+1,SNPpseudogene,i+1, . . . ],
x=[CNgene,i,CNpseudogene,i,SNPgene,i,CNgene,i+1,CNpseudogene,i+1,SNPgene,i+1,CNgene,i+2,CNpseudogene,i+2,SNPgene,i+2, . . . ], or
x=[CNgene,i,CNpseudogene,i,SNPgene,i,SNPpseudogene,i,CNgene,i+1,CNpseudogene,i+1,SNPgene,i+1,SNPpseudogene,i+1, . . . ]
where CNgene,i can be the copy number data for the gene at position i, SNPgene,i can be the SNP data for the gene at position i, CNpseudogene,i can be the copy number data for the pseudogene at position i, and SNPpseudogene,i can be the SNP data for the gene at position i. If no copy number or SNP data exists for a given position in the gene or pseudogene, the corresponding entry in array x can be omitted. The above arrangement of the SNP and copy number data is illustrated in array x 502B of
Other arrangements of SNP and copy number data in array x are also within the scope of the disclosure. Below are some additional exemplary arrangements for such data, some of which have a partial or full sequential characteristic that corresponds to the sequence of the genetic material in the gene/pseudogene of interest:
x=[SNPgene,i,SNPpseudogene,i,SNPgene,i+1,SNPpseudogene,i+1, . . . ,CNgene,i,CNpseudogene,i,CNgene,i+1,CNpseudogene,i+1, . . . ]
x=[SNPgene,i,SNPgene,i+1, . . . ,SNPpseudogene,i,SNPpseudogene,i+1, . . . ,CNgene,i,CNgene,i+1, . . . ,CNpseudogene,i,CNpseudogene,i+1, . . . ]
While the data above was discussed in the context of arrays, it is understood that other data structures (e.g., matrices, lists, etc.)—some of which that can be used to convey ordering of their entries (e.g., an ordering characteristic that can convey a “first” position, a “last” position, and/or relative positions of entries within the data structure, etc.), and some of which that do not convey ordering of their entries—can additionally or alternatively be used to represent the copy number data, the SNP data and/or the carrier status determinations. While the examples of the disclosure have been described with the RNN determining carrier statuses of the individual, it is understood that the RNN can be analogously configured to additionally or alternatively determine the number of functional copies of a given gene in the individual's genome (which is related to the carrier statuses described above). In such examples, the output data from the RNN (e.g., during training and/or during use) can include the number of functional copies of a given gene additionally or alternatively to the carrier statuses of the individual.
System 600 may be, for example, in the form of a client-server computer capable of connecting to and/or facilitating the operation of a plurality of workstations or similar computer systems over a network. In another embodiment, system 600 may connect to one or more workstations over an intranet or internet network, and thus facilitate communication with a larger number of workstations or similar computer systems. Even further, system 600 may include, for example, a main workstation or main general purpose computer to permit a user to interact directly with a central server. Alternatively, the user may interact with system 600 via one or more remote or local workstations 613. As will be appreciated by one of ordinary skill in the art, there may be any practical number of remote workstations for communicating with system 600.
CPU 601 may include one or more processors, for example Intel® Core™ i7 processors, AMD FX™ Series processors, or other processors as will be understood by those skilled in the art (e.g., including graphical processing unit (GPU)-style specialized computing hardware used for, among other things, machine learning applications, such as training and/or running the machine learning algorithms of the disclosure; such GPUs may include, e.g., NVIDIA Tesla™ K80 processors). CPU 601 may further communicate with an operating system, such as Windows NT® operating system by Microsoft Corporation, Linux operating system, or a Unix-like operating system. However, one of ordinary skill in the art will appreciate that similar operating systems may also be utilized. Storage 602 (e.g., non-transitory computer readable medium) may include one or more types of storage, as is known to one of ordinary skill in the art, such as a hard disk drive (HDD), solid state drive (SSD), hybrid drives, and the like. In one example, storage 602 is utilized to persistently retain data for long-term storage. Memory 603 (e.g., non-transitory computer readable medium) may include one or more types of memory as is known to one of ordinary skill in the art, such as random access memory (RAM), read-only memory (ROM), hard disk or tape, optical memory, or removable hard disk drive. Memory 603 may be utilized for short-term memory access, such as, for example, loading software applications or handling temporary system processes.
As will be appreciated by one of ordinary skill in the art, storage 602 and/or memory 603 may store one or more computer software programs. Such computer software programs may include logic, code, and/or other instructions to enable processor 601 to perform the tasks, operations, and other functions as described herein (e.g., the RNN functions described herein), and additional tasks and functions as would be appreciated by one of ordinary skill in the art. Operating system 602 may further function in cooperation with firmware, as is well known in the art, to enable processor 601 to coordinate and execute various functions and computer software programs as described herein. Such firmware may reside within storage 602 and/or memory 603.
Moreover, I/O controllers 606 may include one or more devices for receiving, transmitting, processing, and/or interpreting information from an external source, as is known by one of ordinary skill in the art. In one embodiment, I/O controllers 606 may include functionality to facilitate connection to one or more user devices 609, such as one or more keyboards, mice, microphones, trackpads, touchpads, or the like. For example, I/O controllers 606 may include a serial bus controller, universal serial bus (USB) controller, FireWire controller, and the like, for connection to any appropriate user device. I/O controllers 606 may also permit communication with one or more wireless devices via technology such as, for example, near-field communication (NFC) or Bluetooth™. In one embodiment, I/O controllers 606 may include circuitry or other functionality for connection to other external devices 610 such as modem cards, network interface cards, sound cards, printing devices, external display devices, or the like. Furthermore, I/O controllers 606 may include controllers for a variety of display devices 608 known to those of ordinary skill in the art. Such display devices may convey information visually to a user or users in the form of pixels, and such pixels may be logically arranged on a display device in order to permit a user to perceive information rendered on the display device. Such display devices may be in the form of a touch-screen device, traditional non-touch screen display device, or any other form of display device as will be appreciated be one of ordinary skill in the art.
Furthermore, CPU 601 may further communicate with I/O controllers 606 for rendering a graphical user interface (GUI) on, for example, one or more display devices 608. In one example, CPU 601 may access storage 602 and/or memory 603 to execute one or more software programs and/or components to allow a user to interact with the system as described herein. In one embodiment, a GUI as described herein includes one or more icons or other graphical elements with which a user may interact and perform various functions. For example, GUI 607 may be displayed on a touch screen display device 608, whereby the user interacts with the GUI via the touch screen by physically contacting the screen with, for example, the user's fingers. As another example, GUI may be displayed on a traditional non-touch display, whereby the user interacts with the GUI via keyboard, mouse, and other conventional I/O components 609. GUI may reside in storage 602 and/or memory 603, at least in part as a set of software instructions, as will be appreciated by one of ordinary skill in the art. Moreover, the GUI is not limited to the methods of interaction as described above, as one of ordinary skill in the art may appreciate any variety of means for interacting with a GUI, such as voice-based or other disability-based methods of interaction with a computing system.
Moreover, network adapter 604 may permit device 600 to communicate with network 611. Network adapter 604 may be a network interface controller, such as a network adapter, network interface card, LAN adapter, or the like. As will be appreciated by one of ordinary skill in the art, network adapter 604 may permit communication with one or more networks 611, such as, for example, a local area network (LAN), metropolitan area network (MAN), wide area network (WAN), cloud network (IAN), or the Internet.
One or more workstations 613 may include, for example, known components such as a CPU, storage, memory, network adapter, power supply, I/O controllers, electrical bus, one or more displays, one or more user input devices, and other external devices. Such components may be the same, similar, or comparable to those described with respect to system 600 above. It will be understood by those skilled in the art that one or more workstations 613 may contain other well-known components, including but not limited to hardware redundancy components, cooling components, additional memory/processing hardware, and the like.
A RNN was constructed using the TensorFlow software library. In particular, using the Python API, a symbolic computation graph was constructed that executes in the TensorFlow runtime. The TensorFlow RNN was constructed of 5 layers of LSTM cells with 11 output nodes, the operations of which were described with reference to
After training the RNN, the arrays corresponding to the remaining 20% of the previously-sequenced 95,903 samples were used to test the performance of the trained RNN. The trained RNN produced carrier status determinations that were 99.89% accurate, with a 1 in 900 error rate. Various sensitivities and specificities based on specific carrier statuses were observed, as shown in the table below. In some examples, “sensitivity” is defined as TP/(TP+FN), where TP can be the number of true positives for a variant, and FN can be the number of false negatives for a variant. In some examples, “specificity” can be defined as TN/(TN+FP), where TN can be the number of true negatives for a variant, and FP can be the number of false positives for a variant.
Although examples of this disclosure have been fully described with reference to the accompanying drawings, it is to be noted that various changes and modifications will become apparent to those skilled in the art. Such changes and modifications are to be understood as being included within the scope of examples of this disclosure as defined by the appended claims.
This application is a continuation of International Application No. PCT/US2019/022712, filed Mar. 18, 2019, which claims the benefit of priority to U.S. Provisional Application No. 62/646,784, filed Mar. 22, 2018, and to U.S. Provisional Application No. 62/664,620, filed Apr. 30, 2018, each of which is incorporated herein by reference in their entirety.
Number | Date | Country | |
---|---|---|---|
62646784 | Mar 2018 | US | |
62664620 | Apr 2018 | US |
Number | Date | Country | |
---|---|---|---|
Parent | PCT/US2019/022712 | Mar 2019 | US |
Child | 17028303 | US |