Methods and apparatus for determining free sugar content

11549929 · 2023-01-10

Assignee

Inventors

Cpc classification

International classification

Abstract

We describe a method of processing data to determine a level of free sugar in a foodstuff or drink, the method comprising: inputting data defining an ingredient list for said foodstuff or drink; inputting data for an empirical analysis (b) of nutrient levels in said foodstuff or drink; inputting data defining nutrient levels for each of ingredient in said ingredient list; wherein said analysed nutrient levels (b) in said foodstuff or drink are expressible as a combination of a matrix (A) of said ingredient nutrient levels and a vector (x) defining proportions of said ingredients in said ingredient list, representing a system of simultaneous equations defining said analysed nutrient levels in terms of said ingredient proportions and ingredient nutrient levels; identifying one or more conditions selected from the group consisting of: i) a solution to said system of simultaneous equations is non-physical, ii) said system of simultaneous equations is underdetermined, and iii) said system of simultaneous equations is overdetermined; modifying said system of simultaneous equations responsive to said identifying to add one or more additional ingredients to said ingredient list, said one or more additional ingredients representing one or more ingredients contributing to sugar content of said foodstuff or drink; and determining a level of free sugar in said foodstuff or drink from said modified system of simultaneous equations.

Claims

1. A method of processing data to determine a level of free sugar in a foodstuff or drink, the method comprising: inputting first data defining an ingredient list for said foodstuff or drink; laboratory testing said foodstuff or drink, to generate empirical analysis measurements of nutrient levels on said foodstuff or drink; inputting second data indicative of the empirical analysis measurements of nutrient levels (b) in said foodstuff or drink; inputting third data from a database defining nutrient levels for each of ingredient in said ingredient list; wherein said empirical analysis measurements of nutrient levels (b) in said foodstuff or drink are expressible as a combination of a matrix (A) of said ingredient nutrient levels and a vector (x) defining proportions of said ingredients in said ingredient list, representing a system of simultaneous equations defining said analyzed nutrient levels in terms of said ingredient proportions and ingredient nutrient levels; identifying one or more conditions selected from the group consisting of: i) a solution to said system of simultaneous equations is non-physical, ii) said system of simultaneous equations is underdetermined, and iii) said system of simultaneous equations is overdetermined; modifying said system of simultaneous equations responsive to said identifying to add one or more additional ingredients to said ingredient list to generate a modified system of simultaneous equations, said one or more additional ingredients representing one or more ingredients contributing to sugar content of said foodstuff or drink; and determining a level of free sugar in said foodstuff or drink from said modified system of simultaneous equations, the determining comprising: A) if said system of equations is underdetermined, determining said level of free sugar in comparison to a threshold by determining free sugar levels of all possible solutions of said modified system of simultaneous equations in comparison to said threshold; B) if said modified system of simultaneous equation has a unique solution defining proportions of said ingredients, the method further comprising determining said level of free sugar in said foodstuff or drink from said defined proportions of ingredients and a level of free sugar in each defined ingredient; C) if said system of simultaneous equations is overdetermined and when no unique or exact solution exists to said modified system of simultaneous equations, determining an approximate solution to said modified system of simultaneous equations.

2. A method as claimed in claim 1, wherein if said system of equations is underdetermined, said determining comprises determining sets of possible values of proportions of ingredients and determining said level of free sugar in each set in comparison with said threshold.

3. A method as claimed in claim 2 comprising determining a representation of said threshold sugar level in terms of proportions of each ingredient by multiplying a range of proportions of each ingredient by a respective value of free sugar in each ingredient, and determining said level of free sugar in each set in comparison with said threshold by comparing said possible values of proportions of ingredients with said representation of said threshold sugar level in terms of proportions of each ingredient.

4. A method as claimed in claim 1 wherein identifying when a solution of said system of simultaneous equations is non-physical comprises identifying when one or more of said ingredient proportions is negative and/or when said proportions sum to greater than unity.

5. A method as claimed in claim 1 if said system of simultaneous equations is overdetermined, the method further comprising comparing an estimated set of nutrient levels in said foodstuff or drink determined from said approximate solution with said empirical analysis to determine a degree of discrepancy and, in response, to flag an error when said discrepancy is greater than an error tolerance.

6. A method as claimed in any one of claims 1 and 2-4 further comprising outputting data defining said determined level of free sugar in said foodstuff or drink in relation to a defined threshold level.

7. A method as claimed in any one of claims 1 and 2-4, further comprising categorizing said foodstuff or drink into one of a plurality of health categories dependent upon said determined level of free sugar.

8. A method as claimed in any one of claims 1 and 2-4, further comprising marking a container of said foodstuff or drink to indicate said determined level of free sugar.

9. A method as claimed in any one of claims 1 and 2-4, further comprising analysing said foodstuff or drink to determine said nutrient levels in said foodstuff or drink.

10. A nontransitory computer readable storage medium having data stored therein representing software executable by a computer, the software including instructions to implement the method of any one of claims 1 and 2-4.

11. A system for determining a level of free sugar in a foodstuff or drink, the system comprising: laboratory testing equipment, configured to generate empirical analysis measurements of nutrient levels on said foodstuff or drink; one or more inputs for inputting: first data defining an ingredient list for said foodstuff or drink; second data indicative of the empirical analysis measurements of nutrient levels in said foodstuff or drink; and third data from a database defining nutrient levels for each of ingredient in said ingredient list; and a processor coupled to working memory and to program memory; wherein said empirical analysis measurements of nutrient levels in said foodstuff or drink are expressible as a combination of a matrix of said ingredient nutrient levels and a vector defining proportions of said ingredients in said ingredient list, representing a system of simultaneous equations defining said analyzed nutrient levels in terms of said ingredient proportions and ingredient nutrient levels; and wherein said program memory stores processor control code for controlling said processor to: identify one or more conditions selected from the group consisting of: i) a solution to said system of simultaneous equations is non-physical, ii) said system of simultaneous equations is underdetermined, and iii) said system of simultaneous equations is overdetermined; modify said system of simultaneous equations responsive to said identifying to add one or more additional ingredients to said ingredient list to generate a modified system of simultaneous equations, said one or more additional ingredients representing one or more ingredients contributing to sugar content of said foodstuff or drink; and determine a level of free sugar in said foodstuff or drink from said modified system of simultaneous equations.

Description

BRIEF DESCRIPTION OF THE DRAWINGS

(1) These and other aspects of the invention will now be further described, by way of example only, with reference to the accompanying figures in which:

(2) FIG. 1 shows a decision tree for use in embodiments of the invention; and

(3) FIG. 2 shows a diagrammatic illustrations of a solution subspace and a threshold surface illustrating determination of whether or not free sugar is beneath a threshold level in an underdetermined system of equations. The illustrations include a representations of the subspace and surface in a discretized manner, akin to finite-element analysis

DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS

(4) Broadly speaking we will describe systems and methods for evaluating free sugar content from an analytical biochemical “fingerprint” of a food product.

(5) In this specification we refer to “free sugar”. Free sugar, which here includes “added sugar”, generally refers to sugars such as monosaccharides and disaccharides added to foods and beverages by the manufacturer, cook or consumer, and to sugars naturally present in honey, syrups, fruit juices and fruit juice concentrates. However the techniques we describe are not limited to any particular definition of “free sugar” because the form of mapping employed between food ingredients and the constituents of those ingredients does not depend on what the constituents are defined as. For this reason, in principle, the techniques we describe are not limited to determining free sugar content and could also be employed, for example to determine the level of a particular type of dietary fibre.

(6) Thus we describe a method for determining if a food product's fraction of calories derived from free sugars is below a certain threshold. It involves constructing a biochemical “fingerprint” of the food product from analytical nutrient mass measurements, and solving a non-homogenous linear system that can be constructed with the food product's “fingerprint” and information from publicly available nutrient databases of ingredients.

(7) Given that most health guidelines make specification of a free-sugar threshold, below which foods are considered “healthy,” our method can be used by any agency that wishes to determine if food products are below any given free sugar threshold or not.

(8) A biochemical “fingerprint” for the food product is first constructed from analytical nutrient mass measurements, where the fingerprint does not depend on the absolute masses of the nutritional content of the food product, but rather, it depends on the relative amounts of one nutrient to the rest, for all nutrients. Next, a non-homogenous linear system is constructed with the food product's “fingerprint” and information from publicly available nutrient databases of ingredients. This linear system can be described by an augmented matrix, and the rank of the matrix in comparison with the number of nutrients and the rank of the non-augmented matrix can determine if the linear system is either overdetermined, underdetermined, or possesses a unique solution.

Preferred Mode for Carrying Out the Invention

(9) Required Information: i. Laboratory test of the food product, where the amounts of various nutrients are measured. M will henceforth denote the number of nutrients tested. While the number of different nutrients tested, as well as the identity of each nutrient, is generalized in this method, as an specific example, the following nutrients could be tested with the following tests: SUGAR: High performance liquid chromatography (HPLC); Gas chromatography; Paper chromatography; Thin layer chromatography (TLC); Colorimetric tests PROTEIN: Kjeldahl or Dumas nitrogen composition tests; Absorbance at A280, Bradford assay; BCA assay; Lowry assay; Biuret test FIBRE: Gravimetric assay post digestion & washing CARBOHYDRATE: Digest with enzyme (e.g. alpha-amylase) and measure released mono/oligosaccharides (e.g. by HPAEC-PAD/colorimetric assay) FATS: Soxhlet extraction, batch solvent or nonsolvent extraction WATER Drying-weighing (Oven/Microwave/Lyophilisation), Distillation procedure ii. List of ingredients of a product, where N will henceforth denote the number of ingredients in the product. iii. An ingredient database which contains the nutrient profile of all ingredients in the food product, where the nutrient profile contains information on all nutrients tested. Such databases are currently publicly available, for example, the following food databases listed in the European Food Information Resource (EuroFir) website could be used [Food Composition Databases. (n.d.). Retrieved Jun. 8, 2016, from http://www.eurofir.org/food-information/food-composition-databases-2/#]

(10) We assume that a food product is being tested to determine if the fraction of its calories derived from free-sugar are below a generalized threshold fraction r. In the following discussion, all vector spaces are assumed to be real

(11) Method:

(12) 1. All tested nutrients will arbitrarily be assigned an index i, where 1=1, 2, 3, . . . , M 2. All ingredients will arbitrarily be assigned an index j, where j=1, 2, 3, . . . , N 3. Each constituent ingredient of the product will be classified as a free-sugar containing ingredient, or as a non-free sugar containing ingredient, according to WHO guidelines. 4. The M-dimensional, unitless vector b is constructed, where its vector components b.sub.i are given by

(13) b i = a i .Math. i M a i ( 1 )
where a.sub.i is the laboratory-measured amount of the i.sup.th nutrient. This unitless vector is the biochemical “fingerprint” of the food product; it does not depend on the absolute masses of the nutritional content of the food product, but rather, it depends on the relative amounts of one nutrient to the rest, for all nutrients 5. The M×N unitless matrix A is constructed, where the matrix elements A.sub.ij are given by

(14) A ij = a ( i .Math. j ) .Math. i M a i ( 2 )
where a(i|j) is the amount of the i.sup.th nutrient present in the j.sup.th ingredient for mass of the j.sup.th ingredient equal to the total mass of the food product tested. This information will be contained in the aforementioned ingredient database. 6. The rank of  and the augmented matrix (Â|b) will be determined. Different scenarios can occur given the properties of the vector b and matrix Â, and different continuations of the procedure described above will be undertaken given the different scenarios. This is illustrated by the “decision tree” shown in FIG. 1.

(15) Progression through this “decision tree” and each scenario will henceforth be explained, Note that progression through the “decision tree” can be straightforwardly automated.

(16) Scenario 1—Single Unique, Physical Solution: rank(Â|b)=rank(Â)=N=M

(17) In this scenario, the linear system Âx=b has only one unique solution, where x is a N-dimensional vector whose vector components x.sub.j represent the food product's composition proportions of the j.sup.th ingredient. However, a solution with negative vector components is tantamount to negative composition fraction, which corresponds to an unphysical situation and hence an undesirable solution. Moreover, the solution must also conserve mass. Thereby, the following protocol will be undertaken:

(18) 7.1 The following linear system will be solved by conventional mathematical methods, such as fraction-free Gaussian elimination:
Âx=b
such that xεQ.sub.+.sup.N  (3)

(19) where Q.sub.+.sup.N is the subset of Q.sup.N where all x.sub.j≥0 and

(20) .Math. j N x j 1.
Given that a solution exists, it will be denoted as x.sub.M. x.sub.M gives the only possible (physical) composition proportions that could yield the measured lab results. Solving of the system can be performed computationally via computational libraries such as the Python library SciPy [Jones E, Oliphant E, Peterson P, et al. SciPy: Open Source Scientific Tools for Python, 2001 URL http://www.scipy.org/].

(21) 8.1 The fraction of the food product's calories derived from free-sugar will then be calculated with the free-sugar functional custom character defined as:

(22) [ x ] = .Math. l .Math. j N 4 .Math. A lj x j δ jk .Math. i M .Math. j N A ij x j c i ( 4 )

(23) where δ.sub.jk are Kronecker deltas, k are the indices corresponding to the free-sugar containing ingredients, l are the indices corresponding to all tested saccharide nutrients, and c.sub.i is the amount of calories in the i.sup.th nutrient (note that the value of 4 in the denominator corresponds to the amount of calories in sugars).

(24) If custom character[x.sub.M] is below fraction r, less than (r*100)% of the food product's calories are derived from free-sugar.

(25) Finally, the scenario where a solution to (3) does not exist is treated separately below

(26) Scenario 2—Lack of Unique, Physical Solution: rank(Â|b)=rank(Â)≤N or rank(Â|b)>rank(Â) and/or solution to (3) does not exist

(27) 7.2 All saccharide nutrients measured in the lab test will be added to the list of ingredients, if they are not already present, and will be classified as free-sugar containing ingredients. N′ will henceforth denote the amount of ingredients in the product's modified ingredient list, and all new saccharide “ingredients” will receive an index j such that N≤j≤N′

(28) 8.2 The M×N′ matrix custom character is constructed, where the matrix elements A′.sub.ij are given by

(29) A ij = a ( i | j ) .Math. i M a i ( 5 )

(30) 9.2 The ranks of custom character|b and custom character are calculated. If nk(custom character|b)=rank(custom character)<N′, the linear system Â′x′=b is underdetermined and infinitely many solutions exist; however, if rank(custom character|b)>rank(custom character) then the linear system is overdetermined; no solutions exist.

(31) Note that if rank(Â|b)=rank(Â)≤N then rank(custom character|b)=rank(custom character)<N′: if rank(Â|b)=rank(Â)<N, then adding (N′−N) new ingredients can, at most, add N′−N linearly independent columns to the matrices  and Â|b, thereby making the maximal possible number of linearly independent columns in both matrices, i.e. the rank of both matrices, to be rank(Ä)+(N′−N)=rank(Â|b)+(N′−N)<N+(N′−N)=N′; if rank(Â|b)=rank(Â)=N=M, then adding new ingredients.

(32) The procedure for an overdetermined system will be handled separately in Scenario 3.

(33) In what follows, we describe two embodiments of the procedure: the following is the preferred embodiment. After, an alternative embodiment will follow.

(34) 10.2 Since the underdetermined system could have infinitely many solutions, simply solving the system for the solution set is not an acceptable option in terms of computational efficiency. Hence, we cast the following problem
Â′x′=b
such that x′εQ.sub.+.sup.N′  (6)

(35) where x′ is an N′-dimensional vector whose vector components x′.sub.j represent the food product's composition proportion of the j.sup.th ingredient, as the following constrained optimization problem:

(36) maximize c T x d T x subject to A ^ x = b all x j 0 .Math. j N x j 1 ( 7 )

(37) where c and d are vectors whose coefficients correspond to the summation coefficients in custom character (4). Note that c.sup.Tx′ and d.sup.Tx′ are affine functions of the x.sub.j variables. Let x.sub.u denote the optimal solution to (7). Essentially, solving (6) is tantamount to a solving (3) where all saccharide's contents are also allowed to vary independently of other nutrients, i.e. we allow for the possibility of unreported added sugars while solving (3).

(38) The solution of (7) x.sub.u maximizes (4), and this maximal value is compared with the free-sugar threshold r. If this maximal value is below the threshold, then it can be unambiguously determined that the amount of free-sugar in the food product does not cross the threshold.

(39) In order to simplify the analysis, the Charnes-Cooper transformation is applied:

(40) y = tx , t = 1 d T x

(41) which in essence adds a new variable and a new constraint to (7) in order to cast the problem in a simpler form. This transformation translates (7) into the following equivalent constrained optimization problem:

(42) maximize c T y subject to A ^ y - bt = 0 d T y = 1 all y j > 0 .Math. j N y j t ( 8 )

(43) where, notably, the new variable is t, d.sup.Ty=1 is an extra constraint not present (7), and all constraints are linear. This linearity feature of (8) allows it to be solved via the Simplex algorithm, a standard algorithm used to solve linear optimization programs. An implementation of this algorithm can be found in SciPy. Once the optimal y is obtained, the optimal x′ is given by:

(44) x = y t ( 9 )

(45) 11.2 (4) is then calculated with x.sub.u; we denote this optimal free-sugar value by custom character.sub.u,opt. This value can be compared with the free-sugar threshold r; if custom character.sub.u,opt>r, this signifies that there exists some combination of reported ingredients and unreported added sugars which yield the measured laboratory results and also yield more than (r*100)% of total calories as coming from free-sugars. In this case, one cannot be certain that less than (r*100)% of this food product's total calories are derived from free-sugar. However, custom character.sub.u,opt<r, then one can be certain that, given the lab results, less than (r*100)% of the food product's calories are derived from free-sugar.

(46) Scenario 3—Inconsistent System: solution to (6) does not exist:

(47) This scenario corresponds to an inconsistent, overdetermined linear system, i.e., NO combination of reported ingredients and unreported added sugars exists which yield the measured laboratory results. If rank(custom character|b)>rank(Â′), then the linear system is overdetermined without the conservation of mass constraints and thereby has no solutions; if rank(custom character|b)=rank(custom character) but a solution to (6) does not exist, then it is the constraints that make the linear system effectively overdetermined.

(48) This corresponds to misreporting of ingredients by the manufacturer or error in the reported laboratory results, both of which result in an impossible calculation. In order to deal with these sources of error, the following procedure will be carried out:

(49) 7.3 The following constrained optimization problem will be solved

(50) 0 maximize c T x d T x subject to .Math. A ^ x - b .Math. < Δ all x j 0 .Math. j N x j 1 ( 10 )

(51) where c and d are the same vectors as in (7), and Δ is some error tolerance allowed by the user. Let x.sub.o denote the optimal solution to (10). Essentially, (10) differs from (7) in how the linear equations Â′x′=b are used: in (7), they are enforced as an equality constraint; here, we allow Â′x.sub.o to vary from b, which is the laboratory data, by the error tolerance Δ, thereby allowing for some error in the data used in the analysis. Note that if there is no solution which satisfies the constraints of (10), the data used will be deemed to be systematically wrong beyond tolerance.

(52) 9.3 We again apply the Charnes-Cooper transformation, which translates (10) into the following equivalent constrained optimization problem:

(53) maximize c T y subject to .Math. A ^ y - bt .Math. - Δ t < 0 d T y = 1 all y j > 0 .Math. j N y j t ( 11 )

(54) (11) has the structure of a second order cone programming constrained optimization problem, and thus can be readily solved by standard second-order cone programming algorithms. An implementation of such an algorithm can be found in computational CVXOPT Python library [M. S. Andersen, J. Dahl, and L. Vandenberghe. CVXOPT: A Python package for convex optimization URL at cvxopt.org]

(55) 10.3 Given that some x.sub.o can be found, (4) is then calculated with x.sub.o; we denote this optimal free-sugar value by custom character.sub.o,opt. This value can be compared with the free-sugar threshold r; if custom character.sub.o,opt>r, this signifies that there exists some combination of reported ingredients and unreported added sugars which would yield a biochemical fingerprint whose difference with the measured laboratory biochemical fingerprint is within an acceptable error tolerance, and also yields more than (r*100)% of total calories as coming from free-sugars. In this case, one cannot be certain, to within an appropriate error tolerance, that less than (r*100)% of this food product's total calories are derived from free-sugar. However, custom character.sub.u,opt<r, then one can be certain that, to within an appropriate error tolerance, less than (r*100)% of the food product's calories are derived from free-sugar.

(56) Now, starting again at step 10.2, what follows is another embodiment of the procedure:

(57) 10.2 The following linear system is solved:
Â′x′=b
such that x′εQ.sub.+.sup.N′  (6)

(58) where x′ is an N′-dimensional vector whose vector components x′.sub.j represent the food product's composition proportion of the j.sup.th ingredient. The set of solutions to (6) will henceforth be referred to as {x.sub.u}. Note that if rank(custom character|b)=rank(custom character)=N′ the linear system only has one unique solution: {x.sub.u} will thereby only contain one object if the unique solution fulfils the constraints denoted in (6). However, if rank(custom character|b)=rank(custom character)<N′, the undetermined system has many solutions, and {x.sub.u} will contain more than one object given that solutions fulfil the constraints denoted in (6).

(59) Essentially, solving (6) is tantamount to a solving (3) where all saccharide's contents are also allowed to vary independently of other nutrients, i.e. we allow for the possibility of unreported added sugars while solving (3). If {x.sub.u} is an empty set, this signifies that there are no physical solutions that solve (6); this scenario is treated separately under scenario 3.

(60) 11.2 Given that {x.sub.u} is not an empty set, the N′-dimensional subset custom character is then obtained, where all vectors x′ in the subset fulfill the conditions:
custom character[x′]≤r and x′εQ.sub.+.sup.N′  (7)

(61) 12.2 The following set is computed:
(Q.sub.+.sup.N′−custom character)∩{x.sub.n}  (8)

(62) If (8) is not empty, this signifies that there exists some combination of reported ingredients and unreported added sugars which yield the measured laboratory results and also yield more than (r*100)% of total calories as coming from free-sugars. In this case, one cannot be certain that less than (r*100)% of this food product's total calories are derived from free-sugar. However, if (8) is empty, than one can be certain that, given the lab results, less than (r*100)% of the food product's calories are derived from free-sugar.

(63) Note that, for practical reasons, working with custom character and {x.sub.u} will likely be accomplished via discretization of the relevant space into a fine grid (with grid granularity chosen by the user). For computation of custom character, an N′.sup.th dimensional array will be computed, where the i.sup.th, j.sup.th, k.sup.th, . . . , N′.sup.th element of the array will be the calculated free sugar value corresponding to the gridpoint: [i′.Math.g.sub.i, j′.Math.g.sub.j, k′.Math.g.sub.k, . . . , N″.Math.g.sub.N], where g.sub.j is the chosen granularity of the j.sup.th dimension in Q.sup.N′, and where all i′, j′, k′, . . . N″ indices range from 0 to g.sup.−1 (a lower bound of 0 ensures the positivity criteria is met). Via conditional statements in a suitable programming language, the gridpoints that do not fulfil the conditions denoted in (7) can be thrown out; the remaining gridpoints yield custom character. Given that many solutions exist, the solution set {x.sub.u} can also be discretized by first arbitrarily assigning N′−rank(custom character) dimensions as free parameters, discretizing the free parameter dimensions via a chosen dimension granularity as discussed above, and then computing other vector elements via the general solution (obtained from solving the underdetermined linear system) with the various (discrete) free parameter values. Note that, if discretization is undertaken in this manner, then there will be custom characterg.sub.j.sup.−1 elements in the discretised solution set before removal of vectors that do not fulfil the

(64) .Math. j N x j 1
criteria.

(65) Via conditional statements, vectors that are not in Q.sub.+.sup.N′ can then be thrown out, thus yielding {x.sub.u}. Then, via conditional statements, (8) can be computed.

(66) Scenario 3—Inconsistent System: Solution to (6) does not exist:

(67) This scenario corresponds to an inconsistent, overdetermined linear system, i.e., No combination of reported ingredients and unreported added sugars exists which yield the measured laboratory results. If rank(custom character|b)>rank(Â′), then the linear system is overdetermined without the conservation of mass constraints and thereby has no solutions; if rank(custom character|b)=rank(custom character) but a solution to (6) does not exist, then it is the constraints that make the linear system effectively overdetermined. This corresponds to misreporting of ingredients by the manufacturer or error in the reported laboratory results, both of which result in an impossible calculation. In order to deal with these sources of error, the following procedure will be carried out:

(68) 7.3 Following conventional scientific practice, a constrained least squares solution will be obtained for (6). This can be accomplished via the conjugate gradient method, as described by Branch et. al. [Branch, M. A., Coleman, T. F., & Li, Y. (1999). A subspace, interior, and conjugate gradient method for large-scale bound-constrained minimization problems. SIAM Journal on Scientific Computing, 21(1), 1-23.], and can be performed with computational minimization libraries such as the Python library LMFIT [Newville, M., Stensitzki, T., Allen, D. B., & Ingargiola, A. (2014). LMFIT: non-linear least-square minimization and curve-fitting for Python. Zenodo, http://dx.doi.org/10.5281/zenodo, 11813]. This solution will be denoted as x.sub.LS.

(69) 8.3 ∥Â′x.sub.LS−b∥ will be computed. If this distance value is above an appropriate error tolerance, then the information provided (ingredient list and/or laboratory results) will be deemed to be systematically wrong beyond tolerance.

(70) 9.3 Given that ∥Â′x.sub.LS−b∥ is below the error tolerance, the set {x.sub.I} will be obtained, where, for all x.sub.I, the distance ∥Â′x.sub.I−b∥ is below the error tolerance. Note that the vector x.sub.LS is in the {x.sub.I} set as well if it fulfills the tolerance criteria. Note that the {x.sub.I} set will be centered around x.sub.is since this vector is the solution that minimizes the error (given that it fulfils the tolerance criteria).

(71) 10.3 The N′-dimensional subset custom character is then obtained according to (7), and the following set is computed:
(Q.sub.+.sup.N′−custom character)∩{x.sub.I}  (9)

(72) If (9) is not empty, this signifies that there exists some combination of reported ingredients and unreported added sugars which would yield a biochemical fingerprint whose difference with the measured laboratory biochemical fingerprint is within an acceptable error tolerance, and also yields more than (r*100)% of total calories as coming from free-sugars. In this case, one cannot be certain, to within an appropriate error tolerance, that less than (r*100)% of this food product's total calories are derived from free-sugar.

(73) However, if (9) is empty, than one can be certain that, to within an appropriate error tolerance, less than (r*100)% of the food product's calories are derived from free-sugar.

Illustrative Examples on Use of Invention

Scenario 1

(74) Consider a food product with the ingredients: Ingredient A, Ingredient B, Fructose, where only Fructose is a free-sugar containing ingredient. The ingredients' nutrient profile (amount of nutrient per 100 g of ingredient) is shown in Table 1.

(75) TABLE-US-00001 TABLE 1 Nutrient profile of ingredients Ingredient A Ingredient B Ingredient C = Fructose Fructose  0 g 25 g 100 g  Fiber  0 g 2.5 g  0 g Protein 25 g  0 g 0 g Lactose 30 g  0 g 0 g

(76) Moreover, consider the following lab measurement data for 100 g of food product tested: Fructose: 16 g; Fiber: 1.2 g; Protein: 12 g; Lactose: 14.4 g

(77) The protocol would be carried out in the following manner: 1. We (arbitrarily) assign the following indices: Fructose.fwdarw.1; Fiber.fwdarw.2; Protein.fwdarw.3; Lactose.fwdarw.4 2. We (arbitrarily) assign the following indices: Ingredient A.fwdarw.1; Ingredient B.fwdarw.2; Ingredient C.fwdarw.3 These two indices assignments thus define a.sub.i and a(i|j) as described above 3. We make the following classifications: Ingredient A.fwdarw.non-free sugar, Ingredient B.fwdarw.non-free sugar; Ingredient C.fwdarw.free sugar containing 4. The vector b, computed according to (1), is thus (rounded to two significant figures):
b=[0.37,0.028,0.28,0.33] 5. The 4×3 matrix A, constructed according to (2), is thus (rounded to two significant figures):

(78) A ^ = [ 0.00 0.00 2.29 0.00 0.06 0.00 0.57 0.00 0.00 0.69 0.00 0.00 ] 6. The augmented matrix augmented matrix (Â|b) is given by

(79) A ^ | b = [ 0.00 0.00 2.29 0.00 0.06 0.00 0.57 0.00 0.00 0.69 0.00 0.00 | 0.37 0.028 0.28 0.33 ]

(80) The rank of Â|b and  are both calculated to be 3. 7.1 (3) is solved by with the Python numerical library SciPy, yielding:
x.sub.M=[0.48,0.48,0.04]

(81) Indicating that the food product is made from 48% Ingredient A, 48% Ingredient B, and 4% Ingredient C. 8.1 Calculation of custom character[x.sub.M] according to (4) yields:
custom character[x.sub.M]=0.094

(82) where it was assumed that fructose, lactose, and protein contain 4 calories per gram, and fiber contains 0 calories per gram.

Scenario 2 (Alternative Embodiment)

(83) Consider a food product with ingredients: Ingredient A, Ingredient B. The ingredients' nutrient profile (amount of nutrient per 100 g of ingredient) is shown in Table 1.

(84) TABLE-US-00002 TABLE 1 Nutrient profile of ingredients Ingredient A Ingredient B Glucose 10 g  25 g Fiber  1 g 2.5 g

(85) Moreover, consider the following lab measurement data for 100 g of food product tested: Glucose: 20 g; Fiber: 2 g;

(86) The protocol would be carried out in the following manner: 1. We (arbitrarily) assign the following indices: Glucose.fwdarw.1; Fiber.fwdarw.2 2. We (arbitrarily) assign the following indices: Ingredient A.fwdarw.1; Ingredient B.fwdarw.2.

(87) These two indices assignments thus define a.sub.i and a(i|j) as described above 3. We make the following classifications: Ingredient A.fwdarw.non-free sugar, Ingredient B.fwdarw.non-free sugar 4. The vector b, computed according to (1), is thus (rounded to two significant figures):
b=[0.91,0.091] 5. The 2×2 matrix Â, constructed according to (2), is thus (rounded to two significant figures):

(88) A ^ = [ 0.45 1.1 0.045 0.11 ] 6. The augmented matrix augmented matrix (Â|b) is given by

(89) A ^ | b = [ 0.45 1.1 0.045 0.11 | 0.91 0.091 ]

(90) Ranks of Â|b and  are both calculated to be 1.

(91) 7.2 The ingredient “glucose” is added to the ingredient list, and given an index of 3

(92) 8.2 The 2×3 matrix custom character, constructed according to (5), is thus

(93) A ^ = [ 0.45 1.1 4.5 0.045 0.11 0 ]

(94) 9.2 The ranks of custom character|b and custom character are both calculated to be 2.

(95) 10.2 Solution of (6) via the Python library SimPy yields the set of solutions:

(96) [ x 1 - 0.4 x 1 + 0.8 0 ]

(97) 11.2 A plot of (4) evaluated on a grid of the N′ dimensional space, with g.sub.1=0.1, g.sub.2=0.1, g.sub.3=0.001 is plotted in FIG. 2(a), where an r of 0.05 was chosen as the upper bound on the computation of (4). The solution set above was discretized by choosing the x.sub.1 dimension as a free parameter, with granularity g.sub.1 of 0.05, and plotted in FIG. 2(b). Throwing away all gridpoints and solutions which do not fulfil the

(98) .Math. j N x j 1
constraint then yields custom character and {x.sub.u}, which are plotted in FIG. 2(c) (i.e. Plots of custom character and {x.sub.u} after filtering of points plotted in 2(a) and 2(b) that do not fulfil conservation of mass constraints ({x.sub.u} is plotted as bigger)). For clarity, in FIG. 2(d), the boundary of the subset custom character (for a chosen r of 0.05) is shown in the triangular-shaped plot (in blue); the region below the plane is the subset custom character, and the set of solutions to (6) are plotted in black.

(99) 12. 2 As can be seen from drawing 2, {x.sub.u}custom character, therefore yielding (□.sup..Math.custom character{x.sub.u}={ }. Therefore, one can be certain that, given the lab results, less than 5% of the food product's calories are derived from free-sugar. Note that, for cases when plotting is impractical, conditional statements with a suitable programming language can yield (□.sup..Math.custom character{x.sub.u}, thereby automating this part of the calculation as well.

(100) We have thus described a procedure that utilizes analytical nutrient mass measurements and the ingredient list of a food product (found in its nutritional label), in conjunction with publicly available nutrient databases of ingredients, to evaluate free sugar content. This procedure can quantitatively determine, without subjective estimation or reliance on composition percentage information, if either (1) the fraction of calories derived from free sugars in a food product is below a certain threshold, or 2) if such a determination is impossible to make with the available analytical data, or 3) if the ingredient list in the nutritional label is inconsistent with the analytical laboratory data.

(101) The method can use analytical mass measurements of any testable nutrients for the free-sugar evaluation; in particular, non-saccharide analytical data can be used. In fact, given that non free sugar-containing ingredients also contain other testable nutrients in their composition, more analytical information of non-monosaccharide and non-disaccharide nutrients increases the likelihood that outcome (1) described above is achieved, rather than outcome (2). We have also described a method that can leverage mass measurements of non-monosaccharide and non-disaccharide nutrients.

(102) Use of the “fingerprint” helps to ensure that the method produces the same result for two different samples of the same food product if the amounts of sugars relative to other measured nutrients are consistent, even if the absolute masses of different nutrients vary from sample to sample. This helps to ensure that the method is robust against composition percentage changes during manufacturing processes. Moreover, use of the food product's biochemical fingerprint allows the method to be generalized for any mass of food product tested.

(103) Additionally, the procedure is applicable to a food product with any number of ingredients, can use laboratory data with any number of nutrients tested, and can test for adherence to any free-sugar fraction threshold; it is therefore completely generalizable to any amount of data possessed by the user. Additionally, the method can further generalized to evaluate the content of any nutrient, not just saccharide nutrients, relative to some threshold. Furthermore, the method is highly automatable.

(104) No doubt many other effective alternatives will occur to the skilled person. It will be understood that the invention is not limited to the described embodiments and encompasses modifications apparent to those skilled in the art lying within the spirit and scope of the claims appended hereto.