ifct2017 2.0.14 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (111) hide show
  1. package/LICENSE +661 -21
  2. package/README.md +1019 -71
  3. package/abbreviations/index.csv +78 -0
  4. package/abbreviations/index.d.ts +39 -0
  5. package/abbreviations/index.js +103 -0
  6. package/abbreviations/index.txt +12 -0
  7. package/about/build.ts +31 -0
  8. package/about/index.d.ts +47 -0
  9. package/about/index.js +110 -0
  10. package/about/index.txt +174 -0
  11. package/build.ts +115 -0
  12. package/carbohydrates/index.csv +8 -0
  13. package/carbohydrates/index.d.ts +42 -0
  14. package/carbohydrates/index.js +112 -0
  15. package/carbohydrates/index.txt +14 -0
  16. package/codes/index.csv +2904 -0
  17. package/codes/index.d.ts +36 -0
  18. package/codes/index.js +102 -0
  19. package/codes/index.txt +12 -0
  20. package/columndescriptions/build.ts +22 -0
  21. package/columndescriptions/index.csv +215 -0
  22. package/columndescriptions/index.d.ts +44 -0
  23. package/columndescriptions/index.js +119 -0
  24. package/columns/build.ts +23 -0
  25. package/columns/index.csv +215 -0
  26. package/columns/index.d.ts +39 -0
  27. package/columns/index.js +111 -0
  28. package/columns/index.txt +71 -0
  29. package/compositingcentres/index.csv +7 -0
  30. package/compositingcentres/index.d.ts +35 -0
  31. package/compositingcentres/index.js +103 -0
  32. package/compositingcentres/index.txt +13 -0
  33. package/compositions/build.ts +212 -0
  34. package/compositions/index.csv +543 -0
  35. package/compositions/index.d.ts +254 -0
  36. package/compositions/index.js +204 -0
  37. package/compositionstats/build.ts +103 -0
  38. package/compositionstats/index.csv +4 -0
  39. package/compositionstats/index.d.ts +31 -0
  40. package/compositionstats/index.js +97 -0
  41. package/contents/index.csv +21 -0
  42. package/contents/index.d.ts +39 -0
  43. package/contents/index.js +102 -0
  44. package/contents/index.txt +13 -0
  45. package/deno.lock +67 -0
  46. package/descriptions/index.csv +543 -0
  47. package/descriptions/index.d.ts +45 -0
  48. package/descriptions/index.js +124 -0
  49. package/descriptions/index.txt +15 -0
  50. package/energies/index.csv +6 -0
  51. package/energies/index.d.ts +34 -0
  52. package/energies/index.js +101 -0
  53. package/energies/index.txt +13 -0
  54. package/frequencydistribution/index.csv +10 -0
  55. package/frequencydistribution/index.d.ts +36 -0
  56. package/frequencydistribution/index.js +90 -0
  57. package/frequencydistribution/index.txt +14 -0
  58. package/groups/index.csv +21 -0
  59. package/groups/index.d.ts +46 -0
  60. package/groups/index.js +118 -0
  61. package/groups/index.txt +14 -0
  62. package/hierarchy/asset.csv +215 -0
  63. package/hierarchy/asset.txt +70 -0
  64. package/hierarchy/build.ts +73 -0
  65. package/hierarchy/index.csv +215 -0
  66. package/hierarchy/index.d.ts +39 -0
  67. package/hierarchy/index.js +100 -0
  68. package/hierarchy/index.txt +14 -0
  69. package/index.d.ts +24 -28
  70. package/index.js +28 -39
  71. package/index.test.ts +717 -0
  72. package/intakes/build.ts +28 -0
  73. package/intakes/index.csv +42 -0
  74. package/intakes/index.d.ts +66 -0
  75. package/intakes/index.js +113 -0
  76. package/intakes/index.txt +20 -0
  77. package/jonesfactors/index.csv +15 -0
  78. package/jonesfactors/index.d.ts +35 -0
  79. package/jonesfactors/index.js +105 -0
  80. package/jonesfactors/index.txt +12 -0
  81. package/languages/index.csv +22 -0
  82. package/languages/index.d.ts +39 -0
  83. package/languages/index.js +103 -0
  84. package/languages/index.txt +12 -0
  85. package/methods/build.ts +101 -0
  86. package/methods/index.csv +37 -0
  87. package/methods/index.d.ts +39 -0
  88. package/methods/index.js +196 -0
  89. package/methods/index.txt +13 -0
  90. package/package.json +15 -63
  91. package/regions/index.csv +7 -0
  92. package/regions/index.d.ts +36 -0
  93. package/regions/index.js +100 -0
  94. package/regions/index.txt +12 -0
  95. package/representations/build.ts +133 -0
  96. package/representations/index.csv +215 -0
  97. package/representations/index.d.ts +36 -0
  98. package/representations/index.js +91 -0
  99. package/retentionfactors/groups.csv +21 -0
  100. package/retentionfactors/index.csv +215 -0
  101. package/samplingunits/index.csv +36 -0
  102. package/samplingunits/index.d.ts +39 -0
  103. package/samplingunits/index.js +110 -0
  104. package/samplingunits/index.txt +14 -0
  105. package/yieldfactors/index.csv +543 -0
  106. package/yieldfactors/index.d.ts +57 -0
  107. package/yieldfactors/index.js +158 -0
  108. package/yieldfactors/index.txt +294 -0
  109. package/corpus.js +0 -6
  110. package/corpus.min.js +0 -1
  111. package/pictures.d.ts +0 -41
@@ -0,0 +1,118 @@
1
+ // Copyright (C) 2025-26 Subhajit Sahu
2
+ // SPDX-License-Identifier: AGPL-3.0-or-later
3
+ // See LICENSE for full terms
4
+ import * as csv from "@std/csv";
5
+ import lunr from "lunr"; // @deno-types="npm:@types/lunr@2.3.7"
6
+ import { setupTable } from "@nodef/extra-sql";
7
+ //#endregion
8
+ //#region GLOBALS
9
+ let corpus = null;
10
+ let index = null;
11
+ //#endregion
12
+ //#region FUNCTIONS
13
+ /**
14
+ * Load the groups corpus from CSV file.
15
+ * @param file CSV file path
16
+ * @returns groups corpus
17
+ */ async function loadFromCsv(file) {
18
+ const map = new Map();
19
+ const data = await (await fetch(file)).text();
20
+ const records = csv.parse(data, {
21
+ skipFirstRow: true,
22
+ comment: "#"
23
+ });
24
+ for (const r of records){
25
+ const entries = parseInt(r.entries, 10);
26
+ map.set(r.code, {
27
+ code: r.code,
28
+ group: r.group,
29
+ entries,
30
+ tags: r.tags
31
+ });
32
+ }
33
+ return map;
34
+ }
35
+ /**
36
+ * Setup the lunr index for the groups corpus.
37
+ * @returns lunr index
38
+ */ function setupIndex(corpus) {
39
+ return lunr(function() {
40
+ this.ref('code');
41
+ this.field('code');
42
+ this.field('group');
43
+ this.field('tags');
44
+ this.pipeline.remove(lunr.stopWordFilter);
45
+ for (const r of corpus.values())this.add(r);
46
+ });
47
+ }
48
+ /**
49
+ * Load the groups corpus from the file.
50
+ * @returns groups corpus
51
+ */ export async function loadGroups() {
52
+ if (corpus) return corpus;
53
+ corpus = await loadFromCsv(groupsCsv());
54
+ index = setupIndex(corpus);
55
+ return corpus;
56
+ }
57
+ /**
58
+ * Get the path to the groups CSV file.
59
+ * @returns CSV file URL
60
+ */ export function groupsCsv() {
61
+ return import.meta.resolve('./index.csv');
62
+ }
63
+ /**
64
+ * Obtain SQL command to create and populate the groups table.
65
+ * @param tab table name
66
+ * @param opt options for the table
67
+ * @returns CREATE TABLE, INSERT, CREATE VIEW, CREATE INDEX statements
68
+ */ export async function groupsSql(tab = "groups", opt = {}) {
69
+ return setupTable(tab, {
70
+ code: "TEXT",
71
+ group: "TEXT",
72
+ entries: "INT",
73
+ tags: "TEXT"
74
+ }, (await loadGroups()).values(), Object.assign({
75
+ pk: "code",
76
+ index: true,
77
+ tsvector: {
78
+ code: "A",
79
+ group: "B",
80
+ tags: "C"
81
+ }
82
+ }, opt));
83
+ }
84
+ /**
85
+ * Find matching groups of an code/group/tags query.
86
+ * @param txt code/group/tags query
87
+ * @returns matches `[{code, group, entries, tags}]`
88
+ * @example
89
+ * ```javascript
90
+ * ifct2017.groups('cereals');
91
+ * ifct2017.groups('Millet');
92
+ * // → [ { code: 'A',
93
+ * // → group: 'Cereals and Millets',
94
+ * // → entries: 24,
95
+ * // → tags: 'vegetarian eggetarian fishetarian veg' } ]
96
+ *
97
+ * ifct2017.groups('what is vegetable?');
98
+ * ifct2017.groups('vegetable group code?');
99
+ * // → [ { code: 'D',
100
+ * // → group: 'Other Vegetables',
101
+ * // → entries: 78,
102
+ * // → tags: 'vegetarian eggetarian fishetarian veg' },
103
+ * // → { code: 'C',
104
+ * // → group: 'Green Leafy Vegetables',
105
+ * // → entries: 34,
106
+ * // → tags: 'vegetarian eggetarian fishetarian veg' } ]
107
+ * ```
108
+ */ export function groups(txt) {
109
+ if (index == null) return [];
110
+ const a = [];
111
+ txt = txt.replace(/\W/g, ' ');
112
+ const mats = index.search(txt);
113
+ let max = 0;
114
+ for (const mat of mats)max = Math.max(max, Object.keys(mat.matchData.metadata).length);
115
+ for (const mat of mats)if (Object.keys(mat.matchData.metadata).length === max) a.push(corpus?.get(mat.ref) || {});
116
+ return a;
117
+ } //#endregion
118
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImZpbGU6Ly8vaG9tZS9ydW5uZXIvd29yay9pZmN0MjAxNy9pZmN0MjAxNy9ncm91cHMvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChDKSAyMDI1LTI2IFN1Ymhhaml0IFNhaHVcbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBR1BMLTMuMC1vci1sYXRlclxuLy8gU2VlIExJQ0VOU0UgZm9yIGZ1bGwgdGVybXNcbmltcG9ydCAqIGFzIGNzdiAgZnJvbSBcIkBzdGQvY3N2XCI7XG5pbXBvcnQgbHVuciBmcm9tIFwibHVuclwiOyAgLy8gQGRlbm8tdHlwZXM9XCJucG06QHR5cGVzL2x1bnJAMi4zLjdcIlxuaW1wb3J0IHt0eXBlIFJvd0RhdGEsIHR5cGUgU2V0dXBUYWJsZU9wdGlvbnMsIHNldHVwVGFibGV9IGZyb20gXCJAbm9kZWYvZXh0cmEtc3FsXCI7XG5cblxuXG5cbi8vI3JlZ2lvbiBUWVBFU1xuLyoqIENhdGVnb3JpemF0aW9uIG9mIGZvb2QgYnkgaXRzIGNvbW1vbiBuYW1lcy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR3JvdXAge1xuICAvKiogQ29kZS4gKi9cbiAgY29kZTogc3RyaW5nLFxuICAvKiogRm9vZCBncm91cHMuICovXG4gIGdyb3VwOiBzdHJpbmcsXG4gIC8qKiBOby4gb2YgZm9vZCBlbnRyaWVzLiAqL1xuICBlbnRyaWVzOiBudW1iZXIsXG4gIC8qKiBUYWdzLiAqL1xuICB0YWdzOiBzdHJpbmdcbn07XG4vLyNlbmRyZWdpb25cblxuXG5cblxuLy8jcmVnaW9uIEdMT0JBTFNcbmxldCBjb3JwdXM6IE1hcDxzdHJpbmcsIEdyb3VwPiB8IG51bGwgPSBudWxsO1xubGV0IGluZGV4OiBsdW5yLkluZGV4IHwgbnVsbCA9IG51bGw7XG4vLyNlbmRyZWdpb25cblxuXG5cblxuLy8jcmVnaW9uIEZVTkNUSU9OU1xuLyoqXG4gKiBMb2FkIHRoZSBncm91cHMgY29ycHVzIGZyb20gQ1NWIGZpbGUuXG4gKiBAcGFyYW0gZmlsZSBDU1YgZmlsZSBwYXRoXG4gKiBAcmV0dXJucyBncm91cHMgY29ycHVzXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGxvYWRGcm9tQ3N2KGZpbGU6IHN0cmluZykge1xuICBjb25zdCBtYXAgID0gbmV3IE1hcDxzdHJpbmcsIEdyb3VwPigpO1xuICBjb25zdCBkYXRhID0gYXdhaXQgKGF3YWl0IGZldGNoKGZpbGUpKS50ZXh0KCk7XG4gIGNvbnN0IHJlY29yZHMgPSBjc3YucGFyc2UoZGF0YSwge3NraXBGaXJzdFJvdzogdHJ1ZSwgY29tbWVudDogXCIjXCJ9KTtcbiAgZm9yIChjb25zdCByIG9mIHJlY29yZHMpIHtcbiAgICBjb25zdCBlbnRyaWVzID0gcGFyc2VJbnQoci5lbnRyaWVzLCAxMCk7XG4gICAgbWFwLnNldChyLmNvZGUsIHtjb2RlOiByLmNvZGUsIGdyb3VwOiByLmdyb3VwLCBlbnRyaWVzLCB0YWdzOiByLnRhZ3N9KTtcbiAgfVxuICByZXR1cm4gbWFwO1xufVxuXG5cbi8qKlxuICogU2V0dXAgdGhlIGx1bnIgaW5kZXggZm9yIHRoZSBncm91cHMgY29ycHVzLlxuICogQHJldHVybnMgbHVuciBpbmRleFxuICovXG5mdW5jdGlvbiBzZXR1cEluZGV4KGNvcnB1czogTWFwPHN0cmluZywgR3JvdXA+KSB7XG4gIHJldHVybiBsdW5yKGZ1bmN0aW9uKHRoaXM6IGx1bnIuQnVpbGRlcikge1xuICAgIHRoaXMucmVmKCdjb2RlJyk7XG4gICAgdGhpcy5maWVsZCgnY29kZScpO1xuICAgIHRoaXMuZmllbGQoJ2dyb3VwJyk7XG4gICAgdGhpcy5maWVsZCgndGFncycpO1xuICAgIHRoaXMucGlwZWxpbmUucmVtb3ZlKGx1bnIuc3RvcFdvcmRGaWx0ZXIpO1xuICAgIGZvciAoY29uc3QgciBvZiBjb3JwdXMudmFsdWVzKCkpXG4gICAgICB0aGlzLmFkZChyKTtcbiAgfSk7XG59XG5cblxuLyoqXG4gKiBMb2FkIHRoZSBncm91cHMgY29ycHVzIGZyb20gdGhlIGZpbGUuXG4gKiBAcmV0dXJucyBncm91cHMgY29ycHVzXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2FkR3JvdXBzKCk6IFByb21pc2U8TWFwPHN0cmluZywgR3JvdXA+PiB7XG4gIGlmIChjb3JwdXMpIHJldHVybiBjb3JwdXM7XG4gIGNvcnB1cyA9IGF3YWl0IGxvYWRGcm9tQ3N2KGdyb3Vwc0NzdigpKTtcbiAgaW5kZXggID0gc2V0dXBJbmRleChjb3JwdXMpO1xuICByZXR1cm4gY29ycHVzO1xufVxuXG5cbi8qKlxuICogR2V0IHRoZSBwYXRoIHRvIHRoZSBncm91cHMgQ1NWIGZpbGUuXG4gKiBAcmV0dXJucyBDU1YgZmlsZSBVUkxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdyb3Vwc0NzdigpOiBzdHJpbmcge1xuICByZXR1cm4gaW1wb3J0Lm1ldGEucmVzb2x2ZSgnLi9pbmRleC5jc3YnKTtcbn1cblxuXG4vKipcbiAqIE9idGFpbiBTUUwgY29tbWFuZCB0byBjcmVhdGUgYW5kIHBvcHVsYXRlIHRoZSBncm91cHMgdGFibGUuXG4gKiBAcGFyYW0gdGFiIHRhYmxlIG5hbWVcbiAqIEBwYXJhbSBvcHQgb3B0aW9ucyBmb3IgdGhlIHRhYmxlXG4gKiBAcmV0dXJucyBDUkVBVEUgVEFCTEUsIElOU0VSVCwgQ1JFQVRFIFZJRVcsIENSRUFURSBJTkRFWCBzdGF0ZW1lbnRzXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBncm91cHNTcWwodGFiOiBzdHJpbmc9XCJncm91cHNcIiwgb3B0OiBTZXR1cFRhYmxlT3B0aW9ucz17fSk6IFByb21pc2U8c3RyaW5nPiB7XG4gIHJldHVybiBzZXR1cFRhYmxlKHRhYiwge2NvZGU6IFwiVEVYVFwiLCBncm91cDogXCJURVhUXCIsIGVudHJpZXM6IFwiSU5UXCIsIHRhZ3M6IFwiVEVYVFwifSxcbiAgICAoYXdhaXQgbG9hZEdyb3VwcygpKS52YWx1ZXMoKSBhcyBJdGVyYWJsZTxSb3dEYXRhPixcbiAgICBPYmplY3QuYXNzaWduKHtwazogXCJjb2RlXCIsIGluZGV4OiB0cnVlLCB0c3ZlY3Rvcjoge2NvZGU6IFwiQVwiLCBncm91cDogXCJCXCIsIHRhZ3M6IFwiQ1wifX0sIG9wdCkpO1xufVxuXG5cbi8qKlxuICogRmluZCBtYXRjaGluZyBncm91cHMgb2YgYW4gY29kZS9ncm91cC90YWdzIHF1ZXJ5LlxuICogQHBhcmFtIHR4dCBjb2RlL2dyb3VwL3RhZ3MgcXVlcnlcbiAqIEByZXR1cm5zIG1hdGNoZXMgYFt7Y29kZSwgZ3JvdXAsIGVudHJpZXMsIHRhZ3N9XWBcbiAqIEBleGFtcGxlXG4gKiBgYGBqYXZhc2NyaXB0XG4gKiBpZmN0MjAxNy5ncm91cHMoJ2NlcmVhbHMnKTtcbiAqIGlmY3QyMDE3Lmdyb3VwcygnTWlsbGV0Jyk7XG4gKiAvLyDihpIgWyB7IGNvZGU6ICdBJyxcbiAqIC8vIOKGkiAgICAgZ3JvdXA6ICdDZXJlYWxzIGFuZCBNaWxsZXRzJyxcbiAqIC8vIOKGkiAgICAgZW50cmllczogMjQsXG4gKiAvLyDihpIgICAgIHRhZ3M6ICd2ZWdldGFyaWFuIGVnZ2V0YXJpYW4gZmlzaGV0YXJpYW4gdmVnJyB9IF1cbiAqXG4gKiBpZmN0MjAxNy5ncm91cHMoJ3doYXQgaXMgdmVnZXRhYmxlPycpO1xuICogaWZjdDIwMTcuZ3JvdXBzKCd2ZWdldGFibGUgZ3JvdXAgY29kZT8nKTtcbiAqIC8vIOKGkiBbIHsgY29kZTogJ0QnLFxuICogLy8g4oaSICAgICBncm91cDogJ090aGVyIFZlZ2V0YWJsZXMnLFxuICogLy8g4oaSICAgICBlbnRyaWVzOiA3OCxcbiAqIC8vIOKGkiAgICAgdGFnczogJ3ZlZ2V0YXJpYW4gZWdnZXRhcmlhbiBmaXNoZXRhcmlhbiB2ZWcnIH0sXG4gKiAvLyDihpIgICB7IGNvZGU6ICdDJyxcbiAqIC8vIOKGkiAgICAgZ3JvdXA6ICdHcmVlbiBMZWFmeSBWZWdldGFibGVzJyxcbiAqIC8vIOKGkiAgICAgZW50cmllczogMzQsXG4gKiAvLyDihpIgICAgIHRhZ3M6ICd2ZWdldGFyaWFuIGVnZ2V0YXJpYW4gZmlzaGV0YXJpYW4gdmVnJyB9IF1cbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ3JvdXBzKHR4dDogc3RyaW5nKTogR3JvdXBbXSB7XG4gIGlmIChpbmRleCA9PSBudWxsKSByZXR1cm4gW107XG4gIGNvbnN0IGE6IEdyb3VwW10gPSBbXTsgdHh0ID0gdHh0LnJlcGxhY2UoL1xcVy9nLCAnICcpO1xuICBjb25zdCBtYXRzID0gaW5kZXguc2VhcmNoKHR4dCk7IGxldCBtYXggPSAwO1xuICBmb3IgKGNvbnN0IG1hdCBvZiBtYXRzKVxuICAgIG1heCA9IE1hdGgubWF4KG1heCwgT2JqZWN0LmtleXMobWF0Lm1hdGNoRGF0YS5tZXRhZGF0YSkubGVuZ3RoKTtcbiAgZm9yIChjb25zdCBtYXQgb2YgbWF0cylcbiAgICBpZiAoT2JqZWN0LmtleXMobWF0Lm1hdGNoRGF0YS5tZXRhZGF0YSkubGVuZ3RoID09PSBtYXgpIGEucHVzaChjb3JwdXM/LmdldChtYXQucmVmKSB8fCB7fSBhcyBHcm91cCk7XG4gIHJldHVybiBhO1xufVxuLy8jZW5kcmVnaW9uXG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsc0NBQXNDO0FBQ3RDLDZDQUE2QztBQUM3Qyw2QkFBNkI7QUFDN0IsWUFBWSxTQUFVLFdBQVc7QUFDakMsT0FBTyxVQUFVLE9BQU8sQ0FBRSxzQ0FBc0M7QUFDaEUsU0FBOEMsVUFBVSxRQUFPLG1CQUFtQjtBQWlCbEYsWUFBWTtBQUtaLGlCQUFpQjtBQUNqQixJQUFJLFNBQW9DO0FBQ3hDLElBQUksUUFBMkI7QUFDL0IsWUFBWTtBQUtaLG1CQUFtQjtBQUNuQjs7OztDQUlDLEdBQ0QsZUFBZSxZQUFZLElBQVk7RUFDckMsTUFBTSxNQUFPLElBQUk7RUFDakIsTUFBTSxPQUFPLE1BQU0sQ0FBQyxNQUFNLE1BQU0sS0FBSyxFQUFFLElBQUk7RUFDM0MsTUFBTSxVQUFVLElBQUksS0FBSyxDQUFDLE1BQU07SUFBQyxjQUFjO0lBQU0sU0FBUztFQUFHO0VBQ2pFLEtBQUssTUFBTSxLQUFLLFFBQVM7SUFDdkIsTUFBTSxVQUFVLFNBQVMsRUFBRSxPQUFPLEVBQUU7SUFDcEMsSUFBSSxHQUFHLENBQUMsRUFBRSxJQUFJLEVBQUU7TUFBQyxNQUFNLEVBQUUsSUFBSTtNQUFFLE9BQU8sRUFBRSxLQUFLO01BQUU7TUFBUyxNQUFNLEVBQUUsSUFBSTtJQUFBO0VBQ3RFO0VBQ0EsT0FBTztBQUNUO0FBR0E7OztDQUdDLEdBQ0QsU0FBUyxXQUFXLE1BQTBCO0VBQzVDLE9BQU8sS0FBSztJQUNWLElBQUksQ0FBQyxHQUFHLENBQUM7SUFDVCxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ1gsSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNYLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDWCxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLGNBQWM7SUFDeEMsS0FBSyxNQUFNLEtBQUssT0FBTyxNQUFNLEdBQzNCLElBQUksQ0FBQyxHQUFHLENBQUM7RUFDYjtBQUNGO0FBR0E7OztDQUdDLEdBQ0QsT0FBTyxlQUFlO0VBQ3BCLElBQUksUUFBUSxPQUFPO0VBQ25CLFNBQVMsTUFBTSxZQUFZO0VBQzNCLFFBQVMsV0FBVztFQUNwQixPQUFPO0FBQ1Q7QUFHQTs7O0NBR0MsR0FDRCxPQUFPLFNBQVM7RUFDZCxPQUFPLFlBQVksT0FBTyxDQUFDO0FBQzdCO0FBR0E7Ozs7O0NBS0MsR0FDRCxPQUFPLGVBQWUsVUFBVSxNQUFZLFFBQVEsRUFBRSxNQUF1QixDQUFDLENBQUM7RUFDN0UsT0FBTyxXQUFXLEtBQUs7SUFBQyxNQUFNO0lBQVEsT0FBTztJQUFRLFNBQVM7SUFBTyxNQUFNO0VBQU0sR0FDL0UsQ0FBQyxNQUFNLFlBQVksRUFBRSxNQUFNLElBQzNCLE9BQU8sTUFBTSxDQUFDO0lBQUMsSUFBSTtJQUFRLE9BQU87SUFBTSxVQUFVO01BQUMsTUFBTTtNQUFLLE9BQU87TUFBSyxNQUFNO0lBQUc7RUFBQyxHQUFHO0FBQzNGO0FBR0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQXdCQyxHQUNELE9BQU8sU0FBUyxPQUFPLEdBQVc7RUFDaEMsSUFBSSxTQUFTLE1BQU0sT0FBTyxFQUFFO0VBQzVCLE1BQU0sSUFBYSxFQUFFO0VBQUUsTUFBTSxJQUFJLE9BQU8sQ0FBQyxPQUFPO0VBQ2hELE1BQU0sT0FBTyxNQUFNLE1BQU0sQ0FBQztFQUFNLElBQUksTUFBTTtFQUMxQyxLQUFLLE1BQU0sT0FBTyxLQUNoQixNQUFNLEtBQUssR0FBRyxDQUFDLEtBQUssT0FBTyxJQUFJLENBQUMsSUFBSSxTQUFTLENBQUMsUUFBUSxFQUFFLE1BQU07RUFDaEUsS0FBSyxNQUFNLE9BQU8sS0FDaEIsSUFBSSxPQUFPLElBQUksQ0FBQyxJQUFJLFNBQVMsQ0FBQyxRQUFRLEVBQUUsTUFBTSxLQUFLLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksR0FBRyxLQUFLLENBQUM7RUFDMUYsT0FBTztBQUNULEVBQ0EsWUFBWSJ9
@@ -0,0 +1,14 @@
1
+ # Indian Food Composition Tables 2017
2
+ # T. Longvah, R. Ananthan, K. Bhaskarachary and K. Venkaiah
3
+ #
4
+ # Copyright © 2017 by National Institute of Nutrition
5
+ # Indian Council of Medical Research
6
+ # Department of Health Research Ministry of Health and Family Welfare, Government of India
7
+ # Jamai Osmania (PO), Hyderabad – 500 007
8
+ # Telangana, India Phone: +91 40 27197334, Fax: +91 40 27000339, Email: nin@ap.nic.in
9
+ #
10
+ # FOOD DESCRIPTION
11
+ # - Code
12
+ # - Food groups
13
+ # - No. of food entries
14
+ # - Tags
@@ -0,0 +1,215 @@
1
+ code,parents
2
+ code,
3
+ name,
4
+ grup,
5
+ regn,
6
+ tags,
7
+ scie,name
8
+ lang,name
9
+ enerc,
10
+ water,
11
+ ash,
12
+ vit,
13
+ fatce,
14
+ cholc,
15
+ fibtg,
16
+ choavldf,
17
+ protcnt,
18
+ amiac,protcnt
19
+ cartoid,
20
+ polyph,
21
+ phystr,
22
+ tocph,
23
+ toctr,
24
+ orgac,
25
+ phytac,
26
+ sapon,
27
+ mnrleq,ash
28
+ mnrlet,ash
29
+ mnrlpet,ash
30
+ mnrlnet,ash
31
+ mnrltx,ash
32
+ vita,vit
33
+ vitb,vit
34
+ vitc,vit
35
+ vitd,vit
36
+ vite,vit
37
+ vitk,vit
38
+ fasat,fatce
39
+ fauns,fatce
40
+ faess,fatce
41
+ facis,fatce
42
+ fatrn,fatce
43
+ fibins,fibtg
44
+ fibsol,fibtg
45
+ thia,vitb
46
+ ribf,vitb
47
+ nia,vitb
48
+ pantac,vitb
49
+ vitb6c,vitb
50
+ biot,vitb
51
+ folsum,vitb
52
+ retol,vita
53
+ ergcal,vitd
54
+ chocal,vitd
55
+ doh25,vitd
56
+ tocpha,tocph
57
+ tocphb,tocph
58
+ tocphg,tocph
59
+ tocphd,tocph
60
+ toctra,toctr
61
+ toctrb,toctr
62
+ toctrg,toctr
63
+ toctrd,toctr
64
+ vitk1,vitk
65
+ vitk2,vitk
66
+ lutn,xantp
67
+ zea,xantp
68
+ crypxb,xantp
69
+ lycpn,carot
70
+ cartg,carot
71
+ carta,carot
72
+ cartb,carot
73
+ al,mnrlnet
74
+ as,mnrltx
75
+ cd,mnrltx
76
+ ca,mnrleq
77
+ cr,mnrlet
78
+ co,mnrlet
79
+ cu,mnrlet
80
+ fe,mnrlet
81
+ pb,mnrltx
82
+ li,mnrlpet
83
+ mg,mnrleq
84
+ mn,mnrlet
85
+ hg,mnrltx
86
+ mo,mnrlet
87
+ ni,mnrlet
88
+ p,mnrleq
89
+ k,mnrleq
90
+ se,mnrlet
91
+ na,mnrleq
92
+ zn,mnrlet
93
+ cho,choavldf
94
+ starch,cho
95
+ olsac,starch
96
+ frus,fsugar
97
+ glus,fsugar
98
+ sucs,fsugar
99
+ mals,fsugar
100
+ fsugar,cho
101
+ lactose,fsugar
102
+ f4d0,fasat
103
+ f6d0,fasat
104
+ f8d0,fasat
105
+ f10d0,fasat
106
+ f11d0,fasat
107
+ f12d0,fasat
108
+ f14d0,fasat
109
+ f15d0,fasat
110
+ f16d0,fasat
111
+ f18d0,fasat
112
+ f20d0,fasat
113
+ f22d0,fasat
114
+ f24d0,fasat
115
+ f14d1cn5,facn5 fams
116
+ f16d1cn7,facn7 fams
117
+ f18d1cn9,facn9 fams
118
+ f18d1tn9,fatrn fams
119
+ f20d1cn9,facn9 fams
120
+ f22d1cn9,facn9 fams
121
+ f24d1cn9,facn9 fams
122
+ f18d2cn6,facn6 fapu faess
123
+ f20d2n6,facn6 fapu
124
+ f22d2n6,facn6 fapu
125
+ f18d3n3,facn3 fapu faess
126
+ f20d3n6,facn6 fapu
127
+ f20d4n6,facn6 fapu faess
128
+ f20d5n3,facn3 fapu faess
129
+ f22d5n3,facn3 fapu
130
+ f22d6n3,facn3 fapu faess
131
+ fams,fauns
132
+ fapu,fauns
133
+ his,amiace
134
+ ile,amiace
135
+ leu,amiace
136
+ lys,amiace
137
+ met,amiace
138
+ cys,amiacce
139
+ phe,amiace
140
+ thr,amiace
141
+ trp,amiace
142
+ val,amiace
143
+ ala,amiacne
144
+ arg,amiacce
145
+ asp,amiacne
146
+ glu,amiacne
147
+ gly,amiacce
148
+ pro,amiacce
149
+ ser,amiacne
150
+ tyr,amiacce
151
+ oxalt,orgac
152
+ oxals,oxalt
153
+ oxali,oxalt
154
+ caconac,orgac
155
+ citac,orgac
156
+ fumac,orgac
157
+ malac,orgac
158
+ quinac,orgac
159
+ sucac,orgac
160
+ tarac,orgac
161
+ dhbenzac34,polyph
162
+ hbenzal3,polyph
163
+ pcathac,polyph
164
+ vanlac,polyph
165
+ gallac,polyph
166
+ cinmac,polyph
167
+ coumaco,polyph
168
+ coumacp,polyph
169
+ caffac,polyph
170
+ chlrac,polyph
171
+ ferac,polyph
172
+ apigen,polyph
173
+ apigen6cgls,polyph
174
+ apigen7onshps,polyph
175
+ luteol,polyph
176
+ kaemf,polyph
177
+ querce,polyph
178
+ querce3bdgls,polyph
179
+ querce3ortns,polyph
180
+ querce3bgls,polyph
181
+ isormt,polyph
182
+ myrct,polyph
183
+ rsvrtol,polyph
184
+ hespt,polyph
185
+ narng,polyph
186
+ hespd,polyph
187
+ daidzn,polyph
188
+ gnstein,polyph
189
+ epicatec,polyph
190
+ epicategc,polyph
191
+ epicatgc3gal,polyph
192
+ catec,polyph
193
+ galcatecgal,polyph
194
+ galcatec,polyph
195
+ syrgac,polyph
196
+ sinpac,polyph
197
+ ellgac,polyph
198
+ rafs,olsac
199
+ stas,olsac
200
+ vers,olsac
201
+ ajgs,olsac
202
+ camt,phystr
203
+ stgstr,phystr
204
+ stostrb,phystr
205
+ amiace,amiac
206
+ amiacce,amiac
207
+ amiacne,amiac
208
+ facn3,facis
209
+ facn6,facis
210
+ facn9,facis
211
+ facn5,facis
212
+ facn7,facis
213
+ carot,cartoid
214
+ xantp,cartoid
215
+ cartbeq,vita
@@ -0,0 +1,70 @@
1
+ Indian Food Composition Tables 2017
2
+ T. Longvah, R. Ananthan, K. Bhaskarachary and K. Venkaiah
3
+
4
+ Copyright © 2017 by National Institute of Nutrition
5
+ Indian Council of Medical Research
6
+ Department of Health Research Ministry of Health and Family Welfare, Government of India
7
+ Jamai Osmania (PO), Hyderabad – 500 007
8
+ Telangana, India Phone: +91 40 27197334, Fax: +91 40 27000339, Email: nin@ap.nic.in
9
+
10
+ HIERARCHY DETAILS
11
+ - Column Code
12
+ - List of Parent columns
13
+
14
+ TABLE 1
15
+ enerc
16
+
17
+ TABLE 2
18
+ thia
19
+
20
+ TABLE 3
21
+ retol
22
+
23
+ TABLE 4
24
+ lutn
25
+
26
+ TABLE 5-1
27
+ al
28
+
29
+ TABLE 5-2
30
+ mg
31
+
32
+ TABLE 6
33
+ cho
34
+
35
+ TABLE 7-1
36
+ TABLE 7-2
37
+ TABLE 7-3
38
+ TABLE 7-4
39
+ TABLE 7-5
40
+ TABLE 7-6
41
+ TABLE 7-7
42
+ TABLE 7-8
43
+ f4d0
44
+
45
+ TABLE 8-1
46
+ his
47
+
48
+ TABLE 8-2
49
+ ala
50
+
51
+ TABLE 9
52
+ oxalt
53
+
54
+ TABLE 10-1
55
+ dhbenzac34
56
+
57
+ TABLE 10-2
58
+ chlrac
59
+
60
+ TABLE 10-3
61
+ querce3bgls
62
+
63
+ TABLE 10-4
64
+ epicategc
65
+
66
+ TABLE 11
67
+ rafs
68
+
69
+ TABLE ADDED
70
+ amiace
@@ -0,0 +1,73 @@
1
+ // Copyright (C) 2025-26 Subhajit Sahu
2
+ // SPDX-License-Identifier: AGPL-3.0-or-later
3
+ // See LICENSE for full terms
4
+ import * as path from "@std/path";
5
+ import * as csv from "@std/csv";
6
+
7
+
8
+ async function readAsset() {
9
+ const data = await Deno.readTextFile(path.join(import.meta.dirname || "", 'asset.csv'));
10
+ const records = csv.parse(data, {skipFirstRow: true, comment: "#"});
11
+ const asset = new Map<string, Record<string, unknown>>();
12
+ for (const r of records) {
13
+ const {code, parents} = r;
14
+ const parset = parents? new Set<string>(parents.split(' ')) : new Set<string>();
15
+ asset.set(code, {parents: parset});
16
+ }
17
+ return asset;
18
+ }
19
+
20
+
21
+ function getAncestry(asset: Map<string, Record<string, unknown>>, code: string, a=new Set<string>()) {
22
+ const par = asset.get(code)?.parents as Set<string>;
23
+ if (par.size===0) return a;
24
+ for (const p of par)
25
+ getAncestry(asset, p, a.add(p));
26
+ return a;
27
+ }
28
+
29
+ function getChildren(asset: Map<string, Record<string, unknown>>, code: string) {
30
+ const a = new Set<string>();
31
+ for (const [k, v] of asset)
32
+ if ((v.parents as Set<string>).has(code)) a.add(k);
33
+ return a;
34
+ }
35
+
36
+
37
+ function updateAsset(asset: Map<string, Record<string, unknown>>) {
38
+ const a = new Map();
39
+ for (const [code, r] of asset) {
40
+ let {parents} = r;
41
+ parents = Array.from(parents as Set<string>).join(' ');
42
+ const ancestry = Array.from(getAncestry(asset, code)).join(' ');
43
+ const children = Array.from(getChildren(asset, code)).join(' ');
44
+ a.set(code, {parents, ancestry, children});
45
+ }
46
+ return a;
47
+ }
48
+
49
+
50
+ function writeIndex(asset: Map<string, Record<string, unknown>>) {
51
+ let a = `code,parents,ancestry,children\n`;
52
+ for (const [code, r] of asset)
53
+ a += `${code},${r.parents},${r.ancestry},${r.children}\n`;
54
+ Deno.writeTextFileSync(path.join(import.meta.dirname || "", 'index.csv'), a);
55
+ }
56
+
57
+
58
+ function writeCorpus(outfile: string, asset: Map<string, Record<string, unknown>>) {
59
+ let a = `var CORPUS = new Map([\n`;
60
+ for (const [code, r] of asset)
61
+ a += ` ["${code}", ${JSON.stringify(r).replace(/\"(\w+)\":/g, '$1:')}],\n`;
62
+ a += `]);\n`;
63
+ a += `module.exports = CORPUS;\n`;
64
+ Deno.writeTextFileSync(outfile, a);
65
+ }
66
+
67
+
68
+ export async function build(corpus='corpus.js') {
69
+ let asset = await readAsset();
70
+ asset = updateAsset(asset);
71
+ writeIndex(asset);
72
+ if (corpus) writeCorpus(corpus, asset);
73
+ }
@@ -0,0 +1,215 @@
1
+ code,parents,ancestry,children
2
+ code,,,
3
+ name,,,scie lang
4
+ grup,,,
5
+ regn,,,
6
+ tags,,,
7
+ scie,name,name,
8
+ lang,name,name,
9
+ enerc,,,
10
+ water,,,
11
+ ash,,,mnrleq mnrlet mnrlpet mnrlnet mnrltx
12
+ vit,,,vita vitb vitc vitd vite vitk
13
+ fatce,,,fasat fauns faess facis fatrn
14
+ cholc,,,
15
+ fibtg,,,fibins fibsol
16
+ choavldf,,,cho
17
+ protcnt,,,amiac
18
+ amiac,protcnt,protcnt,amiace amiacce amiacne
19
+ cartoid,,,carot xantp
20
+ polyph,,,dhbenzac34 hbenzal3 pcathac vanlac gallac cinmac coumaco coumacp caffac chlrac ferac apigen apigen6cgls apigen7onshps luteol kaemf querce querce3bdgls querce3ortns querce3bgls isormt myrct rsvrtol hespt narng hespd daidzn gnstein epicatec epicategc epicatgc3gal catec galcatecgal galcatec syrgac sinpac ellgac
21
+ phystr,,,camt stgstr stostrb
22
+ tocph,,,tocpha tocphb tocphg tocphd
23
+ toctr,,,toctra toctrb toctrg toctrd
24
+ orgac,,,oxalt caconac citac fumac malac quinac sucac tarac
25
+ phytac,,,
26
+ sapon,,,
27
+ mnrleq,ash,ash,ca mg p k na
28
+ mnrlet,ash,ash,cr co cu fe mn mo ni se zn
29
+ mnrlpet,ash,ash,li
30
+ mnrlnet,ash,ash,al
31
+ mnrltx,ash,ash,as cd pb hg
32
+ vita,vit,vit,retol cartbeq
33
+ vitb,vit,vit,thia ribf nia pantac vitb6c biot folsum
34
+ vitc,vit,vit,
35
+ vitd,vit,vit,ergcal chocal doh25
36
+ vite,vit,vit,
37
+ vitk,vit,vit,vitk1 vitk2
38
+ fasat,fatce,fatce,f4d0 f6d0 f8d0 f10d0 f11d0 f12d0 f14d0 f15d0 f16d0 f18d0 f20d0 f22d0 f24d0
39
+ fauns,fatce,fatce,fams fapu
40
+ faess,fatce,fatce,f18d2cn6 f18d3n3 f20d4n6 f20d5n3 f22d6n3
41
+ facis,fatce,fatce,facn3 facn6 facn9 facn5 facn7
42
+ fatrn,fatce,fatce,f18d1tn9
43
+ fibins,fibtg,fibtg,
44
+ fibsol,fibtg,fibtg,
45
+ thia,vitb,vitb vit,
46
+ ribf,vitb,vitb vit,
47
+ nia,vitb,vitb vit,
48
+ pantac,vitb,vitb vit,
49
+ vitb6c,vitb,vitb vit,
50
+ biot,vitb,vitb vit,
51
+ folsum,vitb,vitb vit,
52
+ retol,vita,vita vit,
53
+ ergcal,vitd,vitd vit,
54
+ chocal,vitd,vitd vit,
55
+ doh25,vitd,vitd vit,
56
+ tocpha,tocph,tocph,
57
+ tocphb,tocph,tocph,
58
+ tocphg,tocph,tocph,
59
+ tocphd,tocph,tocph,
60
+ toctra,toctr,toctr,
61
+ toctrb,toctr,toctr,
62
+ toctrg,toctr,toctr,
63
+ toctrd,toctr,toctr,
64
+ vitk1,vitk,vitk vit,
65
+ vitk2,vitk,vitk vit,
66
+ lutn,xantp,xantp cartoid,
67
+ zea,xantp,xantp cartoid,
68
+ crypxb,xantp,xantp cartoid,
69
+ lycpn,carot,carot cartoid,
70
+ cartg,carot,carot cartoid,
71
+ carta,carot,carot cartoid,
72
+ cartb,carot,carot cartoid,
73
+ al,mnrlnet,mnrlnet ash,
74
+ as,mnrltx,mnrltx ash,
75
+ cd,mnrltx,mnrltx ash,
76
+ ca,mnrleq,mnrleq ash,
77
+ cr,mnrlet,mnrlet ash,
78
+ co,mnrlet,mnrlet ash,
79
+ cu,mnrlet,mnrlet ash,
80
+ fe,mnrlet,mnrlet ash,
81
+ pb,mnrltx,mnrltx ash,
82
+ li,mnrlpet,mnrlpet ash,
83
+ mg,mnrleq,mnrleq ash,
84
+ mn,mnrlet,mnrlet ash,
85
+ hg,mnrltx,mnrltx ash,
86
+ mo,mnrlet,mnrlet ash,
87
+ ni,mnrlet,mnrlet ash,
88
+ p,mnrleq,mnrleq ash,
89
+ k,mnrleq,mnrleq ash,
90
+ se,mnrlet,mnrlet ash,
91
+ na,mnrleq,mnrleq ash,
92
+ zn,mnrlet,mnrlet ash,
93
+ cho,choavldf,choavldf,starch fsugar
94
+ starch,cho,cho choavldf,olsac
95
+ olsac,starch,starch cho choavldf,rafs stas vers ajgs
96
+ frus,fsugar,fsugar cho choavldf,
97
+ glus,fsugar,fsugar cho choavldf,
98
+ sucs,fsugar,fsugar cho choavldf,
99
+ mals,fsugar,fsugar cho choavldf,
100
+ fsugar,cho,cho choavldf,frus glus sucs mals lactose
101
+ lactose,fsugar,fsugar cho choavldf,
102
+ f4d0,fasat,fasat fatce,
103
+ f6d0,fasat,fasat fatce,
104
+ f8d0,fasat,fasat fatce,
105
+ f10d0,fasat,fasat fatce,
106
+ f11d0,fasat,fasat fatce,
107
+ f12d0,fasat,fasat fatce,
108
+ f14d0,fasat,fasat fatce,
109
+ f15d0,fasat,fasat fatce,
110
+ f16d0,fasat,fasat fatce,
111
+ f18d0,fasat,fasat fatce,
112
+ f20d0,fasat,fasat fatce,
113
+ f22d0,fasat,fasat fatce,
114
+ f24d0,fasat,fasat fatce,
115
+ f14d1cn5,facn5 fams,facn5 facis fatce fams fauns,
116
+ f16d1cn7,facn7 fams,facn7 facis fatce fams fauns,
117
+ f18d1cn9,facn9 fams,facn9 facis fatce fams fauns,
118
+ f18d1tn9,fatrn fams,fatrn fatce fams fauns,
119
+ f20d1cn9,facn9 fams,facn9 facis fatce fams fauns,
120
+ f22d1cn9,facn9 fams,facn9 facis fatce fams fauns,
121
+ f24d1cn9,facn9 fams,facn9 facis fatce fams fauns,
122
+ f18d2cn6,facn6 fapu faess,facn6 facis fatce fapu fauns faess,
123
+ f20d2n6,facn6 fapu,facn6 facis fatce fapu fauns,
124
+ f22d2n6,facn6 fapu,facn6 facis fatce fapu fauns,
125
+ f18d3n3,facn3 fapu faess,facn3 facis fatce fapu fauns faess,
126
+ f20d3n6,facn6 fapu,facn6 facis fatce fapu fauns,
127
+ f20d4n6,facn6 fapu faess,facn6 facis fatce fapu fauns faess,
128
+ f20d5n3,facn3 fapu faess,facn3 facis fatce fapu fauns faess,
129
+ f22d5n3,facn3 fapu,facn3 facis fatce fapu fauns,
130
+ f22d6n3,facn3 fapu faess,facn3 facis fatce fapu fauns faess,
131
+ fams,fauns,fauns fatce,f14d1cn5 f16d1cn7 f18d1cn9 f18d1tn9 f20d1cn9 f22d1cn9 f24d1cn9
132
+ fapu,fauns,fauns fatce,f18d2cn6 f20d2n6 f22d2n6 f18d3n3 f20d3n6 f20d4n6 f20d5n3 f22d5n3 f22d6n3
133
+ his,amiace,amiace amiac protcnt,
134
+ ile,amiace,amiace amiac protcnt,
135
+ leu,amiace,amiace amiac protcnt,
136
+ lys,amiace,amiace amiac protcnt,
137
+ met,amiace,amiace amiac protcnt,
138
+ cys,amiacce,amiacce amiac protcnt,
139
+ phe,amiace,amiace amiac protcnt,
140
+ thr,amiace,amiace amiac protcnt,
141
+ trp,amiace,amiace amiac protcnt,
142
+ val,amiace,amiace amiac protcnt,
143
+ ala,amiacne,amiacne amiac protcnt,
144
+ arg,amiacce,amiacce amiac protcnt,
145
+ asp,amiacne,amiacne amiac protcnt,
146
+ glu,amiacne,amiacne amiac protcnt,
147
+ gly,amiacce,amiacce amiac protcnt,
148
+ pro,amiacce,amiacce amiac protcnt,
149
+ ser,amiacne,amiacne amiac protcnt,
150
+ tyr,amiacce,amiacce amiac protcnt,
151
+ oxalt,orgac,orgac,oxals oxali
152
+ oxals,oxalt,oxalt orgac,
153
+ oxali,oxalt,oxalt orgac,
154
+ caconac,orgac,orgac,
155
+ citac,orgac,orgac,
156
+ fumac,orgac,orgac,
157
+ malac,orgac,orgac,
158
+ quinac,orgac,orgac,
159
+ sucac,orgac,orgac,
160
+ tarac,orgac,orgac,
161
+ dhbenzac34,polyph,polyph,
162
+ hbenzal3,polyph,polyph,
163
+ pcathac,polyph,polyph,
164
+ vanlac,polyph,polyph,
165
+ gallac,polyph,polyph,
166
+ cinmac,polyph,polyph,
167
+ coumaco,polyph,polyph,
168
+ coumacp,polyph,polyph,
169
+ caffac,polyph,polyph,
170
+ chlrac,polyph,polyph,
171
+ ferac,polyph,polyph,
172
+ apigen,polyph,polyph,
173
+ apigen6cgls,polyph,polyph,
174
+ apigen7onshps,polyph,polyph,
175
+ luteol,polyph,polyph,
176
+ kaemf,polyph,polyph,
177
+ querce,polyph,polyph,
178
+ querce3bdgls,polyph,polyph,
179
+ querce3ortns,polyph,polyph,
180
+ querce3bgls,polyph,polyph,
181
+ isormt,polyph,polyph,
182
+ myrct,polyph,polyph,
183
+ rsvrtol,polyph,polyph,
184
+ hespt,polyph,polyph,
185
+ narng,polyph,polyph,
186
+ hespd,polyph,polyph,
187
+ daidzn,polyph,polyph,
188
+ gnstein,polyph,polyph,
189
+ epicatec,polyph,polyph,
190
+ epicategc,polyph,polyph,
191
+ epicatgc3gal,polyph,polyph,
192
+ catec,polyph,polyph,
193
+ galcatecgal,polyph,polyph,
194
+ galcatec,polyph,polyph,
195
+ syrgac,polyph,polyph,
196
+ sinpac,polyph,polyph,
197
+ ellgac,polyph,polyph,
198
+ rafs,olsac,olsac starch cho choavldf,
199
+ stas,olsac,olsac starch cho choavldf,
200
+ vers,olsac,olsac starch cho choavldf,
201
+ ajgs,olsac,olsac starch cho choavldf,
202
+ camt,phystr,phystr,
203
+ stgstr,phystr,phystr,
204
+ stostrb,phystr,phystr,
205
+ amiace,amiac,amiac protcnt,his ile leu lys met phe thr trp val
206
+ amiacce,amiac,amiac protcnt,cys arg gly pro tyr
207
+ amiacne,amiac,amiac protcnt,ala asp glu ser
208
+ facn3,facis,facis fatce,f18d3n3 f20d5n3 f22d5n3 f22d6n3
209
+ facn6,facis,facis fatce,f18d2cn6 f20d2n6 f22d2n6 f20d3n6 f20d4n6
210
+ facn9,facis,facis fatce,f18d1cn9 f20d1cn9 f22d1cn9 f24d1cn9
211
+ facn5,facis,facis fatce,f14d1cn5
212
+ facn7,facis,facis fatce,f16d1cn7
213
+ carot,cartoid,cartoid,lycpn cartg carta cartb
214
+ xantp,cartoid,cartoid,lutn zea crypxb
215
+ cartbeq,vita,vita vit,