System for determining similarity of a sequence of glucose values - Patents.com
Patent Information
- Application Number
- JP2023550090
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2021-05-17
- Filing Date
- 2022-05-17
- Publication Date
- 2025-03-13
AI Technical Summary
Conventional continuous glucose monitoring (CGM) systems are limited by their inability to utilize the continuous characteristics of glucose value sequences, treating each value as an independent observation, which hinders the inference of useful information from historical data.
A system that determines the similarity of glucose value sequences by calculating a similarity score based on a similarity model, leveraging discrete random variables and categorical distributions constructed from a corpus of glucose measurements, allowing for the identification of similar sequences and associated externalities.
Enables the inference of interventions beneficial or detrimental to glucose management by identifying similar sequences, facilitating personalized diabetes coaching and automated support, and improving blood sugar level maintenance.
Smart Images

Figure 00000000_0000_ABST
Abstract
Description
[Technical field]
[0001] Related Applications This application claims the benefit of U.S. Provisional Patent Application No. 63 / 189,469, filed May 17, 2021, and entitled "Systems for Determining Similarity of Sequences of Glucose Values," the entire disclosure of which is hereby incorporated by reference. [Background technology]
[0002] Diabetes is a metabolic condition that affects hundreds of millions of people. For these people, monitoring blood glucose levels and regulating them within acceptable ranges is important not only to alleviate long-term problems such as heart disease and vision loss, but also to avoid the effects of high and low glucose. Because blood glucose levels are almost constantly changing over time and in response to daily occurrences such as diet or exercise, maintaining them within acceptable ranges can be difficult.
[0003] Advances in medical technology have facilitated the development of a variety of systems for monitoring glucose, including continuous glucose monitoring (CGM) systems that measure and record glucose concentrations in virtually real-time. Users of these CGM systems can monitor their current blood glucose levels and also review their historical blood glucose levels, including comparing yesterday's blood glucose levels with today's. The ability to view archived historical blood glucose levels allows users of CGM systems to identify potential improvements to their individualized regimens for maintaining healthy blood glucose levels.
[0004] In one example, users of these CGM systems rely on aggregate data metrics calculated from their historical blood glucose levels as part of their diabetes management. For example, a user of a CGM system compares today's Time In Range (TIR) to the user's average TIR over the past month as one way to determine if the user should do something different to increase today's TIR. In another example, the user compares today's TIR to the user's average TIR to determine if something the user did differently today was effective in increasing today's TIR relative to the user's average TIR.
[0005] While the use of aggregated CGM data metrics such as mean TIR provides clinically useful information, aggregation of CGM data fails to capture or utilize information contained in the continuous nature of the data. For example, raw CGM data describes a time series of glucose values, and aggregating the raw data to calculate an average glucose value effectively treats each glucose value in the time series as an independent observation. This inability to utilize information contained in the continuous nature of CGM data is a limitation of conventional CGM systems. Summary of the Invention [Means for solving the problem]
[0006] To overcome the limitations of conventional systems, techniques and systems for determining similarity of sequences of glucose values are described. In one example, input data describing a sequence of user glucose values measured by a continuous glucose monitoring (CGM) system is received. A similarity score is calculated for the multiple sequences by comparing each glucose value in the sequence of user glucose values to all glucose values in each of the multiple sequences of glucose values. For example, a similarity model is accessed or generated. The similarity model utilizes a discrete random variable (e.g., a glucose variable) and builds a categorical distribution of the discrete random variable based on observations from a corpus of glucose measurements. For example, the corpus may include millions of days of glucose measurements, where these glucose measurements represent many types of normal conditions as well as various abnormal conditions.
[0007] The similarity model is implemented to calculate the probability of observing a particular glucose value given the evidence or context data based on the corpus of glucose measurements. To calculate a similarity score for a particular sequence of glucose values among the multiple sequences, the difference between the probability of observing each user glucose value given the evidence or context data and the probability of observing all glucose values included in the particular sequence given the evidence or context data is determined. The similarity score for the particular sequence is equal to the sum of all of the determined differences.
[0008] A particular sequence of glucose values associated with a maximum one of the similarity scores is identified. For example, the particular sequence is the sequence that is most similar to the sequence of user glucose values included in the plurality of sequences. An externality associated with the particular sequence is determined. In one example, the externality is known for the particular sequence and may be inferable for the sequence of user glucose values. In this example, an indication of the externality is generated for display in a user interface.
[0009] This Summary introduces a selection of concepts in a simplified form that are further described below in the Detailed Description. As such, this Summary is not intended to identify essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter. [Brief description of the drawings]
[0010] The detailed description is given with reference to the accompanying drawings. [Figure 1] 1 illustrates an environment in an example implementation operable to employ the techniques described herein. [Diagram 2] 2 illustrates an example of a continuous glucose monitoring (CGM) system in FIG. 1 in more detail. [Diagram 3] An exemplary implementation is shown in which a computing device communicates input data to a similarity system and a computing device receives similar sequence data from the similarity system in connection with determining a similarity of sequences of glucose values. [Figure 4] 4 illustrates an exemplary implementation of the similarity system of FIG. 3 in more detail. [Diagram 5] 1 shows an expression for determining similarity of a sequence of glucose values. [Figure 6] 13 shows a representation of a search request based on a sequence of user glucose values and an indication of similar sequences of glucose values. [Figure 7] 1 illustrates a representation of a user interface that receives at least one sequence of glucose values for use as a search query and outputs one or more similar sequences of glucose values determined as search results for the search query. [Figure 8] We present expressions of externality directives, including counterfactual directives. [Figure 9] FIG. 11 is a flow diagram illustrating a procedure in an example implementation in which input data describing a sequence of user glucose values is received and an indication of externalities associated with similar sequences of glucose values is generated. [Figure 10] FIG. 11 is a flow diagram illustrating a procedure in an example implementation in which input data describing a sequence of user glucose values is received and an indication of externalities associated with the sequence of glucose values having the highest similarity score is generated. [Figure 11] 1 is a flow diagram illustrating a procedure in an example implementation in which similarity scores for candidate sequences are determined and compared to a similarity threshold score. [Figure 12] 1 illustrates an example system, including an example computing device, which represents one or more computing systems and / or devices that may implement various techniques described herein. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0011] overview Conventional continuous glucose monitoring (CGM) systems are limited to determining aggregate metrics from sequences of glucose values, such as average, minimum, and maximum. This is a limitation of conventional systems because aggregate CGM metrics do not utilize information contained in the continuous characteristics of glucose values. For example, instead of viewing a sequence of glucose values as a time series in which subsequent values depend on previous values, aggregate metrics treat each glucose value in a sequence of glucose values as an independent observation. Thus, even if a first sequence and a second sequence have the same aggregate metric value, information about the first sequence cannot be reliably inferred from available information about the second sequence. For example, the first sequence and the second sequence may have the same minimum or maximum value, but have no other values in common. To overcome the limitations of conventional systems, techniques and systems for determining similarity of sequences of glucose values are described. In one example, the described system utilizes information contained in the continuous characteristics of the sequences of glucose values to determine similarity.
[0012] Once a sequence of glucose values is determined to be similar to an additional sequence of glucose values, information about that sequence of glucose values can be inferred from information about the additional sequence of glucose values. For example, an intervention that was beneficial during a time period corresponding to the additional sequence of glucose values may also be beneficial during the time period corresponding to that sequence of glucose values. For example, a user completed a run to keep the user's blood glucose level within an acceptable range during the time period corresponding to the additional sequence of glucose values. In this example, completing a similar run may help maintain the user's blood glucose level within an acceptable range during the time period corresponding to the sequence of glucose values.
[0013] Similarly, an intervention that was not beneficial during a time period corresponding to an additional sequence of glucose values may not be beneficial during the time period corresponding to that sequence of glucose values. In one example, a user completes a run during a time period corresponding to an additional sequence of glucose values but fails to keep the user's blood glucose level within an acceptable range. For example, completing a similar run may not be sufficient to keep the user's blood glucose level within an acceptable range during the time period corresponding to that sequence of glucose values.
[0014] In one example, input data describing a sequence of user glucose values measured by a CGM system is received to determine the similarity of the sequence of glucose values. In this example, a similarity model is implemented to calculate a similarity score between the sequence of user glucose values and an additional or historical sequence of glucose values. The similarity score is calculated based on the difference between the probability of observing the input glucose value included in the sequence of user glucose values given the evidence or context data and the probability of observing a historical glucose value included in the sequence of historical glucose values given the evidence or context data. For example, the evidence or context data sequentially describes glucose values before and / or after the input glucose value and the historical glucose value.
[0015] In one example, a particular sequence of historical glucose values associated with the highest of the similarity scores is identified. In this example, information about a sequence of user glucose values can be inferred from information available about the particular historical sequence due to the similarity of the two sequences. For example, an externality associated with the particular historical sequence is determined. An externality is something known about a particular historical sequence that may be inferred about a sequence of user glucose values, such as interventions that were beneficial during a time period corresponding to the historical sequence. An indication of the externality is generated for display in a user interface, for example, to inform the user of beneficial interventions. This functionality is not possible using conventional systems that are limited to determining aggregate metrics from sequences of glucose values.
[0016] Because the described systems can determine similarity of sequences of glucose values, these systems facilitate the implementation of various additional functions that are not possible using conventional systems. For example, the described systems can be used for automated diabetes coaching, automated technical support, automated linking of events corresponding to similar sequences of glucose values, and the like. Consider an example in which a user interacts with a user interface of a computing device to search for a sequence of the user's glucose values that is similar to an input sequence of the user's glucose values. A historical sequence of the user's glucose values is identified as having the highest similarity score to the input sequence of the user's glucose values, and an indication of the historical sequence is displayed in the user interface. For example, the indication includes information of the historical sequence that can be inferred about the input sequence of the user's glucose values to support the user in maintaining healthy blood glucose levels.
[0017] In the following description, we first describe an example environment configured to use the techniques described herein. We then describe example implementation details and procedures that may be performed in the example environment and in other environments. The execution of the example procedures is not limited to the example environment, and the example environment is not limited to the execution of the example procedures.
[0018] Example Environment 1 is an illustration of an environment 100 in an example implementation operable to employ the techniques described herein. The illustrated environment 100 includes a person 102, who is shown wearing a continuous glucose monitoring system 104, an insulin delivery system 106, and a computing device 108. The illustrated environment 100 also includes other users of a user population 110 of the CGM system, a CGM platform 112, and an Internet of Things 114 (IoT 114). The CGM system 104, the insulin delivery system 106, the computing device 108, the user population 110, the CGM platform 112, and the IoT 114 are communicatively coupled, including via a network 116.
[0019] Alternatively or additionally, one or more of the CGM system 104, insulin delivery system 106, and computing device 108 are communicatively coupled in other manners, such as using one or more wireless communication protocols and / or techniques. By way of example, the CGM system 104, insulin delivery system 106, and computing device 108 are configured to communicate with one another using one or more of Bluetooth (e.g., Bluetooth Low Energy link), near-field communication (NFC), 5G, etc. In some examples, the CGM system 104, insulin delivery system 106, and / or computing device 108 are capable of radio frequency (RF) communication and include an RF transmitter and an RF receiver. In these examples, one or more RFIDs can be used to identify and / or track the CGM system 104, insulin delivery system 106, or computing device 108 within the environment 100. For example, the CGM system 104, insulin delivery system 106, and computing device 108 are configured to utilize various types of communication to form a closed-loop system between one another.
[0020] In accordance with the described techniques, the CGM system 104 is configured to continuously monitor the glucose of the person 102. For example, in some implementations, the CGM system 104 is configured with a CGM sensor that continuously detects analytes indicative of the glucose of the person 102 and enables the generation of glucose measurements. In the illustrated environment 100, these measurements are represented as glucose measurements 118. This function and further aspects of the configuration of the CGM system 104 are described in further detail below with respect to FIG.
[0021] In one or more implementations, the CGM system 104 transmits the glucose measurements 118 to the computing device 108 via one or more of the communication protocols described herein (e.g., via wireless communication). The CGM system 104 is configured to communicate these measurements in real time (e.g., as the glucose measurements 118 are generated) using a CGM sensor. Alternatively or additionally, the CGM system 104 is configured to communicate the glucose measurements 118 to the computing device 108 at specified intervals (e.g., every 30 seconds, every minute, every 5 minutes, every hour, every 6 hours, daily, etc.). In some implementations, the CGM system 104 is configured to communicate the glucose measurements in response to a request from the computing device 108 (e.g., a request initiated when the computing device 108 generates a glucose measurement prediction for the person 102, a request initiated when the computing device 108 displays a user interface conveying information about the glucose measurements for the person 102, a combination thereof, etc.). Accordingly, the computing device 108 is configured to at least temporarily maintain the glucose readings 118 of the person 102 (e.g., by storing the glucose readings 118 in a computer-readable storage medium, as described in further detail below with respect to FIG. 12).
[0022] Although the computing device 108 is illustrated as a wearable device (e.g., a smart watch), it can be implemented in various configurations without departing from the spirit or scope of the described techniques. By way of example and not limitation, in some implementations, the computing device 108 can be configured as a different type of mobile device (e.g., a mobile phone or tablet device). In other implementations, the computing device 108 is configured as a dedicated device in association with the CGM platform 112 (e.g., a device that supports functions such as obtaining glucose readings 118 from the CGM system 104, performing various calculations on the glucose readings 118, displaying information related to the glucose readings 118 and the CGM platform 112, communicating the glucose readings 118 to the CGM platform 112, combinations thereof, etc.). In contrast to implementations in which the computing device 108 is configured as a mobile phone, when the computing device 108 is implemented in a dedicated CGM device configuration, it excludes functions that would otherwise be available in a mobile phone or wearable configuration (e.g., the ability to make phone calls, take pictures, utilize social networking applications, etc.).
[0023] In some implementations, the computing device 108 represents more than one device. For example, the computing device 108 represents both a wearable device (e.g., a smart watch) and a mobile phone. In such multiple device implementations, different devices in the multiple devices can perform at least some of the same operations, such as, for example, receiving glucose readings 118 from the CGM system 104, communicating the glucose readings 118 to the CGM platform 112 via the network 116, displaying information related to the glucose readings 118, etc. Alternatively or additionally, different devices in a multiple device implementation support different capabilities relative to one another, such as capabilities that are limited by the computing instructions to a particular device.
[0024] In some exemplary implementations where the computing devices 108 represent separate devices (e.g., a smartwatch and a mobile phone), one device is configured with various sensors and capabilities to measure various physiological markers (e.g., heart rate, respiration, blood flow rate, etc.) and activities (e.g., steps, elevation change, etc.) of the person 102. Continuing with this exemplary multiple device implementation, another device is not configured with such sensors or capabilities or includes a limited amount of such sensors or capabilities. For example, one of the multiple devices includes a capability not supported by another of the multiple devices, such as a camera for taking images of a meal that can be used to predict future glucose levels, an amount of computing resources (e.g., battery life, processing speed, etc.) that allows the device to efficiently perform calculations regarding the glucose measurements 118. Even in scenarios where one of the multiple devices (e.g., a smartphone) is capable of performing such calculations, the computational instructions can be restricted to one of the multiple devices from performing those calculations so as not to burden the multiple devices with redundant calculations and to more efficiently utilize available resources. In this manner, computing device 108 represents a variety of different configurations and represents a different number of devices beyond the particular example implementation described herein.
[0025] As described above, the computing device 108 communicates the glucose readings 118 to the CGM platform 112. In the illustrated environment 100, the glucose readings 118 are shown stored in a storage device 120 of the CGM platform 112. The storage device 120 represents one or more types of storage (e.g., a database) in which the glucose readings 118 may be stored. In this manner, the storage device 120 is configured to store various other data in addition to the glucose readings 118. For example, according to one or more implementations, the person 102 represents a user of at least the CGM platform 112 and one or more other services (e.g., services provided by one or more third-party service providers). In this manner, the person 102 may be associated with information (e.g., a username) attributable to the person and may be requested at some point to provide authentication information (e.g., a password, biometric data, telehealth service information, etc.) to access the CGM platform 112 using the information attributable to the person. The storage device 120 is configured to maintain information attributable to this individual, authentication information, and other information regarding the person 102 (e.g., demographic information, healthcare provider information, payment information, prescription information, health metrics, user preferences, account information associated with wearable devices, social network account information, other service provider information, etc.).
[0026] Storage device 120 is further configured to maintain data regarding other users in user population 110. Thus, glucose measurements 118 in storage device 120 represent both glucose measurements from a CGM sensor of CGM system 104 worn by person 102 as well as glucose measurements from CGM sensors of CGM systems worn by other persons represented in user population 110. Similarly, glucose measurements 118 of these other persons in user population 110 may be communicated by their respective devices to CGM platform 112 over network 116 such that the other persons may be associated with their respective user profiles in CGM platform 112.
[0027] The data analytics platform 122 represents functionality for processing the glucose readings 118, alone and / or together with other data maintained in the storage device 120. Based on these processing, the CGM platform 112 is configured to provide notifications (e.g., alerts, warnings, recommendations, or other information generated based on the processing) regarding the glucose readings 118. For example, the CGM platform 112 is configured to provide notifications to the person 102, a healthcare provider associated with the person 102, a combination thereof, or the like. Although depicted separately from the computing device 108, portions or the entirety of the data analytics platform 122 are alternatively or additionally configured to be implemented in the computing device 108. The data analytics platform 122 is further configured to process additional data obtained via the IoT 114.
[0028] To provide some of this additional information beyond previous glucose measurements, the IoT 114 represents various sources that can provide data describing the person 102 and the person 102's activities as a user of one or more service providers and activities in the real world. By way of example, the IoT 114 includes the user's various devices (e.g., cameras, mobile phones, laptops, exercise equipment, etc.). As such, the IoT 114 is configured to provide information regarding the user's interactions with the various devices (e.g., interactions with web-based applications, photos taken, communications with other users, etc.). Alternatively or additionally, the IoT 114 may include various real-world items (e.g., shoes, clothing, sporting goods, appliances, automobiles, etc.) that are configured with sensors that provide information describing behavior, such as, for example, the number of steps, foot force on the ground, stride length, the user's body temperature (and other physiological measurements), the user's ambient temperature, the type of food stored in the refrigerator, the type of food removed from the refrigerator, driving habits, etc. Alternatively or additionally, the IoT 114 includes third parties to the CGM platform 112, such as a healthcare provider (e.g., the healthcare provider of the person 102) and a manufacturer (e.g., a manufacturer of the CGM system 104, the insulin delivery system 106, or the computing device 108) that can provide medical and manufacturing data, respectively, that can be leveraged by the data analytics platform 122. Thus, the IoT 114 represents devices and sensors that can provide a wealth of data without departing from the spirit or scope of the described techniques. Consider the following description of FIG. 2 in the context of measuring glucose, for example, continuously, and obtaining data describing such measurements.
[0029] Figure 2 illustrates in greater detail an example implementation 200 of the CGM system 104 of Figure 1. In particular, the illustrated example 200 includes a top view and a corresponding side view of the CGM system 104.
[0030] The CGM system 104 is shown to include a sensor 202 and a sensor module 204. In the illustrated example 200, the sensor 202 is shown in a side view and subcutaneously inserted into the skin 206 (e.g., the skin of the person 102). The sensor module 204 is shown as a dashed outline in a top view. The CGM system 104 is further shown to include a transmitter 208. A rectangular dashed outline is used to represent the sensor module 204 to indicate that the sensor module 204 may be contained or otherwise implemented within a housing of the transmitter 208. In this example 200, the CGM system 104 further includes an adhesive pad 210 and an attachment mechanism 212.
[0031] In operation, the sensor 202, adhesive pad 210, and attachment mechanism 212 may be assembled to form an application assembly, which is configured to be applied to the skin 206 such that the sensor 202 is inserted subcutaneously as depicted. In such a scenario, the transmitter 208 may be attached to the assembly after being applied to the skin 206, such as via the attachment mechanism 212. Additionally or alternatively, the transmitter 208 may be incorporated as part of the application assembly, such that the sensor 202, adhesive pad 210, attachment mechanism 212, and transmitter 208 (with sensor module 204) can be applied to the skin 206 all at once. In one or more implementations, the application assembly is applied to the skin 206 using a separate applicator (not shown). The application assembly may also be removed by peeling the adhesive pad 210 from the skin 206. Thus, the CGM system 104 and its various components shown in FIG. 2 represent one example form factor, and the CGM system 104 and its components may have different form factors without departing from the spirit or scope of the described techniques.
[0032] In operation, the sensor 202 is communicatively coupled to the sensor module 204 via at least one communication channel, which may be a "wireless" connection or a "wired" connection. Communication from the sensor 202 to the sensor module 204, or from the sensor module 204 to the sensor 202, may be implemented actively or passively and may be continuous (e.g., analog) or discrete (e.g., digital).
[0033] The sensor 202 may be a device, molecule, and / or chemical that changes or undergoes a change in response to an event that is at least partially independent of the sensor 202. The sensor module 204 is implemented to receive an indication of a change to or caused by the sensor 202. For example, the sensor 202 may include glucose oxidase that reacts with glucose and oxygen to form hydrogen peroxide that is electrochemically detectable by electrodes of the sensor module 204. In this example, the sensor 202 may be configured as or include a glucose sensor configured to detect an analyte in blood or interstitial fluid that is indicative of glucose levels using one or more measurement techniques.
[0034] In another example, the sensor 202 (or additional unillustrated sensors of the CGM system 104) can include first and second electrical conductors, and the sensor module 204 can electrically detect a change in electrical potential across the first and second electrical conductors of the sensor 202. In this example, the sensor module 204 and the sensor 202 are configured as a thermocouple such that the change in electrical potential corresponds to a change in temperature. In some examples, the sensor module 204 and the sensor 202 are configured to detect a single analyte, e.g., glucose. In other examples, the sensor module 204 and the sensor 202 are configured to detect multiple analytes, e.g., sodium, potassium, carbon dioxide, and glucose. Alternatively or additionally, the CGM system 104 includes multiple sensors for detecting not only one or more analytes (e.g., sodium, potassium, carbon dioxide, glucose, and insulin), but also one or more environmental conditions (e.g., temperature). Thus, the sensor module 204 and the sensor 202 (and any additional sensors) can detect the presence of one or more analytes, the absence of one or more analytes, and / or a change in one or more environmental conditions.
[0035] In one or more implementations, although not shown in the illustrated example of FIG. 2 , the sensor module 204 may include a processor and memory. By utilizing such a processor, the sensor module 204 may generate a glucose reading 118 based on communication with the sensor 202 indicating one or more changes (e.g., a change in an analyte, a change in an environmental condition, etc.). Based on these communications from the sensor 202, the sensor module 204 is further configured to generate CGM device data 214. The CGM device data 214 is a communicable package of data including at least one glucose reading 118. Alternatively or additionally, the CGM device data 214 includes other data such as multiple glucose readings 118, a sensor identification 216, a sensor status 218, etc. In one or more implementations, the CGM device data 214 may include other information such as one or more of the temperature corresponding to the glucose reading 118, and other analyte readings. In this manner, the CGM device data 214 may include a variety of data in addition to the at least one glucose reading 118 without departing from the spirit or scope of the described techniques.
[0036] During operation, the transmitter 208 may wirelessly transmit the CGM device data 214 as a stream of data to the computing device 108. Alternatively or additionally, the sensor module 204 may buffer the CGM device data 214 (e.g., in a memory of the sensor module 204) and cause the transmitter 208 to transmit the buffered CGM device data 214 at a later time at various intervals, such as time intervals (every second, every 30 seconds, every minute, every 5 minutes, every hour, etc.), storage intervals (when the buffered CGM device data 214 reaches a threshold amount of data or multiple instances of CGM device data 214), combinations thereof, etc.
[0037] In addition to generating and communicating CGM device data 214 to the computing device 108, the sensor module 204 is configured to perform additional functions according to one or more implementations. This additional functionality of the sensor module 204 may also include calibrating the sensor 202, either initially or on an ongoing basis, as well as calibrating any other sensors of the CGM system 104. This computing capability of the sensor module 204 is particularly advantageous when connectivity to services over the network 116 is limited or nonexistent.
[0038] With respect to CGM device data 214, sensor identification 216 represents information that uniquely identifies sensor 202 from other sensors (e.g., other sensors in other CGM systems 104, other sensors previously or subsequently implanted in skin 206, etc.). By uniquely identifying sensor 202, sensor identification 216 may also be used to identify other aspects regarding sensor 202, such as the manufacturing lot of sensor 202, packaging details for sensor 202, shipping details for sensor 202, etc. In this manner, various issues detected with sensors manufactured, packaged, and / or shipped in a similar manner as sensor 202 may be identified and used in different manners (e.g., to calibrate glucose readings 118, notify a user to change or dispose of a defective sensor, notify a manufacturing facility of machining issues, etc.).
[0039] The sensor state 218 represents the state of the sensor 202 at a given time, e.g., the state of the sensor at the same time that one of the glucose readings 118 is generated. To this end, the sensor state 218 may include an entry for each of the glucose readings 118 such that there is a one-to-one relationship between the glucose readings 118 and the status captured in the sensor state 218 information. In general, the sensor state 218 describes the operational state of the sensor 202. In one or more implementations, the sensor module 204 may identify one of several predefined operational states for a given glucose reading 118. The identified operational state may be based on communications from the sensor 202 and / or characteristics of those communications.
[0040] By way of example, the sensor module 204 may include (e.g., in memory or other storage) a look-up table with a predetermined number of operating conditions and a basis for selecting one condition from another. For example, the predetermined conditions may include a "normal" operating condition, and the basis for selecting this condition may be that communications from the sensor 202 fall within thresholds indicative of normal operation (e.g., within an expected time threshold, within an expected signal strength threshold, if the environmental temperature is within a suitable temperature threshold for continued operation as expected, combinations thereof, etc.). The predetermined conditions may also include operating conditions that indicate one or more characteristics of the sensor 202 communications are outside of the range of normal activity, resulting in potential errors in the glucose readings 118.
[0041] For example, these non-normal operating condition basis may include receiving a communication from the sensor 202 outside of a threshold expected time, detecting a signal strength of the sensor 202 outside of a threshold of expected signal strength, detecting an environmental temperature outside of a suitable temperature for continued operation as expected, detecting that the person 102 has changed orientation relative to the CGM system 104 (e.g., turned over in bed), etc. The sensor state 218 may indicate various aspects related to the sensor 202 and CGM system 104 without departing from the spirit or scope of the techniques described herein.
[0042] Having discussed an example environment and an example CGM system, we now turn to a description of some example details of a technique for determining similarity of sequences of glucose values according to one or more implementations.
[0043] Determining Similarity of Sequences of Glucose Values FIG. 3 illustrates an example 300 implementation in which a computing device communicates input data to an similarity system and in which the computing device receives similar sequence data from the similarity system in connection with determining the similarity of sequences of glucose values.
[0044] The illustrated example 300 includes a CGM system 104 and the example computing device 108 introduced with respect to Figure 1. The illustrated example 300 also includes a data analysis platform 122 and a storage device 120 that stores glucose readings 118, as described above. In the example 300, the CGM system 104 is shown as transmitting CGM device data 214 to the computing device 108. As described with respect to Figure 2, the CGM device data 214 includes the glucose readings 118 among other data. The CGM system 104 is configured to transmit the CGM device data 214 to the computing device 108 in a variety of manners.
[0045] The illustrated example 300 also includes a CGM package 302. The CGM package 302 represents data including CGM device data 214 (e.g., glucose readings 118, sensor identification 216, and sensor status 218), input data 304, or portions thereof. The input data 304 describes a sequence 306 of user glucose values extracted from the glucose readings 118 in one example. For example, the person 102 interacts with the computing device 108 to specify the input data 304. In another example, the computing device 108 automatically generates the input data 304 describing the sequence of user glucose values 306. As illustrated, the CGM package 302 (including the input data 304) is stored in the storage device 120 and is available to the data analysis platform 122.
[0046] In the example 300, the data analytics platform 122 is shown as having, receiving, and / or transmitting sequences of user glucose values 306. The data analytics platform 122 is also shown as having, receiving, and / or transmitting sequence data 308 that describes a plurality of sequences of glucose values. For example, the sequence data 308 describes a sequence of glucose values associated with the user population 110. In another example, the sequence data 308 describes a sequence of glucose values associated with the person 102. In some examples, the sequence data 308 describes a sequence of glucose values associated with the user population 110 as well as a sequence of glucose values associated with the person 102.
[0047] The data analytics platform 122 is shown to include an similarity system 310 that processes the sequence 306 of user glucose values and the sequence data 308 to generate similar sequence data 312. To do so, the similarity system 310 generates or accesses a similarity model. In an example where the similarity system 310 generates a similarity model, the similarity system 310 defines a discrete random variable (e.g., a glucose variable having a range of discrete values from 39 to 401) and builds a categorical distribution of the discrete random variable based on observations from a corpus of glucose measurements 118. For example, the corpus includes millions of days of glucose measurements 118. In this example, the glucose measurements 118 included in the corpus represent many types of normal conditions as well as all known types of abnormal conditions.
[0048] In a first example, the corpus includes only glucose measurements 118 for the user population 110. In a second example, the corpus includes only glucose measurements 118 for the person 102. In a third example, the corpus includes glucose measurements 118 for the user population 110 as well as glucose measurements 118 for the person 102. Regardless of how the corpus is populated, the similarity system 310 constructs categorical distributions of discrete random variables from the data contained in the corpus to generate the similarity model.
[0049] Once the similarity model is generated or accessed, the similarity system 310 implements the model to receive as input a particular glucose value and context data or evidence. The similarity model is configured to output a probability of observing a particular glucose value given the context data or evidence based on observations from a corpus of glucose measurements 118. In one example, the observed categorical distribution of glucose values given the context data or evidence is a posterior distribution of glucose values given the context data or evidence. In this example, the distance or similarity between a first glucose value and a second glucose value given the context data or evidence is the difference between the probability of observing the first glucose value with the context data or evidence and the probability of observing the second glucose value with the context data or evidence. Similarly, the distance or similarity between a first sequence of glucose values and a second sequence of glucose values given the context data or evidence can be expressed as the sum of the differences between the probabilities of observing each glucose value in the first sequence and all glucose values in the second sequence given the context data or evidence.
[0050] The similarity system 310 processes the sequence of user glucose values 306 and the sequence data 308 using a similarity model. For example, the similarity system 310 identifies a particular sequence of glucose values described by the sequence data 308 that is most similar to the sequence of user glucose values 306. In this example, the similarity system 310 generates similar sequence data 312 as describing the particular sequence. The data analysis platform 122 communicates the similar sequence data 312 to the computing device 108, for example, via the network 116.
[0051] In one example, the similarity system 310 also determines externalities associated with a particular sequence. In this example, an externality is something that is known or estimated for a particular sequence and can be inferred for a sequence of user glucose values 306. In some examples, an externality is determinable from data contained in a particular sequence, while in other examples, an externality is not determinable from the particular sequence itself. For example, an externality can be an event that occurred or did not occur (e.g., an event that was avoided). In examples, an externality can be a normal state, a meal consumed, a physical activity, a sensor identification 216, a sensor state 218, a CGM system 104 modification, a notification, an alert, etc.
[0052] Consider an example where the externality relates to an adverse event. For example, a particular sequence includes glucose values from glucose measurements 118 of an individual who experienced an adverse event or avoided experiencing an adverse event. Due to a high degree of similarity between the particular sequence and the sequence of user glucose values 306, the person 102 may also experience an adverse event or avoid experiencing an adverse event.
[0053] Consider an example where an externality relates to an intervention. In this example, the intervention may be related to an adverse event, such as an intervention that occurred as a result of the adverse event, an intervention that prevented the adverse event from occurring, etc. In response, the similarity system 310 generates an indication 314 of the externality.
[0054] The instructions 314, in one example, are generated to indicate an externality to the person 102. For example, the similarity system 310 generates the instructions 314 in response to a query. In some examples, the instructions 314 are counterfactual predictions, such as a prediction indicating how physical activity is likely to affect future glucose readings 118 of the person 102.
[0055] The similarity system 310 determines externalities in a variety of different ways. For example, externalities are described in metadata associated with a particular sequence, and the similarity system 310 determines the externalities by processing the metadata. In this example, the sequence of glucose values described by the sequence data 308 is tagged with associated externalities, and the similarity system 310 generates an indication based on these tagged externalities.
[0056] As shown, the computing device 108 receives similar sequence data 312 and instructions 314. For example, the computing device 108 processes the similar sequence data 312 to generate instructions for a particular sequence. In this example, the computing device 108 renders the instructions for a particular sequence in a user interface in response to a user query requesting the particular sequence. In some examples, the computing device 108 similarly renders instructions 314 in a user interface to communicate an externality to the person 102.
[0057] 4 illustrates in more detail an implementation of an example 400 of the similarity system 310 of FIG. 3. The similarity system 310 is shown to include a comparison manager 402 and an instruction manager 404. As shown, the comparison manager 402 receives as inputs the input data 304 and the sequence data 308. In this example, the input data 304 is included in the glucose measurements 118, while in other examples, the input data 304 is not included in the glucose measurements 118. The comparison manager 402 processes the input data 304 and the sequence data 308 to generate a similarity score 406. For example, a similarity model may be available to or included in the comparison manager 402, and the comparison manager 402 utilizes the similarity model to generate the similarity score 406.
[0058] To do so, in one example, the comparison manager 402 determines the probability of observing a glucose value included in the sequence of user glucose values 306 given the context data or evidence. The comparison manager 402 also determines the probability of observing each glucose value in a particular sequence of glucose values included in the sequence data 308 given the context data or evidence. The comparison manager 402 then calculates the difference between the probability of observing a glucose value in the sequence of user glucose values 306 and each of the probabilities of observing a glucose value included in a particular sequence given the context data or evidence. The comparison manager 402 then repeats this process for another glucose value included in the sequence of user glucose values 306 until the comparison manager 402 has calculated the difference between the probability of observing each glucose value included in the sequence of user glucose values 306 and the probability of observing all of the glucose values included in a particular sequence given the context data or evidence. The comparison manager 402 determines a similarity score for the particular sequence as the sum of all of the probability differences.
[0059] The similarity score for a particular sequence represents the distance or similarity between the particular sequence and the sequence of user glucose values 306. For example, the comparison manager 402 calculates the inverse of the sum of the probability differences, such that a higher similarity score corresponds to more similarity and a lower similarity score corresponds to less similarity. The comparison manager 402 generates the similarity scores 406 as including the similarity score for the particular sequence as well as a similarity score for each sequence of glucose values described by the sequence data 308.
[0060] In some examples, the comparison manager 402 compares a subsequence of user glucose values to a subsequence of a particular sequence instead of or in addition to comparing each glucose value in a sequence of user glucose values 306 to all glucose values in a particular sequence. For example, the comparison manager 402 first compares a subsequence of user glucose values to a subsequence of glucose values in a particular sequence to approximate a distance or similarity between the sequence of user glucose values 306 and the particular sequence. Based on this approximation, the comparison manager 402 determines whether to compare glucose values. In one example, the comparison manager 402 generates a similarity score for the particular sequence based on the comparison of the subsequence of user glucose values to the subsequence of glucose values in the particular sequence.
[0061] As shown, the instruction manager 404 receives the similarity scores 406, and the instruction manager 404 compares the similarity scores 406 to determine the highest similarity score. The instruction manager 404 identifies the sequence of glucose values that corresponds to the highest similarity score in this example. For example, the particular sequence is associated with the highest similarity score included in the similarity scores 406. In this example, the instruction manager 404 generates similar sequence data 312 as describing the particular sequence.
[0062] The instruction manager 404 is shown to include an externalities module 408, which the instruction manager 404 implements to determine externalities associated with a particular sequence. For example, a particular sequence may have metadata that describes the externalities, and the externalities module 408 processes the metadata to determine the externalities. As previously discussed, an externality is something that is known or estimated for a particular sequence and can also be inferred for the sequence of user glucose values 306. The externalities module 408 generates instructions 314 as describing the externalities.
[0063] 5 illustrates a representation 500 for determining similarity of sequences of glucose values. Representation 500 includes a first sequence 502 and a second sequence 504. First sequence 502 includes glucose values 506-544 as a first time series, and second sequence 504 includes glucose values 546-584 as a second time series. Consider an example in which similarity system 310 determines the distance or similarity between first sequence 502 and second sequence 504. For example, similarity system 310 utilizes a similarity model to determine the difference between the probability of observing each of glucose values 506-544 given evidence or context data and the probability of observing all of glucose values 546-584 given evidence or context data.
[0064] The evidence or context data for a particular one of glucose values 506-544 in turn refers to the local structure surrounding the particular one of glucose values 506-544. In a first example, the evidence or context data for glucose value 524 includes glucose value 522 and glucose value 526. Thus, similarity system 310 uses a similarity model to determine the probability of observing glucose value 524 given the observations of glucose value 522 and glucose value 526. In one example, similarity system 310 then determines the difference between this probability and the probability of observing glucose values 546-584 given the evidence or context data.
[0065] For example, the similarity system 310 uses the similarity model to determine the probability of observing glucose value 546 given the observed glucose values 522, 526 and subtracts this probability from the probability of observing glucose value 524 given the observed glucose values 522, 526. In this example, the similarity system 310 then determines the probability of observing glucose value 548 given the observed glucose values 522, 526 and subtracts this probability from the probability of observing glucose value 524 given the observed glucose values 522, 526. Continuing with the example, the similarity system 310 then determines the probability of observing glucose value 550 given the observed glucose values 522, 526 and subtracts this probability from the probability of observing glucose value 524 given the observed glucose values 522, 526. Similarity system 310 repeats this process for all of glucose values 552-584 in this example, and then repeats this process for each of glucose values 506-544.
[0066] For example, similarity system 310 determines the probability of observing glucose value 526 given the observations of glucose values 524 and 528. Similarity system 310 then determines the probability of observing glucose value 546 given the observations of glucose values 524, 528 and subtracts this probability from the probability of observing glucose value 526 given the observations of glucose values 524, 528. Continuing with the example, similarity system 310 determines the probability of observing glucose value 548 given the observations of glucose values 524, 528 and subtracts this probability from the probability of observing glucose value 526 given the observations of glucose values 524, 528. In this example, the similarity system 310 determines the probability of observing glucose value 550 given the observations of glucose values 524, 528, and subtracts this probability from the probability of observing glucose value 526 given the observations of glucose values 524, 528. The similarity system 310 repeats this process for all of the glucose values 552-584. For example, the similarity system sums all of these differences as a similarity score for the second sequence 504.
[0067] In another example, the similarity system 310 defines evidence or context data for a particular one of the glucose values 506-544 as including multiple glucose values before and after the particular one of the glucose values. For example, the similarity system 310 determines the probability of observing glucose value 524 given the observations of glucose values 520, 522, 526, and 528. In this example, the similarity system 310 determines the probability of observing glucose value 546 given the observations of glucose values 520, 522, 526, and 528 and subtracts this probability from the probability of observing glucose value 524 given the observations of glucose values 520, 522, 526, and 528. The similarity system 310 repeats this process for each of the glucose values 548-584.
[0068] For example, the similarity system 310 defines the evidence or context data for a particular one of the glucose values 506-544 as the three glucose values preceding and the three glucose values following the particular one of the glucose values. In one example, the similarity system 310 defines the evidence or context data for a particular one of the glucose values 506-544 as the four glucose values preceding and the four glucose values following the particular one of the glucose values. In another example, the similarity system compares subsequences of the first sequence 502 and the second sequence 504 to determine a distance or similarity between the first sequence 502 and the second sequence 504. In this example, the first sequence 502 includes subsequences 506-514, subsequences 516-524, subsequences 526-534, and subsequences 536-544. The second sequence 504 includes subsequences 546-554, subsequences 556-564, subsequences 566-574, and subsequences 576-584. The similarity system 310 compares each of the subsequences of the first sequence 502 to each of the subsequences of the second sequence 504 in the same or similar manner as it compares each of the glucose values 506-544 to all of the glucose values 546-584.
[0069] For example, the similarity system 310 constructs a matrix having 363 rows and 363 columns as a distance penalty matrix to determine the distance or similarity between the first sequence 502 and the second sequence 504. In this example, the rows are numbered 39 through 401 and the columns are numbered 39 through 401. Row, column index 39, 39 contains a zero and the remaining indexes in the first row contain distance parameters. Index 40, 39 contains a zero and index 40, 40 contains a zero. The remaining indexes in row 40 contain distance parameters. Indexes 41, 39; 41, 40; and 41, 41 each contain a zero. The remaining indexes in row 41 contain distance parameters. The distance penalty matrix is filled in this manner up to row 401, which is filled entirely with zeros. The similarity system 310 uses the distance penalty matrix to calculate the distance between every pair of glucose values 506 - 544 and glucose values 546 - 584 and sums all of these distances as a similarity score for the second sequence 504 .
[0070] In one example, the similarity system 310 reduces the amount of calculations required to determine the distance or similarity between the first sequence 502 and the second sequence 504. To do so, the similarity system 310 utilizes a distance of zero between identical values contained in both the glucose values 506-544 and the glucose values 546-584, and sets the distance between the glucose values 506-544 and the glucose values 546-584 greater than a distance threshold equal to a large constant. In one example, the distance threshold is 50 mg / dL. In another example, the distance threshold is greater than 50 mg / dL or less than 50 mg / dL. In this manner, the similarity system 310 can reduce the amount of calculations required to determine the distance or similarity between the first sequence 502 and the second sequence 504 by as much as 50 percent. In another example, the similarity system 310 determines the distance or similarity between the first sequence 502 and the second sequence 504 by comparing subsequences 506-514, 518-524, 526-534, and 536-544 with subsequences 546-554, 556-564, 566-574, and 576-584, further reducing the amount of computation by 50 percent. For example, similarity system 310 compares subsequences 506-514 with subsequences 546-554, 556-564, 566-574, and 576-584, respectively; similarity system 310 compares subsequences 518-524 with subsequences 546-554, 556-564, 566-574, and 576-584, respectively; similarity system 310 compares subsequences 526-534 with subsequences 546-554, 556-564, 566-574, and 576-584, respectively; and similarity system 310 compares subsequences 536-544 with subsequences 546-554, 556-564, 566-574, and 576-584, respectively.
[0071] For example, the similarity system 310 may determine the similarity or distance between the first sequence 502 and the second sequence 504 by determining the probability of observing glucose values 546-584 given the evidence or context data. In this example, the similarity system 310 then determines the probability of observing glucose values 506-544 given the evidence or context data. Continuing with the example, the similarity system 310 then calculates the difference between the probability of observing glucose values 546-584 and the probability of observing glucose values 506-544 and sums the differences as a similarity score for the second sequence 504.
[0072] Similarity system 310 implements a similarity model to determine the probability of observing glucose value 562 given the observed glucose value 560 and the observed glucose value 564. Similarity system 310 determines the probability of observing glucose value 506 given the observed glucose values 560, 564 and subtracts this probability from the probability of observing glucose value 562 given the observed glucose values 560, 564. Continuing with the example, similarity system 310 determines the probability of observing glucose value 508 given the observed glucose values 560, 564 and subtracts this probability from the probability of observing glucose value 562 given the observed glucose values 560, 564. Similarity system 310 repeats this process for each of glucose values 510-544.
[0073] Similarity system 310 then determines the probability of observing glucose value 564 given the observed glucose value 562 and the observed glucose value 566. Similarity system 310 utilizes the similarity model to determine the probability of observing glucose value 506 given the observed glucose values 562, 566 and subtracts this probability from the probability of observing glucose value 564 given the observed glucose values 562, 566. Similarity system 310 then determines the probability of observing glucose value 508 given the observed glucose values 562, 566 and subtracts this probability from the probability of observing glucose value 564 given the observed glucose values 562, 566. Similarity system 310 repeats this process for each of glucose values 510-544. For example, the similarity system 310 determines the difference between the probability of observing each of the glucose values 546-584 given the evidence or context data and the probability of observing all of the glucose values 506-544 given the evidence or context data. The sum of all of these differences equals the similarity score for the second sequence 504 in this example.
[0074] Consider an example where there are gaps between glucose values included in first sequence 502 and / or second sequence 504. In this example, evidence or context data is incomplete or unavailable for glucose values 506-544 and / or glucose values 546-584. In the first example, similarity system 310 estimates glucose values to complete the incomplete or unavailable evidence or context data. For example, if first sequence 502 does not include a glucose value between glucose value 518 and glucose value 522, similarity system 310 estimates glucose value 520 by linearly interpolating between glucose value 518 and glucose value 522.
[0075] In one example, similarity system 310 only estimates glucose value 520 for purposes of completing incomplete or unavailable evidence or context data. In an example where similarity system 310 estimates glucose value 520, similarity system 310 determines the probability of observing glucose value 518 given the observation of glucose value 516 and the observation of glucose value 520. Similarity system 310 subtracts the probability of observing each of glucose values 546-584 given the observation of glucose values 516, 520 from the probability of observing glucose value 518 given the observation of glucose values 516, 520.
[0076] Continuing with the previous example, similarity system 310 also determines the probability of observing glucose value 522 given the observation of glucose value 520 and the observation of glucose value 524. Similarity system 310 then subtracts the probability of observing each of glucose values 546-584 given the observation of glucose values 520, 524 from the probability of observing glucose value 522 given the observations of glucose values 520, 524. Similarity system 310 repeats this process for each of glucose values 506-516 and 524-544 and sums all of these differences as a similarity score for the second sequence 504.
[0077] In another example, the similarity system 310 estimates glucose value 520 for comparison to glucose values 546-584. In this example, the similarity system 310 repeats the process of the previous example, and additionally determines the probability of observing glucose value 520 given the observation of glucose value 518 and the observation of glucose value 522. For example, the similarity system 310 subtracts the probability of observing each of glucose values 546-584 given the observation of glucose values 518, 522 from the probability of observing glucose value 520 given the observation of glucose values 518, 522. The similarity system 310 then sums all of these differences as a similarity score for the second sequence 504.
[0078] In one example, instead of estimating glucose values to complete incomplete or unavailable evidence or context data, the similarity system 310 leverages any available evidence or context data to determine the similarity of sequences of glucose values. For example, the similarity system 310 determines the probability of observing glucose value 506 given the evidence or context data. In this example, glucose value 506 is the first value in the first sequence 502, and there are no glucose values available prior to glucose value 506. For example, the similarity system 310 implements a glucose value model to determine the probability of observing glucose value 506 given the observation of glucose value 508. The similarity system 310 then determines the probability of observing glucose value 546 given the observation of glucose value 508 and subtracts this probability from the probability of observing glucose value 506 given the observation of glucose value 508. Similarity system 310 then determines the probability of observing glucose value 548 given the observation of glucose value 508 and subtracts this probability from the probability of observing glucose value 506 given the observation of glucose value 508. For example, similarity system 310 repeats this process for each of glucose values 550-584.
[0079] Missing or Unavailable Glucose Values As outlined above, first sequence 502 is a time series of glucose values 506-544 and second sequence 504 is a time series of glucose values 546-584. Thus, any particular glucose value included in glucose values 506-544 is related to each of the other glucose values included in glucose values 506-544. Similarly, any particular glucose value included in glucose values 546-584 is related to each of the other glucose values included in glucose values 546-584.
[0080] However, there are various expected and unexpected scenarios in which one or more of the glucose values 506-544 and / or glucose values 546-584 are missing (e.g., the person 102 disconnects the CGM system 104 to replace the sensor 202) or unavailable (e.g., the sensor status 218 indicates that a particular glucose measurement 118 is likely inaccurate). In addition, there are various scenarios in which a glucose value is missing or unavailable in a sequence of user glucose values 306. For example, the sequence data 308 describes a sequence of glucose values associated with a user population 110 that has missing / unavailable glucose values.
[0081] As discussed above, the similarity system 310 can estimate missing or unavailable glucose values to complete incomplete or unavailable evidence or context data. In some examples, the computing device 108 and / or the CGM system 104 can individually or collectively estimate missing or unavailable glucose values to complete incomplete / unavailable evidence or context data. For example, the computing device 108 and / or the CGM system 104 can individually or collectively estimate missing or unavailable glucose values for displaying the estimates in a user interface, for calculating the TIR of the person 102, for other purposes such as as part of generating an alert or warning for the person 102, etc.
[0082] Consider examples where the computing device 108 and / or CGM system 104 leverages observations from a database of glucose measurements 118 to estimate missing or unavailable glucose values. For example, the database of glucose measurements 118 includes a corpus of glucose measurements 118 that are used to construct a categorical distribution of a discrete random variable. In a first example, the database of glucose measurements 118 includes only glucose measurements for the person 102. In a second example, the database of glucose measurements 118 includes only glucose measurements for the user population 110. In a third example, the database of glucose measurements 118 includes glucose measurements for the person 102 and the user population 110.
[0083] For example, the database of glucose measurements 118 may include actual glucose measurements 118 of the persons 102 and / or the user population 110. The database of glucose measurements 118 may also include synthetic glucose measurements instead of including actual glucose measurements 118 of the persons 102 and / or the user population 110. For example, the synthetic glucose measurements may be generated from the actual glucose measurements 118 of the persons 102 and / or the user population 110 in a manner that complies with regulatory requirements, privacy expectations, informed consent of the persons 102 and the user population 110, etc.
[0084] In one example, the synthetic glucose measurements are generated using a machine learning model trained on training data generated from actual glucose measurements 118 of the person 102 and / or user population 110. As used herein, the term "machine learning model" refers to a computer representation that is adjustable (e.g., trainable) based on inputs to approximate an unknown function. By way of example, the term "machine learning model" includes models that utilize algorithms that learn from and make predictions on known data by analyzing known data to learn to generate outputs that reflect patterns and attributes of the known data. According to various implementations, such machine learning models use supervised learning, semi-supervised learning, unsupervised learning, reinforcement learning, and / or transfer learning. For example, machine learning models can include, but are not limited to, clustering, decision trees, support vector machines, linear regression, logistic regression, Bayesian networks, random forest learning, dimensionality reduction algorithms, boosting algorithms, artificial neural networks (e.g., fully connected neural networks, deep convolutional neural networks, or recurrent neural networks), deep learning, and the like. As an example, machine learning models provide a high level of abstraction to data by generating data-driven predictions or decisions from known input data.
[0085] In one example, the synthetic glucose measurements are generated using a differentially private generative adversarial network that includes a generator network and a discriminator network. In this example, the differentially private generative adversarial network learns a distribution of training data that includes actual glucose measurements 118 of persons 102 and / or user populations 110. Gradients for the weights of the generator network are calculated by minimizing a loss function using training data that includes actual glucose measurements 118.
[0086] Continuing with this example, per-sample gradients are generated from the gradients using the clipping boundaries. Gaussian noise with variance proportional to the clipping boundaries is computed, and the computed Gaussian noise is added to the per-sample gradients. After adding the Gaussian noise to the per-sample gradients, the differentially private generative adversarial network is updated to minimize privacy loss. Synthetic glucose measurements are then generated using the updated differentially private generative adversarial network that obfuscates the actual glucose measurements 118 of the person 102 and / or user population 110.
[0087] In another example where synthetic glucose measurements are generated using a differentially private generative adversarial network, a differentially private classifier network is trained using training data including actual glucose measurements 118 of the person 102 and / or user population 110. After training the differentially private classifier network on the training data including actual glucose measurements 118 of the person 102 and / or user population 110, Gaussian noise is added to the training data to generate private training data. The differentially private generative adversarial network is retrained using the private training data and the trained differentially private classifier network (e.g., trained on training data including actual glucose measurements 118). In this manner, the generator network of the differentially private generative adversarial network is trained on the private training data to generate synthetic glucose measurements that are indistinguishable from the actual glucose measurements 118 of the person 102 and / or user population 110.
[0088] In a further example, the synthetic glucose measurements are generated using a generative adversarial network including a first convolutional neural network configured as a generator network and a second convolutional neural network configured as a discriminator network. In this further example, the generative adversarial network is trained with training data including digital images and / or digital data. For example, the digital images visually depict actual glucose measurements 118 of the person 102 and / or the user population 110. To generate the training data, the glucose measurements 118 may be converted into visual representations of the information contained in the glucose measurements 118, and these visual representations may be captured as digital images or digital data for training the generative adversarial network.
[0089] For example, the visual representation is a graph or plot of glucose measurements 118 over time. In one example, the first sequence 502 and the second sequence 504 are visual representations of glucose measurements 118 that can be converted to digital images for inclusion in the training data. Continuing with this example, the generator network and the discriminator network are trained using adversarial training on the training data. For example, as part of this adversarial training, the generator network learns to generate visual representations of glucose measurements that the discriminator network learns to classify as real (e.g., included in the true training data) or fake (e.g., generated by the generator network). Once trained, the visual representations of glucose measurements generated by the generator network are converted into time series representations that can be used as synthetic glucose measurements.
[0090] Although the synthetic glucose measurements are described with reference to an example database of glucose measurements 118, it should be understood that in some examples, the sequence data 308 describes the synthetic glucose measurements and / or the input data 304 describes the synthetic glucose measurements. For example, instead of describing a sequence of glucose values associated with the user population 110, the sequence data 308 describes synthetic glucose measurements generated from the actual glucose measurements 118 of the user population 110. In one example, instead of describing a sequence of glucose values associated with the person 102, the sequence data 308 describes synthetic glucose measurements generated from the actual glucose measurements 118 of the person 102. In another example, instead of describing a sequence of user glucose values 306, the input data 304 describes synthetic glucose measurements generated from the actual glucose measurements 118. Thus, the similarity system 310 can identify sequences of glucose values that are similar to the sequence of synthetic glucose measurements, and the similarity system 310 can also identify sequences of synthetic glucose measurements that are similar to the sequence of glucose values.
[0091] Regardless of whether the database of glucose measurements 118 includes synthetic glucose measurements, actual glucose measurements 118, or a combination of synthetic and actual glucose measurements 118, the distribution of sequences of glucose values contained in the database can be utilized to estimate missing or unavailable glucose values. Consider a sequence of glucose values 506, 508, 510, 512, 514 in an example where glucose value 510 is missing or unavailable. For example, glucose values 506-514 are 100 mg / dL, 101 mg / dL, XXX mg / dL, 103 mg / dL, and 104 mg / dL, respectively. The computing device 108 and / or CGM system 104 queries the database of glucose measurements 118 to identify similar sequences of glucose values and the frequency of occurrence of the identified similar sequences within the database of glucose measurements 118.
[0092] For example, the computing device 108 and / or CGM system 104 may identify similar sequences of glucose values based on each glucose value in the sequence of glucose values 506, 508, XXX, 512, 514 and each glucose value in the similar sequence of glucose values. In this example, the computing device 108 and / or CGM system 104 may identify similar sequences of glucose values based on sequence characteristics of the glucose values in the similar sequence as a time series, as described above. For example, the computing device 108 and / or CGM system 104 may calculate a similarity score 406 between the sequence of glucose values 506, 508, XXX, 512, 514 and the sequence of glucose values in the database of glucose measurements 118 by summing the difference between the probability of observing each glucose value 506, 508, 512, 514 given the evidence or context data and the probability of observing each glucose value in the sequence of glucose values in the database of glucose measurements 118 given the evidence or context data. In one example, the computing device 108 and / or CGM system 104 identifies similar sequences of glucose values based solely on the similarity scores 406, as described above. In another example, the computing device 108 and / or CGM system 104 does not use the similarity scores 406 to identify similar sequences of glucose values, or uses the similarity scores 406 to only partially identify similar sequences of glucose values.
[0093] In one example, the computing device 108 and / or CGM system 104 uses a similarity system 310 to identify similar sequences in a database of glucose measurements 118. In this example, the similarity system 310 uses the database of glucose measurements 118 as the sequence data 308 and the sequence of glucose values 100 mg / dL, 101 mg / dL, XXX mg / dL, 103 mg / dL, 104 mg / dL as the input data 304 to calculate a similarity score 406. For example, the similarity system 310 calculates the similarity score 406 by treating missing or unavailable glucose values 510 as "do not care" values such that the similarity score 406 is calculated based on the glucose values 100 mg / dL, 101 mg / dL, XXX mg / dL, 103 mg / dL, 104 mg / dL, where XXX is allowed to be any value (e.g., XXX is any value in the range of 40-400 mg / dL). In some examples for reducing the search space, XXX is any value in a subset of the range 40-400 mg / dL, where the subset excludes extreme or abnormal values from the range, such as 40 mg / dL, 400 mg / dL, etc.
[0094] In another example where the computing device 108 and / or CGM system 104 utilizes the similarity system 310 to identify similar sequences in the database of glucose measurements 118, instead of treating the missing or unavailable glucose value 510 as a "don't care" value, the similarity score 406 is calculated using a placeholder for the missing or unavailable glucose value 510. In this other example, the placeholder may be the average of the values 100 mg / dL, 101 mg / dL, 103 mg / dL, and 104 mg / dL. For example, if the number of available glucose values 506, 508 preceding the missing or unavailable glucose value 510 in the sequence of glucose values 506, 508, 510, 512, 514 is greater than a first threshold minimum number and less than a first threshold maximum number, the computing device 108 and / or CGM system 104 may calculate the placeholder as the average of the glucose values 506, 508. In this example, the first threshold minimum number ensures that the number of glucose values 506, 508 (i.e., two in this example) is large enough to avoid introducing undersampling errors / anomalies in the placeholders. Similarly, the first threshold maximum number ensures that the number of glucose values 506, 508 is small enough to avoid introducing oversampling errors / anomalies in the placeholders.
[0095] Continuing with the previous example, if the number of available glucose values 512, 514 following a missing or unavailable glucose value 510 in a sequence of glucose values 506, 508, 510, 512, 514 is greater than a second threshold minimum number and less than a second threshold maximum number, the computing device 108 and / or CGM system 104 may calculate the placeholder as the average of the glucose values 512, 514. For example, the second threshold minimum number prevents the introduction of undersampling errors / anomalies in the placeholder, and the second threshold maximum number prevents the introduction of oversampling errors / anomalies in the placeholder. In one example, the computing device 108 and / or CGM system 104 calculates the placeholder as the average of the glucose values 506, 508, 512, 514 if the first and second minimum threshold numbers and the first and second maximum threshold numbers are met by the number of available glucose values before and after the missing or unavailable glucose value 510.
[0096] In another example, the computing device 108 and / or CGM system 104 calculates the placeholder by linearly interpolating the glucose value 508 and the glucose value 512. For example, the placeholder can be calculated as the average value of the glucose measurements included in the database of glucose measurements 118. In one example, the placeholder is calculated as an arbitrary or random value selected from the range of 40-400 mg / dL.
[0097] In some examples, the placeholders are iteratively calculated based on glucose values contained in similar sequences and / or similar distributions of sequences identified in an iterative search of the database of glucose measurements 118. Consider an example in which the computing device 108 and / or CGM system 104 implements the similarity system 310 to search the database of glucose measurements 118 and identify a first most similar sequence and / or a first most similar distribution of sequences (based on the similarity score 406) for an input sequence of glucose values 100 mg / dL, 101 mg / dL, XXX mg / dL, 103 mg / dL, 104 mg / dL, where XXX is a random value selected from the range of 40 to 400 mg / dL. A new placeholder value is calculated based on the first most similar sequence and / or the first most similar distribution of sequences, and the similarity system 310 searches the database of glucose measurements 118 to identify a second most similar sequence and / or a second most similar distribution of sequences for the input sequence of glucose values 100 mg / dL, 101 mg / dL, YYY mg / dL, 103 mg / dL, 104 mg / dL, where YYY is the new placeholder value. The similarity system 310 calculates an additional new placeholder value based on the second most similar sequence and / or the second most similar distribution of sequences, and the similarity system 310 continues to search the database of glucose measurements 118, recalculating the placeholder based on the results of the previous searches until a particular placeholder value is identified that is substantially identical to the placeholder calculated from the results of the previous search or multiple previous searches. For example, certain placeholder values can be used as estimates for missing or unavailable glucose values 510 .
[0098] In some examples, the computing device 108 and / or CGM system 104 implements a similarity system 310 to identify similar sequences in a database of glucose measurements 118 by identifying subsequences (and / or similar distributions of subsequences) similar to the subsequences of glucose values 506, 508, 510, 512, 514. For example, the identified similar subsequences can be used to calculate a placeholder with greater accuracy than identifying similar sequences to calculate a placeholder in some scenarios. Consider an example in which the similarity system 310 searches the database of glucose measurements 118 to identify a first similar subsequence and / or a first similar distribution of subsequences for an input subsequence of 100 mg / dL, 101 mg / dL, XXX mg / dL, where XXX is a "don't care" value for a missing or unavailable glucose value 510. The similarity system 310 estimates first subsequence values for missing or unavailable glucose values 510 using the identified first similar subsequences and / or the first similarity distributions of the identified subsequences.
[0099] Continuing with the previous example, the similarity system 310 searches the database of glucose measurements 118 to identify a second similar subsequence and / or a second similar distribution of subsequences for an input subsequence of XXX mg / dL, 103 mg / dL, 104 mg / dL, where XXX is a "don't care" value for the missing or unavailable glucose value 510. The similarity system 310 uses the identified second similar subsequence and / or the second similar distribution of the identified subsequence to estimate a second subsequence value for the missing or unavailable glucose value 510. In a first example, the similarity system 310 uses the first subsequence value (and / or the first similar distribution of the subsequence) and the second subsequence value (and / or the second similar distribution of the subsequence) to directly estimate the value of the missing or unavailable glucose value 510.
[0100] In a second example, the similarity system 310 calculates a placeholder value using the first subsequence value (and / or a first similar distribution of subsequences) and the second subsequence value (and / or a second similar distribution of subsequences). In this second example, the similarity system 310 searches the database of glucose measurements 118 to identify similar sequences using placeholder values for missing or unavailable glucose values 510. In some examples, the similarity system 310 also searches the database of glucose measurements 118 in search iterations to identify similar subsequences and / or similar distributions of subsequences. For example, search iterations can be performed to identify similar subsequences (and / or similar distributions of subsequences) with greater precision, such as by leveraging results of the first search iteration to improve or refine the search input of the second search iteration. In other examples, search iterations can be performed to identify similar subsequences (and / or similar distributions of subsequences) at reduced computational cost, such as by leveraging results from a first search iteration to minimize a search space in the database of glucose measurements 118 for a second search iteration.
[0101] Consider an example in which the similarity system 310 may iteratively search the database of glucose measurements 118 to estimate missing or unavailable glucose values in the first sequence 502. In an example in which the input data 304 describes a sequence of glucose values 100 mg / dL, 101 mg / dL, XXX mg / dL, 103 mg / dL, 104 mg / dL, instead of allowing XXX to be any value (e.g., XXX is any value in the range of 40-400 mg / dL), such as by treating XXX as a "don't care value," the similarity system 310 may iteratively search the database of glucose measurements 118 to identify a range of values for XXX. In this example, the similarity system 310 searches the database of glucose measurements 118 in iterations that each allow XXX to be any value in a different range of glucose values.
[0102] For example, the similarity system 310 searches the database of glucose measurements 118 to identify sequences similar to the sequence of glucose values 100 mg / dL, 101 mg / dL, XXX mg / dL, 103 mg / dL, 104 mg / dL in a first iteration where XXX is allowed to be any value within a first range, e.g., 90-100 mg / dL. In one example, a first most similar sequence and a corresponding first similarity score (e.g., of the similarity scores 406) are determined for the first iteration. In this example, the similarity system 310 searches the database of glucose measurements 118 to identify sequences similar to the sequence of glucose values 100 mg / dL, 101 mg / dL, XXX mg / dL, 103 mg / dL, 104 mg / dL in a second iteration where XXX is allowed to be any value within a second range, e.g., 95-105 mg / dL. A second most similar sequence is determined for the second iteration, along with a corresponding second similarity score (eg, of similarity scores 406).
[0103] In the previous example, if the first similarity score is greater than the second similarity score, the remaining values in the first range are also included in the second range, so the value used for XXX is in the range of 90-94 mg / dL. For example, if the second similarity score is greater than the first similarity score, the remaining values in the second range are also included in the first range, so the value used for XXX is in the range of 101-105 mg / dL. Similarly, if the first similarity score is substantially equal to the second similarity score, the value used for XXX is in the range of 95-100 mg / dL, because these values are included in both the first and second ranges. Thus, in this example, it is possible to determine one of three possible ranges that include the value used for XXX by performing only two search iterations. It should be appreciated that the similarity system 310 can search a database of glucose measurements 118 to identify sequences similar to the sequence of glucose values 100 mg / dL, 101 mg / dL, XXX mg / dL, 103 mg / dL, 104 mg / dL in iterations where XXX is allowed to be any value in a range that does not include overlapping values, where XXX is allowed to be any value in a range that includes additional overlapping values, where XXX is allowed to be any value in a range that includes values that overlap some additional ranges and does not include values that overlap other additional ranges, etc.
[0104] While the above example is described as similarity system 310 searching a database of glucose measurements 118 in each iteration that allows XXX to be any value within a different range of glucose values, in other examples, similarity system 310 searches in each iteration that queries a different database of glucose measurements 118 or queries a different subset of the database of glucose measurements 118. For example, similarity system 310 searches an initial subset of the database of glucose measurements 118 to identify sequences that are similar to the sequence of glucose values 100 mg / dL, 101 mg / dL, XXX mg / dL, 103 mg / dL, 104 mg / dL in the initial iteration. In this example, the initial subset of the database of glucose measurements 118 includes a relatively small number of sequences of glucose values compared to the number of sequences of glucose values included in the database of glucose measurements 118.
[0105] In one example, the similarity system 310 searches an initial subset of the database of glucose measurements 118 in an initial iteration where XXX is allowed to be any value (e.g., XXX is any value in the range of 40-400 mg / dL) to identify sequences similar to the sequence of glucose values 100 mg / dL, 101 mg / dL, XXX mg / dL, 103 mg / dL, 104 mg / dL. Continuing with this example, the similarity system 310 leverages the most similar sequence of glucose values (and / or the distribution of the most similar glucose values) in the initial subset of the database of glucose measurements 118 identified from the initial iteration to estimate a finite range for XXX (e.g., XXX is any value in the range of 50-200 mg / dL). In subsequent iterations, where XXX is allowed to be any value within a finite range, the similarity system 310 searches subsequent subsets of the database of glucose measurements 118 to identify sequences similar to (and / or similar distributions of sequences) the sequence of glucose values 100 mg / dL, 101 mg / dL, XXX mg / dL, 103 mg / dL, 104 mg / dL.
[0106] In one example, the subsequent subset of the database of glucose measurements 118 includes a number of glucose value sequences that is greater than the number of glucose value sequences included in the initial subset of the database of glucose measurements 118. For example, the number of glucose value sequences included in the subsequent subset of the database of glucose measurements 118 is less than the number of glucose value sequences included in the database of glucose measurements 118. In one example, the similarity system 310 can search the subset of the database of glucose measurements 118 and allow XXX to be any value within a range of glucose values in an iteration, such that, relative to the previous iteration, the next iteration searches a subset of the database of glucose measurements 118 that has a greater number of glucose value sequences than the subset of the database of glucose measurements 118 searched in the previous iteration. In this example, the similarity system 310 searches the subset of the database of glucose measurements 118 in the next iteration by allowing XXX to be any value within a range of values that is narrower (including fewer possible values of XXX) than the range of values allowed for XXX in the previous iteration.
[0107] Although the missing or unavailable glucose value 510 is shown as a single glucose value, it should be understood that in some examples, the sequence of glucose values 506, 508, 510, 512, 514 has multiple missing or unavailable glucose values. In some examples, the multiple missing or unavailable glucose values are contiguous, such as in the example where glucose values 510, 512 are missing or unavailable. In other examples, the multiple missing or unavailable glucose values are not contiguous, such as in the example where glucose values 510, 514 are missing or unavailable.
[0108] For missing or unavailable adjacent glucose values 510, 512 in a sequence of glucose values 506, 508, 510, 512, 514, the computing device 108 and / or CGM system 104 implements a similarity system 310 to search a database of glucose measurements 118 to identify sequences that are similar (based on the similarity score 406 and / or similarity comparison) to the input sequence of glucose values 100 mg / dL, 101 mg / dL, XXX mg / dL, XXX mg / dL, 104 mg / dL, with the missing or unavailable glucose values 510, 512 each being treated as the same "don't care" value. In one example, the similarity system 310 searches a database of glucose measurements 118 to identify sequences similar to an input sequence of glucose values 100 mg / dL, 101 mg / dL, XXX mg / dL, 104 mg / dL, where the missing or unavailable glucose values 510, 512 are treated as a single "don't care" value. After identifying the most similar sequence (and / or the most similar distribution of sequences) in the database of glucose measurements 118 where the missing or unavailable glucose values 510, 512 are treated as the same "don't care" value or a single "don't care" value, the similarity system 310 uses the identified most similar sequence (and / or the most similar distribution of sequences) to estimate the value of one of the missing or unavailable glucose values 510, 512. The similarity system 310 then iteratively searches the database of glucose measurements 118 using a placeholder or “don't care” value for the other of the missing or unavailable glucose values 510 , 512 .
[0109] For glucose values 510, 514 that are missing or unavailable and are not adjacent in the sequence of glucose values 506, 508, 510, 512, 514, the computing device 108 and / or CGM system 104 implements a similarity system 310 to search the database of glucose measurements 118 to identify sequences that are similar to the input sequence of glucose values 100 mg / dL, 101 mg / dL, XXX mg / dL, 103 mg / dL, 103 mg / dL (and / or a similar distribution of sequences), and the missing or unavailable glucose value 510 is treated as a "don't care" value and the missing or unavailable glucose value 514 is assigned the value of the adjacent glucose value that is available in the sequence of glucose values 506, 508, 510, 512, 514. Alternatively, the similarity system 310 searches a database of glucose measurements 118 and identifies sequences similar to an input sequence of glucose values 100 mg / dL, 101 mg / dL, 101 mg / dL, 103 mg / dL, XXX mg / dL (and / or a similar distribution of sequences), where the missing or unavailable glucose value 514 is treated as a "don't care" value, and the missing or unavailable glucose value 510 is assigned the value of an adjacent glucose value that is available in the sequence of glucose values 506, 508, 510, 512, 514. In either alternative, after identifying a similar sequence of glucose values (and / or a similar distribution of sequences of glucose values) from the database of glucose measurements 118 that can be used to estimate a value for a missing or unavailable glucose value that is treated as a "don't care" value in the search, the estimated value is used in place of the "don't care" value in an updated input sequence of glucose values described by input data 304 that includes the "don't care" values for the missing or unavailable glucose values that are assigned the values of adjacent glucose values that are available in the sequence of glucose values 506, 508, 510, 512, 514.For example, the similarity system 310 searches a database of glucose measurements 118 to identify similar sequences (and / or similar distributions of sequences) based on the updated input sequence of glucose values. In this example, the identified similar sequences and / or similar distributions of the identified sequences are used to estimate values for the remaining "don't care" values.
[0110] Regardless of how the database of glucose measurements 118 is searched, the computing device 108 and / or CGM system 104 may search the database of glucose measurements 118 to determine whether the first sequence of glucose values 100mg / dL, 101mg / dL, 102mg / dL, 103mg / dL, 104mg / dL is similar to glucose values 100mg / dL, 101mg / dL, XXXmg / dL, 103mg / dL, 104mg / dL, and the second sequence of glucose values 100mg / dL, 101mg / dL, 103mg / dL, 104mg / dL, which is similar to glucose values 100mg / dL, 101mg / dL, XXXmg / dL, 103mg / dL, 104mg / dL. a second sequence of 100 mg / dL, 101 mg / dL, 100 mg / dL, 103 mg / dL, 104 mg / dL, a third sequence of 99 mg / dL, 101 mg / dL, 102 mg / dL, 103 mg / dL, 104 mg / dL, a fourth sequence of 99 mg / dL, 101 mg / dL, 102 mg / dL, 103 mg / dL, 104 mg / dL, and a fifth sequence of 99 mg / dL, 101 mg / dL, 103 mg / dL, 103 mg / dL, 106 mg / dL. For example, the first sequence has a frequency of occurrence of 25 percent in the database of glucose measurements 118, the second, third, and fourth sequences each have a frequency of occurrence of 20 percent in the database of glucose measurements 118, and the fifth sequence has a frequency of occurrence of 15 percent in the database of glucose measurements 118. Thus, in this example, the distribution of missing or unavailable glucose values 510 is 100 mg / dL (20 percent), 102 mg / dL (45 percent), and 103 mg / dL (35 percent).
[0111] From the distribution of missing or unavailable glucose values 510 above, in some examples, the computing device 108 and / or CGM system 104 estimates a value of 102 mg / dL for the missing or unavailable glucose value 510. In other examples, a weighted average of the possible values of the distribution is used for the missing or unavailable glucose value 510. For example, the similarity system 310 calculates the weighted average by multiplying each of the possible values of the distribution by its corresponding frequency of occurrence in the distribution.
[0112] If the distribution of missing or unavailable glucose values 510 is 100 mg / dL (20 percent), 102 mg / dL (45 percent), 103 mg / dL (35 percent), the similarity system 310, in some examples, uses any aggregation function (e.g., mean, median, etc.) to calculate the estimate of the missing or unavailable glucose values 510. In one example, the similarity system 310 uses a Monte Carlo method to calculate the estimate of the missing or unavailable glucose values 510. For example, the similarity system 310 draws from the distribution a glucose value that has a low occurrence in the distribution. For example, the probability of drawing a glucose value that has a low occurrence in the distribution is non-zero, and over a sufficient time and samples, the drawn glucose values match the sampling distribution of the distribution.
[0113] For example, the value estimated for a missing or unavailable glucose value 510 is different when the value is determined by the CGM system 104 than when the value is determined by the computing device 108. Consider an example in which a database of glucose measurements 118 is configured to be searched using minimal computational resources for the CGM system 104. For example, the CGM system 104 uses a first database 118 of glucose measurements to estimate missing or unavailable glucose values, and the computing device 108 uses a second database 118 of glucose measurements to estimate missing or unavailable glucose values.
[0114] In some examples, the first database of glucose measurements 118 includes less data than the second database of glucose measurements 118. In one example, the first database includes glucose measurements 118 for the person 102 and the second database includes glucose measurements 118 for the person 102 and glucose measurements 118 for the user population 110. In another example, the first database of glucose measurements 118 is configured to be searched using techniques that minimize computational resources consumed in the search, such as using checksums and / or hash values.
[0115] It should be appreciated that by estimating values for missing or unavailable glucose values, the estimated values can be used in place of the missing or unavailable glucose values, facilitating a variety of additional functions. For example, input to various machine learning models requires a complete sequence to generate a meaningful and accurate output, which is not possible when a sequence has missing or unavailable glucose values. By estimating values for the missing or unavailable glucose values to complete an incomplete sequence, the completed sequence can be processed using a variety of machine learning models that were not possible before completing the incomplete sequence.
[0116] Although the first sequence 502 is described as a time series of glucose values 506-544, it should be understood that the described systems and techniques are also applicable to a sequence of delta values, e.g., calculated from a sequence of glucose values. For example, delta values may be calculated as the difference between successive ones of the glucose values 506-544, such that a first delta value in the sequence is equal to the difference between glucose value 506 and glucose value 508, a second delta value in the sequence is equal to the difference between glucose value 508 and glucose value 510, a third delta value in the sequence is equal to the difference between glucose value 510 and glucose value 512, and so on. In some examples, the delta value is calculated as the difference between a current glucose value and a previous glucose value in the first sequence 502, while in other examples, the delta value is calculated as the difference between a previous glucose value and a current glucose value in the first sequence 502. For example, the delta value is calculated as the absolute value of the difference between successive glucose values in the first sequence 502.
[0117] Continuing with this example, the sequence of delta values is utilized as a search input to identify the most similar sequence of delta values described by data contained in a corpus of delta values calculated from glucose measurements 118 of the person 102 and / or user population 110. For example, a discrete random variable (e.g., a glucose delta variable) is utilized and a categorical distribution of the discrete random variable is generated based on observations from the corpus of delta values. The probability of observing a particular delta value given the evidence or context data can be determined using the corpus of delta values. For example, the similarity or distance between a first delta value and a second delta value can be calculated as the difference between the probability of observing the first delta value given the evidence or context data and observing the second delta value given the evidence or context data.
[0118] In a manner similar to how a similarity score (e.g., of similarity score 406) can be calculated for two sequences of glucose values, a similarity score is calculated for two sequences of delta values by determining the difference between the probability of observing the respective delta value of one of the sequences given the evidence or context data and the probability of observing the respective delta value of the other one of the sequences given the evidence or context data. For example, the similarity score for two sequences of delta values is equal to the sum of the determined differences. Thus, the sequence of delta values is a search input for searching a corpus of delta values to identify the sequence of delta values that is most similar to the sequence of delta values (e.g., the sequence of delta values having the highest similarity score).
[0119] In some examples, similarities between sequences of delta values may be exploited in addition to similarities between sequences of glucose values. In other examples, similarities between sequences of delta values may be exploited as an alternative to similarities between sequences of glucose values. For example, similarities between sequences of delta values may be exploitable in connection with generating alerts and / or warnings for the person 102, such as to avoid generating warnings for sequences of delta values determined to be similar to additional sequences of delta values that caused the generation of nuisance warnings for the person 102. In one example, the sequences of delta values are used to obfuscate actual glucose readings 118 of the person 102 and / or the user population 110. For example, the sequences of delta values are used as synthetic glucose readings or in place of synthetic glucose readings to identify similar sequences of glucose values.
[0120] 6 illustrates a representation 600 of a search request based on a sequence of user glucose values and an indication of similar sequences of glucose values. Representation 600 includes an example query 602 and an example response 604. In the example query 602, person 102 interacts with computing device 108 to specify a query and a time frame. As shown, the query is "days most similar to today" and the time frame is "one month."
[0121] The person 102 interacts with user interface elements 606 to perform a search. The similarity system 310 receives input data 304 describing the person's 102's query, and the similarity system 310 assigns the person's 102's sequence of glucose values to a sequence of user glucose values 306. The similarity system 310 then uses an similarity model to identify the particular sequence of glucose values described by the sequence data 308 that has the highest similarity score (e.g., of the similarity scores 406) for the sequence of user glucose values 306 within the most recent month.
[0122] The similarity system 310 generates similar sequence data 312 as describing the particular sequence and determines externalities associated with the particular sequence. In one example, the particular sequence includes metadata describing the externalities, and the similarity system 310 determines the externalities by processing the metadata. As shown in example response 604, the computing device 108 receives the similar sequence data 312 and the indication of the externalities 314 and displays the indication of the particular sequence and the indication of the externalities 314.
[0123] The instruction for a particular sequence is "Today is most similar to yesterday in a one month time frame." The instruction for externality 314 is "Today and yesterday are both anomalous days in the past week." The user interacts with user interface element 608 to dismiss the displayed instruction.
[0124] Consider another example in which the person 102 interacts with the computing device 108 to specify a query and a time frame, as in the previous example. However, in this example, the sequence of glucose values of the person 102 has missing or unavailable glucose values. Due to these missing or unavailable glucose values in the sequence of glucose values of the person 102, it is not possible for the similarity system 310 to identify the particular sequence of glucose values described by the sequence data 308 that has the highest similarity score for the sequence of user glucose values 306 within the most recent month. For example, the similarity system 310 cannot process the input data 304 if the input data 304 describes a sequence of glucose values that has missing or unavailable glucose values. In one example, the similarity system 310 cannot process the input data 304 if the input data 304 describes a sequence of glucose values that lacks a glucose value between two available glucose values in the sequence. Because a particular sequence of glucose values is not identifiable, the computing device 108 cannot display an indication of externality 314.
[0125] Continuing with this example, prior to identifying the particular sequence of glucose values described by the sequence data 308, the computing device 108 and / or CGM system 104 may implement a similarity system 310 to search the database of glucose measurements 118 and identify a sequence of glucose values that is most similar to the sequence of glucose values of the person 102 using "don't care" or placeholder values for glucose values that are missing or unavailable in the sequence of glucose values of the person 102. The similarity system 310 identifies a specific sequence of glucose values as the most similar sequence that differs from the particular sequence. The computing device 108 and / or CGM system 104 uses the specific sequence of glucose values to estimate the glucose values that are missing or unavailable in the sequence of glucose values of the person 102.
[0126] For example, the similarity system 310 receives input data 304 describing a query for a person 102, and the similarity system 310 assigns the sequence of glucose values for the person 102 (including estimates of missing or unavailable glucose values) as a sequence of user glucose values 306. The similarity system 310 then uses the similarity model to identify a particular sequence of glucose values described by the sequence data 308 that has the highest similarity score for the sequence of user glucose values 306 within the most recent month or specified time period. The similarity system 310 determines the externality by processing metadata included in the particular sequence describing the externality, and the computing device 108 displays an indication 314 of the externality as "Today and yesterday are both abnormal days in the past week."
[0127] 7 illustrates a representation 700 of a user interface that receives at least one sequence of glucose values for use as a search query and outputs one or more similar sequences of glucose values determined as search results for the search query. Representation 700 includes a computing device 702, where a user, such as a person 102 or a member of a user population 110, interacts with an input device (e.g., a stylus, mouse, touch screen, keyboard, etc.) to a user interface 704 of the computing device 702 to search for a sequence of glucose values similar to a today's glucose value 706. For example, the user interacts with the input device to the user interface 704 to input a today's glucose value 706 into a search field 708 displayed on the user interface 704. As illustrated, the today's glucose value 706 is a sequence of glucose values based on glucose measurements 118 of the person 102 from 12:00 a.m. at the start of the current day to 12:00 a.m. at the end of the current day. Although described as a today's glucose value 706, it should be understood that any sequence of glucose values may be used in place of or in addition to the today's glucose value 706. Examples of sequences of glucose values that can be used instead of or in addition to today's glucose value 706 include glucose values on different days, glucose values on multiple different days, glucose values for one hour, glucose values for multiple hours, glucose values for one minute, glucose values for multiple minutes, etc.
[0128] In one example, the computing device 702 includes the similarity system 310 and the storage device 120, where the similarity system 310 receives the today's glucose value 706 based on the today's glucose value 706 being entered into a search field 708. In another example, the computing device 702 does not include the similarity system 310. In this example, the computing device 702 is connected to a network 116, where the computing device 702 communicates the today's glucose value 706 to the similarity system 310 over the network 116 based on the today's glucose value 706 being entered into a search field 708. Continuing with this example, the similarity system 310 receives the today's glucose value 706 as a sequence of user glucose values 306.
[0129] For example, the similarity system 310 processes the sequence of user glucose values 306 to identify sequences 710-714 of glucose values that are similar to today's glucose value 706. As shown, an indication of the similar sequences 710-714 is displayed on the user interface 704. In examples where the computing device 702 includes the similarity system 310, the computing device 702 receives the data describing the similar sequences 710-714 directly from the similarity system 310. In examples where the computing device 702 does not include the similarity system 310, the computing device 702 receives the data describing the similar sequences 710-714 from the similarity system 310 over the network 116.
[0130] For example, similar sequences 710-714 are displayed in user interface 704 based on how similar each of similar sequences 710-714 is to today's glucose value 706. In one example, today's glucose value 706 is maximally similar to today's glucose value 706 (e.g., the sequence of glucose values is maximally similar to itself). Today's glucose value 706 is shown to have a similarity score of 283.0 with today's glucose value 706. Thus, in this example, a similarity score of 283.0 is the highest possible similarity score for the two sequences of glucose values. In other examples, the highest possible similarity score for the two sequences of glucose values is greater than 283.0 or less than 283.0.
[0131] In one example, similar sequence 710 is the most similar sequence to today's glucose value 706 of similar sequences 710-714, similar sequence 712 is less similar to today's glucose value 706 than similar sequence 710, and similar sequence 714 is less similar to today's glucose value 706 than similar sequence 712. In one example, similarity system 310 determines the relative similarity of similar sequences 710-714 to today's glucose value 706 based on similarity score 406. In this example, similar sequence 710 has a similarity score of 48.1168 with today's glucose value 706, similar sequence 712 has a similarity score of 26.5652 with today's glucose value 706, and similar sequence 714 has a similarity score of 37.9157 with today's glucose value 706. Thus, in this example, similar sequences 710-714 are not displayed in order of similarity in user interface 704 because similar sequence 714 has a higher similarity score with today's glucose value 706 than similar sequence 712.
[0132] Consider an example in which the similarity system 310 does not use the similarity scores 406 to identify similar sequences 710-714, or only partially uses the similarity scores 406 to identify similar sequences 710-714. For example, the similarity system 310 identifies similar sequences 710-714 based at least in part on other data. Examples of data that may be included in the other data are displayed in the user interface 704 as instructions 716-720. Instructions 716 correspond to similar sequence 710, and instructions 716 identify a day as "yesterday" as the period during which glucose measurements 118 of the person 102 were recorded as similar sequence 710. Instructions 716 also identify a Time In Range of 70 percent, a utilization rate of 100 percent, consumption of three meals, and a bolus of insulin of 50.
[0133] Instructions 718 correspond to similar sequence 712, and instructions 718 identify one day as “one month ago” during the period when glucose readings 118 of person 102 were recorded as similar sequence 712. Instructions 718 also identify a Time In Range of 68 percent, a utilization rate of 100 percent, consumption of three meals, and a bolus of insulin of 65. For example, instructions 720 correspond to similar sequence 714, and instructions 720 identify one day as “five days ago” during the period when glucose readings 118 of person 102 were recorded as similar sequence 714. Instructions 720 also identify a Time In Range of 72 percent, a utilization rate of 100 percent, consumption of three meals, and a bolus of insulin of 45.
[0134] In one example, even though similar sequence 714 has a higher similarity score with today's glucose value 706 than similar sequence 712, similarity system 310 displays similar sequence 712 in user interface 704 before similar sequence 714 as being more similar to today's glucose value 706 than similar sequence 714 based on the similarity comparison. In this example, similarity system 310 identifies that today's Time In Range is 68 percent, which is the same Time In Range as the day "one month ago." Based on this similarity comparison, similarity system 310 causes similar sequence 712 to be displayed in user interface 704 before similar sequence 714. In another example, similarity system 310 identifies that today's bolus insulin is 65, which is the same bolus insulin as the day "one month ago." Based on this other example, similarity system 310 causes similar sequence 712 to be displayed in user interface 704 before similar sequence 714.
[0135] FIG. 8 illustrates a representation 800 of an externality instruction including a counterfactual instruction. As illustrated, the computing device 108 determines that the person 102 went for a run, and the computing device 108 communicates a sequence of the person 102's most recent glucose values to the similarity system 310. For example, the person 102 interacts with a user interface of the computing device 108 to indicate information about the person 102's run, such as a total distance traveled while running, the person 102's heart rate while running, and calories burned while running. In one example, the computing device 108 receives data describing the person 102's run from another computing device, such as a smart watch. The similarity system 310 identifies the run from a timestamp included in the sequence of user glucose values 306 and extracts a subsequence of glucose values immediately prior to the run. The similarity system 310 identifies a subsequence of glucose values described by the sequence data 308 that is similar to the extracted subsequence of glucose values.
[0136] The similarity system 310 then determines that the identified subsequence is included in the sequence of glucose values described by the sequence data 308 corresponding to days when the person 102 did not go for a run. The similarity system 310 generates, and the computing device 108 receives, the similar sequence data 312 and instructions 314. The computing device 108 displays the counterfactual instruction: "Compared to a similar day in the one-month time frame when you did not complete a run, today your TIR will increase by about 14% due to running." For example, the person 102 interacts with the user interface element 804 to clear the counterfactual instruction.
[0137] Exemplary Procedure This section describes an example procedure for determining similarity of sequences of glucose values. Aspects of the procedure may be implemented in hardware, firmware, software, or a combination thereof. The procedure is illustrated as a set of blocks that specify operations performed by one or more devices and are not necessarily limited to the order shown for performing the operations by each block. FIG. 9 is a flow diagram illustrating a procedure 900 in an example implementation in which input data describing a sequence of user glucose values is received and an indication of externalities associated with similar sequences of glucose values is generated. Input data describing a sequence of user glucose values measured by a continuous glucose monitoring (GCM) system is received, the sequence of user glucose values including a subsequence of user glucose values (block 902). For example, the similarity system 310 receives the input data. Sequence data describing a plurality of sequences of glucose values is accessed, each sequence of the plurality of sequences including a subsequence of glucose values (block 904). In one example, the similarity system 310 accesses the sequence data.
[0138] A particular sequence of the plurality of sequences of glucose values that is similar to the sequence of user glucose values is identified based on a comparison between each of the subsequences of user glucose values and all of the subsequences of glucose values included in the particular sequence (block 906). In one example, the similarity system 310 identifies the particular sequence. An externality associated with the particular sequence is determined (block 908). For example, the similarity system 310 determines the externality. An indication of the externality is generated for display in a user interface (block 910). In one example, the similarity system 310 generates the indication of the externality.
[0139] 10 is a flow diagram illustrating a procedure 1000 in an exemplary implementation in which input data describing a sequence of user glucose values is received and an indication of externality associated with the sequence of glucose values having the highest similarity score is generated. Input data describing a sequence of user glucose values measured by a continuous glucose monitoring (CGM) system is received (block 1002). In one example, a similarity system 310 receives the input data. A similarity score is calculated for the multiple sequences of glucose values by comparing each glucose value in the sequence of user glucose values with all glucose values in each of the multiple sequences (block 1004). For example, the similarity system 310 calculates the similarity score.
[0140] A particular sequence of glucose values from the plurality of sequences is identified that is associated with the highest one of the similarity scores (block 1006). In one example, the similarity system 310 identifies the particular sequence as being associated with the highest similarity score. An externality associated with the particular sequence is determined (block 1008). For example, the similarity system 310 determines the externality. An indication of the externality is generated for display in a user interface (block 1010). In one example, the similarity system 310 generates the indication of the externality.
[0141] 11 is a flow diagram illustrating a procedure 1100 in an example implementation in which a similarity score for a candidate sequence is determined and compared to a similarity threshold score. Input data describing a sequence of user glucose values measured by a continuous glucose monitoring (CGM) system is received (block 1102). For example, the similarity system 310 receives the input data. A difference is determined between a probability of observing each glucose value in the sequence of user glucose values based on the context data and a probability of observing each glucose value in a candidate sequence of glucose values based on the context data (block 1104). In one example, the similarity system 310 determines the difference.
[0142] A similarity score is calculated for the candidate sequence by summing the determined differences (block 1106). In one example, the similarity system 310 calculates the similarity score. The similarity score is compared to a similarity threshold score (block 1108). For example, the similarity system 310 compares the similarity score to the similarity threshold score. In response to the similarity score being greater than the similarity threshold score, an indication of the candidate sequence is generated for display in a user interface (block 1110). In one example, the similarity system 310 generates the indication of the candidate sequence.
[0143] Exemplary Systems and Devices 12 illustrates an example system generally at 1200 that includes an example computing device 1202, which represents one or more computing systems and / or devices that may implement various techniques described herein. This is illustrated through the inclusion of a CGM platform 112. The computing device 1202 may be, for example, a service provider's server, a device associated with a client (e.g., a client device), an on-chip device, and / or any other suitable computing device or computing system.
[0144] The exemplary computing device 1202 as shown includes a processing system 1204, one or more computer-readable media 1206, and one or more I / O interfaces 1208 communicatively coupled to each other. Although not shown, the computing device 1202 may further include a system bus or other data and command transfer system that couples the various components together. The system bus may include any one or combination of different bus structures, such as a memory bus or memory controller, a peripheral bus, a universal serial bus, and / or a processor or local bus utilizing any of a variety of bus architectures. Various other examples, such as control and data lines, are also contemplated.
[0145] The processing system 1204 represents functionality for performing one or more operations using hardware. Thus, the processing system 1204 is illustrated as including hardware elements 1210, which may be configured as a processor, functional blocks, etc. This may include hardware implementations as application specific integrated circuits or other logic devices formed using one or more semiconductors. The hardware elements 1210 are not limited by the materials from which they are formed or the processing mechanisms employed therein. For example, a processor may be comprised of semiconductors and / or transistors (e.g., electronic integrated circuits (ICs)). In this context, processor-executable instructions may be electronically executable instructions.
[0146] The computer readable medium 1206 is illustrated as including memory / storage 1212. The memory / storage 1212 represents memory / storage capacity associated with one or more computer readable media. The memory / storage component 1212 may include volatile media (such as random access memory (RAM)) and / or non-volatile media (such as read only memory (ROM), flash memory, optical disks, magnetic disks, etc.). The memory / storage component 1212 may include fixed media (e.g., RAM, ROM, fixed hard drives, combinations thereof, etc.) as well as removable media (e.g., flash memory, removable hard drives, optical disks, combinations thereof, etc.). The computer readable medium 1206 may be configured in a variety of other manners, as further described below.
[0147] Input / output interface 1208 represents functionality that allows a user to input commands and / or information into computing device 1202 and to present information to a user and / or other components or devices using various input / output devices. Examples of input devices include keyboards, cursor control devices (e.g., a mouse), microphones, scanners, touch capabilities (e.g., capacitive or other sensors configured to detect physical touch), cameras (which may use visible or invisible wavelengths such as infrared frequencies to recognize movements as gestures that do not involve touch), and the like. Examples of output devices include display devices (e.g., a monitor or projector), speakers, printers, network cards, haptic response devices, and the like. Thus, computing device 1202 may be configured in a variety of ways to support user interaction, as described further below.
[0148] Various techniques may be described herein in the general context of software, hardware elements, or program modules. Generally, program modules include routines, programs, objects, elements, components, data structures, etc. that perform particular tasks or implement particular abstract data types. As used herein, the terms "module," "function," and "component" generally refer to software, firmware, hardware, or combinations thereof. Aspects of the techniques described herein are platform-independent, meaning that the techniques may be implemented on a variety of commercial computing platforms having a variety of processors.
[0149] Implementations of the described modules and techniques may be stored on or transmitted across some form of computer-readable media. Computer-readable media may include a variety of media that may be accessed by computing device 1202. By way of example, and not limitation, computer-readable media may include "computer-readable storage media" and "computer-readable signal media."
[0150] A "computer-readable storage medium" may refer to a medium and / or device that allows for persistent and / or non-transient storage of information, as opposed to merely a signal transmission, carrier wave, or signal itself. Thus, a computer-readable storage medium refers to a non-signal-bearing medium. A computer-readable storage medium includes hardware, such as volatile and non-volatile, removable and non-removable media, and / or storage devices implemented in a manner or technology suitable for storage of information, such as computer-readable instructions, data structures, program modules, logic elements / circuits, or other data. Examples of computer-readable storage media may include, but are not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disk (DVD) or other optical storage, hard disk, magnetic cassette, magnetic tape, magnetic disk storage or other magnetic storage device, or other storage device, tangible media, or any article suitable for storing the desired information and that can be accessed by a computer.
[0151] A "computer-readable signal medium" may refer to a signal-bearing medium configured to transmit instructions to the hardware of the computing device 1102, such as via a network. Signal media may typically embody computer-readable instructions, data structures, program modules, or other data in a modulated data signal, such as a carrier wave, data signal, or other transport mechanism. Signal media also includes any information delivery media. The term "modulated data signal" means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media include wired media, such as a wired network or direct-wired connection, and wireless media, such as acoustic, RF, infrared, and other wireless media.
[0152] As previously described, the hardware elements 1210 and the computer-readable medium 1206 represent modules, programmable device logic, and / or fixed device logic implemented in hardware form that may be employed in some embodiments to implement at least some aspects of the techniques described herein, such as to execute one or more instructions. The hardware may include integrated circuits or components of on-chip systems, application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), complex programmable logic devices (CPLDs), and other implementations in silicon or other hardware. In this context, the hardware may operate as a processing device that executes program tasks defined by instructions and / or logic embodied by the hardware, as well as hardware utilized to store instructions for execution, such as the computer-readable storage medium described above.
[0153] Combinations of the foregoing may be used to implement various techniques described herein. Thus, software, hardware, or executable modules may be implemented as one or more instructions and / or logic embodied on some form of computer-readable storage medium and / or by one or more hardware elements 1210. Computing device 1202 may be configured to implement specific instructions and / or functions corresponding to software and / or hardware modules. Thus, implementation aspects of modules executable as software by computing device 1202 may be achieved at least partially in hardware, for example, through the use of computer-readable storage medium and / or hardware elements 1210 of processing system 1204. The instructions and / or functions may be executable / operable by one or more articles of manufacture (e.g., one or more computing devices 1202 and / or processing system 1204) to implement the techniques, modules, and examples described herein.
[0154] The techniques described herein may be supported by various configurations of computing device 1202 and are not limited to the specific examples of the techniques described herein. This functionality may also be implemented in whole or in part through the use of distributed systems, such as on the "cloud" 1214 via platform 1216, as described below.
[0155] The cloud 1214 includes and / or represents a platform 1216 for resources 1218. The platform 1216 abstracts the underlying functionality of the hardware (e.g., servers) and software resources of the cloud 1214. The resources 1218 may include applications and / or data that may be utilized while computer processing is performed on a server that is remote from the computing device 1202. The resources 1218 may also include services provided over the Internet and / or over a subscriber network, such as a cellular network or a Wi-Fi network.
[0156] Platform 1216 may abstract resources and functionality for connecting computing device 1202 with other computing devices. Platform 1216 may also serve to abstract resource scaling to provide a level of scale corresponding to demand faced by resources 1218, which are implemented via platform 1216. Thus, in an embodiment of interconnected devices, implementation aspects of functionality described herein may be distributed throughout system 1200. For example, functionality may be implemented partially on computing device 1202 as well as via platform 1216 that abstracts functionality of cloud 1214.
[0157] conclusion Although the systems and techniques have been described in language specific to structural features and / or methodological acts, it should be understood that the systems and techniques defined in the appended claims are not necessarily limited to the particular features or acts described. Rather, the particular features and acts are disclosed as exemplary forms for implementing the claimed subject matter. [Explanation of symbols]
[0158] 100 Environment 102 People 104 System 106 Insulin Delivery System 108 Computing Devices 110 User Group 112 Platform 114 Internet of Things 116 Network 118 Glucose Measurements 120 Storage Devices 122 Data Analysis Platform 200 Exemplary Implementations 202 Sensor 204 Sensor Module 206 Skin 208 Transmitter 210 Adhesive Pad 212 Attachment mechanism 214 Device Data 218 Sensor Status 302 Package 304 Input Data 306 User Glucose Value 308 Sequence Data 310 Similarity System 312 Similar sequence data 314 Instructions 402 Comparison Manager 404 Instruction Manager 406 Similarity Score 408 Externality Module 502 First Sequence 504 Second Sequence 506 Glucose Levels 508 Glucose Level 510 Glucose Level 512 Glucose Levels 514 Glucose Level 516 Glucose Levels 518 Glucose Levels 520 Glucose Level 522 Glucose Levels 524 Glucose Level 526 Glucose Levels 528 Glucose Level 546 Glucose Level 548 Glucose Level 550 Glucose Level 552 Glucose Level 560 Glucose Level 562 Glucose Level 564 Glucose Level 566 Glucose Levels 584 Glucose Level 600 expressions 606 User Interface Elements 608 User Interface Elements 700 expressions 702 Computing Devices 704 User Interface 706 Today's Glucose Level 708 Search Field 710 Similar Sequences 712 Similar Sequences 714 Similar Sequences 716 Instructions 718 Instructions 720 Instructions 1200 System 1202 Computing Devices 1204 Processing System 1206 Computer-readable medium 1208 Output Interface 1210 Hardware Elements 1212 Storage 1214 Cloud 1216 Platform 1218 resources
Claims
1. 1. A method implemented by a computing device, the method comprising: receiving input data describing a sequence of user glucose values measured by a continuous glucose monitoring (CGM) system, the sequence of user glucose values including a subsequence of user glucose values; accessing sequence data describing a plurality of sequences of glucose values, each sequence of the plurality of sequences including a subsequence of glucose values; identifying a particular sequence of the plurality of sequences of glucose values that is similar to the sequence of user glucose values based on a comparison between each of the subsequences of user glucose values and all of the subsequences of glucose values included in the particular sequence; determining an externality associated with the particular sequence; generating an indication of said externality for display on a user interface; A method comprising:
2. The method of claim 1 , wherein the externalities are described by metadata associated with the particular sequence.
3. 2. The method of claim 1, wherein the externality is an adverse event that is likely to occur if an intervention is not performed, and the indication of the externality comprises an indication for the intervention.
4. The method of claim 1 , wherein the externality is an adverse event that was more likely to occur if the sequence of user glucose values did not resemble the particular sequence.
5. The method of claim 4 , wherein the indication of the externality comprises a counterfactual indication.
6. The method of any one of claims 1 to 5, wherein the sequence of user glucose values is associated with a particular user, and wherein the plurality of sequences of glucose values are associated with the particular user.
7. The method of any one of claims 1 to 5, wherein the sequence of user glucose values is associated with a particular user and the multiple sequences of glucose values are associated with different users.
8. The method of claim 7 , wherein the multiple sequences of glucose values are associated with multiple different users.
9. 6. The method of claim 1, wherein the comparison comprises determining a difference between a probability of observing a first glucose value included in a subsequence of user glucose values based on context data and a probability of observing a second glucose value included in a subsequence of glucose values included in the particular sequence based on the context data.
10. The method of claim 9 , wherein the context data describes glucose values before or after the first glucose value in a subsequence of the user glucose values.
11. The method of claim 9 , wherein the context data describes a glucose value that precedes or follows the second glucose value in one of the subsequences of glucose values.
12. 1. A method implemented by a computing device, the method comprising: receiving input data describing a sequence of user glucose values measured by a continuous glucose monitoring (CGM) system; calculating a similarity score for the plurality of sequences of glucose values by comparing each glucose value in the sequence of user glucose values with all glucose values in each of the plurality of sequences of glucose values; identifying a particular sequence of glucose values from the plurality of sequences that is associated with a highest one of the similarity scores; determining an externality associated with the particular sequence; generating an indication of said externality for display on a user interface; A method comprising:
13. The method of claim 12 , wherein the sequence of user glucose values is associated with a particular user, and the plurality of sequences of glucose values is associated with the particular user.
14. The method of claim 12 , wherein the sequence of user glucose values is associated with a particular user and the multiple sequences of glucose values are associated with multiple different users.
15. 15. The method of claim 12, wherein the comparing step comprises determining a difference between a probability of observing a first glucose value in the sequence of user glucose values based on context data and a probability of observing a second glucose value in the particular sequence based on the context data.
16. The method of claim 15 , wherein the context data describes glucose values that precede or follow the first glucose value in the sequence of user glucose values.
17. The method of claim 15 , wherein the context data describes a glucose value before or after the second glucose value in the particular sequence.
18. 1. A method implemented by a computing device, the method comprising: receiving input data describing a sequence of user glucose values measured by a continuous glucose monitoring (CGM) system; determining a difference between a probability of observing each glucose value in the sequence of user glucose values based on context data and a probability of observing each glucose value in a candidate sequence of glucose values based on the context data; calculating a similarity score for the candidate sequence by summing the determined differences; comparing said similarity score to a similarity threshold score; generating an indication of the candidate sequence for display on a user interface in response to the similarity score being greater than the similarity threshold score; A method comprising:
19. determining an externality associated with the candidate sequence; generating an indication of the externality for display on the user interface; 20. The method of claim 18, further comprising:
20. 20. The method of claim 19, wherein the indication of the externality comprises a counterfactual indication.