From 782cc93c35efc04bfe333bbc152cbf28bcb80338 Mon Sep 17 00:00:00 2001 From: Christian Diener Date: Mon, 3 Mar 2025 08:29:40 +0100 Subject: [PATCH 01/82] update db script --- bin/food_mapping.R | 8 +++---- build_kraken.nf | 29 ++++++++++++++++++++--- database.nf | 57 ++++++++++++++++++++++++++++++++++++++++------ 3 files changed, 80 insertions(+), 14 deletions(-) diff --git a/bin/food_mapping.R b/bin/food_mapping.R index 686c09b..d78d16e 100755 --- a/bin/food_mapping.R +++ b/bin/food_mapping.R @@ -59,7 +59,7 @@ energy <- function(ab) { ) } -food <- fread(file.path(args[1], "Food.csv")) +food <- fread(args[3]) content <- fread(file.path(args[1], "Content.csv")) compounds <- fread(file.path(args[1], "Compound.csv")) nutrients <- fread(file.path(args[1], "Nutrient.csv")) @@ -67,9 +67,9 @@ matched <- unique(fread(args[2])[, .(orig_taxid, db, rank, matched_taxid, kingdom, phylum, class, order, family, genus, species)]) -food <- food[!is.na(ncbi_taxonomy_id), +food <- food[!is.na(revised_taxonomy_id), .(food_id = id, wikipedia_id, food_group, food_subgroup, - ncbi_taxonomy_id)] + revised_taxonomy_id)] content <- content[!is.na(standard_content), .( compound_id = source_id, food_id, orig_content, orig_min, orig_max, orig_unit, standard_content, preparation_type, source_type @@ -105,7 +105,7 @@ nutrients <- rbind( ) compounds <- rbind(compounds, nutrients, use.names = TRUE, fill = TRUE) food_matches <- food[ - matched, on = c(ncbi_taxonomy_id = "orig_taxid"), nomatch = 0] + matched, on = c(revised_taxonomy_id = "orig_taxid"), nomatch = 0] fwrite(food_matches, "food_matches.csv") food_matches <- content[food_matches, on = "food_id", nomatch = 0] food_matches <- compounds[ diff --git a/build_kraken.nf b/build_kraken.nf index 8296036..fdfa1cb 100644 --- a/build_kraken.nf +++ b/build_kraken.nf @@ -7,14 +7,29 @@ params.maxDbSize = 500 params.confidence = 0.3 params.threads = 20 params.rebuild = false -params.downloads = "${launchDir}/data" params.out = "${launchDir}/data" params.db = "${params.out}/medi_db" +/* Helper functions */ + +// Helper to calculate the required RAM for the Kraken2 database +def estimate_db_size(hash, extra) { + def db_size = null + + // Calculate db memory requirement + if (params.dbmem) { + db_size = MemoryUnit.of("${params.dbmem} GB") + extra + } else { + db_size = MemoryUnit.of(file(hash).size()) + extra + log.info("Based on the hash size I am reserving ${db_size.toGiga()}GB of memory for Kraken2.") + } + + return db_size +} workflow { if (!params.rebuild) { - Channel.fromPath("${params.downloads}/sequences/*.fna.gz").set{food_sequences} + Channel.fromPath("${params.out}/sequences/*.fna.gz").set{food_sequences} setup_kraken_db() add_existing(setup_kraken_db.out, params.additionalDbs) add_sequences(food_sequences, add_existing.out.last()) @@ -32,6 +47,7 @@ workflow { process setup_kraken_db { cpus 1 memory "8 GB" + time "12 h" output: path("medi_db") @@ -46,6 +62,7 @@ process add_sequences { cpus 5 memory "16 GB" publishDir params.out + time "48 h" input: path(fasta) @@ -65,6 +82,7 @@ process add_sequences { process add_existing { cpus 4 memory "16 GB" + time "48 h" input: path(db) @@ -86,7 +104,9 @@ process add_existing { process build_kraken_db { cpus params.threads - memory "${params.maxDbSize} GB" + memory { estimate_db_size("${params.db}/hash.k2d", 16.GB) } + cpus params.max_threads + time "72 h" input: path(db) @@ -106,6 +126,7 @@ process build_kraken_db { process self_classify { cpus 1 memory "${params.maxDbSize} GB" + time "48 h" input: path(db) @@ -126,6 +147,7 @@ process build_bracken { cpus 20 memory "64 GB" publishDir params.out + time "12 h" input: path(db) @@ -143,6 +165,7 @@ process build_bracken { process library { cpus 1 memory "4 GB" + time "1 h" input: path(db) diff --git a/database.nf b/database.nf index 9b33120..159fc0b 100644 --- a/database.nf +++ b/database.nf @@ -18,14 +18,14 @@ workflow { download_sequences.out.map{it[0]}.flatten().set{seqs} - seqs | sketch ANI(sketch.out.collect()) - food_mappings(match_taxids.out) + food_mappings(download.out, match_taxids.out, curate_taxids.out) } + process download { cpus 1 publishDir "${params.out}/dbs" @@ -39,18 +39,49 @@ process download { script: """ - wget --retry-connrefused --waitretry=1 --read-timeout=20 --timeout=15 -t 4 ${foodb} -O foodb.tgz && \ - wget --retry-connrefused --waitretry=1 --read-timeout=20 --timeout=15 -t 4 ${genbank_summary} -O genbank_summary.tsv && \ + wget --retry-connrefused --waitretry=1 --read-timeout=20 --timeout=15 -t 4 ${params.foodb} -O foodb.tgz && \ + wget --retry-connrefused --waitretry=1 --read-timeout=20 --timeout=15 -t 4 ${params.genbank_summary} -O genbank_summary.tsv && \ tar -xf foodb.tgz && \ mv foodb_*_csv foodb """ } +process curate_taxids { + cpus 1 + memory "4 GB" + time "30 m" + publishDir "${params.data_dir}" + + input: + tuple path(foodb), path(gb_summary) + path(curated) + + output: + path("curated_foods.csv") + + script: + """ + #!/usr/bin/env Rscript + + library(data.table) + + foods <- fread("foodb/Food.csv") + foods[, "revised_taxonomy_id" := ncbi_taxonomy_id] + setkey(foods, id) + curated <- fread("curated") + foods[curated[["id"]], revised_taxonomy_id := curated[["taxid"]]] + fwrite(foods, "curated_foods.csv") + """ +} + process get_taxids { cpus 1 + memory "4 GB" + time "1 h" input: tuple path(foodb), path(gb_summary) + path(curated) output: tuple path("foodb"), path("taxids.tsv"), path("${gb_summary}") @@ -66,15 +97,17 @@ process get_taxids { ] genbank <- dt[!is.na(taxid), .(taxid = as.character(unique(taxid)))] genbank[, "source" := "genbank"] - dt <- fread("${foodb}/Food.csv") + dt <- fread("${curated}") foodb <- dt[!is.na(ncbi_taxonomy_id), .(taxid = ncbi_taxonomy_id)] foodb[, "source" := "foodb"] - fwrite(rbind(genbank, foodb), "taxids.tsv", col.names=F, sep="\t") + fwrite(rbind(genbank, foodb), "taxids.tsv", col.names=F, sep="\\t") """ } process download_taxa_dbs { cpus 1 + memory "500 MB" + time "2 h" input: val(taxdump) @@ -92,6 +125,8 @@ process download_taxa_dbs { process get_lineage { cpus 1 + memory "8 GB" + time "1 h" input: tuple path(foodb), path(taxids), path(gb_summary), path(taxadb) @@ -110,6 +145,8 @@ process get_lineage { process match_taxids { cpus 1 publishDir params.out + memory "8 GB" + time "1 h" input: tuple path(foodb), path(lineage), path(lineage_ids), path(gb_summary) @@ -128,6 +165,7 @@ process download_sequences { memory "64 GB" publishDir params.out + time "48h" input: path(matches) @@ -146,16 +184,19 @@ process food_mappings { cpus 1 memory "64 GB" publishDir "${params.out}/dbs" + time "30 m" input: + tuple path(foodb), path(gb_summary) path(matches) + path(curated) output: tuple path("food_matches.csv"), path("food_contents.csv.gz") script: """ - food_mapping.R ${params.out}/dbs/foodb $matches + food_mapping.R ${foodb} ${matches} ${curated} """ } @@ -163,6 +204,7 @@ process sketch { cpus 2 memory "4 GB" publishDir "${params.out}/sketches" + time "8 h" input: path(seq) @@ -180,6 +222,7 @@ process ANI { cpus params.threads memory "64 GB" publishDir "${params.out}", mode: "copy", overwite: true + time "8 h" input: path(sigs) From 805683a20f8627433388117dd3309e64f8ad70b5 Mon Sep 17 00:00:00 2001 From: Christian Diener Date: Mon, 3 Mar 2025 08:29:59 +0100 Subject: [PATCH 02/82] update db script --- data/missing_foodb_curated.csv | 434 +++++++++++++++++++++++++++++++++ 1 file changed, 434 insertions(+) create mode 100755 data/missing_foodb_curated.csv diff --git a/data/missing_foodb_curated.csv b/data/missing_foodb_curated.csv new file mode 100755 index 0000000..e93ac6e --- /dev/null +++ b/data/missing_foodb_curated.csv @@ -0,0 +1,434 @@ +compound_food,revised_taxonomy_id,id,name,name_scientific,description,itis_id,wikipedia_id,picture_file_name,picture_content_type,picture_file_size,picture_updated_at,legacy_id,food_group,food_subgroup,food_type,created_at,updated_at,creator_id,updater_id,export_to_afcdb,category,ncbi_taxonomy_id,export_to_foodb,public_id +0,64580,3,Silver linden,Tilia argentea,"Tilia tomentosa (Silver Lime in the UK and Silver Linden in the US) is a species of Tilia native to southeastern Europe and southwestern Asia, from Hungary and the Balkans east to western Turkey, occurring at moderate altitudes. It is a deciduous tree growing to 20–35 m tall, with a trunk up to 2 m diameter. The leaves are alternately arranged, rounded to triangular-ovate, 4–13 cm long and broad with a 2.5–4 cm petiole, green and mostly hairless above, densely white tomentose with white hairs below, and with a coarsely toothed margin. The flowers are pale yellow, hermaphrodite, produced in cymes of three to ten in mid to late summer with a pale green subtending leafy bract; they have a strong scent and are pollinated by honeybees. The nectar however contains sugars which cannot be digested by other bees, to whom the tree is somewhat toxic. The fruit is a dry nut-like drupe 8–10 mm long, downy, and slightly ribbed.",845789,Tilia tomentosa,3.jpg,image/jpeg,56367,2012-04-20 09:41:25 UTC,3,Herbs and Spices,Herbs,Type 1,2011-02-09 00:37:15 UTC,2019-05-17 16:19:45 UTC,,,FALSE,specific,,TRUE,FOOD00003 +0,4681,7,Leek,Allium porrum,"The leek is a vegetable that belongs, along with onion and garlic, to the genus Allium, currently placed in family Amaryllidaceae, subfamily Allioideae. Historically many scientific names were used for leeks, which are now treated as cultivars of Allium ampeloprasum. Two related vegetables, elephant garlic and kurrat, are also cultivars of A.  ampeloprasum, although different in their uses as food. The edible part of the leek plant is a bundle of leaf sheaths that is sometimes erroneously called a stem or stalk.",42659,Leek,7.jpg,image/jpeg,4857,2012-04-20 09:33:40 UTC,7,Vegetables,Onion-family vegetables,Type 1,2011-02-09 00:37:15 UTC,2019-05-14 18:04:13 UTC,,,FALSE,specific,,TRUE,FOOD00007 +0,1986359,102,Mexican oregano,Lippia graveolens,"Lippia graveolens, a species of flowering plant in the verbena family, Verbenaceae, is native to the southwestern United States (Texas and southern New Mexico), Mexico, and Central America as far south as Nicaragua. Common names include Mexican oregano, redbrush lippia, orégano Cimmaron, scented lippia, and scented matgrass. +The essential oil of Lippia graveolens contains 0-81% thymol, 0-48% carvacrol, 3-30% para-cymene, and 0-15% eucalyptol. The first two components give the plant a flavor similar to oregano, and the leaves are widely used as an herb in Mexico and Central America.",32068,Mexican_oregano,102.jpg,image/jpeg,88360,2012-04-20 09:38:17 UTC,109,Herbs and Spices,Herbs,Type 1,2011-02-09 00:37:20 UTC,2019-05-14 18:04:16 UTC,,,FALSE,specific,,TRUE,FOOD00102 +0,49317,246,Triticale,X Triticosecale rimpaui,"Triticale (× Triticosecale), is a hybrid of wheat (Triticum) and rye (Secale) first bred in laboratories during the late 19th century. The grain was originally bred in Scotland and Sweden. Commercially available triticale is almost always a second generation hybrid, i.e. , a cross between two kinds of primary (first cross) triticales. As a rule, triticale combines the yield potential and grain quality of wheat with the disease and environmental tolerance (including soil conditions) of rye. Only recently has it been developed into a commercially viable crop. Depending on the cultivar, triticale can more or less resemble either of its parents. It is grown mostly for forage or fodder, although some triticale-based foods can be purchased at health food stores or are to be found in some breakfast cereals. When crossing wheat and rye, wheat is used as the female parent and rye as the male parent (pollen donor). The resulting hybrid is sterile, and must be treated with colchicine to induce polyploidy and thus the ability to reproduce itself. The primary producers of triticale are Poland, Germany, France, Belarus and Australia. In 2009, according to the Food and Agriculture Organization (FAO), 15.0 million tons were harvested in 29 countries across the world. The triticale hybrids are all amphidiploid, which means the plant is diploid for two genomes derived from different species. In other words, triticale is an allotetraploid. In earlier years, most work was done on octoploid triticale. Different ploidy levels have been created and evaluated over time. The tetraploids showed little promise, but hexaploid triticale was successful enough to find commercial application. The CIMMYT triticale improvement program wanted to improve food production and nutrition in developing countries. Triticale has potential in the production of bread and other food products, such as cookies, pasta, pizza dough and breakfast cereals. The protein content is higher than that of wheat, although the glutenin fraction is less. The grain has also been stated to have higher levels of lysine than wheat. Assuming increased acceptance, the milling industry will have to adapt to triticale, as the milling techniques employed for wheat are unsuited to triticale. Sell et al. found triticale could be used as a feed grain, and later research found its starch was particularly readily digested. As a feed grain, triticale is already well established and of high economic importance. It has received attention as a potential energy crop, and research is currently being conducted on the use of the crop's biomass in bioethanol production.",506625,Triticale,246.jpg,image/jpeg,153276,2012-04-20 09:43:10 UTC,261,Cereals and cereal products,Cereals,Type 1,2011-02-09 00:37:28 UTC,2019-05-14 18:04:20 UTC,,,FALSE,specific,,TRUE,FOOD00246 +0,3801,257,Jostaberry,Ribes × nidigrolaria,"The jostaberry is a complex-cross fruit bush in the Ribes genus, involving three original species, the black currant R. nigrum, the North American coastal black gooseberry R. divaricatum, and the European gooseberry R. uva-crispa. It is similar to Ribes × culverwellii, the Jochelbeere, which is descended from just two of these species, R. nigrum and R. uva-crispa. +The nearly black berry, which is smaller than a gooseberry and a bit larger than a blackcurrant, is edible both raw and cooked. It is described as having a taste intermediate between a gooseberry and a blackcurrant, with the gooseberry flavor more dominant in the unripe fruit, and the blackcurrant notes developing as the fruit ripens. The ripe fruit will hang on the bush in good condition through late summer, but is very popular with birds. The somewhat unripe fruit can be used in cooking recipes as a gooseberry. Like blackcurrants the fruit freezes well, and like many other members of the Ribes genus it is rich in Vitamin C.",,Jostaberry,257.jpg,image/jpeg,71257,2012-04-20 09:42:31 UTC,275,Fruits,Berries,Type 1,2011-02-09 00:37:29 UTC,2019-05-14 18:04:21 UTC,,,FALSE,specific,,TRUE,FOOD00257 +0,3712,260,Oxheart cabbage,Brassica oleracea var. conica,,,,260.jpg,image/jpeg,12924,2012-04-20 09:37:12 UTC,280,Vegetables,Cabbages,Type 1,2011-02-09 00:37:29 UTC,2019-05-14 18:04:21 UTC,,,FALSE,specific,,TRUE,FOOD00260 +0,161934,264,Red beetroot,Beta vulgaris var. rubra,"The beetroot is the taproot portion of the beet plant, also known in North America as the table beet, garden beet, red or golden beet, or informally simply as the beet. It is several of the cultivated varieties of beet (Beta vulgaris) grown for their edible taproots and their greens. These varieties have been classified as B. vulgaris subsp. vulgaris Conditiva Group. Other than as a food, its uses include food coloring and as a medicinal plant. Many beet products are made from other Beta vulgaris varieties, particularly sugar beet. (Wikipedia)",,Beetroot,264.jpg,image/jpeg,39556,2012-04-20 09:30:15 UTC,284,Vegetables,Root vegetables,Type 1,2011-02-09 00:37:29 UTC,2019-05-14 18:04:21 UTC,,,TRUE,specific,,TRUE,FOOD00264 +0,1891594,265,Sweet rowanberry,Grataegosorbus mitschurinii,,,,265.jpg,image/jpeg,247840,2012-04-20 09:41:46 UTC,285,Fruits,Berries,Type 1,2011-02-09 00:37:29 UTC,2019-05-14 18:04:21 UTC,,,FALSE,specific,,TRUE,FOOD00265 +1,,268,Beer,,"Beer is an alcoholic beverage produced by the saccharification of starch and fermentation of the resulting sugar. The starch and saccharification enzymes are often derived from malted cereal grains, most commonly malted barley and malted wheat. Most beer is also flavoured with hops, which add bitterness and act as a natural preservative, though other flavourings such as herbs or fruit may occasionally be included. The preparation of beer is called brewing.",,Beer,268.jpg,image/jpeg,2746,2012-04-20 09:44:23 UTC,289,Beverages,Fermented beverages,Type 2,2011-02-09 00:37:29 UTC,2019-05-14 18:04:21 UTC,,2,FALSE,specific,,TRUE,FOOD00268 +1,,269,Other bread,,"Bread is the staple food in Europe, European-derived cultures such as the Americas, and the Middle East and North Africa, as opposed to East Asia whose staple is rice. Bread is usually made from a wheat-flour dough that is cultured with yeast, allowed to rise, and finally baked in an oven. Owing to its high levels of gluten (which give the dough sponginess and elasticity), common wheat (also known as bread wheat) is the most common grain used for the preparation of bread, but bread is also made from the flour of other wheat species (including durum, spelt and emmer), rye, barley, maize (corn), and oats, usually, but not always, in combination with wheat flour. [Wikipedia]",,Bread,269.jpg,image/jpeg,154670,2012-04-20 09:39:34 UTC,290,Cereals and cereal products,Other breads,Type 2,2011-02-09 00:37:29 UTC,2019-05-14 18:04:21 UTC,,2,FALSE,specific,,FALSE,FOOD00269 +1,,270,Breakfast cereal,,"A breakfast cereal (or just cereal) is a food made from processed grains that is often eaten with the first meal of the day. It is often eaten cold, usually mixed with milk, juice, water, or yogurt, and sometimes fruit, but may be eaten dry. Some companies promote their products for the health benefits from eating oat-based and high-fiber cereals. Cereals may be fortified with vitamins. Some cereals are made with high sugar content. Many breakfast cereals are produced via extrusion. The breakfast cereal industry has gross profit margins of 40-45%, 90% penetration in some markets, and steady and continued growth throughout its history.",,Breakfast cereal,270.jpg,image/jpeg,198626,2012-04-20 09:37:35 UTC,291,Cereals and cereal products,Cereal products,Type 2,2011-02-09 00:37:29 UTC,2020-03-12 20:56:30 UTC,,2,FALSE,specific,,TRUE,FOOD00270 +1,,272,Other soy product,,,,,272.jpg,image/jpeg,41524,2012-04-20 09:30:20 UTC,293,Soy,Soy products,Type 2,2011-02-09 00:37:29 UTC,2019-05-14 18:04:21 UTC,,2,FALSE,specific,,FALSE,FOOD00271 +1,,273,Other cereal product,,,,,273.jpg,image/jpeg,107737,2012-04-20 09:37:05 UTC,294,Cereals and cereal products,Cereal products,Type 2,2011-02-09 00:37:29 UTC,2019-05-14 18:04:21 UTC,,2,FALSE,specific,,FALSE,FOOD00272 +1,,274,Pasta,,"Pasta is a type of noodle and is a staple food of traditional Italian cuisine, with the first reference dating to 1154 in Sicily. It is also commonly used to refer to the variety of pasta dishes. Typically pasta is made from an unleavened dough of a durum wheat flour mixed with water and formed into sheets or various shapes, then cooked and served in any number of dishes. It can be made with flour from other cereals or grains, and eggs may be used instead of water. Pastas may be divided into two broad categories, dried (pasta secca) and fresh (pasta fresca). Chicken eggs frequently dominate as the source of the liquid component in fresh pasta. Most dried pasta is commercially produced via an extrusion process. Fresh pasta was traditionally produced by hand, sometimes with the aid of simple machines, but today many varieties of fresh pasta are also commercially produced by large scale machines, and the products are broadly available in supermarkets. Both dried and fresh pasta come in a number of shapes and varieties, with 310 specific forms known variably by over 1300 names having been recently documented. In Italy the names of specific pasta shapes or types often vary with locale. For example the form cavatelli is known by 28 different names depending on region and town. Common forms of pasta include long shapes, short shapes, tubes, flat shapes and sheets, miniature soup shapes, filled or stuffed, and specialty or decorative shapes. As a category in Italian cuisine, both dried and fresh pastas are classically used in one of three kinds of prepared dishes. As pasta asciutta (or pastasciutta) cooked pasta is plated and served with a complementary sauce or condiment. A second classification of pasta dishes is pasta in brodo in which the pasta is part of a soup-type dish. A third category is pasta al forno in which the pasta incorporated into a dish that is subsequently baked. Pasta is generally a simple dish, but comes in large varieties because it is a versatile food item. Some pasta dishes are served as a first course in Italy because the portion sizes are small and simple. The servings are usually accompanied by a side of meat. Pasta is also prepared in light lunches, such as salads or large portion sizes for dinner. It can be prepared by hand or food processor and served hot or cold. Pasta sauces vary in taste, color and texture. When choosing which type of pasta and sauce to serve together, there is a general rule that must be observed. Simple sauces like pesto are ideal for long and thin strands of pasta while tomato sauce combines well with thicker pastas. Thicker and chunkier sauces have the better ability to cling onto the holes and cuts of short, tubular, twisted pastas. Sauce should be served equally with its pasta. It is important that the sauce does not overflow the pasta. The extra sauce is left on the plate after all of the pasta is eaten.",,Pasta,274.jpg,image/jpeg,2205799,2012-04-20 09:34:38 UTC,297,Cereals and cereal products,Cereal products,Type 2,2011-02-09 00:37:29 UTC,2020-03-12 20:57:16 UTC,,2,FALSE,specific,,TRUE,FOOD00273 +1,,275,Biscuit,,"A biscuit is a baked, commonly flour-based food product. The term is applied to two distinct products in North America and the Commonwealth of Nations and Europe. For a list of varieties, see the list of biscuits and cookies.",,Biscuit,275.jpg,image/jpeg,8965,2012-04-20 09:37:00 UTC,298,Cereals and cereal products,Cereal products,Type 2,2011-02-09 00:37:30 UTC,2019-05-14 18:04:21 UTC,,2,FALSE,specific,,FALSE,FOOD00274 +1,,276,Sourdough,,"Sourdough is a dough containing a Lactobacillus culture, usually in symbiotic combination with yeasts. It is one of two principal means of biological leavening in bread baking, along with the use of cultivated forms of yeast (Saccharomyces). It is of particular importance in baking rye-based breads, where yeast does not produce comparable results. In comparison with yeast-based breads, it produces a distinctively tangy or sour taste, mainly because of the lactic acid produced by the lactobacilli; the actual medium, known as """"starter"""" or levain, is essentially an ancestral form of pre-ferment. In English-speaking countries, where wheat-based breads predominate, sourdough is no longer the standard method for bread leavening. It was gradually replaced, first by the use of barm from beermaking, then, after the confirmation of germ theory by Louis Pasteur, by cultured yeasts. However, some form of natural leaven is still used by many specialty bakeries. [Wikipedia]",,Sourdough,276.jpg,image/jpeg,16948,2012-04-20 09:42:26 UTC,299,Cereals and cereal products,Doughs,Type 2,2011-02-09 00:37:30 UTC,2020-03-12 20:57:27 UTC,,2,FALSE,specific,,TRUE,FOOD00275 +1,,277,Spirit,,,,Spirit,277.jpg,image/jpeg,194630,2012-04-20 09:36:55 UTC,300,Beverages,Distilled beverages,Type 2,2011-02-09 00:37:30 UTC,2019-05-14 18:04:21 UTC,,2,FALSE,specific,,TRUE,FOOD00276 +1,,278,Fortified wine,,"Fortified wine is wine with an added distilled beverage. Fortified wine is distinguished from spirits made from wine in that spirits are produced by means of distillation, while fortified wine is simply wine that has had a spirit added to it. Many different styles of fortified wine have been developed, including Port, Sherry, Madeira, Marsala, Commandaria wine and the aromatized wine Vermouth.",,Fortified wine,278.jpg,image/jpeg,40686,2012-04-20 09:33:36 UTC,301,Beverages,Fortified wines,Type 2,2011-02-09 00:37:30 UTC,2019-12-11 19:32:37 UTC,,2,FALSE,specific,,FALSE,FOOD00277 +1,,279,Other alcoholic beverage,,,,Alcoholic_beverage,279.jpg,image/jpeg,73939,2012-04-20 09:43:36 UTC,305,Beverages,Alcoholic beverages,Type 2,2011-02-09 00:37:30 UTC,2019-05-14 18:04:21 UTC,,2,FALSE,specific,,FALSE,FOOD00278 +0,2070381,395,Kale,Brassica napus var. pabularia,"Kale or borecole is a form of cabbage, with green or purple leaves, in which the central leaves do not form a head. It is considered to be closer to wild cabbage than most domesticated forms. The species Brassica oleracea contains a wide array of vegetables, including broccoli, cauliflower, collard greens, and brussels sprouts. The cultivar group Acephala also includes spring greens and collard greens, which are extremely similar genetically.",530956,Kale,395.jpg,image/jpeg,82699,2012-04-20 09:43:22 UTC,422,Vegetables,Cabbages,Type 1,2011-02-09 00:37:39 UTC,2019-05-14 18:05:24 UTC,,,FALSE,specific,,TRUE,FOOD00390 +0,483748,405,Loganberry,Rubus loganobaccus,"The loganberry (Rubus × loganobaccus) is an hexaploid hybrid produced from pollination of a plant of the octaploid blackberry 'Aughinbaugh' by a diploid red raspberry (Rubus idaeus). The plant and the fruit resemble the blackberry more than the raspberry, but the fruit color is a dark red, rather than black as in blackberries. Loganberries are cultivated commercially and by gardeners.",506229,Loganberry,405.jpg,image/jpeg,149141,2012-04-20 09:31:08 UTC,432,Fruits,Berries,Type 1,2011-02-09 00:37:39 UTC,2019-05-14 18:05:24 UTC,,,FALSE,specific,,TRUE,FOOD00400 +0,344680,421,Mustard spinach,Brassica perviridis,"Komatsuna or Japanese mustard spinach (Brassica rapa var. perviridis) is a leaf vegetable. It is a variety of Brassica rapa, the plant species that yields the turnip, mizuna, napa cabbage, and rapini. It is grown commercially in Japan and Taiwan. The name komatsuna is from the Japanese komatsuna, """"small pine tree greens"""". It is stir-fried, pickled, boiled, and added to soups or used fresh in salads. It is an excellent source of calcium. +The leaves of komatsuna may be eaten at any stage of their growth. In a mature plant they are dark green with slender light green stalks, around 30 centimeters (12"""") long and 18 cm (7"""") wide. It is most often grown in the spring and autumn, as it cannot endure extreme heat or cold for more than a short time. +The plant is also used for fodder in some Asian countries.",506223,Brassica_perviridis,421.jpg,image/jpeg,53375,2012-04-20 09:29:19 UTC,448,Vegetables,Cabbages,Type 1,2011-02-09 00:37:40 UTC,2019-05-14 18:05:24 UTC,,,FALSE,specific,,TRUE,FOOD00414 +0,483748,556,Boysenberry,Rubus ursinus X idaeus,"A boysenberry is a cross between a European Raspberry, a Common Blackberry, and a Loganberry. It is a large aggregate fruit, with large seeds and a deep maroon color, which changes to the typical boysenberry color when the fruit is cooked and made into jam and pies.",,Boysenberry,556.jpg,image/jpeg,522628,2012-04-20 09:42:41 UTC,583,Fruits,Berries,Type 1,2011-02-09 00:37:48 UTC,2019-05-14 18:05:27 UTC,,,FALSE,specific,,TRUE,FOOD00542 +0,2784,563,Purple laver,Porphyra laciniata,"Porphyra is a cold water seaweed that grows in cold shallow sea water. More specifically, it is a foliose red algal genus of laver, comprising approximately 70 species. It grows in the intertidal zone, typically between the upper intertidal zone and the splash zone in cold waters of temperate oceans. In East Asia, it is used to produce the sea vegetable products nori (in Japan) and gim (in Korea). There are considered to be 60 to 70 species of Porphyra worldwide and seven in the British Isles.",,Porphyra,563.jpg,image/jpeg,5291,2012-04-20 09:44:05 UTC,590,Aquatic foods,Seaweed,Type 1,2011-02-09 00:37:48 UTC,2019-05-14 18:05:27 UTC,,,FALSE,specific,,TRUE,FOOD00549 +0,3654,573,Tinda,Citrullus lanatus var. fistulosus,"The tinda and plural called tinday, also called Indian round gourd or apple gourd or Indian Baby Pumpkin, is a squash-like cucurbit grown for its immature fruit, a vegetable especially popular in South Asia. It is the only member of the genus Praecitrullus. """"tinda"""" is also called """"tindsi"""" in rajasthan. In Marathi, it is called Dhemase. In Sindhi language, it is called Meha. +The plant is, as with all cucurbits, a prolific vine, and is grown as an annual. The fruit is approximately spherical, and 5?8 cm in diameter. The seeds may also be roasted and eaten. Tinda is a famous nickname among Punjabi families in India. This unique squash-like gourd is native to India, very popular in Indian and Pakistani cooking with curry and many gourmet dishes. Green colored, apple sized fruits are flattish round in shape and 50-60 grams in weight. Plants are vigorous, productive and begin to bear fruits in 70 days after planting. +Can be confused with Tendli or Kundru due to similar sounding name from different languages and regions. Tinda in Punjabi or most North Indian Languages is """"Indian Baby Pumpkin"""".",,Tinda,573.jpg,image/jpeg,34713,2012-04-20 09:30:05 UTC,600,Gourds,Gourds,Type 1,2011-02-09 00:37:49 UTC,2019-05-14 18:05:27 UTC,,,FALSE,specific,,TRUE,FOOD00559 +0,29760,626,Grape wine,,"Wine is an alcoholic beverage made from fermented grapes or other fruits. The natural chemical balance of grapes lets them ferment without the addition of sugars, acids, enzymes, water, or other nutrients. Yeast consumes the sugars in the grapes and converts them into alcohol and carbon dioxide. Different varieties of grapes and strains of yeasts produce different styles of wine. The well-known variations result from the very complex interactions between the biochemical development of the fruit, reactions involved in fermentation, terroir and subsequent appellation, along with human intervention in the overall process.",,Grape_wine,626.jpg,image/jpeg,24988,2012-04-20 09:29:56 UTC,654,Beverages,Fermented beverages,Type 2,2011-02-09 00:37:52 UTC,2019-05-14 18:05:28 UTC,,2,FALSE,specific,,TRUE,FOOD00612 +1,,627,Berry wine,,,,,627.jpg,image/jpeg,16358,2012-04-20 09:34:03 UTC,655,Beverages,Fermented beverages,Type 2,2011-02-09 00:37:52 UTC,2019-05-14 18:05:28 UTC,,2,FALSE,specific,,TRUE,FOOD00613 +1,,628,Other wine,,,,,628.jpg,image/jpeg,55077,2012-04-20 09:37:43 UTC,656,Beverages,Fermented beverages,Type 2,2011-02-09 00:37:52 UTC,2019-12-11 19:37:56 UTC,,2,FALSE,specific,,FALSE,FOOD00614 +1,,629,Apple cider,,"Apple cider (also called sweet cider or soft cider) is the name used in the United States and parts of Canada for an unfiltered, unsweetened, non-alcoholic beverage made from apples. Apple cider is easy and inexpensive to produce. It may be opaque due to fine apple particles in suspension and may be tangier than conventional filtered apple juice, depending on the apples used.",,Apple_cider,629.jpg,image/jpeg,60775,2012-04-20 09:30:39 UTC,657,Beverages,Fermented beverages,Type 2,2011-02-09 00:37:52 UTC,2019-05-14 18:05:28 UTC,,2,FALSE,specific,,TRUE,FOOD00615 +1,,630,Liquor,,"A distilled beverage, spirit, liquor, or hard liquor is an alcoholic beverage produced by distillation of a mixture produced from alcoholic fermentation, such as wine. This process purifies it and removes diluting components like water, for the purpose of increasing its proportion of alcohol content (commonly known as alcohol by volume, ABV). As distilled beverages contain more alcohol they are considered """"harder"""" - in North America, the term hard liquor is used to distinguish distilled beverages from undistilled ones, which are implicitly weaker. +As examples, this does not include beverages such as beer, wine, and cider, as they are fermented but not distilled. These all have relatively low alcohol content, typically less than 10%. However, brandy is a spirit, is distinct as a drink from wine (due to distillation), and has an ABV over 35%. Other examples of common distilled beverages include vodka, gin, tequila, rum, whisky, as well as eau de vie (Fruit Brandy or Schnapps), baijiu, soju, aguardiente, pálinka, fernet, and slivovitz.",,Liquor,630.jpg,image/jpeg,175237,2012-04-20 09:31:58 UTC,658,Beverages,Distilled beverages,Type 2,2011-02-09 00:37:52 UTC,2019-05-14 18:05:28 UTC,,2,FALSE,specific,,TRUE,FOOD00616 +1,,631,Cheese,,"Cheese is a food derived from milk that is produced in a wide range of flavors, textures, and forms by coagulation of the milk protein casein. It comprises proteins and fat from milk, usually the milk of cows, buffalo, goats, or sheep. During production, the milk is usually acidified, and adding the enzyme rennet causes coagulation. The solids are separated and pressed into final form. Some cheeses have molds on the rind or throughout. Most cheeses melt at cooking temperature.",,Cheese,631.jpg,image/jpeg,32345,2012-04-20 09:41:39 UTC,659,Milk and milk products,Fermented milk products,Type 2,2011-02-09 00:37:52 UTC,2019-05-14 18:05:28 UTC,,2,FALSE,specific,,TRUE,FOOD00617 +0,9913,632,Milk (Cow),,"As an agricultural product, milk is extracted from mammals during or soon after pregnancy and used as food for humans. Worldwide, dairy farms produced about 730 million tonnes of milk in 2011, from 260 million dairy cows. India is the world's largest producer and consumer of milk, yet neither exports nor imports milk. New Zealand, the European Union's 28 member states, Australia, and the United States are the world's largest exporters of milk and milk products. China and Russia are the world's largest importers of milk and milk products. +Throughout the world, there are more than 6 billion consumers of milk and milk products. Over 750 million people live within dairy farming households. Milk is a key contributor to improving nutrition and food security particularly in developing countries. Improvements in livestock and dairy technology offer significant promise in reducing poverty and malnutrition in the world.",,Milk,632.jpg,image/jpeg,68993,2015-03-10 23:11:22 UTC,660,Milk and milk products,Unfermented milks,Type 2,2011-02-09 00:37:52 UTC,2019-05-14 18:05:28 UTC,,2,FALSE,specific,,TRUE,FOOD00618 +0,9031,633,Eggs,,"An egg is the organic vessel containing the zygote, resulting from fertilization of the ovum, in which an animal embryo develops until it can survive on its own, at which point the animal hatches. Most arthropods, vertebrates, and mollusks lay eggs, although some do not, e.g. scorpions and most mammals. +Oviparous animals are those that lay eggs, with little or no other development within the mother. The study or collecting of eggs, particularly bird eggs, is called oology. +The term """"egg"""" is used differently outside the animal kingdom. Reproductive structures similar to the egg in other kingdoms are termed """"spores,"""" or in spermatophytes """"seeds,"""" or in gametophytes """"egg cells"""".",,Eggs,633.jpg,image/jpeg,27685,2012-04-20 09:30:18 UTC,661,Eggs,Eggs,Unknown,2011-02-09 00:37:52 UTC,2019-05-14 18:05:28 UTC,,2,FALSE,generic,,TRUE,FOOD00619 +1,,634,Yogurt,,"Yogurt, yoghurt, or yoghourt is a fermented milk product produced by bacterial fermentation of milk. The bacteria used to make yogurt are known as """"yogurt cultures"""". Fermentation of lactose by these bacteria produces lactic acid, which acts on milk protein to give yogurt its texture and its characteristic tang. +Worldwide, cow's milk, the protein of which is mainly casein, is most commonly used to make yogurt. Milk from water buffalo, goats, ewes, mares, camels, and yaks however, is also used to produce yogurt in various parts of the world.",,,634.jpg,image/jpeg,79588,2012-04-20 09:30:23 UTC,662,Milk and milk products,Fermented milk products,Type 2,2011-02-09 00:37:52 UTC,2019-05-14 18:05:28 UTC,,2,FALSE,specific,,TRUE,FOOD00620 +1,,638,Bean,,Bean is a common name for large plant seeds used for human food or animal feed of several genera of the family Fabaceae.,,Bean,638.jpg,image/jpeg,18138,2012-04-20 09:43:20 UTC,,Pulses,Beans,Type 1,2011-12-02 17:11:53 UTC,2019-05-14 18:05:28 UTC,2,2,FALSE,specific,,TRUE,FOOD00621 +1,,639,Vodka,,"Vodka is a distilled beverage composed primarily of water and ethanol, sometimes with traces of impurities and flavorings. Traditionally, vodka is made by the distillation of fermented grains or potatoes, though some modern brands use other substances, such as fruits or sugar.",,Vodka,639.jpg,image/jpeg,85287,2012-04-20 09:29:26 UTC,,Beverages,Distilled beverages,Type 2,2011-12-02 17:29:03 UTC,2019-05-14 18:05:28 UTC,2,2,FALSE,specific,,TRUE,FOOD00622 +1,,640,Whisky,,"Whisky or whiskey is a type of distilled alcoholic beverage made from fermented grain mash. Different grains are used for different varieties, including barley, malted barley, rye, malted rye, wheat, and corn. Whisky is typically aged in wooden casks, made generally of charred white oak. Whisky is a strictly regulated spirit worldwide with many classes and types. The typical unifying characteristics of the different classes and types are the fermentation of grains, distillation, and aging in wooden barrels.",,Whisky,640.jpg,image/jpeg,136846,2012-04-20 09:35:43 UTC,,Beverages,Distilled beverages,Type 2,2011-12-02 17:29:41 UTC,2019-05-14 18:05:28 UTC,2,2,FALSE,specific,,TRUE,FOOD00623 +1,,641,Ice cream,,"Ice cream (derived from earlier iced cream or cream ice) is a frozen dessert usually made from dairy products, such as milk and cream and often combined with fruits or other ingredients and flavours. Most varieties contain sugar, although some are made with other sweeteners. In some cases, artificial flavourings and colourings are used in addition to, or instead of, the natural ingredients. The mixture of chosen ingredients is stirred slowly while cooling, in order to incorporate air and to prevent large ice crystals from forming. The result is a smoothly textured semi-solid foam that is malleable and can be scooped.",,Ice_cream,641.jpg,image/jpeg,70607,2012-04-20 09:44:30 UTC,,Confectioneries,Frozen desserts,Type 2,2011-12-02 17:36:03 UTC,2019-05-14 18:05:28 UTC,2,2,FALSE,specific,,FALSE,FOOD00624 +1,,642,Gin,,"Gin is a spirit which derives its predominant flavour from juniper berries (Juniperus communis). From its earliest beginnings in the Middle Ages, gin has evolved over the course of a millennium from a herbal medicine to an object of commerce in the spirits industry. Today, the gin category is one of the most popular and widely distributed range of spirits, and is represented by products of various origins, styles, and flavor profiles that all revolve around juniper as a common ingredient.",,Gin,642.jpg,image/jpeg,5618,2012-04-23 10:25:45 UTC,,Beverages,Distilled beverages,Type 2,2011-12-02 22:06:02 UTC,2019-05-14 18:05:28 UTC,2,2,FALSE,specific,,TRUE,FOOD00625 +1,,643,Honey,,"Honey is a sweet food made by bees using nectar from flowers. The variety produced by honey bees is the one most commonly referred to, as it is the type of honey collected by beekeepers and consumed by humans. Honey produced by other bees and insects has distinctly different properties. Honey bees transform nectar into honey by a process of regurgitation and evaporation. They store it as a primary food source in wax honeycombs inside the beehive. Honey gets its sweetness from the monosaccharides, fructose, and glucose, and has approximately the same relative sweetness as that of granulated sugar. It has attractive chemical properties for baking, and a distinctive flavor that leads some people to prefer it over sugar and other sweeteners. Most microorganisms do not grow in honey because of its low water activity of 0.6. However, honey sometimes contains dormant endospores of the bacterium Clostridium botulinum, which can be dangerous to infants, as the endospores can transform into toxin-producing bacteria in the infant's immature intestinal tract, leading to illness and even death. Honey has a long history of human consumption, and is used in various foods and beverages as a sweetener and flavoring. It also has a role in religion and symbolism. Flavors of honey vary based on the nectar source, and various types and grades of honey are available. It is also used in various medicinal traditions to treat ailments. The study of pollens and spores in raw honey can determine floral sources of honey. Bees carry an electrostatic charge whereby they attract other particles in addition to pollen, which become incorporated into their honey; the honey can be analysed by the techniques of melissopalynology in area environmental studies of radioactive particles, dust and particulate pollution.",,Honey,643.jpg,image/jpeg,71095,2012-04-20 09:43:55 UTC,,Confectioneries,Other confectioneries,Type 2,2011-12-02 22:06:27 UTC,2019-05-14 18:05:28 UTC,2,2,FALSE,specific,,TRUE,FOOD00626 +1,,644,Liquorice,,"Liquorice or licorice is the root of Glycyrrhiza glabra from which a somewhat sweet flavor can be extracted. The liquorice plant is a legume that is native to southern Europe and parts of Asia. It is not botanically related to anise, star anise, or fennel, which are sources of similar flavouring compounds. +It is a herbaceous perennial, growing to 1 m in height, with pinnate leaves about 7?15 cm (3?6 in) long, with 9?17 leaflets. The flowers are 0.8?1.2 cm (??½ in) long, purple to pale whitish blue, produced in a loose inflorescence. The fruit is an oblong pod, 2?3 cm (1 in) long, containing several seeds. The roots are stoloniferous.",,Liquorice,644.jpg,image/jpeg,93291,2012-04-20 09:37:10 UTC,,Confectioneries,Candies,Type 2,2011-12-02 22:10:07 UTC,2020-03-12 20:59:56 UTC,2,2,FALSE,specific,,TRUE,FOOD00627 +1,,645,Vinegar,,"Vinegar is a liquid consisting mainly of acetic acid (CH3CO2H) and water. The acetic acid is produced by the fermentation of ethanol by acetic acid bacteria. Vinegar is now mainly used as a cooking ingredient, but historically, as the most easily available mild acid, it had a great variety of industrial, medical, and domestic uses, some of which (such as a general household cleanser) are still promoted today. Commercial vinegar is produced either by fast or slow fermentation processes. In general, slow methods are used with traditional vinegars, and fermentation proceeds slowly over the course of weeks or months. The longer fermentation period allows for the accumulation of a nontoxic slime composed of acetic acid bacteria. Fast methods add mother of vinegar to the source liquid before adding air using a venturi pump system or a turbine to promote oxygenation to obtain the fastest fermentation. In fast production processes, vinegar may be produced in a period ranging from 20 hours to three days.",,Vinegar,645.jpg,image/jpeg,44035,2012-04-20 09:43:23 UTC,,Baking goods,Seasonings,Type 2,2011-12-02 22:11:53 UTC,2019-05-14 18:05:28 UTC,2,2,FALSE,specific,,TRUE,FOOD00628 +1,,646,Rum,,"Rum is a distilled alcoholic beverage made from sugarcane byproducts, such as molasses, or directly from sugarcane juice, by a process of fermentation and distillation. The distillate, a clear liquid, is then usually aged in oak barrels. Rum can be referred to in Spanish by descriptors such as ron viejo (""""old rum"""") and ron añejo (""""aged rum"""").",,Rum,646.jpg,image/jpeg,81153,2012-04-20 09:42:36 UTC,,Beverages,Distilled beverages,Type 2,2011-12-02 22:13:25 UTC,2019-05-14 18:05:29 UTC,2,2,FALSE,specific,,TRUE,FOOD00629 +1,,647,Port wine,,"Port wine (also known as Vinho do Porto, Portuguese pronunciation: [ˌviɲuduˈpoɾtu], Porto, and usually simply port) is a Portuguese fortified wine produced exclusively in the Douro Valley in the northern provinces of Portugal. It is typically a sweet, red wine, often served as a dessert wine though it also comes in dry, semi-dry, and white varieties. Fortified wines in the style of port are also produced outside Portugal, most notably in Australia, South Africa, Canada, India, Argentina, and the United States. Under European Union Protected Designation of Origin guidelines, only the product from Portugal may be labelled as port or Porto. In the United States, wines labelled """"port"""" may come from anywhere in the world, while the names """"Oporto"""", """"Porto"""", and """"Vinho do Porto"""" have been recognised as foreign, non-generic names for Port wines originating in Portugal. Under European Union Protected Designation of Origin guidelines, only the product from Portugal may be labelled as port or Porto.[2] In the United States, wines labelled """"port"""" may come from anywhere in the world,[3] while the names """"Oporto"""", """"Porto"""", and """"Vinho do Porto"""" have been recognised as foreign, non-generic names for Port wines originating in Portugal. Port wine is typically richer, sweeter, heavier, and higher in alcohol content than unfortified wines. This is caused by the addition of distilled grape spirits (aguardente similar to brandy) to fortify the wine and halt fermentation before all the sugar is converted to alcohol, and results in a wine that is usually 19 to 20% alcohol. Port is commonly served after meals as a dessert wine in English-speaking countries, often with cheese, nuts or chocolate; white and tawny ports are often served as an apéritif. In Europe all types of port are frequently consumed as aperitifs.[Wikipedia].",,Port_wine,647.jpg,image/jpeg,66694,2012-04-20 09:35:39 UTC,,Beverages,Fortified wines,Type 2,2011-12-02 22:15:28 UTC,2019-05-14 18:05:29 UTC,2,2,FALSE,specific,,TRUE,FOOD00630 +1,,648,Vermouth,,"Vermouth is an aromatized fortified wine flavored with various botanicals (roots, barks, flowers, seeds, herbs, spices). The modern versions of the beverage were first produced in 1757 in Turin, Italy. Vermouth was consumed as a medicinal libation until the later 19th century when it became an important ingredient in many of the first classic cocktails, such as the martini, the Manhattan, and the Negroni. In addition to being consumed as an aperitif or cocktail ingredient, vermouth is sometimes used as a substitute for white wine in cooking. Historically, there have been two main types of vermouth, sweet and dry. Recently, however, vermouth manufacturers have begun experimenting and have created various styles, including white or bianco, amber, and rose. Vermouth is produced by starting with a base of a neutral grape wine. Each manufacturer adds additional alcohol and a proprietary mixture of dry ingredients, consisting of aromatic herbs, roots, and barks, to the base wine. After the wine is aromatized and fortified, the vermouth is sweetened with either cane sugar or caramel, depending on the style. Italian and French companies produce most of the vermouth consumed throughout the world.",,Vermouth,648.jpg,image/jpeg,25903,2012-04-20 09:37:04 UTC,,Beverages,Fortified wines,Type 2,2011-12-02 22:17:03 UTC,2019-05-14 18:05:29 UTC,2,2,FALSE,specific,,TRUE,FOOD00631 +1,,649,Sherry,,"Sherry is a fortified wine made from white grapes that are grown near the town of Jerez de la Frontera in Andalusia, Spain. Sherry is produced in a variety of dry styles made primarily from the Palomino grape, ranging from light versions similar to white table wines, such as Manzanilla and Fino, to darker and heavier versions that have been allowed to oxidise as they age in barrel, such as Amontillado and Oloroso. Sweet dessert wines are also made, from Pedro Ximenez or Moscatel grapes, and are sometimes blended with Palomino-based Sherries.",,Sherry,649.jpg,image/jpeg,35002,2012-04-20 09:33:59 UTC,,Beverages,Fortified wines,Type 2,2011-12-02 22:18:04 UTC,2019-05-14 18:05:29 UTC,2,2,FALSE,specific,,TRUE,FOOD00632 +1,,650,Madeira wine,,"Madeira is a fortified Portuguese wine made in the Madeira Islands. Madeira is produced in a variety of styles ranging from dry wines which can be consumed on their own as an aperitif, to sweet wines more usually consumed with dessert. Cheaper versions are often flavoured with salt and pepper for use in cooking.",,Madeira_wine,650.jpg,image/jpeg,46719,2012-04-20 09:41:52 UTC,,Beverages,Fortified wines,Type 2,2011-12-02 22:19:24 UTC,2019-05-14 18:05:29 UTC,2,2,FALSE,specific,,TRUE,FOOD00633 +1,,651,Nougat,,"Nougat is a family of confectioneries made with sugar and/or honey, roasted nuts (almonds, walnuts, pistachios, hazelnuts, and recently macadamia nuts are common), whipped egg whites, and sometimes chopped candied fruit. The consistency of nougat can range from soft and chewy to hard and crunchy, and it is used in a variety of candy bars and chocolates. The word nougat comes from Occitan pan nogat, from Latin nux gatum 'nut cake'.",,Nougat,651.jpg,image/jpeg,806892,2012-04-20 09:35:05 UTC,,Confectioneries,Other confectioneries,Type 2,2011-12-02 22:46:11 UTC,2019-05-14 18:05:29 UTC,2,2,FALSE,specific,,FALSE,FOOD00634 +1,,653,Toffee,,"Toffee is a confection made by caramelizing sugar or molasses along with butter, and occasionally flour. The mixture is heated until its temperature reaches the hard crack stage of 300 to 310 °F (149 to 154 °C). While being prepared, toffee is sometimes mixed with nuts or raisins. The process of making toffee requires the boiling of ingredients until the mix is stiff enough to be pulled into a shape which holds and has a glossy surface. The resulting mixture will typically be poured into a shallow tray and allowed to cool to form a sheet. Different mixes, processes, and most importantly, temperatures, will result in different textures and hardnesses, from soft and often sticky to a hard, brittle material. A popular variant in the US is English toffee, which is a very buttery toffee often made with almonds. It is available in both chewy and hard versions. Heath bars are a type of candy made with an English toffee core. Although named English toffee it bears little resemblance to the wide range of confectionery known as toffee currently available in the UK. Another variant is honeycomb toffee, which is an aerated version with bubbles introduced by adding baking soda and vinegar while mixing. These react to form carbon dioxide, which is trapped in the highly viscous mixture. In the UK and Canada, the most well known honeycomb candy is the Crunchie bar. The Australian equivalent is the Violet Crumble bar. In New Zealand, this is called hokey pokey. A particular application of toffee is in toffee apples, which are apples on sticks which are coated with toffee. Toffee apples are similar to taffy apples and caramel apples, which are both names for apples covered in caramel. In the UK, toffee apples, sometimes called candy apples, are coated with brittle candy similar to boiled sweets. Toffee used in confectionery can be mixed with many different ingredients to produce a variety of flavors: rum & butter, chocolate covered, vanilla & chocolate, rum & raisin, raspberry, and honeycomb.",,Toffee,653.jpg,image/jpeg,132633,2012-04-20 09:43:50 UTC,,Confectioneries,Other confectioneries,Type 2,2011-12-02 22:50:59 UTC,2019-05-14 18:05:29 UTC,2,2,FALSE,specific,,FALSE,FOOD00635 +1,,654,Cake,,"Cake is a form of bread or bread-like food. In its modern forms, it is typically a sweet baked dessert. In its oldest forms, cakes were normally fried breads or cheesecakes, and normally had a disk shape. Determining whether a given food should be classified as bread, cake, or pastry can be difficult. Modern cake, especially layer cakes, normally contain a combination of flour, sugar, eggs, and butter or oil, with some varieties also requiring liquid and leavening agents. Flavorful ingredients like fruit purées, nuts, dried or candied fruit, or extracts are often added, and numerous substitutions for the primary ingredients are possible. Cakes are often filled with fruit preserves or dessert sauces, iced with buttercream or other icings, and decorated with marzipan, piped borders or candied fruit. Cake is often the dessert of choice for meals at ceremonial occasions, particularly weddings, anniversaries, and birthdays. There are countless cake recipes; some are bread-like, some rich and elaborate, and many are centuries old. Cake making is no longer a complicated procedure; while at one time considerable labor went into cake making (particularly the whisking of egg foams), baking equipment and directions have been simplified so that even the most amateur cook may bake a cake.",,Cake,654.jpg,image/jpeg,2175071,2012-04-20 09:41:34 UTC,,Confectioneries,Desserts,Type 2,2011-12-02 22:54:06 UTC,2019-05-14 18:05:29 UTC,2,2,FALSE,specific,,FALSE,FOOD00636 +1,,655,Pizza,,"Pizza is an oven-baked flat bread typically topped with a tomato sauce, cheese and various toppings. The modern pizza was invented in Naples, Italy, and the dish has since become popular in many parts of the world. An establishment that makes and sells pizzas is called a """"pizzeria"""". Many varieties of pizza exist worldwide, along with several dish variants based upon pizza. Pizza is cooked in various types of ovens, and a diverse variety of ingredients and toppings are utilized. In 2009, upon Italy's request, Neapolitan pizza was safeguarded in the European Union as a Traditional Speciality Guaranteed dish.",,Pizza,655.jpg,image/jpeg,131717,2012-04-20 09:42:00 UTC,,Dishes,Other dishes,Type 2,2011-12-02 22:58:04 UTC,2019-05-14 18:05:29 UTC,2,2,FALSE,specific,,FALSE,FOOD00637 +1,,656,Ymer,,"Ymer is a Danish soured milk product which has been known since 1930. It is made by fermenting whole milk with the bacterial culture Lactococcus lactis. When producing fermented milk products such as yogurt, ymer, filmjölk, skyr, qvark and A-38, and also when producing cheese, one can add lactic acid bacteria which convert milk sugar in the milk into lactic acid and other substances. Acidity makes the milk thicker, gives it a tart flavor, and increases the shelf life by several days. +Unlike other fermented milk products, ymer is drained of its whey. That means that ymer has a higher content of solids, including protein, while the fat content stays at 3.5% as in whole milk. +Ymer is used in breakfasts, snacks, desserts, dressings and baking. The traditional breakfast topping is ymerdrys (""""ymer sprinkle""""), which is a mix of rugbrød breadcrumbs and brown sugar. 1 deciliter of ymer contains 146 kJ (35 kilocalories).",,Ymer_(dairy_product),656.jpg,image/jpeg,46256,2012-04-20 09:28:52 UTC,,Milk and milk products,Fermented milk products,Type 2,2011-12-02 23:00:55 UTC,2019-05-14 18:05:29 UTC,2,2,FALSE,specific,,FALSE,FOOD00638 +1,,657,Other snack food,,"A snack is a portion of food often smaller than a regular meal, generally eaten between meals. Snacks come in a variety of forms including packaged and processed foods and items made from fresh ingredients at home. +Traditionally, snacks were prepared from ingredients commonly available in the home. Often leftovers, cold cuts sandwiches, nuts, fruit, and the like were used as snacks. The Dagwood sandwich was originally the humorous result of a cartoon character's desire for large snacks. Beverages, such as coffee, are not generally considered snacks though they may be consumed along with snack foods. A beverage may be considered a snack if it possesses a substantive food item (e.g., strawberries, bananas, kiwis) that has been blended to create a smoothie. +Plain snacks like plain cereals, pasta, and vegetables are also mildly popular, and the word snack has often been used to refer to a larger meal involving cooked or leftover items. Six-meal eating is a form of eating that incorporates healthy snacks in between small meals, to stave off hunger and promote weight loss.",,Snack_food,657.jpg,image/jpeg,117195,2012-04-20 09:30:06 UTC,,Snack foods,Snack foods,Type 2,2011-12-02 23:03:40 UTC,2019-05-14 18:05:29 UTC,2,2,FALSE,specific,,FALSE,FOOD00639 +1,,659,Crisp bread,,"Crisp bread or hard bread (Swedish: knäckebröd, hårt bröd, hårdbröd, spisbröd, Danish: knækbrød, Norwegian: knekkebrød, Finnish: näkkileipä, hapankorppu, Icelandic: hrökkbrauð, German: Knäckebrot or Knäcke) is a flat and dry type of bread or cracker, containing mostly rye flour. It is popular in armies and schools because of its light weight and simple, transport-friendly shape. Also, it is very cheap and if stored in dry conditions it will keep fresh and edible for a very long time. Crisp bread is a staple food and was for a long time considered a poor man's diet. However, in recent years there has been renewed interest in crisp bread in the Nordic countries. [Wikipedia]",,Crisp_bread,659.jpg,image/jpeg,101558,2012-04-20 09:29:04 UTC,,Cereals and cereal products,Flat breads,Type 2,2011-12-02 23:15:33 UTC,2019-05-14 18:05:29 UTC,2,2,FALSE,specific,,FALSE,FOOD00640 +1,,660,Pastry,,"Pastry is the name given to various kinds of baked products made from ingredients such as flour, sugar, milk, butter, shortening, baking powder, and eggs. Small tarts and other sweet baked products are called """"pastries."""" +Pastry may also refer to the dough from which such baked products are made. Pastry dough is rolled out thin and used as a base for baked products. Common pastry dishes include pies, tarts, quiches and pasties. +Pastry is differentiated from bread by having a higher fat content, which contributes to a flaky or crumbly texture. A good pastry is light and airy and fatty, but firm enough to support the weight of the filling. When making a shortcrust pastry, care must be taken to blend the fat and flour thoroughly before adding any liquid. This ensures that the flour granules are adequately coated with fat and less likely to develop gluten. On the other hand, overmixing results in long gluten strands that toughen the pastry. In other types of pastry such as Danish pastry and croissants, the characteristic flaky texture is achieved by repeatedly rolling out a dough similar to that for yeast bread, spreading it with butter, and folding it to produce many thin layers.",,Pastry,660.jpg,image/jpeg,178225,2012-04-20 09:42:47 UTC,,Confectioneries,Desserts,Type 2,2011-12-02 23:16:48 UTC,2019-05-14 18:05:29 UTC,2,2,FALSE,specific,,FALSE,FOOD00641 +1,,661,Dragée,,"A dragée is a bite-sized, colorful form of confectionery with a hard outer shell ? which is often used for another purpose (e.g. decorative, symbolic, medicinal, etc. ) in addition to consumption purely for enjoyment.",,Dragée,661.jpg,image/jpeg,78504,2012-04-20 09:35:51 UTC,,Confectioneries,Candies,Type 2,2011-12-02 23:40:07 UTC,2019-05-14 18:05:29 UTC,2,2,FALSE,specific,,FALSE,FOOD00642 +1,,662,Chewing gum,,"Chewing gum is a soft, cohesive substance intended for chewing but not swallowing. Humans have used chewing gum for at least 3,000 years. Modern chewing gum was originally made of chicle, a natural latex. By the 1960s, chicle was replaced by butadiene-based synthetic rubber which is cheaper to manufacture. Most chewing gums are considered polymers.",,Chewing_gum,662.jpg,image/jpeg,105643,2012-04-20 09:38:17 UTC,,Confectioneries,Candies,Type 2,2011-12-02 23:43:22 UTC,2019-05-14 18:05:29 UTC,2,2,FALSE,specific,,FALSE,FOOD00643 +1,,663,Marzipan,,"Marzipan is a confection consisting primarily of sugar or honey and almond meal, sometimes augmented with almond oil or extract. It is often made into sweets; common uses are marzipan-filled chocolate and small marzipan imitations of fruits and vegetables. It is also rolled into thin sheets and glazed for icing cakes, primarily birthday and wedding cakes and Christmas cakes. This use is particularly common in England, on large fruitcakes. Marzipan may also be used as a cake ingredient, as in stollen. In some countries, it is shaped into small figures of animals as a traditional treat for New Year's Day. Marzipan is also used in Tortell, and in some versions of king cake eaten during the Carnival season. Traditional Swedish Princess Cake is typically covered with a layer of marzipan that has been tinted pale green.",,Marzipan,663.jpg,image/jpeg,43863,2012-04-20 09:41:43 UTC,,Confectioneries,Other confectioneries,Type 2,2011-12-02 23:44:14 UTC,2019-05-14 18:05:29 UTC,2,2,FALSE,specific,,FALSE,FOOD00644 +1,,664,Salad dressing,,"Sauces for salads are often called """"dressings"""". The concept of salad dressing varies across cultures. +In Western culture, there are three basic types of salad dressing: +Vinaigrette; +Creamy dressings, usually based on mayonnaise or fermented milk products, such as yogurt, sour cream (crème fraîche, smetana), buttermilk; +Cooked dressings, which resemble creamy dressings, but are usually thickened by adding egg yolks and gently heating. +Vinaigrette /v?n???r?t/ is a mixture (emulsion) of salad oil and vinegar, often flavored with herbs, spices, salt, pepper, sugar, and other ingredients. It is also used as a sauce or marinade. +In North America, mayonnaise-based Ranch dressing is most popular, with vinaigrettes and Caesar-style dressing following close behind. Traditional dressings in France are vinaigrettes, typically mustard-based, while sour cream (smetana) and mayonnaise are predominant in eastern European countries and Russia. In Denmark, dressings are often based on crème fraîche. In southern Europe, salad is generally dressed by the diner with oil and vinegar. +In Asia, it is common to add sesame oil, fish sauce, citrus juice, or soy sauce to salad dressings.",,Salad#Dressings,664.jpg,image/jpeg,42317,2012-04-20 09:41:37 UTC,,Baking goods,Dressings,Type 2,2011-12-05 16:42:26 UTC,2019-05-14 18:05:29 UTC,2,2,FALSE,specific,,FALSE,FOOD00645 +1,,665,Sauce,,"In cooking, a sauce is liquid, creaming or semi-solid food served on or used in preparing other foods. Sauces are not normally consumed by themselves; they add flavor, moisture, and visual appeal to another dish. Sauce is a French word taken from the Latin salsa, meaning salted. Possibly the oldest sauce recorded is garum, the fish sauce used by the Ancient Romans. Sauces need a liquid component, but some sauces may contain more solid elements than liquid. Sauces are an essential element in cuisines all over the world. Sauces may be used for savory dishes or for desserts. They can be prepared and served cold, like mayonnaise, prepared cold but served lukewarm like pesto, or can be cooked like bechamel and served warm or again cooked and served cold like apple sauce. Some sauces are industrial inventions like Worcestershire sauce, HP sauce, or nowadays mostly bought ready-made like soy sauce or ketchup, others still are freshly prepared by the cook. Sauces for salads are called salad dressing. Sauces made by deglazing a pan are called pan sauces. A cook who specializes in making sauces is a saucier.",,Sauce,665.jpg,image/jpeg,16500,2012-04-20 09:32:30 UTC,,Baking goods,Sauces,Type 2,2011-12-05 16:51:37 UTC,2019-05-14 18:05:29 UTC,2,2,FALSE,specific,,FALSE,FOOD00646 +1,,666,Salt,,"Salt, also known as table salt or rock salt, is a crystalline mineral that is composed primarily of sodium chloride, a chemical compound belonging to the larger class of ionic salts. It is absolutely essential for animal life, but can be harmful to animals and plants in excess. Salt is one of the oldest, most ubiquitous food seasonings and salting is an important method of food preservation. The taste of salt (saltiness) is one of the basic human tastes. Salt for human consumption is produced in different forms: unrefined salt, refined salt (table salt), and iodized salt. It is a crystalline solid, white, pale pink or light gray in color, normally obtained from sea water or rock deposits. Edible rock salts may be slightly grayish in color because of mineral content. Because of its importance to survival, salt has often been considered a valuable commodity during human history. However, as salt consumption has increased during modern times, scientists have become aware of the health risks associated with high salt intake, including high blood pressure in sensitive individuals. Therefore, some health authorities have recommended limitations of dietary sodium, although others state the risk is minimal for typical western diets.",,Salt,666.jpg,image/jpeg,51925,2012-04-20 09:37:48 UTC,,Baking goods,Seasonings,Type 2,2011-12-05 16:53:52 UTC,2019-05-14 18:05:29 UTC,2,2,FALSE,specific,,TRUE,FOOD00647 +1,,667,Butter,,"Butter is a dairy product made by churning fresh or fermented cream or milk. It is generally used as a spread and a condiment, as well as in cooking applications, such as baking, sauce making, and pan frying. Butter consists of butterfat, water and milk proteins. Most frequently made from cows' milk, butter can also be manufactured from the milk of other mammals, including sheep, goats, buffalo, and yaks. Salt, flavorings and preservatives are sometimes added to butter. Rendering butter produces clarified butter or ghee, which is almost entirely butterfat. [Wikipedia]",,Butter,667.jpg,image/jpeg,499343,2012-04-20 09:41:10 UTC,,Milk and milk products,Other milk products,Type 2,2011-12-05 16:56:38 UTC,2019-05-14 18:05:29 UTC,2,2,FALSE,specific,,TRUE,FOOD00648 +1,,668,Butter substitute,,,,,668.jpg,image/jpeg,6249,2012-04-20 09:28:53 UTC,,Baking goods,Substitutes,Type 2,2011-12-05 17:00:11 UTC,2019-05-14 18:05:29 UTC,2,2,FALSE,specific,,TRUE,FOOD00649 +1,,669,Cream,,"Cream is a dairy product composed of the higher-butterfat layer skimmed from the top of milk before homogenization. Different grades of cream are distinguished by their fat content, whether they have been heat-treated, whipped, and so on. In many jurisdictions there are regulations for each type. [Wikipedia]",,Cream,669.jpg,image/jpeg,890769,2012-04-20 09:37:12 UTC,,Milk and milk products,Other milk products,Type 2,2011-12-05 17:02:39 UTC,2019-05-14 18:05:29 UTC,2,2,FALSE,specific,,TRUE,FOOD00650 +1,,670,Sugar,,"Sugar is the generalised name for a class of chemically-related sweet-flavored substances, most of which are used as food. They are carbohydrates, composed of carbon, hydrogen and oxygen. There are various types of sugar derived from different sources. Simple sugars are called monosaccharides and include glucose (also known as dextrose), fructose and galactose. The table or granulated sugar most customarily used as food is sucrose, a disaccharide (in the body, sucrose hydrolyses into fructose and glucose). Other disaccharides include maltose and lactose. Chemically-different substances may also have a sweet taste, but are not classified as sugars. Some are used as lower-calorie food substitutes for sugar described as artificial sweeteners. Sugars are found in the tissues of most plants but are only present in sufficient concentrations for efficient extraction in sugarcane and sugar beet. Sugarcane is a giant grass and has been cultivated in tropical climates in the Far East since ancient times. A great expansion in its production took place in the 18th century with the setting up of sugar plantations in the West Indies and Americas. This was the first time that sugar became available to the common people who had previously had to rely on honey to sweeten foods. Sugar beet is a root crop and is cultivated in cooler climates and became a major source of sugar in the 19th century when methods for extracting the sugar became available. Sugar production and trade has changed the course of human history in many ways. It influenced the formation of colonies, the perpetuation of slavery, the transition to indentured labour, the migration of peoples, wars between sugar trade-controlling nations in the 19th century, and the ethnic composition and political structure of the new world. The world produced about 168 million tonnes of sugar in 2011. The average person consumes about 24 kilograms of sugar each year (33.1 kg in industrialised countries), equivalent to over 260 food calories per person, per day. Sugar provides energy but no nutrients—empty calories. Since the latter part of the twentieth century, it has been questioned whether a diet high in sugars, especially refined sugars, is bad for health. Sugar has been linked to obesity and suspected of being implicated in diabetes, cardiovascular disease, dementia, macular degeneration and tooth decay. Numerous studies have been undertaken to try to clarify the position but the results remain largely unclear, mainly because of the difficulty of finding populations for use as controls that do not consume sugars.",,Sugar,670.jpg,image/jpeg,106764,2012-04-20 09:42:30 UTC,,Baking goods,Sugars,Type 2,2011-12-05 17:07:39 UTC,2019-12-11 19:38:00 UTC,2,2,FALSE,specific,,FALSE,FOOD00651 +1,,671,Sausage,,"Sausage is a food usually made from ground meat (normally pork or beef), mixed with salt, herbs, and other spices, although vegetarian sausages are available. Typically, a sausage is formed in a casing traditionally made from intestine, but sometimes synthetic. Some sausages are cooked during processing and the casing may be removed afterwards. Sausage making is a traditional food preservation technique. Sausages may be preserved by curing, drying, or smoking. [Wikipedia]",,Sausage,671.jpg,image/jpeg,140430,2012-04-20 09:30:03 UTC,,Dishes,Ground meat,Type 2,2011-12-05 17:08:56 UTC,2019-05-14 18:05:29 UTC,2,2,FALSE,specific,,FALSE,FOOD00652 +1,,672,Meatball,,"Meatball is made from an amount of ground meat rolled into a small ball, sometimes along with other ingredients, such as breadcrumbs, minced onion, spices, and possibly eggs. Meatballs are usually prepared and rolled by hand, and are cooked by frying, baking, steaming, or braising in sauce. There are many kinds of meatball recipes using different types of meats and spices, including vegetarian and fish alternatives, and various methods of preparation. [Wikipedia]",,Meatball,672.jpg,image/jpeg,5102677,2012-04-20 09:29:29 UTC,,Dishes,Ground meat,Type 2,2011-12-05 17:20:18 UTC,2019-05-14 18:05:29 UTC,2,2,FALSE,specific,,FALSE,FOOD00653 +1,,673,Mustard,,"Mustard is a condiment made from the seeds of a mustard plant (white or yellow mustard, Sinapis hirta; brown or Indian mustard, Brassica juncea; or black mustard, B. nigra). The whole, ground, cracked, or bruised mustard seeds are mixed with water, salt, lemon juice, or other liquids, and sometimes other flavorings and spices, to create a paste or sauce ranging in color from bright yellow to dark brown. +Commonly paired with meats and cheeses, mustard is a popular addition to sandwiches, salads, hamburgers, and hot dogs. It is also used as an ingredient in many dressings, glazes, sauces, soups, and marinades; as a cream or a seed, mustard is used in the cuisine of India, the Mediterranean, northern and southeastern Europe, Asia, the Americas, and Africa, making it one of the most popular and widely used spices and condiments in the world.",,Mustard_(condiment),673.jpg,image/jpeg,71253,2012-04-20 09:32:39 UTC,,Baking goods,Condiments,Type 2,2011-12-05 17:24:41 UTC,2019-05-14 18:05:29 UTC,2,2,FALSE,specific,,FALSE,FOOD00654 +1,,674,Pate,,"Pâté is a mixture of ground meat and fat minced into a spreadable paste. Common additions include vegetables, herbs, spices, and either wine or cognac, armagnac or brandy. Pâté can be served either hot or cold, but it is considered to develop its fullest flavor after a few days of chilling. [Wikipedia]",,Pâté,674.jpg,image/jpeg,80916,2012-04-20 09:40:15 UTC,,Dishes,Ground meat,Type 2,2011-12-05 17:26:00 UTC,2019-05-14 18:05:29 UTC,2,2,FALSE,specific,,FALSE,FOOD00655 +1,,676,Sugar substitute,,"A sugar substitute is a food additive that duplicates the effect of sugar in taste, usually with less food energy. Some sugar substitutes are natural and some are synthetic. Those that are not natural are, in general, called artificial sweeteners. +An important class of sugar substitutes is known as high-intensity sweeteners. These are compounds with many times the sweetness of sucrose, common table sugar. As a result, much less sweetener is required and energy contribution is often negligible. The sensation of sweetness caused by these compounds (the """"sweetness profile"""") is sometimes notably different from sucrose, so they are often used in complex mixtures that achieve the most natural sweet sensation.",,Sugar_substitute,676.jpg,image/jpeg,34140,2012-04-20 09:38:42 UTC,,Baking goods,Substitutes,Type 2,2011-12-05 17:29:49 UTC,2019-05-14 18:05:29 UTC,2,2,FALSE,specific,,TRUE,FOOD00656 +1,,677,Meat bouillon,,,,,677.jpg,image/jpeg,61693,2012-04-20 09:43:50 UTC,,Baking goods,Baking goods,Type 2,2011-12-05 17:46:06 UTC,2019-05-14 18:05:29 UTC,2,2,FALSE,specific,,FALSE,FOOD00657 +1,,679,Whey,,"Whey (or Milk Serum) is the liquid remaining after milk has been curdled and strained. It is a by-product of the manufacture of cheese or casein and has several commercial uses. Sweet whey is manufactured during the making of rennet types of hard cheese like cheddar or Swiss cheese. Acid whey (also known as """"sour whey"""") is obtained during the making of acid types of cheese such as cottage cheese. [Wikipedia]",,Whey,679.jpg,image/jpeg,30545,2012-04-20 09:40:35 UTC,,Milk and milk products,Other milk products,Type 2,2011-12-05 17:50:54 UTC,2019-12-11 19:38:06 UTC,2,2,FALSE,specific,,FALSE,FOOD00658 +1,,680,Casein,,"Casein is the name for a family of related phosphoprotein proteins (alphaS1, alphaS2, beta, kappa). These proteins are commonly found in mammalian milk, making up 80% of the proteins in cow milk and between 60% and 65% of the proteins in human milk. Casein has a wide variety of uses, from being a major component of cheese, to use as a food additive, to a binder for safety matches. As a food source, casein supplies amino acids; carbohydrates; and two inorganic elements, calcium and phosphorus. [Wikipedia]",,Casein,680.jpg,image/jpeg,32868,2012-04-20 09:33:29 UTC,,Milk and milk products,Other milk products,Type 2,2011-12-05 17:56:57 UTC,2019-12-11 19:38:11 UTC,2,2,FALSE,specific,,FALSE,FOOD00659 +1,,681,Fruit preserve,,"Fruit preserves are preparations of fruits and sugar, often canned or sealed for long-term storage. The preparation of fruit preserves today often involves adding commercial or natural pectin as a gelling agent, although sugar or honey may be used, as well. Jams, jellies and marmalades are all examples of different styles of fruit preserves that vary based upon the ingredients used. Additionally, the name of the type of fruit preserves will also vary depending on the regional variant of English being used. +[Wikipedia]",,Fruit_preserves,681.jpg,image/jpeg,47659,2012-04-20 09:29:45 UTC,,Fruits,Fruit products,Type 2,2011-12-05 18:47:13 UTC,2019-05-14 18:05:29 UTC,2,2,FALSE,specific,,FALSE,FOOD00660 +1,,682,Leavening agent,,"A leavening agent is any one of a number of substances used in doughs and batters that causes a foaming action that lightens and softens the finished product. Formation of carbon dioxide is induced by chemical agents reacting with moisture, heat, acidity, or other triggers. +The leavening agent incorporates gas bubbles into the dough. The alternative or supplement to leavening agents is mechanical leavening by which air is incorporated by mechanical means. Most leavening agents are synthetic chemical compounds, but carbon dioxide can also be produced by biological agents. When a dough or batter is mixed, the starch in the flour mixes with the water in the dough to form a matrix (often supported further by proteins like gluten or other polysaccharides like pentosans or xanthan gum), then gelatinizes and """"sets""""; the holes left by the gas bubbles remain.",,Leavening_agent,682.jpg,image/jpeg,267587,2012-04-20 09:36:46 UTC,,Baking goods,Baking goods,Type 2,2011-12-06 16:47:07 UTC,2020-03-12 20:59:59 UTC,2,2,FALSE,specific,,TRUE,FOOD00661 +1,,683,Marshmallow,,"Marshmallow is a confection that, in its modern form, typically consists of sugar and/or corn syrup, water, and gelatin, whipped to a spongy consistency and coated with corn starch. Some marshmallow recipes call for eggs. This confection is the modern version of a medicinal confection made from Althaea officinalis, the marshmallow plant.",,Marshmallow,683.jpg,image/jpeg,60074,2012-04-20 09:36:48 UTC,,Confectioneries,Candies,Type 2,2011-12-06 16:47:38 UTC,2019-05-14 18:05:29 UTC,2,2,FALSE,specific,,FALSE,FOOD00662 +0,9913,684,Gelatin,,"Gelatin is a translucent, colorless, brittle (when dry), flavorless solid substance, derived from the collagen inside animals' skin and bones. It is commonly used as a gelling agent in food. It is found in some gummy candies as well as other products such as marshmallows, gelatin dessert, and some low-fat yogurt. Household gelatin comes in the form of sheets, granules, or powder. Instant types can be added to the food as they are; others need to be soaked in water beforehand. [Wikipedia]",,Gelatin,684.jpg,image/jpeg,64556,2012-04-20 09:37:04 UTC,,Baking goods,Baking goods,Type 2,2011-12-06 16:48:12 UTC,2019-12-11 19:38:15 UTC,2,2,FALSE,specific,,FALSE,FOOD00663 +1,,685,Water,,"Water is a chemical compound with the chemical formula H2O. A water molecule contains one oxygen and two hydrogen atoms connected by covalent bonds. Water is a liquid at standard ambient temperature and pressure, but it often co-exists on Earth with its solid state, ice, and gaseous state. Water also exists in a liquid crystal state near hydrophilic surfaces. Water covers 71% of the Earth's surface, and is vital for all known forms of life. On Earth, 96.5% of the planet's water is found in oceans, 1.7% in groundwater, 1.7% in glaciers and the ice caps of Antarctica and Greenland, a small fraction in other large water bodies, and 0.001% in the air as vapor, clouds (formed of solid and liquid water particles suspended in air), and precipitation. Only 2.5% of the Earth's water is freshwater, and 98.8% of that water is in ice and groundwater. Less than 0.3% of all freshwater is in rivers, lakes, and the atmosphere, and an even smaller amount of the Earth's freshwater (0.003%) is contained within biological bodies and manufactured products. Water on Earth moves continually through the hydrological cycle of evaporation and transpiration, condensation, precipitation, and runoff, usually reaching the sea. Evaporation and transpiration contribute to the precipitation over land. Safe drinking water is essential to humans and other lifeforms even though it provides no calories or organic nutrients. Access to safe drinking water has improved over the last decades in almost every part of the world, but approximately one billion people still lack access to safe water and over 2.5 billion lack access to adequate sanitation. There is a clear correlation between access to safe water and GDP per capita. However, some observers have estimated that by 2025 more than half of the world population will be facing water-based vulnerability. A recent report (November 2009) suggests that by 2030, in some developing regions of the world, water demand will exceed supply by 50%. Water plays an important role in the world economy, as it functions as a solvent for a wide variety of chemical substances and facilitates industrial cooling and transportation. Approximately 70% of the fresh water used by humans goes to agriculture.",,Water,685.jpg,image/jpeg,33633,2012-04-20 09:30:04 UTC,,Beverages,Waters,Type 2,2011-12-06 16:48:34 UTC,2019-12-11 19:38:18 UTC,2,2,FALSE,specific,,FALSE,FOOD00664 +1,,686,Other fish product,,"Fish and fish products are consumed as food all over the world. With other seafoods, it provides the world's prime source of high-quality protein: 14?16 percent of the animal protein consumed worldwide. Over one billion people rely on fish as their primary source of animal protein. +Fish and other aquatic organisms are also processed into various food and non-food products.",,Fish_products,686.jpg,image/jpeg,61953,2012-04-20 09:39:02 UTC,,Aquatic foods,Fish products,Type 2,2011-12-06 16:48:46 UTC,2019-05-14 18:05:29 UTC,2,2,FALSE,specific,,FALSE,FOOD00665 +0,,687,Milk (Human),,"Milk is a white liquid produced by the mammary glands of mammals. It is the primary source of nutrition for young mammals before they are able to digest other types of food. Early-lactation milk contains colostrum, which carries the mother's antibodies to the baby and can reduce the risk of many diseases in the baby. It also contains many other nutrients.",,Milk,687.jpg,image/jpeg,402137,2012-04-20 09:34:01 UTC,,Milk and milk products,Unfermented milks,Type 2,2011-12-06 16:49:02 UTC,2019-05-14 18:05:29 UTC,2,2,FALSE,specific,,TRUE,FOOD00666 +1,,689,Other beverage,,,,,689.jpg,image/jpeg,53294,2012-04-20 09:39:15 UTC,,Beverages,Other beverages,Type 2,2011-12-06 16:49:26 UTC,2019-05-14 18:05:29 UTC,2,2,FALSE,specific,,FALSE,FOOD00667 +1,,690,Baby food,,"Baby food is any soft, easily consumed food, other than breastmilk or infant formula, that is made specifically for infants, roughly between the ages of four to six months to 2 years. The food comes in multiple varieties and tastes may be table food that the rest of the family is eating that has been mashed or otherwise broken down or can be purchased prepared from manufacturers.",,Baby food,690.jpg,image/jpeg,19607,2012-04-20 09:30:40 UTC,,Baby foods,Baby foods,Type 2,2011-12-06 16:49:38 UTC,2019-05-14 18:05:29 UTC,2,2,FALSE,specific,,FALSE,FOOD00668 +1,,691,Dumpling,,"Dumplings are cooked balls of dough. They are based on flour, potatoes or bread, and may include meat, fish, vegetables, or sweets. They may be cooked by boiling, steaming, simmering, frying, or baking. They may have a filling, or there may be other ingredients mixed into the dough. Dumplings may be sweet or spicy. They can be eaten by themselves, in soups or stews, with gravy, or in any other way. [Wikipedia]",,Dumpling,691.jpg,image/jpeg,60065,2012-04-20 09:43:42 UTC,,Dishes,Other dishes,Type 2,2011-12-06 16:49:50 UTC,2019-05-14 18:05:29 UTC,2,2,FALSE,specific,,FALSE,FOOD00669 +1,,692,Soup,,"Soup is a generally warm food that is made by combining ingredients such as meat and vegetables with stock, juice, water, or another liquid. Hot soups are additionally characterized by boiling solid ingredients in liquids in a pot until the flavors are extracted, forming a broth. Soups are similar to stews, and in some cases there may not be a clear distinction between the two; however, soups generally have more liquid than stews. Here is a """"list of soups"""":http://en.wikipedia.org/wiki/List_of_soups. [Wikipedia]",,Soup,692.jpg,image/jpeg,1693658,2012-04-20 09:29:21 UTC,,Dishes,Other dishes,Type 2,2011-12-06 16:50:21 UTC,2019-05-14 18:05:29 UTC,2,2,FALSE,specific,,FALSE,FOOD00670 +1,,693,Other vegetable product,,,,,693.jpg,image/jpeg,3855,2012-04-20 09:32:35 UTC,,Vegetables,Vegetable products,Type 2,2011-12-06 16:50:36 UTC,2019-05-14 18:05:29 UTC,2,2,FALSE,specific,,FALSE,FOOD00671 +1,,694,Unclassified food or beverage,,,,,694.jpg,image/jpeg,110231,2012-04-20 09:38:20 UTC,,Unclassified,Unclassified,Type 2,2011-12-06 16:50:49 UTC,2019-05-14 18:05:29 UTC,2,2,FALSE,specific,,FALSE,FOOD00672 +1,,695,Syrup,,"In cooking, a syrup or sirup is a thick, viscous liquid consisting primarily of a solution of sugar in water, containing a large amount of dissolved sugars but showing little tendency to deposit crystals. The viscosity arises from the multiple hydrogen bonds between the dissolved sugar, which has many hydroxyl (OH) groups, and the water. Syrups can be made by dissolving sugar in water or by reducing naturally sweet juices such as cane juice, sorghum juice, or maple sap. Corn syrup is made from corn starch using an enzymatic process that converts it to sugars. Technically and scientifically, the term syrup is also employed to denote viscous, generally residual, liquids, containing substances other than sugars in solution.",,Syrup,695.jpg,image/jpeg,49413,2012-04-20 09:39:40 UTC,,Baking goods,Baking goods,Type 2,2011-12-06 16:51:28 UTC,2019-05-14 18:05:29 UTC,2,2,FALSE,specific,,TRUE,FOOD00673 +1,,696,Tallow,,"Tallow is a rendered form of beef or mutton fat, processed from suet. It is solid at room temperature. Unlike suet, tallow can be stored for extended periods without the need for refrigeration to prevent decomposition, provided it is kept in an airtight container to prevent oxidation. In industry, tallow is not strictly defined as beef or mutton fat. In this context, tallow is animal fat that conforms to certain technical criteria, including its melting point. It is common for commercial tallow to contain fat derived from other animals, such as lard from pigs, or even from plant sources.",,Tallow,696.jpg,image/jpeg,70468,2012-04-20 09:34:00 UTC,,Fats and oils,Animal fats,Type 2,2011-12-06 16:52:17 UTC,2019-05-14 18:05:29 UTC,2,2,FALSE,specific,,TRUE,FOOD00674 +1,,697,Remoulade,,"Remoulade or rémoulade, invented in France, is a popular condiment in many countries. Very much like the tartar sauce of some English-speaking cultures, remoulade is often aioli- or mayonnaise-based. Although similar to tartar sauce, it is often more yellowish (or reddish in Louisiana), often flavored with curry, and sometimes contains chopped pickles or piccalilli. It can also contain horseradish, paprika, anchovies, capers and a host of other items. While its original purpose was possibly for serving with meats, it is now more often used as an accompaniment to seafood dishes, especially pan-fried breaded fish fillets and seafood cakes.",,Remoulade,697.jpg,image/jpeg,21165,2012-04-20 09:33:22 UTC,,Baking goods,Condiments,Type 2,2011-12-06 23:59:03 UTC,2019-05-14 18:05:29 UTC,2,2,FALSE,specific,,FALSE,FOOD00675 +1,,698,Chocolate spread,,"Chocolate spread is a chocolate-flavoured paste which is eaten mostly spread on breads and toasts or similar pastries such as muffins and pitas. Chocolate spread is a product often favored by children and serves as a prevalent spread on their sandwiches. Some adults enjoy chocolate spread sandwiches as a comfort food. Although it tastes, smells, and looks like chocolate it does not solidify. The paste usually contains cocoa and oil, and is also likely to contain milk and additional taste and smell components. At times it also includes nuts or honey. Chocolate spread is normally sold in glass jars or plastic tubs.",,Chocolate spread,698.jpg,image/jpeg,123545,2012-04-20 09:44:04 UTC,,Confectioneries,Spreads,Type 2,2011-12-07 00:09:30 UTC,2019-05-14 18:05:29 UTC,2,2,FALSE,specific,,FALSE,FOOD00676 +1,,699,Fruit gum,,"Rowntree's Fruit Gums are circular sweets formerly made by Rowntree's, who were later acquired by Nestlé. They appear in different colours, each with a different flavour: strawberry, orange, lemon, blackcurrant and lime. The sweets were first introduced in 1893, and originally marketed as Rowntree's Clear Gums - """"The nation's favourite sweet"""" - and were available in twopenny tubes and sixpenny packets. They are primarily composed of glucose syrup and fruit juices and are as a result similar to wine gums. In addition to the traditional roll packaging, they come in a larger volume box, that contains the sweets in the shape of the fruit or part of the fruit that the flavour represents. Originally the purple fruit gums were blueberry, but this changed to blackcurrant in the 1990s.",,Fruit_Gums,699.jpg,image/jpeg,53944,2012-04-20 09:38:43 UTC,,Confectioneries,Candies,Type 2,2011-12-07 00:12:29 UTC,2019-05-14 18:05:29 UTC,2,2,FALSE,specific,,FALSE,FOOD00677 +1,,700,Curry powder,,"Curry powder is a spice mix of widely varying composition based on South Asian cuisine. Curry powder and the contemporary English use of the word curry are Western inventions and do not reflect any specific Indian food, though a similar mixture of spices used in north India is called garam masala. Curry powder is actually closer to the Tamil sambar powder, and the word curry is widely believed to be a corruption of the Tamil word kari, variously meaning something like sauce, cooked vegetables or meat. In the western world, curry powder mixtures tend to have a fairly standardized taste, though a great variety of spice mixtures are used in Indian cuisine. Curry powder was largely popularized during the nineteenth and twentieth centuries through the mass export of the condiment to the western table, throughout Europe and North and South America and through its use in British Army nations. Curry powder did not become standardized, as many of the original blends of curry powder were still available throughout the world. The late 1960s and early 1970s saw a growth of Indian-based food consumption in the west and internationally. This led to an increase of Indian restaurants throughout the world. The tradition of keeping special blends of curry powder simply became uneconomical, and curry powder became increasingly standardized outside India. Indian cooks often have readier access to a variety of fresh spices than their foreign counterparts. Some curry cooks will have their own specific mixtures for different recipes. These are often passed down from parent to child.",,Curry powder,700.jpg,image/jpeg,51762,2012-04-20 09:33:58 UTC,,Herbs and Spices,Herb and spice mixtures,Type 2,2011-12-07 00:17:26 UTC,2020-03-12 21:00:06 UTC,2,2,FALSE,specific,,TRUE,FOOD00678 +1,,701,Other candy,,"Candy, also called sweets or lollies, is a confection that features sugar as a principal ingredient. The category, called sugar confectionery, encompasses any sweet confection, including chocolate, chewing gum, and sugar candy. Vegetables, fruit, or nuts which have been glazed and coated with sugar are said to be candied. +Physically, candy is characterized by the use of a significant amount of sugar, or, in the case of sugar-free candies, by the presence of sugar substitutes. Unlike a cake or loaf of bread that would be shared among many people, candies are usually made in smaller pieces. However, the definition of candy also depends upon how people treat the food. Unlike sweet pastries served for a dessert course at the end of a meal, candies are normally eaten casually, often with the fingers, as a snack between meals. Each culture has its own ideas of what constitutes candy rather than dessert. The same food may be a candy in one culture and a dessert in another.",,Candy,701.jpg,image/jpeg,103989,2012-04-20 09:41:40 UTC,,Confectioneries,Candies,Type 2,2011-12-07 00:19:12 UTC,2019-05-14 18:05:30 UTC,2,2,FALSE,specific,,FALSE,FOOD00679 +1,,702,Meringue,,"Meringue, is a type of dessert, often associated with Swiss and French cuisine, made from whipped egg whites and sugar, and occasionally an acid such as cream of tartar or a small amount of vinegar. A binding agent such as cornstarch or gelatin may also be added. The addition of powdered sugar, which usually contains corn starch, to the uncooked meringue produces a pavlova, a national dish of Australia and New Zealand. The key to the formation of a good meringue is the formation of stiff peaks formed by denaturing the protein ovalbumin (a protein in the egg whites) via mechanical shear. Meringues are often flavoured with vanilla and a small amount of almond or coconut extract although if these extracts are based on an oil infusion then this, if used in excess, may inhibit the egg whites into forming a foam due to the fat from the oil. They are light, airy and sweet confections. Homemade meringues are often chewy and soft with a crisp exterior, although a uniform crisp texture may be achieved at home, whilst commercial meringues are crisp throughout.",,Meringue,702.jpg,image/jpeg,63916,2012-04-20 09:38:34 UTC,,Confectioneries,Other confectioneries,Type 2,2011-12-07 00:22:41 UTC,2019-05-14 18:05:30 UTC,2,2,FALSE,specific,,FALSE,FOOD00680 +1,,703,Lard,,"Lard is pig fat in both its rendered and unrendered forms. Lard was commonly used in many cuisines as a cooking fat or shortening, or as a spread similar to butter. Its use in contemporary cuisine has diminished; however, many contemporary cooks and bakers favor it over other fats for select uses. The culinary qualities of lard vary somewhat depending on the part of the pig from which the fat was taken and how the lard was processed.",,Lard,703.jpg,image/jpeg,69349,2012-04-20 09:28:57 UTC,,Fats and oils,Animal fats,Type 2,2011-12-12 18:17:07 UTC,2019-05-14 18:05:30 UTC,2,2,FALSE,specific,,TRUE,FOOD00681 +1,,704,Other animal fat,,"Animal fats and oils are lipid materials derived from animals. Physically, oils are liquid at room temperature, and fats are solid. Chemically, both fats and oils are composed of triglycerides. Although many animal parts and secretions may yield oil, in commercial practice, oil is extracted primarily from rendered tissue fats obtained from livestock animals like pigs, chickens and cows. Dairy products also yield popular animal fat and oil products such as cheese, butter, and milk. +Flesh and animal fat have a melting temperature of 184 °C, a boiling point of around 200 °C and an ignition point of 280 °C where it will burst into flames without spark. Certain substances such as goose fat produce a higher smoke point than other animal fats, but are still lower than many vegetable oils such as olive or avocado. ",,Animal_fat,704.jpg,image/jpeg,64863,2012-04-20 09:36:25 UTC,,Fats and oils,Animal fats,Type 2,2011-12-12 18:20:47 UTC,2019-05-14 18:05:30 UTC,2,2,FALSE,specific,,TRUE,FOOD00682 +1,,705,Other cocoa product,,,,,705.jpg,image/jpeg,142916,2012-04-20 09:32:01 UTC,,Cocoa and cocoa products,Cocoa products,Type 2,2011-12-12 18:39:03 UTC,2020-03-12 21:02:24 UTC,2,2,FALSE,specific,,FALSE,FOOD00683 +0,3641,706,Cocoa butter,,"Cocoa butter, also called theobroma oil, is a pale-yellow, pure edible vegetable fat extracted from the cocoa bean. It is used to make chocolate, biscuits, and baked goods, as well as some pharmaceuticals, ointments, and toiletries. Cocoa butter has a mild chocolate flavor and aroma. [Wikipedia]",,Cocoa_butter,706.jpg,image/jpeg,65352,2012-04-20 09:29:59 UTC,,Cocoa and cocoa products,Cocoa products,Type 2,2011-12-12 18:49:30 UTC,2019-05-14 18:05:30 UTC,2,2,FALSE,specific,,TRUE,FOOD00684 +0,3641,707,Cocoa powder,,"Cocoa solids are the low-fat component of chocolate. When sold as an end product, it may also be called cocoa powder, cocoa, and cacao. In contrast, the fatty component of chocolate is cocoa butter. Cocoa butter makes up for 50% to 57% of the weight of cocoa beans and gives chocolate its characteristic melting properties. Cocoa liquor is the melted combination of cocoa butter and cocoa solids. Cocoa solids are obtained by extraction from the cocoa bean. [Wikipedia]",,Cocoa_solids,707.jpg,image/jpeg,41587,2012-04-20 09:37:45 UTC,,Cocoa and cocoa products,Cocoa products,Type 2,2011-12-12 21:30:35 UTC,2019-05-14 18:05:30 UTC,2,2,FALSE,specific,,TRUE,FOOD00685 +1,,708,Cocoa liquor,,"Chocolate liquor (cocoa liquor) is pure chocolate in its liquid form. Like the cocoa beans (nibs) from which it is produced, it contains both cocoa solids and cocoa butter in roughly equal proportion.[Wikipedia]",,Chocolate_liquor,708.jpg,image/jpeg,110789,2012-04-20 09:38:09 UTC,,Cocoa and cocoa products,Cocoa products,Type 2,2011-12-12 21:33:09 UTC,2019-05-14 18:05:30 UTC,2,2,FALSE,specific,,TRUE,FOOD00686 +1,,709,Chocolate,,"Chocolate is a range of products derived from cocoa, mixed with fat (i.e. cocoa butter and/or plant oils) and finely powdered sugar to produce a solid confection. There are several types of chocolate according to the proportion of cocoa used in a particular formulation. The use of particular name designations is sometimes subject to governmental regulation. [Wikipedia]",,Types_of_chocolate,709.jpg,image/jpeg,61307,2012-04-20 09:38:37 UTC,,Cocoa and cocoa products,Cocoa products,Type 2,2011-12-12 21:38:12 UTC,2020-03-12 21:00:08 UTC,2,2,FALSE,specific,,TRUE,FOOD00687 +1,,710,Hot chocolate,,"Hot chocolate (also known as hot cocoa or just cocoa or chocolate milk) is a heated beverage typically consisting of shaved chocolate, melted chocolate or cocoa powder, heated milk or water, and sugar. Drinking chocolate is similar to hot chocolate, but is made from melted chocolate shavings or paste, rather than a powdered mix that is soluble in water, and is usually not as sweet. [Wikipedia]",,Hot_chocolate,710.jpg,image/jpeg,81938,2012-04-20 09:43:09 UTC,,Cocoa and cocoa products,Cocoa products,Type 2,2011-12-12 21:43:28 UTC,2020-03-12 21:00:11 UTC,2,2,FALSE,specific,,TRUE,FOOD00688 +1,,711,Dried milk,,"Powdered milk is a manufactured dairy product made by evaporating milk to dryness. One purpose of drying milk is to preserve it; milk powder has a far longer shelf life than liquid milk and does not need to be refrigerated, due to its low moisture content. Another purpose is to reduce its bulk for economy of transportation. Powdered milk and dairy products include such items as dry whole milk, nonfat dry milk, dry buttermilk, dry whey products and dry dairy blends. [Wikipedia]",,Powdered_milk,711.jpg,image/jpeg,30532,2012-04-20 09:44:03 UTC,,Milk and milk products,Other milk products,Type 2,2011-12-12 22:14:05 UTC,2019-05-14 18:05:30 UTC,2,2,FALSE,specific,,TRUE,FOOD00689 +1,,712,Milk (Other mammals),,"As an agricultural product, milk is extracted from mammals during or soon after pregnancy and used as food for humans. Worldwide, dairy farms produced about 730 million tonnes of milk in 2011, from 260 million dairy cows. India is the world's largest producer and consumer of milk, yet neither exports nor imports milk. New Zealand, the European Union's 28 member states, Australia, and the United States are the world's largest exporters of milk and milk products. China and Russia are the world's largest importers of milk and milk products. +Throughout the world, there are more than 6 billion consumers of milk and milk products. Over 750 million people live within dairy farming households. Milk is a key contributor to improving nutrition and food security particularly in developing countries. Improvements in livestock and dairy technology offer significant promise in reducing poverty and malnutrition in the world.",,Milk,712.jpg,image/jpeg,145780,2012-04-20 09:30:59 UTC,,Milk and milk products,Unfermented milks,Type 2,2011-12-12 22:26:15 UTC,2019-05-14 18:05:30 UTC,2,2,FALSE,specific,,TRUE,FOOD00690 +1,,713,Kefir,,"Kefir (alternately kef?rs, keefir, kephir, kewra, talai, mudu kekiya, milkkefir, búlgaros) is a fermented milk drink that originated with shepherds of the North Caucasus region, who discovered that fresh milk carried in leather pouches would occasionally ferment into an effervescent beverage. It is prepared by inoculating cow, goat, or sheep's milk with kefir grains. Traditional kefir was made in skin bags that were hung near a doorway; the bag would be knocked by anyone passing through the doorway to help keep the milk and kefir grains well mixed. [Wikipedia]",,Kefir,713.jpg,image/jpeg,30328,2012-04-20 09:34:30 UTC,,Milk and milk products,Fermented milks,Type 2,2011-12-12 22:29:57 UTC,2019-05-14 18:05:30 UTC,2,2,FALSE,specific,,TRUE,FOOD00691 +1,,714,Buttermilk,,"Buttermilk refers to a number of dairy drinks. Originally, buttermilk was the liquid left behind after churning butter out of cream. This type of buttermilk is known as traditional buttermilk. The term buttermilk also refers to a range of fermented milk drinks, common in warm climates (e.g. , the Middle East, Pakistan, India, and the Southern United States) where unrefrigerated fresh milk sours quickly, as well as in colder climates, such as Germany, Poland, Scandinavia and the Netherlands. This fermented dairy product known as cultured buttermilk is produced from cow's milk and has a characteristically sour taste caused by lactic acid bacteria. This variant is made using one of two species of bacteria—either Streptococcus lactis or Lactobacillus bulgaricus, which creates more tartness. The tartness of buttermilk is due to acid in the milk. The increased acidity is primarily due to lactic acid produced by lactic acid bacteria while fermenting lactose, the primary sugar in milk. As the bacteria produce lactic acid, the pH of the milk decreases and casein, the primary milk protein, precipitates, causing the curdling or clabbering of milk. This process makes buttermilk thicker than plain milk. While both traditional and cultured buttermilk contain lactic acid, traditional buttermilk tends to be less viscous, whereas cultured buttermilk is more viscous. Buttermilk can be drunk straight, and it can also be used in cooking. Soda bread is a bread in which buttermilk reacts with the rising agent, sodium bicarbonate, to produce carbon dioxide.",,Buttermilk,714.jpg,image/jpeg,86704,2012-04-20 09:36:29 UTC,,Milk and milk products,Fermented milks,Type 2,2011-12-12 23:35:29 UTC,2019-05-14 18:05:30 UTC,2,2,FALSE,specific,,TRUE,FOOD00692 +1,,715,Other fermented milk,,"Fermented milk products, also known as cultured dairy foods, cultured dairy products, or cultured milk products, are dairy foods that have been fermented with lactic acid bacteria such as Lactobacillus, Lactococcus, and Leuconostoc. The fermentation process increases the shelf-life of the product, while enhancing the taste and improving the digestibility of milk. There is evidence that fermented milk products have been produced since around 10,000 BC. A range of different Lactobacilli strains has been grown in laboratories allowing for a wide range of cultured milk products with different tastes.",,Fermented_milk_products,715.jpg,image/jpeg,13155,2012-04-20 09:34:10 UTC,,Milk and milk products,Fermented milks,Type 2,2011-12-12 23:44:50 UTC,2019-05-14 18:05:30 UTC,2,2,FALSE,specific,,TRUE,FOOD00693 +1,,716,Soy sauce,,"Soy sauce (also called soya sauce) is a condiment produced by fermenting soybeans with Aspergillus oryzae or Aspergillus sojae molds, along with water and salt. After the fermentation, which yields fermented soybean paste, the paste is pressed, and two substances are obtained: a liquid, which is the soy sauce, and a cake of (wheat and) soy residue, the latter being usually reused as animal feed. Soy sauce is a traditional ingredient in East and Southeast Asian cuisines, where it is used in cooking and as a condiment. All varieties of soy sauce are salty, earthy, brownish liquids intended to season food while cooking or at the table. [Wikipedia]",,Soy_sauce,716.jpg,image/jpeg,8472,2012-04-20 09:44:17 UTC,,Soy,Soy products,Type 2,2011-12-12 23:57:21 UTC,2019-05-14 18:05:30 UTC,2,2,FALSE,specific,,TRUE,FOOD00694 +1,,717,Miso,,"Miso is a traditional Japanese seasoning produced by fermenting rice, barley and/or soybeans, with salt and the fungus k?jikin, the most typical miso being made with soy. The result is a thick paste used for sauces and spreads, pickling vegetables or meats, and mixing with dashi soup stock to serve as miso soup called misoshiru, a Japanese culinary staple. High in protein and rich in vitamins and minerals, miso played an important nutritional role in feudal Japan. Miso is still very widely used in Japan, both in traditional and modern cooking, and has been gaining world-wide interest. Miso is typically salty, but its flavor and aroma depend on various factors in the ingredients and fermentation process. There is a very wide variety of miso available. Different varieties of miso have been described as salty, sweet, earthy, fruity, and savory. [Wikipedia]",,Miso,717.jpg,image/jpeg,66987,2012-04-20 09:31:18 UTC,,Soy,Soy products,Type 2,2011-12-13 00:03:37 UTC,2020-03-12 21:00:16 UTC,2,2,FALSE,specific,,TRUE,FOOD00695 +1,3847,718,Tofu,,"Tofu is a food made by coagulating soy milk and then pressing the resulting curds into soft white blocks. It is part of East Asian and Southeast Asian cuisine such as Chinese, Japanese, Korean, Indonesian, Vietnamese, and others. There are many different varieties of tofu, including fresh tofu and tofu that has been processed in some way. Tofu has a subtle flavor and can be used in savory and sweet dishes. It is often seasoned or marinated to suit the dish. Tofu has a low calorie count, relatively large amounts of protein, and little fat. It is high in iron and, depending on the coagulant used in manufacturing, may also be high in calcium and/or magnesium. [Wikipedia]",,Tofu,718.jpg,image/jpeg,35262,2012-04-20 09:30:22 UTC,,Soy,Soy products,Type 2,2011-12-13 00:08:03 UTC,2019-05-14 18:05:30 UTC,2,2,FALSE,specific,,TRUE,FOOD00696 +1,,721,Zwieback,,"Zwieback is a type of crisp, sweetened bread, made with eggs and baked twice. [Wikipedia]",,Zwieback,721.jpg,image/jpeg,104822,2012-04-20 09:33:55 UTC,,Cereals and cereal products,Leavened breads,Type 2,2011-12-13 23:24:52 UTC,2020-03-12 21:02:00 UTC,2,2,FALSE,specific,,TRUE,FOOD00697 +1,,722,Roe,,"Roe or hard roe is the fully ripe internal egg masses in the ovaries, or the released external egg masses of fish and certain marine animals, such as shrimp, scallop and sea urchins. As a seafood, roe is used both as a cooked ingredient in many dishes and as a raw ingredient. The term soft roe or white roe denotes fish milt. [Wikipedia]",,Roe,722.jpg,image/jpeg,99012,2012-04-20 09:35:47 UTC,,Aquatic foods,Roe,Type 2,2011-12-13 23:46:21 UTC,2019-05-14 18:05:30 UTC,2,2,FALSE,generic,,TRUE,FOOD00698 +1,,724,Icing,,"Icing, also called frosting in the United States, is a sweet often creamy glaze made of sugar with a liquid such as water or milk, that is often enriched with ingredients such as butter, egg whites, cream cheese, or flavorings and is used to cover or decorate baked goods, such as cakes or cookies. [Wikipedia]",,Icing_(food),724.jpg,image/jpeg,88245,2012-04-20 09:42:49 UTC,,Confectioneries,Other confectioneries,Type 2,2011-12-14 00:04:07 UTC,2019-05-14 18:05:30 UTC,2,2,FALSE,specific,,FALSE,FOOD00700 +1,,725,Snack bar,,,,,725.jpg,image/jpeg,61349,2012-04-20 09:41:33 UTC,,Snack foods,Snack foods,Type 2,2011-12-14 00:21:10 UTC,2019-05-14 18:05:30 UTC,2,2,FALSE,specific,,FALSE,FOOD00701 +1,,727,Energy drink,,"Energy drinks are beverages whose producers advertise that they """"boost energy."""" Energy drinks generally contain methylxanthines (including caffeine), B vitamins, and herbs. Other commonly used ingredients are carbonated water, guarana, yerba mate, açaí, and taurine, plus various forms of ginseng, maltodextrin, inositol, carnitine, creatine, glucuronolactone, and ginkgo biloba. Some contain high levels of sugar, and many brands offer artificially sweetened 'diet' versions. A common ingredient in most energy drinks is caffeine (often in the form of guarana or yerba mate). Energy drinks contain about three times the amount of caffeine as cola. [Wikipedia]",,Energy_drink,727.jpg,image/jpeg,87630,2012-04-20 09:29:42 UTC,,Beverages,Nutritional beverages,Type 2,2011-12-14 17:08:40 UTC,2019-05-14 18:05:30 UTC,2,2,FALSE,specific,,FALSE,FOOD00703 +1,,728,Burrito,,"A burrito, or taco de harina, is a type of Mexican food. It consists of a wheat flour tortilla wrapped or folded around a filling. The flour tortilla is usually lightly grilled or steamed, to soften it and make it more pliable. In Mexico, refried beans or meat are sometimes the only fillings. In the United States, however, fillings generally include a combination of ingredients such as Mexican-style rice or plain rice, refried beans or beans, lettuce, salsa, meat, avocado, cheese, and sour cream, and the size varies, with some burritos considerably larger than their Mexican counterparts. [Wikipedia]",,Burrito,728.jpg,image/jpeg,101182,2012-04-20 09:30:33 UTC,,Dishes,Tex-Mex cuisine,Type 2,2011-12-14 17:13:45 UTC,2019-05-14 18:05:30 UTC,2,2,FALSE,specific,,FALSE,FOOD00704 +1,,729,Hamburger,,"A hamburger (also called a hamburger sandwich or burger) is a sandwich consisting of a cooked patty of ground meat (usually beef, but occasionally pork or a combination of meats) usually placed inside a sliced bread roll. Hamburgers are often served with lettuce, bacon, tomato, onion, pickles, cheese and condiments such as mustard, mayonnaise, ketchup and relish. The term hamburger or burger can also be applied to the meat patty on its own, especially in the UK where the term """"patty"""" is rarely used, although the term """"hamburger"""" is rarely used in Commonwealth nations (other than Canada and Australia). [Wikipedia]",,Hamburger,729.jpg,image/jpeg,208642,2012-04-20 09:40:25 UTC,,Dishes,Sandwiches,Type 2,2011-12-14 17:34:31 UTC,2019-05-14 18:05:30 UTC,2,2,FALSE,specific,,FALSE,FOOD00705 +1,,730,Baked beans,,"Baked beans is a dish containing beans, sometimes baked but, despite the name, usually stewed, in a sauce. Most commercial canned baked beans are made from haricot beans, also known as navy beans – a variety of Phaseolus vulgaris – in a sauce. In Ireland and the United Kingdom, a tomato and sugar sauce is most commonly used. In the United States there are multiple styles, Boston baked beans use a sauce prepared with molasses and salt pork, the popularity of which has led to the city being nicknamed """"Beantown"""". Beans in a tomato and brown sugar, sugar or corn syrup sauce are a widely available type throughout the US. Maine and Quebec-style beans often use maple syrup. Canned baked beans are used as a convenience food, shortening cooking times for a meal, or may be eaten straight from the can, in camping or emergency settings as they are pre-cooked. [Wikipedia]",,Baked_beans,730.jpg,image/jpeg,44339,2012-04-20 09:42:44 UTC,,Dishes,Other dishes,Type 2,2011-12-14 17:43:24 UTC,2019-05-14 18:05:30 UTC,2,2,FALSE,specific,,FALSE,FOOD00706 +1,,731,Chili,,"Chili con carne (often known simply as chili) is a spicy stew. The name of the dish derives from the Spanish chile con carne, """"chili pepper with meat"""". Traditional versions are made, minimally, from chili peppers, garlic, onions, and cumin, along with chopped or ground beef. Beans and tomatoes are frequently included. Variations, both geographic and personal, may involve different types of meat as well as a variety of other ingredients. [Wikipedia]",,Chili_con_carne,731.jpg,image/jpeg,20949,2012-04-20 09:42:19 UTC,,Dishes,Tex-Mex cuisine,Type 2,2011-12-14 17:49:59 UTC,2019-05-14 18:05:30 UTC,2,2,FALSE,specific,,FALSE,FOOD00707 +1,,732,Taco,,"A taco is a traditional Mexican dish composed of a corn or wheat tortilla folded or rolled around a filling. A taco can be made with a variety of fillings, including beef, chicken, seafood, vegetables and cheese, allowing for great versatility and variety. A taco is generally eaten without utensils and is often accompanied by garnishes such as salsa, avocado or guacamole, cilantro, tomatoes, onions and lettuce. [Wikipedia]",,Taco,732.jpg,image/jpeg,68723,2012-04-20 09:30:25 UTC,,Dishes,Tex-Mex cuisine,Type 2,2011-12-14 17:53:49 UTC,2019-05-14 18:05:30 UTC,2,2,FALSE,specific,,FALSE,FOOD00708 +1,,733,Tortilla,,"Tortilla means """"little torta"""" or """"little cake"""" in Spanish; the Spanish word applies to several different foods eaten in various Spanish-speaking countries. The Spanish word is used in English for a more restricted range of foods, mainly a potato-based omelette originating in Spain, and for a flatbread made from corn or wheat originally made by Mesoamerican peoples. Tortillas are used to prepare many Mexican and, more generally, Latin American dishes (e.g. burritos, quesadillas, tacos, tostadas). [Wikipedia]",,Tortilla,733.jpg,image/jpeg,81659,2012-04-20 09:38:04 UTC,,Cereals and cereal products,Flat breads,Type 2,2011-12-14 17:58:30 UTC,2020-03-12 21:00:17 UTC,2,2,FALSE,specific,,TRUE,FOOD00709 +1,,734,Nachos,,"Nachos are a popular food based on nixtamalized corn, of Mexican origin associated with Tex-Mex cuisine that can be either made quickly to serve as a snack or prepared with more ingredients to make a full meal. In their simplest form, nachos are tortilla chips or totopos covered in melted cheese and salsa. [Wikipedia]",,Nachos,734.jpg,image/jpeg,57570,2012-04-20 09:44:19 UTC,,Dishes,Tex-Mex cuisine,Type 2,2011-12-14 18:35:51 UTC,2019-05-14 18:05:30 UTC,2,2,FALSE,specific,,FALSE,FOOD00710 +1,,735,Processed cheese,,"Processed cheese is a food product made from normal cheese and sometimes other unfermented dairy ingredients, plus emulsifiers, extra salt, food colorings, or whey. Due to the processing and additives, some softer varieties cannot legally be labeled as """"cheese"""" in many countries, including the United States and United Kingdom, and so are sold as """"cheese food"""", """"cheese spread"""", or """"cheese product"""", depending primarily on the amount of cheese, moisture, and milkfat present in the final product. The best known processed cheese in the United States is marketed as American cheese by Kraft Foods, Borden, and other companies. [Wikipedia]",,Processed_cheese,735.jpg,image/jpeg,64600,2012-04-20 09:42:01 UTC,,Milk and milk products,Fermented milk products,Type 2,2011-12-14 18:41:24 UTC,2019-05-14 18:05:30 UTC,2,2,FALSE,specific,,FALSE,FOOD00711 +1,,736,Salad,,"Salad is any of a wide variety of dishes, including vegetable salads; salads of pasta, legumes, eggs, or grains; mixed salads incorporating meat, poultry, or seafood; and fruit salads. They may include a mixture of cold and hot, often including raw vegetables or fruits. [Wikipedia]",,Salad,736.jpg,image/jpeg,103934,2012-04-20 09:41:58 UTC,,Dishes,Other dishes,Type 2,2011-12-14 18:50:01 UTC,2019-05-14 18:05:30 UTC,2,2,FALSE,specific,,FALSE,FOOD00712 +1,,737,Cream substitute,,,,,737.jpg,image/jpeg,108535,2012-04-20 09:31:11 UTC,,Baking goods,Substitutes,Type 2,2011-12-14 20:46:19 UTC,2019-05-14 18:05:30 UTC,2,2,FALSE,specific,,FALSE,FOOD00713 +1,,738,Dulce de leche,,"Dulce de leche is a thick, creamy, caramel-like milk-based sauce or spread. Literally translated, dulce de leche means """"sweetness of milk"""". It is prepared by slowly heating sweetened milk to create a product that derives its taste from caramelised sugar. It is a popular sweet in Latin America, where it is known under a variety of names. [Wikipedia]",,Dulce_de_leche,738.jpg,image/jpeg,61142,2012-04-20 09:39:35 UTC,,Confectioneries,Spreads,Type 2,2011-12-14 20:57:25 UTC,2019-05-14 18:05:30 UTC,2,2,FALSE,specific,,FALSE,FOOD00714 +1,,739,Topping,,,,,739.jpg,image/jpeg,169791,2012-04-20 09:38:51 UTC,,Baking goods,Baking goods,Type 2,2011-12-14 21:15:15 UTC,2019-05-14 18:05:30 UTC,2,2,FALSE,specific,,FALSE,FOOD00715 +1,,740,Sweet custard,,"Custard is a variety of culinary preparations based on a cooked mixture of milk or cream and egg yolk. Depending on how much egg or thickener is used, custard may vary in consistency from a thin pouring sauce (crème anglaise), to a thick pastry cream used to fill éclairs. The most common custards are used as desserts or dessert sauces and typically include sugar and vanilla. Sometimes flour, corn starch, or gelatin is added as in pastry cream or creme patissiere. Custard bases may also be used for quiches and other savory foods. [Wikipedia]",,Custard,740.jpg,image/jpeg,74460,2012-04-20 09:34:06 UTC,,Confectioneries,Milk desserts,Type 2,2011-12-14 21:25:39 UTC,2019-05-14 18:05:30 UTC,2,2,FALSE,specific,,FALSE,FOOD00716 +1,,742,Egg roll,,"An egg roll is an appetizer and dinner, a variant of spring roll that has spread throughout the world as a staple of Asian cuisine. An egg roll is made by wrapping a combination of chopped vegetables (often mostly cabbage), meat, and sometimes noodles, in a sheet of dough, dipping the dough in egg or an egg wash, then deep frying it. When compared with its cousin, the spring roll, the egg roll is generally larger, has a thicker, puffier skin, is crunchier, and has more filling. However, the terms """"spring roll"""" and """"egg roll"""" are often used somewhat interchangeably. [Wikipedia]",,Egg_roll,742.jpg,image/jpeg,37201,2012-04-20 09:43:01 UTC,,Dishes,Asian cuisine,Type 2,2011-12-14 21:46:50 UTC,2019-05-14 18:05:30 UTC,2,2,FALSE,specific,,FALSE,FOOD00717 +1,,743,Heart of palm,,"Heart of palm, also called palm heart, palmito, burglar's thigh, chonta, palm cabbage or swamp cabbage, is a vegetable harvested from the inner core and growing bud of certain palm trees (notably the coconut (Cocos nucifera), Palmito Juçara (Euterpe edulis), Açaí palm (Euterpe oleracea), sabal (Sabal spp.) and pejibaye (Bactris gasipaes) palms). [Wikipedia]",,Heart_of_palm,743.jpg,image/jpeg,44122,2012-04-20 09:35:37 UTC,,Vegetables,Other vegetables,Type 1,2011-12-14 22:00:39 UTC,2019-05-14 18:05:30 UTC,2,2,FALSE,specific,,TRUE,FOOD00718 +1,381124,744,Popcorn,,"Popcorn, or popping corn, is corn (maize) which expands from the kernel and puffs up when heated. Corn is able to pop because, like sorghum, quinoa and millet, its kernels have a hard moisture-sealed hull and a dense starchy interior. This allows pressure to build inside the kernel until an explosive """"pop"""" results. Some strains of corn are now cultivated specifically as popping corns. [Wikipedia]",,Popcorn,744.jpg,image/jpeg,122409,2012-04-20 09:43:08 UTC,,Snack foods,Snack foods,Type 2,2011-12-15 17:15:01 UTC,2020-03-16 16:32:15 UTC,2,2,FALSE,specific,,FALSE,FOOD00719 +1,,745,Potato chip,,"Potato chips (known as crisps in British and Hiberno English; either chips or wafers in Indian English; and chips in American, Australian, New Zealand, Canadian, Singapore, South African, and Jamaican English) are thin slices of potato that are deep fried. Potato chips are commonly served as an appetizer, side dish, or snack. The basic chips are cooked and salted; additional varieties are manufactured using various flavorings and ingredients including seasonings, herbs, spices, cheeses, and artificial additives. [Wikipedia]",,Potato_chip,745.jpg,image/jpeg,120116,2012-04-20 09:33:21 UTC,,Snack foods,Snack foods,Type 2,2011-12-15 17:18:02 UTC,2020-03-16 16:32:15 UTC,2,2,FALSE,specific,,FALSE,FOOD00720 +1,,746,Tortilla chip,,"A tortilla chip is a snack food made from corn tortillas, which are cut into wedges and then fried (alternatively they may be discs pressed out of corn masa then fried or baked). Corn tortillas are made of corn, vegetable oil, salt and water. Though usually made of yellow corn, they can also be made of white, blue, or red corn. Some manufacturers include many other ingredients including wheat and sugar and MSG (monosodium glutamate, a common food additive). [Wikipedia]",,Tortilla_chip,746.jpg,image/jpeg,102485,2012-04-20 09:36:36 UTC,,Snack foods,Snack foods,Type 2,2011-12-15 17:20:18 UTC,2020-03-16 16:32:15 UTC,2,2,FALSE,specific,,FALSE,FOOD00721 +1,,747,Corn chip,,"A corn chip is a snack food made from cornmeal fried in oil or baked, usually in the shape of a small noodle or scoop. Corn chips are thick, rigid and very crunchy. Corn chips have the strong aroma and flavor of roasted corn, and are often heavily dusted with salt. While American-style corn chips and tortilla chips are both made from corn, the corn in tortilla chips is subjected to the nixtamalization process, resulting in a milder flavor and aroma, and a less rigid texture. Tortilla chips also tend to be larger, thinner, and less salty than American-style corn chips. [Wikipedia]",,Corn_chip,747.jpg,image/jpeg,108546,2012-04-20 09:30:12 UTC,,Snack foods,Snack foods,Type 2,2011-12-15 17:31:29 UTC,2020-03-16 16:32:15 UTC,2,2,FALSE,specific,,FALSE,FOOD00722 +1,,749,Stew,,"A stew is a combination of solid food ingredients that have been cooked in liquid and served in the resultant gravy. Ingredients in a stew can include any combination of vegetables (such as carrots, potatoes, beans, peppers and tomatoes, etc.), meat, especially tougher meats suitable for slow-cooking, such as beef. Poultry, sausages, and seafood are also used. While water can be used as the stew-cooking liquid, wine, stock, and beer are also common. Seasoning and flavourings may also be added. Stews are typically cooked at a relatively low temperature (simmered, not boiled), allowing flavors to mingle. Stews are similar to soups, and in some cases there may not be a clear distinction between the two. Generally, stews have less liquid than soups, are much thicker and require longer cooking over low heat. While soups are almost always served in a bowl, stews may be thick enough to be served on a plate with the gravy as a sauce over the solid ingredients. [Wikipedia]",,Stew,749.jpg,image/jpeg,101383,2012-04-20 09:39:36 UTC,,Dishes,Other dishes,Type 2,2011-12-15 18:11:17 UTC,2019-05-14 18:05:30 UTC,2,2,FALSE,specific,,FALSE,FOOD00724 +1,,750,Gelatin dessert,,"Gelatin desserts are desserts made with sweetened and flavored gelatin. They can be made by combining plain gelatin with other ingredients or by using a premixed blend of gelatin with additives. Fully prepared gelatin desserts are sold in a variety of forms, ranging from large decorative shapes to individual serving cups. In many of the Commonwealth nations and in Ireland, gelatin desserts are called jelly. In the United States and Canada, gelatin desserts are called jello (a generic name based on the brand name Jell-O) or gelatin, whereas 'jelly' is a fruit preserve. [Wikipedia]",,Gelatin_dessert,750.jpg,image/jpeg,90067,2012-04-20 09:33:12 UTC,,Confectioneries,Desserts,Type 2,2011-12-15 18:48:40 UTC,2019-05-14 18:05:30 UTC,2,2,FALSE,specific,,FALSE,FOOD00725 +1,,751,Junket,,"Junket is a milk-based dessert, made with sweetened milk and rennet, the digestive enzyme which curdles milk. It might best be described as a custard or a very soft, sweetened cheese. To make junket, milk (usually with sugar and vanilla added) is heated to approximately body temperature and the rennet, which has been dissolved in water, is mixed in to cause the milk to """"set"""". In the United States, junket is commonly made with a prepackaged mix of rennet and sweetener from a company eponymously known as Junket. [Wikipedia]",,Junket_(dessert),751.jpg,image/jpeg,56446,2012-04-20 09:44:13 UTC,,Confectioneries,Milk desserts,Type 2,2011-12-15 18:56:34 UTC,2019-05-14 18:05:30 UTC,2,2,FALSE,specific,,FALSE,FOOD00726 +1,,752,Falafel,,"Falafel is a deep-fried ball or patty made from ground chickpeas and/or fava beans. Falafel is usually served in a pita, which acts as a pocket, or wrapped in a flatbread known as lafa. The falafel balls are topped with salads, pickled vegetables, hot sauce, and drizzled with tahini-based sauces. Falafel balls may also be eaten alone as a snack or served as part of a meze. [Wikipedia]",,Falafel,752.jpg,image/jpeg,115110,2012-04-20 09:36:02 UTC,,Dishes,Other dishes,Type 2,2011-12-15 19:03:39 UTC,2019-05-14 18:05:30 UTC,2,2,FALSE,specific,,FALSE,FOOD00727 +1,,753,Frybread,,"Frybread is a Native American food found throughout the United States. Frybread is a flat dough fried or deep-fried in oil, shortening, or lard. The dough is generally leavened by yeast or baking powder. Frybread can be eaten alone or with various toppings such as honey or hot beef. It is a simple complement to meals. Frybread is the base of an Indian taco, which is topped with ground beef, tomatoes, cheese, onions, and lettuce. [Wikipedia]",,Frybread,753.jpg,image/jpeg,77041,2012-04-20 09:44:25 UTC,,Dishes,Other dishes,Type 2,2011-12-15 19:15:42 UTC,2019-05-14 18:05:30 UTC,2,2,FALSE,specific,,FALSE,FOOD00728 +1,,754,Other frozen dessert,,"Frozen dessert is the generic name for desserts made by freezing liquids, semi-solids, and sometimes even solids. They may be based on flavored water (shave ice, sorbet, snow cones, etc.), on fruit purées (such as sorbet), on milk and cream (most ice creams), on custard (frozen custard and some ice creams), on mousse (semifreddo), and others. +In some countries including Canada, the term is often used on products which are similar in taste and texture to ice cream, but which do not meet the legal definition of that term (often being made primarily with vegetable oils, i.e. mellorine, as opposed to milk or cream).",,Frozen_dessert,754.jpg,image/jpeg,45822,2012-04-20 09:29:48 UTC,,Confectioneries,Frozen desserts,Type 2,2011-12-15 19:24:23 UTC,2019-05-14 18:05:30 UTC,2,2,FALSE,specific,,FALSE,FOOD00729 +1,,755,Lasagna,,"Lasagne are a wide, flat pasta shape, and possibly one of the oldest types of pasta. The word also refers to a dish made with several layers of lasagne sheets alternated with sauces and various other ingredients. +Lasagne originated in Italy, traditionally ascribed to the city of Bologna (Emilia-Romagna), where the first modern recipe was created and published and became a traditional dish. Traditional lasagne is made by interleaving layers of pasta with layers of sauce, made with ragù, bechamel, and Parmigiano-Reggiano. In other regions and outside of Italy it is common to find lasagne made with ricotta or mozzarella cheese, tomato sauce, various meats (e.g., ground beef, pork or chicken), miscellaneous vegetables (e.g., spinach, zucchini, mushrooms) and typically flavored with wine, garlic, onion, and oregano. In all cases the lasagne are oven-baked.",,Lasagna,755.jpg,image/jpeg,59610,2012-04-20 09:40:30 UTC,,Dishes,Pasta dishes,Type 2,2011-12-15 21:54:04 UTC,2019-05-14 18:05:30 UTC,2,2,FALSE,specific,,FALSE,FOOD00730 +1,,757,Pancake,,"A pancake is a thin, flat, round cake prepared from a batter, and cooked on a hot griddle or frying pan. Most pancakes are quick breads; some use a yeast-raised or fermented batter. Most pancakes are cooked one side on a griddle and flipped partway through to cook the other side. Depending on the region, pancakes may be served at any time, with a variety of toppings or fillings including jam, chocolate chips, fruit, syrup or meat. [Wikipedia]",,Pancake,757.jpg,image/jpeg,75183,2012-04-20 09:34:14 UTC,,Dishes,Other dishes,Type 2,2011-12-15 22:34:37 UTC,2019-05-14 18:05:30 UTC,2,2,FALSE,specific,,FALSE,FOOD00732 +1,,758,Pectin,,"Pectin is a structural heteropolysaccharide contained in the primary cell walls of terrestrial plants. It is produced commercially as a white to light brown powder, mainly extracted from citrus fruits, and is used in food as a gelling agent particularly in jams and jellies. It is also used in fillings, medicines, sweets, as a stabilizer in fruit juices and milk drinks and as a source of dietary fiber. [Wikipedia]",,Pectin,758.jpg,image/jpeg,10575,2012-04-20 09:29:08 UTC,,Baking goods,Baking goods,Type 2,2011-12-15 22:39:04 UTC,2019-05-14 18:05:30 UTC,2,2,FALSE,specific,,TRUE,FOOD00733 +1,,759,Pudding,,"In the United States, pudding characteristically denotes a sweet milk-based dessert similar in consistency to egg-based custards, though it may also refer to other types such as bread and rice pudding. In the United Kingdom and some Commonwealth countries, pudding refers to rich, fairly homogeneous starch- or dairy- based desserts such as rice pudding and Christmas pudding, or, informally, any sweet dish after the main course. The word is also used for savory dishes such as Yorkshire pudding, black pudding, suet pudding and steak and kidney pudding. [Wikipedia]",,Pudding,759.jpg,image/jpeg,60967,2012-04-20 09:31:20 UTC,,Confectioneries,Desserts,Type 2,2011-12-15 22:52:17 UTC,2019-05-14 18:05:30 UTC,2,2,FALSE,specific,,FALSE,FOOD00734 +1,,760,Waffle,,"A waffle is a batter- or dough- based cake cooked in a waffle iron patterned to give a distinctive and characteristic shape. There are many variations based on the type and shape of the iron and the recipe used. Waffles are eaten throughout the world, particularly in Belgium and the United States. Common toppings are strawberries, chocolate, sugar, honey, syrups, ice cream, and more. [Wikipedia]",,Waffle,760.jpg,image/jpeg,135284,2012-04-20 09:43:37 UTC,,Dishes,Other dishes,Type 2,2011-12-15 23:41:00 UTC,2019-05-14 18:05:30 UTC,2,2,FALSE,specific,,FALSE,FOOD00735 +1,3847,761,Soy milk,,"Soy milk is a beverage made from soybeans. A stable emulsion of oil, water, and protein, it is produced by soaking dry soybeans and grinding them with water. Soy milk contains about the same proportion of protein as cow's milk: around 3.5%; also 2% fat, 2.9% carbohydrate, and 0.5% ash. The coagulated protein from soy milk can be made into tofu, just as dairy milk can be made into cheese. [Wikipedia]",,Soy_milk,761.jpg,image/jpeg,34248,2012-04-20 09:34:05 UTC,,Soy,Soy products,Type 2,2011-12-15 23:47:00 UTC,2019-05-14 18:05:30 UTC,2,2,FALSE,specific,,TRUE,FOOD00736 +1,,762,Meatloaf,,"Meatloaf is a dish of ground meat formed into a loaf shape and baked or smoked. The loaf shape is formed by either cooking it in a loaf pan, or forming it by hand on a flat baking pan. It is usually made from ground beef, although lamb, pork, veal, venison, and poultry or a combination are also used. [Wikipedia]",,Meatloaf,762.jpg,image/jpeg,6730,2012-04-20 09:42:18 UTC,,Dishes,Ground meat,Type 2,2011-12-15 23:56:30 UTC,2019-05-14 18:05:30 UTC,2,2,FALSE,specific,,FALSE,FOOD00737 +1,1753,763,Sake,,"Sake, also known as Nihonshu, is a rice-based alcoholic beverage of Japanese origin. Sake is also referred to in English as a form of rice wine. However, unlike true wine, in which alcohol is produced by fermenting the sugar naturally present in fruit, sake is made through a brewing process more like that of beer, thus it is more like a rice brew than a rice wine. [Wikipedia]",,Sake,763.jpg,image/jpeg,32423,2012-04-20 09:30:02 UTC,,Beverages,Fermented beverages,Type 2,2011-12-16 00:02:30 UTC,2019-05-14 18:05:30 UTC,2,2,FALSE,specific,,TRUE,FOOD00738 +1,,764,Cocktail,,"A cocktail is a mixed drink typically made with a distilled beverage (such as gin, vodka, whiskey, tequila, or rum) that is mixed with other ingredients. Cocktails contain one or more types of liqueur, juice, fruit, sauce, honey, milk or cream, spices, or other flavorings. [Wikipedia]",,List_of_cocktails,764.jpg,image/jpeg,15344,2012-04-20 09:37:47 UTC,,Beverages,Alcoholic beverages,Type 2,2011-12-16 00:05:31 UTC,2019-05-14 18:05:30 UTC,2,2,FALSE,specific,,FALSE,FOOD00739 +1,,765,Couscous,,"Couscous is a Berber pasta dish of semolina traditionally served with a meat or vegetable stew spooned over it. Couscous is a staple food throughout Algeria, Morocco and Tunisia. [Wikipedia]",,Couscous,765.jpg,image/jpeg,283168,2012-04-20 09:29:15 UTC,,Dishes,Berber cuisine,Type 2,2011-12-16 00:21:11 UTC,2019-05-14 18:05:30 UTC,2,2,FALSE,specific,,FALSE,FOOD00740 +1,,766,Bulgur,,"Bulgur (also bulghur, burghul or bulgar) is a cereal food made from several different wheat species, most often from durum wheat. In the United States it is most often made from white wheat. Its use is most common in Middle Eastern cuisine, Iran, Turkey, Greece, Armenia and Bulgaria. In India it is called Lapsi. [Wikipedia]",,Bulgur,766.jpg,image/jpeg,126235,2012-04-20 09:37:20 UTC,,Cereals and cereal products,Cereal products,Type 2,2011-12-16 17:06:03 UTC,2019-05-14 18:05:31 UTC,2,2,FALSE,specific,,TRUE,FOOD00741 +1,,767,Coffee substitute,,"Coffee substitutes are non-coffee products, usually without caffeine, that are used to imitate coffee. Coffee substitutes can be used for medical, economic and religious reasons, or simply because coffee is not readily available. Roasted grain beverages are common substitutes for coffee. Some ingredients used include: almond, acorn, asparagus, malted barley, beechnut, beetroot, carrot, chicory root, corn, cottonseed, dandelion root, fig, boiled-down molasses, okra seed, pea, persimmon seed, potato peel, rye, sassafras pits, sweet potato, wheat bran. Ground roasted chicory root has been sold commercially on a large scale since around 1970, and it has become a mainstream product, both alone and mixed with real coffee. [Wikipedia]",,Coffee_substitute,767.jpg,image/jpeg,183689,2012-04-20 09:35:37 UTC,,Baking goods,Substitutes,Type 2,2011-12-16 17:10:13 UTC,2019-05-14 18:05:31 UTC,2,2,FALSE,specific,,FALSE,FOOD00742 +1,,768,Coffee mocha,,"A caffè mocha is a variant of a caffè latte. Like a caffe latte, it is based on espresso and hot milk, but with added chocolate, typically in the form of sweet cocoa powder, although many varieties use chocolate syrup. Mochas can contain dark or milk chocolate. Mocha is also used to describe a type of coffee bean. Smaller and rounder than most other varieties, these beans are derived from the coffee species Coffea arabica; """"mocha coffee"""" can refer either to the coffee-with-chocolate drink, or simply to coffee brewed with mocha beans. [Wikipedia]",,Cafe_mocha,768.jpg,image/jpeg,36906,2012-04-20 09:36:20 UTC,,Coffee and coffee products,Coffee products,Type 2,2011-12-16 17:14:58 UTC,2019-05-14 18:05:31 UTC,2,2,FALSE,specific,,FALSE,FOOD00743 +1,,769,Chimichanga,,"Chimichanga, also known as chivichanga or chimmy chonga, is a deep-fried burrito that is popular in Southwestern U.S. cuisine, Tex-Mex cuisine, and the Mexican states of Sinaloa and Sonora. The dish is typically prepared by filling a flour tortilla with a wide range of ingredients, most commonly rice, cheese, machaca, carne adobada, or shredded chicken, and folding it into a rectangular package. It is then deep-fried and can be accompanied with salsa, guacamole, sour cream and/or cheese. Many restaurants offer non-fried chimichangas, which are similar to normal burrito, with cheese sauce, guacamole, and tomato. [Wikipedia]",,Chimichanga,769.jpg,image/jpeg,44848,2012-04-20 09:44:14 UTC,,Dishes,Mexican cuisine,Type 2,2011-12-16 17:23:24 UTC,2019-05-14 18:05:31 UTC,2,2,FALSE,specific,,FALSE,FOOD00744 +0,4567,770,Semolina,,"Semolina is the coarse, purified wheat middlings of durum wheat used in making pasta, and also used for breakfast cereals and puddings. Semolina is also used to designate coarse middlings from other varieties of wheat, and from other grains such as rice and corn. [Wikipedia]",,Semolina,770.jpg,image/jpeg,92539,2012-04-20 09:41:02 UTC,,Cereals and cereal products,Cereal products,Type 2,2011-12-16 17:42:02 UTC,2020-03-12 21:01:19 UTC,2,2,FALSE,specific,,TRUE,FOOD00745 +0,3983,771,Tapioca pearl,,"Tapioca is a starch extracted from Manihot esculenta. In India, the term 'Tapioca' is used to represent the root of the plant (Cassava), rather than the starch. In Vietnam, it is called bot nang. In Indonesia, it is called singkong. In the Philippines, it is called sago. Tapioca is a staple food in some regions and is used worldwide as a thickening agent, mainly in foods. In Britain, the word tapioca often refers to a milk pudding thickened with arrowroot, while in Asia the sap of the sago palm is often part of its preparation. Tapioca is gluten-free, and almost completely protein-free. [Wikipedia]",,Tapioca,771.jpg,image/jpeg,73617,2012-04-20 09:40:34 UTC,,Baking goods,Baking goods,Type 2,2011-12-16 17:49:21 UTC,2019-05-14 18:05:31 UTC,2,2,FALSE,specific,,TRUE,FOOD00746 +1,,772,Tostada,,"Tostada is a Spanish word which literally means """"toasted"""". It is used in Latin America to name several different traditional local dishes which have in common the fact they are toasted or use a toasted ingredient as the main base of their preparation. [Wikipedia]",,Tostada,772.jpg,image/jpeg,66896,2012-04-20 09:42:07 UTC,,Dishes,Mexican cuisine,Type 2,2011-12-16 17:55:08 UTC,2019-05-14 18:05:31 UTC,2,2,FALSE,specific,,FALSE,FOOD00747 +1,,773,Quesadilla,,"A quesadilla is a flour or corn tortilla filled with a savoury mixture containing cheese and other ingredients, then folded in half to form a half-moon shape. [Wikipedia]",,Quesadilla,773.jpg,image/jpeg,53623,2012-04-20 09:44:17 UTC,,Dishes,Mexican cuisine,Type 2,2011-12-16 17:58:12 UTC,2019-05-14 18:05:31 UTC,2,2,FALSE,specific,,FALSE,FOOD00748 +1,4113,774,Baked potato,,"A baked potato, or jacket potato, is the edible result of baking a potato. When well cooked, a baked potato has a fluffy interior and a crisp skin. It may be served with fillings and condiments such as butter, cheese or ham. Potatoes can be baked in a conventional gas or electric oven, a convection oven, a microwave oven, on a barbecue grill, or on/in an open fire. Some restaurants use special ovens designed specifically to cook large numbers of potatoes then keep them warm and ready for service. [Wikipedia]",,Baked_potato,774.jpg,image/jpeg,31842,2012-04-20 09:39:04 UTC,,Dishes,Potato dishes,Type 2,2011-12-16 18:03:47 UTC,2019-12-11 19:38:25 UTC,2,2,FALSE,specific,,FALSE,FOOD00749 +1,,775,Hot dog,,"A hot dog is a sausage served in a sliced bun. It is very often garnished with mustard, ketchup, onions, mayonnaise, relish and/or sauerkraut. [Wikipedia]",,Hot_dog,775.jpg,image/jpeg,53442,2012-04-20 09:42:50 UTC,,Dishes,Sandwiches,Type 2,2011-12-16 18:05:46 UTC,2019-05-14 18:05:31 UTC,2,2,FALSE,specific,,FALSE,FOOD00750 +1,,776,Spread,,"A spread is a food that is spread with a knife onto bread, crackers, or other bread products. Spreads are added to bread products to provide flavor and texture, and are an integral part of the dish, i.e. they should be distinguished from condiments, which are optional additions. Spreads should also be distinguished from dips, which do not employ a knife in applying it to crackers or chips, such as salsa. [Wikipedia]",,Spread_(food),776.jpg,image/jpeg,136322,2012-04-20 09:29:20 UTC,,Baking goods,Baking goods,Type 2,2011-12-16 18:12:53 UTC,2019-05-14 18:05:31 UTC,2,2,FALSE,specific,,FALSE,FOOD00751 +1,,777,Enchilada,,"An enchilada is a corn tortilla rolled around a filling and covered with a chili pepper sauce. Enchiladas can be filled with a variety of ingredients, including meat, cheese, beans, potatoes, vegetables, seafood or combinations. [Wikipedia]",,Enchilada,777.jpg,image/jpeg,120953,2012-04-20 09:38:45 UTC,,Dishes,Mexican cuisine,Type 2,2011-12-16 18:16:44 UTC,2019-05-14 18:05:31 UTC,2,2,FALSE,specific,,FALSE,FOOD00752 +1,,778,Egg substitute,,"For those who do not consume eggs, alternatives used in baking include other rising agents or binding materials, such as ground flax seeds or potato starch flour. Tofu can also act as a partial binding agent, since it is high in lecithin due to its soy content. Applesauce can be used, as well as arrowroot and banana. Extracted soybean lecithin, in turn, is often used in packaged foods as an inexpensive substitute for egg-derived lecithin. +Other egg substitutes are made from just the white of the egg for those who worry about the high cholesterol and fat content in eggs. These products usually have added vitamins and minerals, as well as vegetable-based emulsifiers and thickeners such as xanthan gum or guar gum. These allow the product to maintain the nutrition and several culinary properties of real eggs, making possible foods such as Hollandaise sauce, custard, mayonnaise, and most baked goods with these substitutes.",,Egg_substitute#Cooking_substitutes,778.jpg,image/jpeg,122710,2012-04-20 09:32:17 UTC,,Baking goods,Substitutes,Type 2,2011-12-16 18:20:45 UTC,2019-05-14 18:05:31 UTC,2,2,FALSE,specific,,TRUE,FOOD00753 +1,,779,Nutritional drink,,"An energy drink is a type of beverage containing stimulant drugs, chiefly caffeine, which is marketed as providing mental or physical stimulation. There are myriad brands and varieties of energy drinks. They generally contain large amounts of caffeine and other stimulants. Many also contain sugar or other sweeteners, herbal extracts and amino acids and may or may not be carbonated. They are a subset of the larger group of energy products, which includes bars and gels. Coffee, tea and other naturally caffeinated beverages are usually not considered energy drinks. Soft drinks such as cola, may contain caffeine, but are also not energy drinks. Some alcoholic beverages, such as Four Loko, contain caffeine and other stimulants and are marketed as energy drinks, although such drinks are banned in some American states.",,Energy drink,779.jpg,image/jpeg,44182,2012-04-20 09:41:18 UTC,,Beverages,Nutritional beverages,Type 2,2011-12-16 18:23:35 UTC,2019-05-14 18:05:31 UTC,2,2,FALSE,specific,,FALSE,FOOD00754 +1,,780,Other sandwich,,"A sandwich is a food item, typically consisting of two or more slices of bread with one or more fillings between them, or one slice of bread with a topping or toppings, commonly called an open sandwich. Sandwiches are a widely popular type of lunch food, typically taken to work or school, or picnics to be eaten as part of a packed lunch. They generally contain a combination of salad vegetables, meat, cheese, and a variety of sauces or savoury spreads. The bread can be used as it is, or it can be coated with any condiments to enhance flavour and texture. They are widely sold in restaurants and cafes. See a """"list of sandwiches"""":http://en.wikipedia.org/wiki/List_of_sandwiches. [Wikipedia]",,Sandwich,780.jpg,image/jpeg,132418,2012-04-20 09:33:41 UTC,,Dishes,Sandwiches,Type 2,2011-12-16 18:32:22 UTC,2019-05-14 18:05:31 UTC,2,2,FALSE,specific,,FALSE,FOOD00755 +1,,781,Ketchup,,"Ketchup (sometimes catsup in American English or tomato sauce in Commonwealth English) is a sweet-and-tangy condiment typically made from tomatoes, vinegar, sugar or high-fructose corn syrup and an assortment of vegetable seasonings and spices such as onions, allspice, cloves, cinnamon, garlic, and celery. Ketchup is often used with french fries (chips in the UK), hamburgers, sandwiches and grilled or fried meat. In Australia and New Zealand, where it is known as tomato sauce, it is a typical accompaniment for meat pies. Ketchup is sometimes used as a basis or ingredient for other sauces and dressings. [Wikipedia]",,Ketchup,781.jpg,image/jpeg,19855,2012-04-20 09:33:43 UTC,,Baking goods,Condiments,Type 2,2011-12-16 18:37:33 UTC,2019-05-14 18:05:31 UTC,2,2,FALSE,specific,,FALSE,FOOD00756 +1,,782,Breakfast sandwich,,"A breakfast sandwich is a sandwich served for breakfast at fast food restaurants and delis or bought as a fast ready to heat and eat sandwich from a store. Breakfast sandwiches can also be made from scratch in the home. Breakfast sandwiches typically are made using breakfast meats (which are e.g. Spam, sausages, patty sausages, bacon, country ham and pork roll), breads, eggs and cheese. These sandwiches were typically regional specialties until fast food restaurants began serving breakfast. Because the types of bread common, such as biscuits, bagels, and English muffins were similar in size to a fast food hamburger buns, they made an obvious choice for fast food restaurants. Unlike other breakfast items, they were perfect for the innovation of the drive-through. These sandwiches have also become a staple of many convenience stores, that serve them as take-away items. [Wikipedia]",,Breakfast_sandwich,782.jpg,image/jpeg,86936,2012-04-20 09:32:22 UTC,,Dishes,Sandwiches,Type 2,2011-12-16 18:49:45 UTC,2019-05-14 18:05:31 UTC,2,2,FALSE,specific,,FALSE,FOOD00757 +1,,783,Adobo,,"Adobo (Spanish: marinade, sauce, or seasoning) is the immersion of raw food into a preparation of different components including paprika (from red peppers), oregano, salt, garlic, and vinegar. The cooking technique is native to Spanish cuisine. Once becoming widely used in Latin America it was subsequently adopted in other countries such as the United States. In Venezuela, adobo refers to a mixture of salt with various spices technically known as sal condimentada (seasoned salt). Adobo is also the name given by Spanish colonists to an unrelated but superficially similar Philippine cooking process which primarily uses vinegar. [Wikipedia]",,Adobo,783.jpg,image/jpeg,100196,2012-04-20 09:28:46 UTC,,Baking goods,Seasonings,Type 2,2011-12-16 18:55:54 UTC,2020-03-16 16:32:15 UTC,2,2,FALSE,specific,,FALSE,FOOD00758 +1,,784,Macaroni and cheese,,"Macaroni and cheese, also known as """"mac and cheese"""", """"macaroni cheese"""" in British English, or """"macaroni pie"""" in Caribbean English, is a casserole consisting of cooked elbow macaroni and cheese sauce. Macaroni and cheese is often prepared using a packaged food mix. [Wikipedia]",,Macaroni_and_cheese,784.jpg,image/jpeg,66369,2012-04-20 09:37:06 UTC,,Dishes,Pasta dishes,Type 2,2011-12-16 19:06:08 UTC,2019-05-14 18:05:31 UTC,2,2,FALSE,specific,,FALSE,FOOD00759 +1,,785,Butterfat,,"Butterfat or milkfat is the fatty portion of milk. Milk and cream are often sold according to the amount of butterfat they contain. [Wikipedia] See also """"dairyforall.com"""":http://www.dairyforall.com/butteroil.php",,Butterfat,785.jpg,image/jpeg,24494,2012-04-20 09:38:02 UTC,,Milk and milk products,Other milk products,Type 2,2011-12-16 19:29:14 UTC,2019-05-14 18:05:31 UTC,2,2,FALSE,specific,,TRUE,FOOD00760 +1,,787,Hushpuppy,,"A hushpuppy or cornbread ball is a savory, starch-based food made from cornmeal batter that is deep fried or baked in small ball or sphere shapes, or occasionally oblong or ring shapes. Hushpuppies are frequently served as a side dish, usually at seafood restaurants in the United States. Typical hushpuppy ingredients include cornmeal, wheat flour, eggs, salt, baking soda, milk or buttermilk, and water, and may include onion, spring onion (scallion), garlic, whole kernel corn, and peppers. Sometimes pancake batter is used. [Wikipedia]",,Hushpuppy,787.jpg,image/jpeg,59179,2012-04-20 09:41:23 UTC,,Dishes,American cuisine,Type 2,2011-12-16 22:27:01 UTC,2019-05-14 18:05:31 UTC,2,2,FALSE,specific,,FALSE,FOOD00762 +1,,788,Fruit juice,,"Juice is the liquid that is naturally contained in fruit or vegetable tissue. Juice is prepared by mechanically squeezing or macerating fruit or vegetable flesh without the application of heat or solvents. Many commercial juices are filtered to remove fiber or pulp, but high-pulp fresh orange juice is a popular beverage. Common methods for preservation and processing of fruit juices include canning, pasteurization, freezing, evaporation and spray drying. [Wikipedia]",,Juice,788.jpg,image/jpeg,125913,2012-04-20 09:39:14 UTC,,Beverages,Other beverages,Type 2,2011-12-16 22:43:15 UTC,2020-03-16 16:32:15 UTC,2,2,FALSE,specific,,FALSE,FOOD00763 +1,,789,Relish,,"A relish is a cooked, pickled, or chopped vegetable or fruit food item which is typically used as a condiment. In North America, relish commonly alludes to sweet pickle relish-like sauce that often condiments hot dogs, hamburgers and other types of fast food. [Wikipedia]",,Relish,789.jpg,image/jpeg,86991,2012-04-20 09:37:46 UTC,,Baking goods,Condiments,Type 2,2011-12-16 22:48:35 UTC,2019-05-14 18:05:31 UTC,2,2,FALSE,specific,,FALSE,FOOD00764 +1,,790,Other fruit product,,,,,790.jpg,image/jpeg,107811,2012-04-20 09:30:38 UTC,,Fruits,Fruit products,Type 2,2011-12-16 22:55:08 UTC,2019-05-14 18:05:31 UTC,2,2,FALSE,specific,,FALSE,FOOD00765 +1,,791,Fruit salad,,"Fruit salad (also called Macedonia) is a dish consisting of various kinds of fruit, served in a liquid, either in their own juices or a syrup. When served as an appetizer or as a dessert, a fruit salad is sometimes known as a fruit cocktail or fruit cup. [Wikipedia]",,Fruit_salad,791.jpg,image/jpeg,52416,2012-04-20 09:30:00 UTC,,Fruits,Fruit products,Type 2,2011-12-16 22:57:28 UTC,2019-05-14 18:05:31 UTC,2,2,FALSE,specific,,FALSE,FOOD00766 +1,,792,Soy yogurt,,"Soy yogurt, also referred to as Soya yogurt, Soygurt or Yofu (a portmanteau of yogurt and tofu), is a yogurt prepared with soy milk. Soy yogurt is made using soy milk, adding yogurt bacteria (Lactobacillus delbrueckii subsp. bulgaricus and Streptococcus salivarius subsp. thermophilus), sometimes adding sweeteners such as fructose, glucose, or sugar. [Wikipedia]",,Soy_yogurt,792.jpg,image/jpeg,69601,2012-04-20 09:36:56 UTC,,Soy,Soy products,Type 2,2011-12-16 23:10:26 UTC,2019-05-14 18:05:31 UTC,2,2,FALSE,specific,,FALSE,FOOD00767 +1,,793,Vegetarian food,,"Vegetarian cuisine refers to food that meets vegetarian standards by not including meat and animal tissue products. For lacto-ovo vegetarianism (the most common type of vegetarianism in the Western world), eggs and dairy products such as milk and cheese are permitted. For lacto vegetarianism, the earliest known type of vegetarianism, dairy products such as milk and cheese are permitted. The strictest forms of vegetarianism are veganism and fruitarianism, which exclude all animal products, including dairy products as well as honey, and even some refined sugars if filtered and whitened with bone char. Vegetarian foods can be classified into several different types: Traditional foods that have always been vegetarian Soy products including tofu and tempeh which are common protein sources Textured vegetable protein (TVP), made from defatted soy flour, often included in chili and burger recipes in place of ground meat Meat analogues, which mimic the taste, texture, and appearance of meat and are often used in recipes that traditionally contained meat. Vegans may also use analogues for eggs and dairy products",,Vegetarian cuisine,793.jpg,image/jpeg,95771,2012-04-20 09:36:47 UTC,,Dishes,Other dishes,Type 2,2011-12-16 23:19:19 UTC,2019-05-14 18:05:31 UTC,2,2,FALSE,specific,,FALSE,FOOD00768 +1,,794,Veggie burger,,"A veggie burger is a hamburger-style patty that does not contain meat. The patty of a veggie burger may be made, for example, from vegetables, textured vegetable protein (soy meat), legumes, nuts, dairy products, mushrooms, wheat, or eggs. [Wikipedia]",,Veggie_burger,794.jpg,image/jpeg,116651,2012-04-20 09:35:59 UTC,,Dishes,Sandwiches,Type 2,2011-12-19 17:08:02 UTC,2019-05-14 18:05:31 UTC,2,2,FALSE,specific,,FALSE,FOOD00769 +1,,795,Cold cut,,"Cold cuts (also known as lunch meats, luncheon meats, sandwich meats, cooked meats, sliced meats, cold meats and deli meats) are cheeses or precooked or cured meat, often sausages or meat loaves, that are sliced and usually served cold on sandwiches or on party trays. In Commonwealth countries and the U.K., luncheon meat refers specifically to products that can include mechanically reclaimed meat (paste-like meat product produced by forcing beef, pork, turkey or chicken, under high pressure through a sieve or similar device to separate the bone from the edible meat tissue). In British English, the terms cold meats, cooked meats, or sliced meats are used instead. [Wikipedia]",,Cold_cut,795.jpg,image/jpeg,45201,2012-04-20 09:43:28 UTC,,Dishes,Ground meat,Type 2,2011-12-19 17:12:46 UTC,2019-05-14 18:05:31 UTC,2,2,FALSE,specific,,FALSE,FOOD00770 +1,,796,Mixed nuts,,"Mixed nuts are a snack food consisting of any mixture of mechanically or manually combined nuts. Peanuts (actually a legume), almonds, walnuts, Brazil nuts, cashews, filberts, hazelnuts, and pecans are common constituents of mixed nuts. Mixed nuts may be salted, roasted, cooked, or blanched. [Wikipedia]",,Mixed_nuts,796.jpg,image/jpeg,6853,2012-04-20 09:37:17 UTC,,Nuts,Nuts,Type 2,2011-12-19 17:27:57 UTC,2019-05-14 18:05:31 UTC,2,2,FALSE,specific,,FALSE,FOOD00771 +1,,803,Phyllo dough,,"Phyllo, filo, or fillo dough is paper-thin sheets of unleavened flour dough used for making pastries in Middle Eastern and Balkan cuisine. Phyllo dough is made with flour, water, and a small amount of oil and rak? or white vinegar, though some dessert recipes also call for egg yolks. Phyllo can be used in many ways: layered, folded, rolled, or ruffled, with various fillings. [Wikipedia]",,Phyllo,803.jpg,image/jpeg,39191,2012-04-20 09:41:28 UTC,,Baking goods,Baking goods,Type 2,2011-12-19 18:48:08 UTC,2020-03-12 21:01:23 UTC,2,2,FALSE,specific,,TRUE,FOOD00778 +1,,804,Cooking oil,,"Cooking oil is any fat that is used for cooking and is usually liquid at room temperature. Cooking oil may be of plant or animal origin. Types of cooking oil include: ghee, olive oil, palm oil, soybean oil, canola oil, pumpkin seed oil, corn oil, sunflower oil, safflower oil, peanut oil, grape seed oil, sesame oil, argan oil, rice bran oil and other vegetable oils. [Wikipedia] See also a """"list of vegetable oils"""":http://en.wikipedia.org/wiki/List_of_vegetable_oils",,Cooking_oil,804.jpg,image/jpeg,50487,2012-04-20 09:42:35 UTC,,Baking goods,Baking goods,Type 2,2011-12-19 20:44:23 UTC,2019-12-11 19:38:30 UTC,2,2,FALSE,specific,,FALSE,FOOD00779 +1,,805,Pie crust,,"A pie is a baked dish which is usually made of a pastry dough casing that covers or completely contains a filling of various sweet or savoury ingredients. +Pies are defined by their crusts. A filled pie (also single-crust or bottom-crust), has pastry lining the baking dish, and the filling is placed on top of the pastry but left open. A top-crust pie, which may also be called a cobbler, has the filling in the bottom of the dish and is covered with a pastry or other covering before baking. A two-crust pie has the filling completely enclosed in the pastry shell. Flaky pastry is a typical kind of pastry used for pie crusts, but many things can be used, including baking powder biscuits, mashed potatoes, and crumbs.",,Pie_crust,805.jpg,image/jpeg,166481,2012-04-20 09:35:45 UTC,,Baking goods,Wrappers,Type 2,2011-12-19 20:50:42 UTC,2019-05-14 18:05:32 UTC,2,2,FALSE,specific,,FALSE,FOOD00780 +1,,806,Pie filling,,,,,806.jpg,image/jpeg,77806,2012-04-20 09:29:58 UTC,,Baking goods,Baking goods,Type 2,2011-12-19 20:52:20 UTC,2019-05-14 18:05:32 UTC,2,2,FALSE,specific,,FALSE,FOOD00781 +1,,807,Pie,,A pie is a baked dish which is usually made of a pastry dough casing that covers or completely contains a filling of various sweet or savoury ingredients. [Wikipedia],,Pie,807.jpg,image/jpeg,128788,2012-04-20 09:32:05 UTC,,Confectioneries,Desserts,Type 2,2011-12-19 20:54:01 UTC,2019-05-14 18:05:32 UTC,2,2,FALSE,specific,,FALSE,FOOD00782 +1,,808,Shortening,,"Shortening is a solid fat made from vegetable oils, such as soybean and cottonseed oil, which have been hydrogenated to create a solid. This process creates trans fatty acids which turns polyunsaturated fats into saturated fats. Vegetable shortening is virtually flavorless, and is used to make baked goods light and flaky. Crisco is a popular brand of vegetable shortening. [""""Kitchen Dictionary"""":http://www.food.com/library/shortening-430]",,Shortening,808.jpg,image/jpeg,3390,2012-04-20 09:37:52 UTC,,Fats and oils,Vegetable fats,Type 2,2011-12-19 21:02:30 UTC,2020-03-12 21:01:24 UTC,2,2,FALSE,specific,,TRUE,FOOD00783 +1,,809,Soy cream,,,,,809.jpg,image/jpeg,45680,2012-04-20 09:42:39 UTC,,Soy,Soy products,Type 2,2011-12-19 21:13:10 UTC,2020-03-12 21:01:29 UTC,2,2,FALSE,specific,,TRUE,FOOD00784 +1,,810,Ice cream cone,,"An ice cream cone, poke or cornet is a dry, cone-shaped pastry, usually made of a wafer similar in texture to a waffle, allowing ice cream to be eaten without a bowl or spoon. Various types of ice-cream cones include waffle cones, cake cones (or wafer cones), pretzel cones, and sugar cones. [Wikipedia]",,Ice_cream_cone,810.jpg,image/jpeg,27559,2012-04-20 09:35:51 UTC,,Baking goods,Wrappers,Type 2,2011-12-19 21:22:20 UTC,2019-05-14 18:05:32 UTC,2,2,FALSE,specific,,FALSE,FOOD00785 +1,,811,Molasses,,"Molasses is a viscous by-product of the processing of sugar cane, grapes or sugar beets into sugar. The quality of molasses depends on the maturity of the sugar cane or sugar beet, the amount of sugar extracted, and the method of extraction. Sweet sorghum syrup is known in some parts of the United States as molasses, though it is not true molasses. [Wikipedia]",,Molasses,811.jpg,image/jpeg,60830,2012-04-20 09:32:29 UTC,,Baking goods,Baking goods,Type 2,2011-12-19 21:29:19 UTC,2019-05-14 18:05:32 UTC,2,2,FALSE,specific,,TRUE,FOOD00786 +1,,812,Cracker,,"A cracker is a baked good typically made from grain flour dough and usually manufactured in large quantities. Crackers (equivalent to savory biscuits in the UK) are usually flat, crisp, small in size and are made in various shapes, though are commonly round or square. Flavorings or seasonings, such as salt, herbs, seeds, and/or cheese, may be added to the dough or sprinkled on top before baking. Crackers are eaten on their own, or can accompany other food items, such as cheese or meat slices, or dips. [Wikipedia]",,Cracker_(food),812.jpg,image/jpeg,94508,2012-04-20 09:37:25 UTC,,Snack foods,Snack foods,Type 2,2011-12-19 21:31:48 UTC,2019-05-14 18:05:32 UTC,2,2,FALSE,specific,,FALSE,FOOD00787 +1,3847,815,Natto,,"Natto is a traditional Japanese food made from soybeans fermented with Bacillus subtilis. It is popular especially as a breakfast food. As a rich source of protein and probiotics, natto and the soybean paste miso formed a vital source of nutrition in feudal Japan. Natto can be an acquired taste because of its powerful smell, strong flavor, and slippery texture. In Japan natto is most popular in the eastern regions, including Kanto, Tohoku, and Hokkaido. [Wikipedia]",,Natto,815.jpg,image/jpeg,85558,2012-04-20 09:29:17 UTC,,Soy,Soy products,Type 2,2011-12-19 22:02:14 UTC,2019-05-14 18:05:32 UTC,2,2,FALSE,specific,,FALSE,FOOD00790 +1,,816,Ravioli,,Ravioli are a traditional type of Italian filled pasta. They are composed of a filling sealed between two layers of thin egg pasta dough and are served either in broth or with a pasta sauce. [Wikipedia],,Ravioli,816.jpg,image/jpeg,118448,2012-04-20 09:43:20 UTC,,Dishes,Pasta dishes,Type 2,2011-12-19 22:10:03 UTC,2019-05-14 18:05:32 UTC,2,2,FALSE,specific,,FALSE,FOOD00791 +1,,817,Scrapple,,"Scrapple, also known by the Pennsylvania Dutch name pon haus, is traditionally a mush of pork scraps and trimmings combined with cornmeal and flour, often buckwheat flour, and spices. The mush is formed into a semi-solid congealed loaf, and slices of the scrapple are then panfried before serving. Scraps of meat left over from butchering, not used or sold elsewhere, were made into scrapple to avoid waste. Scrapple is best known as a rural American food of the Mid-Atlantic states (Delaware, Pennsylvania, New Jersey, and Maryland). Scrapple and pon haus are commonly considered an ethnic food of the Pennsylvania Dutch, including the Mennonites and Amish. [Wikipedia]",,Scrapple,817.jpg,image/jpeg,51100,2012-04-20 09:40:32 UTC,,Dishes,American cuisine,Type 2,2011-12-19 22:19:04 UTC,2019-05-14 18:05:32 UTC,2,2,FALSE,specific,,FALSE,FOOD00792 +1,,818,Other pasta dish,,,,,818.jpg,image/jpeg,89213,2012-04-20 09:29:03 UTC,,Dishes,Pasta dishes,Type 2,2011-12-19 22:23:16 UTC,2019-05-14 18:05:32 UTC,2,2,FALSE,specific,,FALSE,FOOD00793 +1,,819,Succotash,,"Succotash is a food dish consisting primarily of corn and lima beans or other shell beans. Other ingredients may be added including tomatoes and green or sweet red peppers. Because of the relatively inexpensive and more readily available ingredients, the dish was popular during the Great Depression in the United States. It was sometimes cooked in a casserole form, often with a light pie crust on top as in a traditional pot pie. Succotash is a traditional dish of many Thanksgiving celebrations in New England as well as in Pennsylvania and other states. In some parts of the American South, any mixture of vegetables prepared with lima beans and topped with lard or butter is called succotash. [Wikipedia]",,Succotash,819.jpg,image/jpeg,903077,2012-04-20 09:39:52 UTC,,Dishes,American cuisine,Type 2,2011-12-19 22:26:12 UTC,2019-05-14 18:05:32 UTC,2,2,FALSE,specific,,FALSE,FOOD00794 +1,,820,Tamale,,"A tamale is a traditional Latin American dish made of masa (a starchy dough, usually corn-based), which is steamed or boiled in a leaf wrapper. The wrapping is discarded before eating. Tamales can themselves be filled with meats, cheese, fruits, vegetables, chilies or any preparation according to taste, and both the filling and the cooking liquid may be seasoned. The diversity of native languages in Mesoamerica led to a number of local words for the tamal, many of which remain in use. [Wikipedia]",,Tamale,820.jpg,image/jpeg,104901,2012-04-20 09:36:01 UTC,,Dishes,Latin American cuisine,Type 2,2011-12-19 22:30:31 UTC,2019-05-14 18:05:32 UTC,2,2,FALSE,specific,,FALSE,FOOD00795 +1,,822,Rice cake,,"A rice cake may be any kind of food item made from rice that has been shaped, condensed, or otherwise combined into a single object. A wide variety of rice cakes exist in many different cultures in which rice is eaten, and are particularly prevalent in Asia. Common variations include cakes make with rice flour, those made from ground rice, and those made from whole grains of rice compressed together or combined with some other binding substance. [Wikipedia]",,Rice_cake,822.jpg,image/jpeg,290643,2012-04-20 09:42:56 UTC,,Dishes,Asian cuisine,Type 2,2011-12-19 23:01:45 UTC,2019-05-14 18:05:32 UTC,2,2,FALSE,specific,,FALSE,FOOD00796 +0,13470,823,Tree fern,Cyathea,"The order Cyatheales, which includes the tree ferns, is a taxonomic division of the fern class, Polypodiopsida. No clear morphological features characterize all of the Cyatheales, but DNA sequence data indicate the order is monophyletic. Some species in the Cyatheales have tree-like growth forms, but others have creeping rhizomes (stems). Some species have scales on the stems and leaves, while others have hairs. However, most plants in the Cyatheales are tree ferns and have trunk-like stems up to 20 metres (66 ft) tall. It is unclear how many times the tree form has evolved and been lost in the order.",17937,Cyatheales,823.jpg,image/jpeg,125837,2012-04-20 09:36:00 UTC,,Vegetables,Other vegetables,Type 1,2011-12-19 23:09:02 UTC,2019-05-14 18:05:32 UTC,2,2,FALSE,specific,,TRUE,FOOD00797 +1,,824,Evaporated milk,,"Evaporated milk, also known as dehydrated milk, is a shelf-stable canned milk product with about 60% of the water removed from fresh milk. It differs from sweetened condensed milk, which contains added sugar. Sweetened condensed milk requires less processing since the added sugar inhibits bacterial growth. Evaporated milk should not be confused with condensed milk, dry milk, or powdered milk. [Wikipedia]",,Evaporated_milk,824.jpg,image/jpeg,54919,2012-04-20 09:42:54 UTC,,Milk and milk products,Other milk products,Type 2,2011-12-19 23:27:37 UTC,2019-05-14 18:05:32 UTC,2,2,FALSE,specific,,TRUE,FOOD00798 +1,,825,Flour,,"Flour is a powder which is made by grinding cereal grains, other seeds, or roots (like Cassava). It is the main ingredient of bread, which is a staple food for many cultures, making the availability of adequate supplies of flour a major economic and political issue at various times throughout history. Wheat flour is one of the most important foods in European, North American, Middle Eastern and North African cultures, and is the defining ingredient in most of their styles of breads and pastries. Maize flour has been important in Mesoamerican cuisine since ancient times, and remains a staple in much of Latin American cuisine. Rye flour is an important constituent of bread in much of central/northern Europe. [Wikipedia]",,Flour,825.jpg,image/jpeg,77258,2012-04-20 09:43:55 UTC,,Cereals and cereal products,Cereal products,Type 2,2011-12-19 23:59:48 UTC,2019-05-14 18:05:32 UTC,2,2,FALSE,specific,,TRUE,FOOD00799 +1,,826,Akutaq,,"Akutaq or agutak, also known as Eskimo ice cream, is a common food in western Alaska, consisting of whipped fat mixed with berries, with optional additions such as fish and sugar. The word comes from Yupik and means """"something mixed"""". There are many variations of Akutaq, but most are based around mixing berries, meat, leaves, or roots with animal oil or fat (these are now often replaced by Crisco). Cranberries, salmonberries, crowberries, cloudberries, and blueberries are common fruits. Salmon and caribou are common meats. Reindeer tallow, moose tallow, walrus tallow, caribou tallow, or seal oil can be used. Sugar is sometimes added (although not traditionally). Occasionally, extra water is needed as well. [Wikipedia]",,Akutaq,826.jpg,image/jpeg,135264,2012-04-20 09:39:48 UTC,,Confectioneries,Desserts,Type 2,2011-12-20 00:06:50 UTC,2019-05-14 18:05:33 UTC,2,2,FALSE,specific,,FALSE,FOOD00800 +1,,828,Dough,,"Dough is a paste made out of any cereals (grains) or leguminous crops by mixing flour with a small amount of water and/or other liquid. This process is a precursor to making a wide variety of foodstuffs, particularly breads and bread-based items (e.g., crusts, dumplings), flatbreads, noodles, pastry, and similar items). This includes all kinds of breads or similar recipes made from maize, rice, sorghum, wheat, and other cereals or related crops used around the world. [Wikipedia]",,Dough,828.jpg,image/jpeg,72052,2012-04-20 09:38:35 UTC,,Cereals and cereal products,Doughs,Type 2,2011-12-20 17:12:38 UTC,2019-05-14 18:05:33 UTC,2,2,FALSE,specific,,FALSE,FOOD00801 +1,,829,Pita bread,,"Pita or pitta is a round pocket bread widely consumed in many Middle Eastern, Mediterranean, and Balkan cuisines. It is prevalent in Greece, the Balkans the Levant, the Arabian Peninsula and Turkey. The """"pocket"""" in pita bread is created by steam, which puffs up the dough. As the bread cools and flattens, a pocket is left in the middle. Pita is used to scoop sauces or dips such as hummus and to wrap kebabs, gyros or falafel in the manner of sandwiches. Much of pita's popularity in the Western world since the 1970s is due to expanded use of the pocket for a type of sandwich. Instead of using pita to scoop foods, people fill the pocket with various ingredients to form a sandwich. [Wikipedia]",,Pita_bread,829.jpg,image/jpeg,93898,2012-04-20 09:37:47 UTC,,Cereals and cereal products,Flat breads,Type 2,2011-12-20 17:24:04 UTC,2020-03-12 21:01:33 UTC,2,2,FALSE,specific,,TRUE,FOOD00802 +1,,830,Focaccia,,"Focaccia is a flat oven-baked Italian bread, which may be topped with herbs or other ingredients. It is related to pizza, but not considered to be the same. Focaccia is popular in Italy and is usually seasoned with olive oil and salt, and sometimes herbs, and may be topped with onion, cheese and meat, or flavored with a number of vegetables. [Wikipedia]",,Focaccia,830.jpg,image/jpeg,1470501,2012-04-20 09:41:05 UTC,,Cereals and cereal products,Flat breads,Type 2,2011-12-20 17:28:14 UTC,2019-05-14 18:05:33 UTC,2,2,FALSE,specific,,FALSE,FOOD00803 +1,,831,Bagel,,"A bagel is a bread product, traditionally shaped by hand into the form of a ring from yeasted wheat dough, roughly hand-sized, which is first boiled for a short time in water and then baked. The result is a dense, chewy, doughy interior with a browned and sometimes crisp exterior. Bagels are often topped with seeds baked on the outer crust, with the traditional ones being poppy or sesame seeds. Some also may have salt sprinkled on their surface, and there are also a number of different dough types such as whole-grain or rye. [Wikipedia]",,Bagel,831.jpg,image/jpeg,8045,2012-04-20 09:29:41 UTC,,Cereals and cereal products,Leavened breads,Type 2,2011-12-20 17:31:12 UTC,2020-03-12 21:02:07 UTC,2,2,FALSE,specific,,TRUE,FOOD00804 +1,,832,Other bread product,,,,,832.jpg,image/jpeg,1978370,2012-04-20 09:43:45 UTC,,Cereals and cereal products,Bread products,Type 2,2011-12-20 18:04:17 UTC,2019-05-14 18:05:33 UTC,2,2,FALSE,specific,,FALSE,FOOD00805 +1,,834,Piki bread,,"Piki (or piki bread) is a rolled bread made by the Hopi with nixtamalized corn meal. Blue corn and culinary ash give it a dark grayish-blue color. The light, thin sheets are dry to the point of brittleness and have a delicate corn flavor. It is considered the Hopi version of the tortilla. [Wikipedia]",,Piki,834.jpg,image/jpeg,14039,2012-04-20 09:31:18 UTC,,Cereals and cereal products,Flat breads,Type 2,2011-12-20 18:19:12 UTC,2020-03-12 21:01:35 UTC,2,2,FALSE,specific,,TRUE,FOOD00806 +1,,835,French toast,,"French toast or eggy bread is a dish of bread soaked in eggs then fried. Where French toast is served as a sweet dish, milk, sugar, or cinnamon are also commonly added before frying, and it may be then topped with sugar, butter, fruit, syrup, or other items. Where it is a savory dish, it is generally fried with a pinch of salt, and then served with a sauce such as ketchup or mayonnaise. [Wikipedia]",,French_toast,835.jpg,image/jpeg,39581,2012-04-20 09:43:35 UTC,,Cereals and cereal products,Leavened breads,Type 2,2011-12-20 18:26:09 UTC,2019-05-14 18:05:33 UTC,2,2,FALSE,specific,,FALSE,FOOD00807 +1,,836,Wheat bread,,"Brown bread is a designation often given to breads made with significant amounts of whole grain flour, usually rye or wheat, and sometimes dark-coloured ingredients such as molasses or coffee. In Canada and the United Kingdom it simply refers to whole wheat bread, except in the Maritimes, where it implies a bread made with molasses. +Whole wheat flours that contain raw wheat germ, instead of toasted germ, have higher levels of glutathione, and thus are said to result in lower loaf volumes.",,Wheat_bread,836.jpg,image/jpeg,52290,2012-04-20 09:43:44 UTC,,Cereals and cereal products,Leavened breads,Type 2,2011-12-20 20:35:18 UTC,2020-03-12 21:01:42 UTC,2,2,FALSE,specific,,TRUE,FOOD00808 +1,,837,Rye bread,,"Rye bread is a type of bread made with various percentages of flour from rye grain. It can be light or dark in color, depending on the type of flour used and the addition of coloring agents, and is typically denser than bread made from wheat flour. It is higher in fiber than many common types of bread and is often darker in color and stronger in flavor. [Wikipedia]",,Rye_bread,837.jpg,image/jpeg,76755,2012-04-20 09:29:14 UTC,,Cereals and cereal products,Leavened breads,Type 2,2011-12-20 20:36:59 UTC,2020-01-24 17:10:08 UTC,2,2,FALSE,specific,,TRUE,FOOD00809 +1,,838,Oat bread,,"Oat bread was first manufactured in Britain, where the first oat bread factory was established in 1899. In Scotland, they were, and still are, held in high esteem, as a mainstay of the national diet. (Wikipedia)",,,838.jpg,image/jpeg,88321,2012-04-20 09:42:52 UTC,,Cereals and cereal products,Leavened breads,Type 2,2011-12-20 20:38:27 UTC,2020-03-12 21:01:40 UTC,2,2,FALSE,specific,,TRUE,FOOD00810 +1,,839,Potato bread,,"Potato bread is a form of bread in which potato replaces a portion of the regular wheat flour. It is cooked in a variety of methods, including by baking it on a hot griddle or pan, or in an oven. It may be leavened or unleavened, and may have a variety of other ingredients baked into it. The ratio of potato to wheat flour varies significantly from recipe to recipe, with some recipes having a majority of potato, and others having a majority of wheat flour. Some recipes call for mashed potatoes, with others calling for dehydrated potato flakes. It is available as a commercial product in many countries, with similar variations in ingredients, cooking method, and other variables. [Wikipedia]",,Potato_bread,839.jpg,image/jpeg,125545,2012-04-20 09:39:21 UTC,,Cereals and cereal products,Other breads,Type 2,2011-12-20 20:42:45 UTC,2020-03-12 21:01:37 UTC,2,2,FALSE,specific,,TRUE,FOOD00811 +1,,840,Cornbread,,"Cornbread is a generic name for any number of quick breads containing cornmeal and leavened by baking powder. Cornbread is a popular item in soul food enjoyed by many people for its texture and scent. Cornbread can be baked, fried or, rarely, steamed. Steamed cornbreads are mushy, chewier and more like cornmeal pudding than what most consider to be traditional cornbread. Cornbread can also be baked into corn cakes. [Wikipedia]",,Cornbread,840.jpg,image/jpeg,58269,2012-04-20 09:37:33 UTC,,Cereals and cereal products,Flat breads,Type 2,2011-12-20 20:58:52 UTC,2020-03-12 21:01:38 UTC,2,2,FALSE,specific,,TRUE,FOOD00812 +1,,841,Corn grits,,"Grits are a food of American Indian origin common in the Southern United States and mainly eaten at breakfast. They consist of coarsely ground corn, or sometimes alkali-treated corn (hominy). They are also sometimes called sofkee or sofkey from the Muskogee (Creek) language word. Grits are similar to other thick maize-based porridges from around the world, such as polenta, or the thinner farina. [Wikipedia]",,Grits,841.jpg,image/jpeg,7516,2012-04-20 09:42:55 UTC,,Cereals and cereal products,Cereal products,Type 2,2011-12-20 21:12:47 UTC,2019-05-14 18:05:33 UTC,2,2,FALSE,specific,,FALSE,FOOD00813 +1,,842,Multigrain bread,,,,,842.jpg,image/jpeg,127162,2012-04-20 09:43:42 UTC,,Cereals and cereal products,Leavened breads,Type 2,2011-12-20 21:15:47 UTC,2019-05-14 18:05:33 UTC,2,2,FALSE,specific,,FALSE,FOOD00814 +1,,843,Rice bread,,Rice bread is a type of bread that is made from rice flour rather than wheat flour. Being gluten free it will not cause adverse reactions for people with gluten intolerance. [Wikipedia],,Rice_bread,843.jpg,image/jpeg,71599,2012-04-20 09:30:26 UTC,,Cereals and cereal products,Leavened breads,Type 2,2011-12-20 21:18:59 UTC,2020-03-12 21:01:54 UTC,2,2,FALSE,specific,,TRUE,FOOD00815 +1,,844,Pan dulce,,"Pan dulce is a staple food in Mexico and other Latin American countries. It is eaten at Christmas time. Its main ingredients can include lard, margarine, sugar, self-raising flour, blanched almonds, raisins, sultanas, pine nuts, candied peel, eggs, aniseed and anisette among others. It is sometimes decorated with hundreds and thousands just like the bollo de hornasso. [Wikipedia]",,Gibraltarian_cuisine#Pan_dulce,844.jpg,image/jpeg,131652,2012-04-20 09:37:39 UTC,,Cereals and cereal products,Leavened breads,Type 2,2011-12-20 21:24:29 UTC,2019-05-14 18:05:33 UTC,2,2,FALSE,specific,,FALSE,FOOD00816 +1,,845,Raisin bread,,"Raisin bread is a bread that contains raisins. It is often classified as a sweet bread and is sometimes combined with cinnamon sugar. Served toasted or as a dessert, the bread is commonly found in the United States, Northern Europe, Germany and Australia, where it is served toasted for breakfast. [Wikipedia]",,Raisin_bread,845.jpg,image/jpeg,109998,2012-04-20 09:30:45 UTC,,Cereals and cereal products,Sweet breads,Type 2,2011-12-20 21:33:50 UTC,2020-03-12 21:01:56 UTC,2,2,FALSE,specific,,TRUE,FOOD00817 +1,,846,Wonton wrapper,,,,,846.jpg,image/jpeg,56056,2012-04-20 09:44:23 UTC,,Baking goods,Wrappers,Type 2,2011-12-20 22:08:05 UTC,2020-03-12 21:00:20 UTC,2,2,FALSE,specific,,TRUE,FOOD00818 +1,,848,Trail mix,,"Trail mix is a combination of dried fruit, grains, nuts, and sometimes chocolate, developed as a snack food to be taken along on outdoor hikes. Trail mix is considered an ideal snack food for hikes, because it is tasty, lightweight, easy to store, and nutritious, providing a quick boost from the carbohydrates in the dried fruit and/or granola, and sustained energy from the mono- and polyunsaturated fats in nuts. [Wikipedia]",,Trail_mix,848.jpg,image/jpeg,128858,2012-04-20 09:39:19 UTC,,Snack foods,Snack foods,Type 2,2011-12-20 22:17:56 UTC,2019-05-14 18:05:33 UTC,2,2,FALSE,specific,,FALSE,FOOD00819 +1,,850,Fruit-flavor drink,,,,,850.jpg,image/jpeg,39730,2012-04-20 09:36:51 UTC,,Beverages,Other beverages,Type 2,2011-12-20 23:40:06 UTC,2019-05-14 18:05:33 UTC,2,2,FALSE,specific,,FALSE,FOOD00821 +1,,851,Vegetable juice,,"Vegetable juice is a drink made primarily of blended vegetables. Vegetable juice is often mixed with fruits such as tomatoes or grapes to improve flavor. It is often touted as a low-sugar alternative to fruit juice, although some commercial brands of vegetable juices use fruit juices as sweeteners, and may contain large amounts of sodium.",,Vegetable juice,851.jpg,image/jpeg,134878,2012-04-20 09:32:02 UTC,,Beverages,Other beverages,Type 2,2011-12-21 00:03:05 UTC,2019-05-14 18:05:33 UTC,2,2,FALSE,specific,,TRUE,FOOD00822 +1,,852,Horchata,,"Horchata is the name of several kinds of traditional beverages, made of ground almonds, sesame seeds, rice, barley, or tigernuts (chufas). [Wikipedia]",,Horchata,852.jpg,image/jpeg,69507,2012-04-20 09:39:42 UTC,,Beverages,Other beverages,Type 2,2011-12-21 00:07:18 UTC,2019-05-14 18:05:34 UTC,2,2,FALSE,specific,,FALSE,FOOD00823 +1,,853,Soft drink,,"A soft drink (also called a soda, pop, coke, soda pop, fizzy drink, tonic, or carbonated beverage) is a non-alcoholic beverage that typically contains water (often, but not always carbonated water), a sweetener, and a flavoring agent. The sweetener may be sugar, high-fructose corn syrup, or a sugar substitute (in the case of diet drinks). A soft drink may also contain caffeine, fruit juice, or both. Widely sold soft drink flavors are cola, lemon-lime, root beer, orange, grape, vanilla, ginger ale, fruit punch, and sparkling lemonade. Soft drinks may be served chilled or at room temperature. They are rarely heated. [Wikipedia]",,Soft_drink,853.jpg,image/jpeg,22832,2012-04-20 09:33:45 UTC,,Beverages,Other beverages,Type 2,2011-12-21 00:10:20 UTC,2019-05-14 18:05:34 UTC,2,2,FALSE,specific,,FALSE,FOOD00824 +1,,854,Frozen yogurt,,"Frozen yogurt (also known as frozen yoghurt or by the tradenames FroYo and Frogurt) is a frozen dessert containing yogurt or other dairy products. It is slightly more tart than ice cream, as well as lower in fat (due to the use of milk instead of cream). Frozen yogurt usually consists of milk solids, some kind of sweetener, milk fat, yogurt culture, coloring, and flavoring. Frozen yogurt has come to be used much like ice cream, and is served in a wide variety of flavors and styles. [Wikipedia]",,Frozen_yogurt,854.jpg,image/jpeg,34879,2012-04-20 09:43:53 UTC,,Confectioneries,Frozen desserts,Type 2,2011-12-21 00:30:57 UTC,2019-05-14 18:05:34 UTC,2,2,FALSE,specific,,FALSE,FOOD00825 +1,,855,Milkshake,,"A milkshake is a sweet, cold beverage which is made from milk, ice cream or iced milk, and flavorings or sweeteners such as fruit syrup or chocolate sauce. Outside the United States, the drink is sometimes called a thick shake or a thick milkshake, to differentiate it from other less-viscous forms of flavored milk. [Wikipedia]",,Milkshake,855.jpg,image/jpeg,27090,2012-04-20 09:33:56 UTC,,Confectioneries,Frozen desserts,Type 2,2011-12-21 00:44:39 UTC,2019-05-14 18:05:34 UTC,2,2,FALSE,specific,,FALSE,FOOD00826 +1,,856,Chocolate mousse,,"A mousse is a prepared food that incorporates air bubbles to give it a light and airy texture. It can range from light and fluffy to creamy and thick, depending on preparation techniques. A mousse may be sweet or savory. Dessert mousses are typically made with whipped egg whites or whipped cream, and generally flavored with chocolate or puréed fruit. For savory mousse, hard boiled egg, fish or liver may be used.",,Mousse,856.jpg,image/jpeg,36326,2012-04-20 09:44:05 UTC,,Confectioneries,Desserts,Type 2,2011-12-21 01:01:29 UTC,2019-05-14 18:05:34 UTC,2,2,FALSE,specific,,FALSE,FOOD00827 +1,,857,Dripping,,"Dripping, also known usually as beef dripping or more rarely as pork dripping, is an animal fat produced from the fatty or otherwise unusable parts of cow or pig carcasses. It is similar to lard and tallow although tallow is an unacceptable flavor for shortening or cooking generally. It is used for cooking, especially in British cuisine, significantly so in Northern England, though towards the end of the 20th century dripping fell out of favor due to it being regarded as less healthy than vegetable oils such as olive or sunflower. [Wikipedia]",,Dripping,857.jpg,image/jpeg,21805,2012-04-20 09:36:35 UTC,,Fats and oils,Animal fats,Type 2,2011-12-21 01:10:21 UTC,2019-05-14 18:05:34 UTC,2,2,FALSE,specific,,FALSE,FOOD00828 +1,,858,Pupusa,,"A pupusa (from Pipil pupusaw) is a traditional Salvadoran dish made of thick, hand-made corn tortilla that is usually filled with a blend of the following: cheese, cooked pork meat ground to a paste consistency, refried beans, or queso con loroco (loroco is a vine flower bud from Central America). Pupusas are typically served with curtido (lightly fermented cabbage slaw with red chilies and vinegar) and a watery tomato salsa. [Wikipedia]",,Pupusa,858.jpg,image/jpeg,58593,2012-04-20 09:35:46 UTC,,Dishes,Latin American cuisine,Type 2,2011-12-21 01:36:53 UTC,2019-05-14 18:05:34 UTC,2,2,FALSE,specific,,FALSE,FOOD00829 +1,,859,Empanada,,"An empanada is a stuffed bread or pastry baked or fried in many countries in Latin America, Southern Europe and parts of Southeast Asia. The name comes from the verb empanar, meaning to wrap or coat in bread. Empanada is made by folding a dough or bread patty around the stuffing. The stuffing can consist of a variety of meats, cheese, huitlacoche, vegetables or fruits among others. [Wikipedia]",,Empanada,859.jpg,image/jpeg,56332,2012-04-20 09:30:50 UTC,,Dishes,Latin American cuisine,Type 2,2011-12-21 01:40:47 UTC,2019-05-14 18:05:34 UTC,2,2,FALSE,specific,,FALSE,FOOD00830 +1,,860,Arepa,,"An arepa is a dish made of ground corn dough or cooked flour, popular in Colombia, Venezuela and other Spanish-speaking countries. It is similar in shape to the Salvadoran pupusa. Arepas can also be found in Panama, Puerto Rico and the Canary Islands. [Wikipedia]",,Arepa,860.jpg,image/jpeg,97920,2012-04-20 09:42:19 UTC,,Dishes,Latin American cuisine,Type 2,2011-12-21 01:43:07 UTC,2019-05-14 18:05:34 UTC,2,2,FALSE,specific,,FALSE,FOOD00831 +1,,862,Gefilte fish,,"Gefilte fish is a Ashkenazi Jewish dish made from a poached mixture of ground deboned fish, such as carp, whitefish and/or pike, which is typically eaten as an appetizer. [Wikipedia]",,Gefilte_fish,862.jpg,image/jpeg,92690,2012-04-20 09:38:57 UTC,,Dishes,Jewish cuisine,Type 2,2011-12-21 01:53:28 UTC,2019-05-14 18:05:34 UTC,2,2,FALSE,specific,,FALSE,FOOD00833 +1,,864,Fish burger,,,,Filet-O-Fish,864.jpg,image/jpeg,113035,2012-04-20 09:29:40 UTC,,Dishes,Sandwiches,Type 2,2011-12-21 02:03:28 UTC,2019-05-14 18:05:34 UTC,2,2,FALSE,specific,,FALSE,FOOD00835 +1,,865,Other dish,,,,,865.jpg,image/jpeg,153866,2012-04-20 09:35:53 UTC,,Dishes,Other dishes,Type 2,2011-12-21 02:21:44 UTC,2019-05-14 18:05:34 UTC,2,2,FALSE,specific,,FALSE,FOOD00836 +1,,866,Pot pie,,"A pot pie is a type of baked savory pie with a bottom and top completely encased by flaky crusts and baked inside a pie tin to support its shape. An American pot pie typically has a filling of meat (particularly beef, chicken or turkey), gravy, and mixed vegetables (potatoes, carrots, green beans and peas). Frozen pot pies are often available in individual serving size. [Wikipedia]",,Pot_pie,866.jpg,image/jpeg,72437,2012-04-20 09:44:06 UTC,,Dishes,Other dishes,Type 2,2011-12-21 02:23:44 UTC,2019-05-14 18:05:34 UTC,2,2,FALSE,specific,,FALSE,FOOD00837 +1,,867,Stuffing,,"In cooking, stuffing or filling (specifically for poultry) is an edible substance or mixture, often a starch, used to fill a cavity in another food item. Many foods may be stuffed, including meats, vegetables, egg, and fruits. Turkey stuffing usually consists of bread crumbs or cubes, dried bread, with onion, celery, salt, pepper, and other spices and herbs such as summer savoury, sage, or a mixture like poultry seasoning. [Wikipedia]",,Stuffing,867.jpg,image/jpeg,78211,2012-04-20 09:39:20 UTC,,Baking goods,Baking goods,Type 2,2011-12-21 02:37:46 UTC,2019-05-14 18:05:34 UTC,2,2,FALSE,specific,,FALSE,FOOD00838 +1,,868,Edible shell,,,,,868.jpg,image/jpeg,51634,2012-04-20 09:39:05 UTC,,Baking goods,Wrappers,Type 2,2011-12-21 02:40:48 UTC,2019-05-14 18:05:34 UTC,2,2,FALSE,specific,,FALSE,FOOD00839 +1,,869,Fudge,,"Fudge is a type of Western confectionery which is usually very sweet, and extremely rich. It is made by mixing sugar, butter, and milk and heating it to the soft-ball stage at 240 °F (116 °C), and then beating the mixture while it cools so that it acquires a smooth, creamy consistency. Many variations with other flavourings added are possible. [Wikipedia]",,Fudge,869.jpg,image/jpeg,131762,2012-04-20 09:34:17 UTC,,Confectioneries,Candies,Type 2,2011-12-22 17:16:07 UTC,2019-05-14 18:05:34 UTC,2,2,FALSE,specific,,FALSE,FOOD00840 +1,,870,Candy bar,,"A candy bar (called a chocolate bar in Australian English, British English, Canadian English, Indian English, Irish English, New Zealand English and South African English) is a form of confectionery usually packaged in a bar or log form, often coated with chocolate, and sized as a snack for one person. But within that term, a wide variety of products exists, ranging from solid chocolate bars to multiple layerings or mixtures of ingredients such as nuts, fruit, caramel or fondant containing no chocolate. [Wikipedia]",,Chocolate_bar,870.jpg,image/jpeg,37059,2012-04-20 09:40:24 UTC,,Confectioneries,Candies,Type 2,2011-12-22 17:19:13 UTC,2019-05-14 18:05:34 UTC,2,2,FALSE,specific,,FALSE,FOOD00841 +1,,871,Condensed milk,,"Condensed milk is cow's milk from which water has been removed. It is most often found in the form of sweetened condensed milk, with sugar added, and the two terms 'condensed milk' and 'sweetened condensed milk' are often used synonymously. Condensed milk is used in numerous dessert dishes in many countries. A related product is evaporated milk, which has undergone a more complex process and which is not sweetened. [Wikipedia]",,Condensed_milk,871.jpg,image/jpeg,29385,2012-04-20 09:30:31 UTC,,Milk and milk products,Other milk products,Type 2,2011-12-22 19:16:21 UTC,2019-05-14 18:05:34 UTC,2,2,FALSE,specific,,TRUE,FOOD00842 +1,,872,Margarine,,"Margarine can indicate any of a wide range of butter or butter substitutes, typically composed of vegetable oils. Specifically the principle difference between butter and margarine is that butter is derived from animal fats (typically milk fats) while margarine is derived from plant fats (oils) and skim milk. [Wikipedia]",,Margarine,872.jpg,image/jpeg,44069,2012-04-20 09:32:06 UTC,,Fats and oils,Vegetable fats,Type 2,2011-12-22 19:24:42 UTC,2019-05-14 18:05:34 UTC,2,2,FALSE,specific,,TRUE,FOOD00843 +1,,873,Margarine-like spread,,,,,873.jpg,image/jpeg,42021,2012-04-20 09:43:45 UTC,,Fats and oils,Vegetable fats,Type 2,2011-12-22 20:08:42 UTC,2019-05-14 18:05:35 UTC,2,2,FALSE,specific,,TRUE,FOOD00844 +1,,874,Hummus,,"Hummus is a Levantine Arab food dip or spread made from cooked, mashed chickpeas, blended with tahini, olive oil, lemon juice, salt and garlic. Hummus is high in iron and vitamin C and also has significant amounts of folate and vitamin B6. The chickpeas make it a good source of protein and dietary fiber; the tahini consists mostly of sesame seeds, which are an excellent source of the amino acid methionine, complementing the proteins in the chickpeas. [Wikipedia]",,Hummus,874.jpg,image/jpeg,359425,2012-04-20 09:43:39 UTC,,Dishes,Levantine cuisine,Type 2,2011-12-22 20:24:32 UTC,2019-05-14 18:05:35 UTC,2,2,FALSE,specific,,FALSE,FOOD00845 +1,,876,Potato puffs,,,,,876.jpg,image/jpeg,21111,2012-04-20 09:44:18 UTC,,Dishes,Potato dishes,Type 2,2011-12-22 22:10:27 UTC,2019-05-14 18:05:35 UTC,2,2,FALSE,specific,,FALSE,FOOD00846 +1,,877,Potato gratin,,"Gratin is a widespread culinary technique in food preparation in which an ingredient is topped with a browned crust, often using breadcrumbs, grated cheese, egg and/or butter. Gratin originated in French cuisine and is usually prepared in a shallow dish of some kind. A gratin is baked or cooked under an overhead grill or broiler to form a golden crust on top and is traditionally served in its baking dish. A gratin dish refers to the shallow oven-proof container traditionally used to prepare gratins and similar dishes.",,Gratin,877.jpg,image/jpeg,97519,2012-04-20 09:33:53 UTC,,Dishes,Potato dishes,Type 2,2011-12-22 22:11:44 UTC,2019-05-14 18:05:35 UTC,2,2,FALSE,specific,,FALSE,FOOD00847 +1,,878,Milk substitute,,"A milk substitute is a liquid that replaces milk in a diet or recipe. This overlaps with but is distinct from the group of milk-like liquids called """"milks"""" because of their similarity to the liquid produced by mammary glands. +Lactose intolerance or a milk allergy can prompt the use of milk substitutes; they are also commonly consumed by vegans. Some milk substitutes are marketed to consumers as being more healthy than cow's milk, by being lower in saturated fat and for not containing cholesterol. When milk substitutes are lacking in vitamins or dietary minerals present in milk (such as vitamin B12 or calcium), they are sometimes fortified. +The two most common categories of milk substitutes are grain milk and plant milk. The most common grain milk is rice milk, while the most common plant milk is soy milk. Other examples include hemp milk, coconut milk, almond milk, and peanut milk. Gluten-Free Milk substitutes are also available.",,Milk_substitute,878.jpg,image/jpeg,42023,2012-04-20 09:34:20 UTC,,Baking goods,Substitutes,Type 2,2011-12-22 22:26:59 UTC,2019-05-14 18:05:35 UTC,2,2,FALSE,specific,,FALSE,FOOD00848 +1,,883,Mushrooms,,"A mushroom (or toadstool) is the fleshy, spore-bearing fruiting body of a fungus, typically produced above ground on soil or on its food source. The standard for the name """"mushroom"""" is the cultivated white button mushroom, Agaricus bisporus; hence the word """"mushroom"""" is most often applied to those fungi (Basidiomycota, Agaricomycetes) that have a stem (stipe), a cap (pileus), and gills (lamellae, sing. lamella) or pores on the underside of the cap. These pores or gills produce microscopic spores that help the fungus spread across the ground or its occupant surface. +""""Mushroom"""" describes a variety of gilled fungi, with or without stems, and the term is used even more generally, to describe both the fleshy fruiting bodies of some Ascomycota and the woody or leathery fruiting bodies of some Basidiomycota, depending upon the context of the word. +Forms deviating from the standard morphology usually have more specific names, such as """"puffball"""", """"stinkhorn"""", and """"morel"""", and gilled mushrooms themselves are often called """"agarics"""" in reference to their similarity to Agaricus or their place Agaricales. By extension, the term """"mushroom"""" can also designate the entire fungus when in culture; the thallus (called a mycelium) of species forming the fruiting bodies called mushrooms; or the species itself.",,Mushrooms,,,,,,Vegetables,Mushrooms,Unknown,2012-09-11 14:51:43 UTC,2019-12-11 19:38:40 UTC,2,2,FALSE,generic,,FALSE,FOOD00853 +1,,884,Alcoholic beverages,,"An alcoholic beverage is a drink that typically contains 3% ? 40% ethanol (commonly called alcohol). Alcoholic beverages are divided into three classes: beers, wines, and spirits (distilled beverages). They are legally consumed in most countries around the world. More than 100 countries have laws regulating their production, sale, and consumption.",,Alcoholic_beverages,,,,,,Beverages,Alcoholic beverages,Unknown,2012-09-11 14:54:38 UTC,2019-12-11 19:38:46 UTC,2,2,FALSE,generic,,FALSE,FOOD00854 +1,,885,Onion-family vegetables,,,,,,,,,,Vegetables,Onion-family vegetables,Unknown,2012-09-11 14:56:18 UTC,2019-12-11 19:38:51 UTC,2,2,FALSE,generic,,FALSE,FOOD00855 +1,,886,Pomes,,"In botany, a pome (after the Latin word for fruit: p?mum) is a type of fruit produced by flowering plants in the subtribe Malinae of the family Rosaceae. +A pome is an accessory fruit composed of one or more carpels surrounded by accessory tissue. The accessory tissue is interpreted by some specialists as an extension of the receptacle and is then referred to as """"fruit cortex"""", and by others as a fused hypanthium or """"torus""""; it is the most edible part of this fruit. +The carpels of a pome are fused within the """"core"""". Although the exocarp, mesocarp, and endocarp of some other fruit types look very much like the skin, flesh, and core respectively of a pome, they are parts of the carpel. The exocarp and mesocarp of a pome may be fleshy and difficult to distinguish from one another and from the hypanthial tissue. The endocarp forms a leathery or stony case around the seed, and corresponds to what is commonly called the core. The shriveled remains of the sepals, style and stamens can sometimes be seen at the end of a pome opposite the stem, and the ovary is therefore often described as inferior in these flowers.",,Pomes,,,,,,Fruits,Pomes,Unknown,2012-09-11 14:58:51 UTC,2019-12-11 19:39:11 UTC,2,2,FALSE,generic,,FALSE,FOOD00856 +1,,888,Cereals and cereal products,,,,,,,,,,Cereals and cereal products,Cereals and cereal products,Unknown,2012-09-11 15:03:19 UTC,2019-12-11 19:39:32 UTC,2,2,FALSE,generic,,FALSE,FOOD00858 +1,,889,Citrus,,"Citrus is a common term and genus (Citrus) of flowering plants in the rue family, Rutaceae. The most recent research indicates an origin in Australia, New Caledonia and New Guinea. Some researchers believe that the origin is in the part of Southeast Asia bordered by Northeast India, Burma (Myanmar) and the Yunnan province of China, and it is in this region that some commercial species such as oranges, mandarins, and lemons originally came. Citrus fruit has been cultivated in an ever-widening area since ancient times; the best-known examples are the oranges, lemons, grapefruit, and limes. +The generic name originated in Latin, where it specifically referred to the plant now known as Citron (C. medica). It was derived from the ancient Greek word for cedar, ?????? (kédros). Some believe this was because Hellenistic Jews used the fruits of C. medica during Sukkot (Feast of the Tabernacles) in place of a cedar cone, while others state it was due to similarities in the smell of citrus leaves and fruit with that of cedar. Collectively, Citrus fruits and plants are also known by the Romance loanword agrumes (literally """"sour fruits"""").",28882,Citrus,,,,,,Fruits,Citrus,Unknown,2012-09-11 15:04:38 UTC,2019-12-11 19:39:47 UTC,2,2,FALSE,generic,,FALSE,FOOD00859 +1,,890,Cocoa and cocoa products,,,,,,,,,,Cocoa and cocoa products,Cocoa and cocoa products,Unknown,2012-09-11 15:06:32 UTC,2019-12-11 19:39:56 UTC,2,2,FALSE,generic,,FALSE,FOOD00860 +1,,891,Coffee and coffee products,,,,,,,,,,Coffee and coffee products,Coffee and coffee products,Unknown,2012-09-11 15:07:57 UTC,2019-12-11 19:39:59 UTC,2,2,FALSE,generic,,FALSE,FOOD00861 +1,,893,Milk and milk products,,"A dairy product is food produced from the milk of mammals. Dairy products are usually high energy-yielding food products. A production plant for the processing of milk is called a dairy or a dairy factory. Apart from breastfed infants, the human consumption of dairy products is sourced primarily from the milk of cows, yet goats, sheep, yaks, horses, camels, and other mammals are other sources of dairy products consumed by humans. Dairy products are commonly found in European, Middle Eastern, and Indian cuisine, whereas aside from Mongolian cuisine they are little-known in traditional Asian cuisine.",,Dairy_product,,,,,,Milk and milk products,Milk and milk products,Unknown,2012-09-11 15:10:31 UTC,2019-12-11 19:40:06 UTC,2,2,FALSE,generic,,FALSE,FOOD00863 +1,,894,Fats and oils,,"Fats are a wide group of compounds that are generally soluble in organic solvents and generally insoluble in water. Chemically, fats are triglycerides: triesters of glycerol and any of several fatty acids. Fats may be either solid or liquid at room temperature, depending on their structure and composition. Although the words """"oils"""", """"fats"""", and """"lipids"""" are all used to refer to fats, in reality, fat is a subset of lipid. """"Oils"""" is usually used to refer to fats that are liquids at normal room temperature, while """"fats"""" is usually used to refer to fats that are solids at normal room temperature. """"Lipids"""" is used to refer to both liquid and solid fats, along with other related substances, usually in a medical or biochemical context, which are not soluble in water. The word """"oil"""" is also used for any substance that does not mix with water and has a greasy feel, such as petroleum (crude oil), heating oil, and essential oils, regardless of its chemical structure. +Fats form a category of lipid, distinguished from other lipids by their chemical structure and physical properties. This category of molecules is important for many forms of life, serving both structural and metabolic functions. They are an important part of the diet of most heterotrophs (including humans). Fats or lipids are broken down in the body by enzymes called lipases produced in the pancreas. +Examples of edible animal fats are lard, fish oil, butter/ghee and whale blubber. They are obtained from fats in the milk and meat, as well as from under the skin, of an animal. Examples of edible plant fats include peanut, soya bean, sunflower, sesame, coconut and olive oils, and cocoa butter. Vegetable shortening, used mainly for baking, and margarine, used in baking and as a spread, can be derived from the above oils by hydrogenation.",,Fats_and_oils,,,,,,Fats and oils,Fats and oils,Unknown,2012-09-11 15:11:54 UTC,2019-12-11 19:40:09 UTC,2,2,FALSE,generic,,FALSE,FOOD00864 +1,,896,Fishes,,"A fish is any member of a paraphyletic group of organisms that consist of all gill-bearing aquatic craniate animals that lack limbs with digits. Included in this definition are the living hagfish, lampreys, and cartilaginous and bony fish, as well as various extinct related groups. Most fish are ectothermic (""""cold-blooded""""), allowing their body temperatures to vary as ambient temperatures change, though some of the large active swimmers like white shark and tuna can hold a higher core temperature. Fish are abundant in most bodies of water. They can be found in nearly all aquatic environments, from high mountain streams (e.g., char and gudgeon) to the abyssal and even hadal depths of the deepest oceans (e.g., gulpers and anglerfish). At 32,000 species, fish exhibit greater species diversity than any other group of vertebrates. +Fish are an important resource for humans worldwide, especially as food. Commercial and subsistence fishers hunt fish in wild fisheries (see fishing) or farm them in ponds or in cages in the ocean (see aquaculture). They are also caught by recreational fishers, kept as pets, raised by fishkeepers, and exhibited in public aquaria. Fish have had a role in culture through the ages, serving as deities, religious symbols, and as the subjects of art, books and movies.",,Fishes,,,,,,Aquatic foods,Fishes,Unknown,2012-09-11 15:15:49 UTC,2019-12-11 19:40:14 UTC,2,2,FALSE,generic,,FALSE,FOOD00865 +1,,897,Herbs and Spices,,,,,,,,,,Herbs and Spices,Herbs and Spices,Unknown,2012-09-11 15:17:28 UTC,2019-12-11 19:40:17 UTC,2,2,FALSE,generic,,FALSE,FOOD00866 +1,,898,Pulses,,"A pulse (Latin """"puls"""", from Ancient Greek πόλτος póltos, “porridge”), sometimes called a """"grain legume"""", is an annual leguminous crop yielding from one to twelve seeds of variable size, shape, and color within a pod. Pulses are used for food for humans and other animals. Included in the pulses are: dry beans like pinto beans, kidney beans and navy beans; dry peas; lentils; and others. +Like many leguminous crops, pulses play a key role in crop rotation due to their ability to fix nitrogen. To support the awareness on this matter, the United Nations declared 2016 the UN International Year of Pulses. +The words """"bean"""", """"lentil"""", and """"pulse"""" may refer to just the seed or to the entire plant.",,Pulse_(legume),,,,,,Pulses,Pulses,Unknown,2012-09-11 15:18:21 UTC,2019-12-11 19:40:32 UTC,2,2,FALSE,generic,,FALSE,FOOD00867 +1,,901,Nuts,,"A nut is defined botanically as a fruit composed of a hard shell and a seed, where the hard-shelled fruit does not open to release the seed (indehiscent). In a culinary context, a wide variety of dried seeds are often called nuts, but in a botanical context, only ones that include the indehiscent fruit are considered true nuts. +Most seeds come from fruits that naturally free themselves from the shell, unlike nuts such as hazelnuts, chestnuts, and acorns, which have hard shell walls and originate from a compound ovary. Culinary usage of the term is less restrictive, and some nuts as defined in food preparation, like almonds, pecans, pistachios, walnuts, and Brazil nuts, are not nuts in a botanical sense. Common usage of the term often refers to any hard-walled, edible kernel as a nut.",,Nut_(fruit),,,,,,Nuts,Nuts,Unknown,2012-09-11 15:21:27 UTC,2019-12-11 19:40:45 UTC,2,2,FALSE,generic,,FALSE,FOOD00869 +1,,902,Beverages,,"Drinks, or beverages, are liquids specifically prepared for human consumption. In addition to basic needs, beverages form part of the culture of human society. Despite the fact that most beverages, including juice, soft drinks, and carbonated drinks, have some form of water in them; water itself is often not classified as a beverage, and the word beverage has been recurrently defined as not referring to water. +An alcoholic beverage is a drink containing ethanol, commonly known as alcohol, although in chemistry the definition of an alcohol includes many other compounds. Alcoholic beverages, such as wine, beer, and liquor have been part of human culture and development for 8,000 years. +Non-alcoholic beverages often signify drinks that would normally contain alcohol, such as beer and wine but are made with less than .5 percent alcohol by volume. The category includes drinks that have undergone an alcohol removal process such as non-alcoholic beers and de-alcoholized wines.",,Beverages,,,,,,Beverages,Beverages,Unknown,2012-09-11 15:25:20 UTC,2019-12-11 19:40:53 UTC,2,2,FALSE,generic,,FALSE,FOOD00870 +1,,903,Fruits,,"In botany, a fruit is a part of a flowering plant that derives from specific tissues of the flower, one or more ovaries, and in some cases accessory tissues. Fruits are the means by which these plants disseminate seeds. Many of them that bear edible fruits, in particular, have propagated with the movements of humans and animals in a symbiotic relationship as a means for seed dispersal and nutrition, respectively; in fact, humans and many animals have become dependent on fruits as a source of food. Fruits account for a substantial fraction of the world's agricultural output, and some (such as the apple and the pomegranate) have acquired extensive cultural and symbolic meanings. +In common language usage, """"fruit"""" normally means the fleshy seed-associated structures of a plant that are sweet or sour and edible in the raw state, such as apples, oranges, grapes, strawberries, bananas, and lemons. On the other hand, the botanical sense of """"fruit"""" includes many structures that are not commonly called """"fruits"""", such as bean pods, corn kernels, wheat grains, and tomatoes. +The section of a fungus that produces spores is also called a fruiting body.",,Fruits,,,,,,Fruits,Fruits,Unknown,2012-09-11 15:27:05 UTC,2019-12-11 19:40:57 UTC,2,2,FALSE,generic,,FALSE,FOOD00871 +1,,904,Green vegetables,,"Leaf vegetables, also called potherbs, greens, vegetable greens, leafy greens or salad greens, are plant leaves eaten as a vegetable, sometimes accompanied by tender petioles and shoots. Although they come from a very wide variety of plants, most share a great deal with other leaf vegetables in nutrition and cooking methods. +Nearly one thousand species of plants with edible leaves are known. Leaf vegetables most often come from short-lived herbaceous plants such as lettuce and spinach. Woody plants whose leaves can be eaten as leaf vegetables include Adansonia, Aralia, Moringa, Morus, and Toona species. +The leaves of many fodder crops are also edible by humans, but usually only eaten under famine conditions. Examples include alfalfa, clover, and most grasses, including wheat and barley. These plants are often much more prolific than more traditional leaf vegetables, but exploitation of their rich nutrition is difficult, primarily because of their high fiber content. This obstacle can be overcome by further processing such as drying and grinding into powder or pulping and pressing for juice. +Leaf vegetables contain many typical plant nutrients, but since they are photosynthetic tissues, their vitamin K levels in relation to those of other fruits and vegetables, as well as other types of foods, is particularly notable. The reason is that phylloquinone, the most common form of the vitamin, is directly involved in photosynthesis. This causes leaf vegetables to be the primary food class that interacts significantly with the anticoagulant pharmaceutical warfarin.",,Green_vegetables,,,,,,Vegetables,Green vegetables,Unknown,2012-09-11 15:28:06 UTC,2019-12-11 19:41:16 UTC,2,2,FALSE,generic,,FALSE,FOOD00872 +1,,905,Root vegetables,,"Root vegetables are plant roots used as vegetables. Here """"root"""" means any underground part of a plant. +Root vegetables are generally storage organs, enlarged to store energy in the form of carbohydrates. They differ in the concentration and the balance between sugars, starches, and other types of carbohydrate. Of particular economic importance are those with a high carbohydrate concentration in the form of starch. Starchy root vegetables are important staple foods, particularly in tropical regions, overshadowing cereals throughout much of West Africa, Central Africa, and Oceania, where they are used directly or mashed to make fufu or poi. +Botany distinguishes true roots such as tuberous roots and taproots from non-roots such as tubers, rhizomes, corms, and bulbs, though some contain both taproot and hypocotyl tissue, making it difficult to tell some types apart. In ordinary, agricultural, and culinary use, """"root vegetable"""" can apply to all these types.",,Root_vegetables,,,,,,Vegetables,Root vegetables,Unknown,2012-09-11 15:29:35 UTC,2019-12-11 19:41:44 UTC,2,2,FALSE,generic,,FALSE,FOOD00873 +0,3663,906,Sunburst squash (pattypan squash),Cucurbita pepo var. clypeata,"Pattypan squash is a variety of summer squash (Cucurbita pepo) notable for its small size, round and shallow shape, and scalloped edges, somewhat resembling a small toy top, or flying saucer. The name """"pattypan"""" derives from """"a pan for baking a patty"""". Its French name, pâtisson, derives from a Provençal word for a cake made in a scalloped mould. The pattypan squash is also known as scallop squash, sunburst squash, granny squash, custard marrow, custard squash, cibleme in Cajun French, white squash, scallopini or simply """"squash"""" in Australian English, or schwoughksie squash (pronounced """"shwooxie squash""""), especially if grown in the Poughkeepsie, New York, area. (Wikipedia)",,Pattypan squash,PetitPanSquash.jpg,image/jpeg,285159,2015-02-26 17:41:14 UTC,,Gourds,Gourds,Type 1,2015-02-26 17:41:15 UTC,2019-05-14 18:05:36 UTC,,,TRUE,specific,,TRUE,FOOD00874 +0,3663,907,Green zucchini,Cucurbita pepo var. cylindrica,"Zucchini or courgette is a summer squash which can reach nearly a meter in length, but which is usually harvested at half that size or less. Along with certain other squashes and pumpkins, it belongs to the species Cucurbita pepo. Zucchini can be dark or light green. A related hybrid, the golden zucchini, is a deep yellow or orange color. In a culinary context, zucchini is treated as a vegetable; it is usually cooked and presented as a savory dish or accompaniment. Botanically, however, zucchini is a fruit, being the swollen ovary of the zucchini flower. Zucchini, like all squash, has its ancestry in the Americas. However, the varieties of squash typically called """"zucchini"""" were developed in Italy, many generations after their introduction from the Americas. (Wikipedia)",,Zucchini,1200px-CSA-Striped-Zucchini.jpg,image/jpeg,120301,2015-02-26 17:52:13 UTC,,Gourds,Gourds,Type 1,2015-02-26 17:52:13 UTC,2019-05-14 18:05:36 UTC,,,TRUE,specific,,TRUE,FOOD00875 +0,3663,908,Yellow zucchini,Cucurbita pepo var. cylindrica,"Zucchini or courgette is a summer squash which can reach nearly a meter in length, but which is usually harvested at half that size or less. Along with certain other squashes and pumpkins, it belongs to the species Cucurbita pepo. (Wikipedia) Yellow zucchini, or golden zucchini, was developed by the W. Atlee Burpee Seed Company from a Fordhook Zucchini crossed with a Bicolored Gourd and released in 1973 (http://www.cooksinfo.com/burpee-golden-zucchini). It is said to have a distinctive flavour that is somewhat sweeter than green zucchini.",,,e33ef9656c74fba63c2d88e618456067.jpg,image/jpeg,41498,2015-02-26 18:11:44 UTC,,Gourds,Gourds,Type 1,2015-02-26 18:11:44 UTC,2019-05-14 18:05:36 UTC,,,TRUE,specific,,TRUE,FOOD00876 +0,3716,919,White cabbage,Brassica oleracea L. var. capitata L. f. alba DC.,"Cabbage (Brassica oleracea or variants) is a leafy green or purple biennial plant, grown as an annual vegetable crop for its dense-leaved heads. Closely related to other cole crops, such as broccoli, cauliflower, and brussels sprouts, it descends from B. oleracea var. oleracea, a wild field cabbage. Cabbage heads generally range from 0.5 to 4 kilograms (1 to 9 lb), and can be green, purple and white. Smooth-leafed firm-headed green cabbages are the most common, with smooth-leafed red and crinkle-leafed savoy cabbages of both colors seen more rarely. It is a multi-layered vegetable. Under conditions of long sunlit days such as are found at high northern latitudes in summer, cabbages can grow much larger. (Wikipedia)",526962,Cabbage,1200px-Cabbage_and_cross_section_on_white.jpg,image/jpeg,156948,2015-02-27 17:39:22 UTC,,Vegetables,Cabbages,Type 1,2015-02-27 17:39:23 UTC,2019-05-14 18:05:36 UTC,,,TRUE,specific,,TRUE,FOOD00887 +0,1759395,920,Romaine lettuce,Lactuca sativa L. var. longifolia,"Romaine or cos lettuce is a variety of lettuce (Lactuca sativa L. var. longifolia) that grows in a tall head of sturdy leaves with firm ribs down their centers. Unlike most lettuces, it is tolerant of heat. As with other dark leafy greens, the antioxidants contained within romaine lettuce are believed to help prevent cancer. (Wikipedia)",,Romaine lettuce,1200px-Starr_070730-7911_Lactuca_sativa.jpg,image/jpeg,204887,2015-02-27 17:53:43 UTC,,Vegetables,Leaf vegetables,Type 1,2015-02-27 17:53:44 UTC,2019-05-14 18:05:36 UTC,,,TRUE,specific,,TRUE,FOOD00888 +0,9913,921,"Cow milk, pasteurized, vitamin A + D added, 0% fat",,"As an agricultural product, milk is extracted from mammals during or soon after pregnancy and used as food for humans. Worldwide, dairy farms produced about 730 million tonnes of milk in 2011, from 260 million dairy cows. India is the world's largest producer and consumer of milk, yet neither exports nor imports milk. New Zealand, the European Union's 28 member states, Australia, and the United States are the world's largest exporters of milk and milk products. China and Russia are the world's largest importers of milk and milk products. Throughout the world, there are more than 6 billion consumers of milk and milk products. Over 750 million people live within dairy farming households. Milk is a key contributor to improving nutrition and food security particularly in developing countries. Improvements in livestock and dairy technology offer significant promise in reducing poverty and malnutrition in the world.",,Milk,632.jpg,image/jpeg,68993,2015-03-10 23:09:56 UTC,,Milk and milk products,Unfermented milks,Type 2,2015-03-10 23:09:57 UTC,2019-05-14 18:05:36 UTC,,,TRUE,specific,,TRUE,FOOD00889 +0,9913,922,"Cow milk, pasteurized, vitamin A + D added, 1% fat",,"As an agricultural product, milk is extracted from mammals during or soon after pregnancy and used as food for humans. Worldwide, dairy farms produced about 730 million tonnes of milk in 2011, from 260 million dairy cows. India is the world's largest producer and consumer of milk, yet neither exports nor imports milk. New Zealand, the European Union's 28 member states, Australia, and the United States are the world's largest exporters of milk and milk products. China and Russia are the world's largest importers of milk and milk products. Throughout the world, there are more than 6 billion consumers of milk and milk products. Over 750 million people live within dairy farming households. Milk is a key contributor to improving nutrition and food security particularly in developing countries. Improvements in livestock and dairy technology offer significant promise in reducing poverty and malnutrition in the world.",,Milk,632.jpg,image/jpeg,68993,2015-03-10 23:12:09 UTC,,Milk and milk products,Unfermented milks,Type 2,2015-03-10 23:12:10 UTC,2019-05-14 18:05:37 UTC,,,TRUE,specific,,TRUE,FOOD00890 +0,9913,923,"Cow milk, pasteurized, vitamin A + D added, 2% fat",,"As an agricultural product, milk is extracted from mammals during or soon after pregnancy and used as food for humans. Worldwide, dairy farms produced about 730 million tonnes of milk in 2011, from 260 million dairy cows. India is the world's largest producer and consumer of milk, yet neither exports nor imports milk. New Zealand, the European Union's 28 member states, Australia, and the United States are the world's largest exporters of milk and milk products. China and Russia are the world's largest importers of milk and milk products. Throughout the world, there are more than 6 billion consumers of milk and milk products. Over 750 million people live within dairy farming households. Milk is a key contributor to improving nutrition and food security particularly in developing countries. Improvements in livestock and dairy technology offer significant promise in reducing poverty and malnutrition in the world.",,Milk,632.jpg,image/jpeg,68993,2015-03-10 23:13:09 UTC,,Milk and milk products,Unfermented milks,Type 2,2015-03-10 23:13:09 UTC,2019-05-14 18:05:37 UTC,,,TRUE,specific,,TRUE,FOOD00891 +0,9913,924,"Cow milk, pasteurized, vitamin D added, 3.25% fat",,"As an agricultural product, milk is extracted from mammals during or soon after pregnancy and used as food for humans. Worldwide, dairy farms produced about 730 million tonnes of milk in 2011, from 260 million dairy cows. India is the world's largest producer and consumer of milk, yet neither exports nor imports milk. New Zealand, the European Union's 28 member states, Australia, and the United States are the world's largest exporters of milk and milk products. China and Russia are the world's largest importers of milk and milk products. Throughout the world, there are more than 6 billion consumers of milk and milk products. Over 750 million people live within dairy farming households. Milk is a key contributor to improving nutrition and food security particularly in developing countries. Improvements in livestock and dairy technology offer significant promise in reducing poverty and malnutrition in the world.",,Milk,632.jpg,image/jpeg,68993,2015-03-10 23:13:55 UTC,,Milk and milk products,Unfermented milks,Type 2,2015-03-10 23:13:55 UTC,2019-05-14 18:05:37 UTC,,,TRUE,specific,,TRUE,FOOD00892 +0,24962,925,Castanospermum australe,Castanospermum australe,,,Castanospermum,Castanospermum_australe_flowers_and_foliage.jpg,image/jpeg,2841590,2019-04-16 22:30:54 UTC,,Vegetables,,Type 1,2019-04-16 22:30:56 UTC,2019-05-14 18:05:37 UTC,,,FALSE,,,TRUE,FOOD00893 +0,38851,926,Gentiana lutea,Gentiana lutea,,505985,Gentiana_lutea,Gelber_Enzian_(Gentiana_lutea)__Blütenstand.jpg,image/jpeg,4710037,2019-04-16 22:42:46 UTC,,Vegetables,,Type 1,2019-04-16 22:42:49 UTC,2019-05-17 16:19:47 UTC,,,FALSE,,,TRUE,FOOD00894 +0,58039,927,Juniperus communis,Juniperus communis,,194820,Juniperus_communis,JuniperusCommunisAlpina.jpg,image/jpeg,623299,2019-04-16 22:46:25 UTC,,Vegetables,,Type 1,2019-04-16 22:46:26 UTC,2019-05-17 16:19:47 UTC,,,FALSE,,,TRUE,FOOD00895 +0,1561840,928,Albizia gummifera,Albizia gummifera,,820328,Albizia_gummifera,,,,,,Vegetables,,Type 1,2019-04-16 22:47:38 UTC,2019-05-17 16:19:47 UTC,,,FALSE,,,TRUE,FOOD00896 +0,231905,929,Mundu,Garcinia dulcis,,506128,Garcinia_dulcis,,,,,,Fruits,Tropical fruits,Type 1,2019-04-16 22:51:21 UTC,2019-05-17 16:19:47 UTC,,,FALSE,,,TRUE,FOOD00897 +0,1493660,930,Rabbiteye blueberry,Vaccinium virgatum,"Vaccinium virgatum, commonly called rabbiteye blueberry, samllflower blueberry or southern black blueberry, is a species of blueberry native to the Southeastern United States, from North Carolina south to Florida and west to Texas. Rabbiteye blueberry is a deciduous shrub that can grow to 3-6 feet tall and with up to a 3-foot spread. The leaves are red-bronze in the spring and then turn into a dark-green color. The fruits are dark blue to black. The rabbiteye blueberries are edible and are used to make jams, sauces for breads, muffins, etc. Research has shown that the rabbiteye blueberry was a good source of polyphenols, anthocyanins and flavonoids, their antioxidant activity is beneficial to human health (PMID: 23268789; PMID: 29682153) [Wikipedia]",505636,Vaccinium_virgatum,Vaccinium_virgatum.jpg,image/jpeg,12395020,2019-08-21 17:44:14 UTC,,Fruits,Berries,Type 1,2019-08-21 17:34:16 UTC,2019-08-22 16:32:24 UTC,,,FALSE,specific,,TRUE,FOOD00898 +0,225117,931,Yali pear,Pyrus × bretschneideri,"Yali pear, also called Chinese White Pear, is an interspecific hybrid species of pear widely grown in northern China. It is a type of Asian pear. Unlike the European pear, firm to touch and crispy. Yali pear is juicy and slightly sweet. [Wikipedia]",,Pyrus_×_bretschneideri,yali.jpg,image/jpeg,483996,2019-08-22 16:41:10 UTC,,Fruits,Pomes,Type 1,2019-08-22 16:41:11 UTC,2020-03-12 21:00:53 UTC,,,FALSE,specific,,TRUE,FOOD00899 +0,272846,932,Asparagus racemosus,Asparagus racemosus,"Asparagus racemosus, also called Shatavari, is a flowering perennial plant species in the genus Asparagus commonly found in Nepal, Sri Lanka, India and the Himalayas. Its extracts from the roots are used in traditional Ayurvedic medicine in India to treat various hormonal and reproductive tissues in women, and gastric ulcers and loss of appetite as well. However, only few studies support the effect of Shatavari on our health. Due to the destructive harvesting, habitat destruction and deforestation, Ayurvedic is now endangered in its natural habitat. [Wikipedia]",,Asparagus_racemosus,asparagus_racemosus.jpg,image/jpeg,567407,2019-08-22 16:41:11 UTC,,Vegetables,Shoot vegetables,Type 1,2019-08-22 16:41:12 UTC,2019-08-22 16:41:12 UTC,,,FALSE,specific,,FALSE,FOOD00900 +0,1546436,933,Evergreen blackberry,Rubus laciniatus,"Rubus laciniatus, commonly called evergreen blackberry or cutleaf blackberry, is a species of blackberry that is native to Eurasia. It has been introduced to Australia and North America, and become a weed and highly invasive species in forested habitats in the United States and Canada, it is very difficult to control. Evergreen blackberry is a deciduous shrub that grows up to 3 meters tall with prickly shoots. The flowers are in clusters, the petals are pink or white. The fruits are shiny and black, similar to the common blackberry, with a unique and fruitier taste. The fruits are not true berries in the botanical sense. [Wikipedia]",24853,Rubus_laciniatus,,,,,,Fruits,Berries,Type 1,2019-08-22 22:55:49 UTC,2019-08-22 22:55:49 UTC,,,FALSE,specific,,FALSE,FOOD00901 +0,272863,934,Asparagus fern,Asparagus setaceus,"Asparagus setaceus, commonly called common asparagus fern, lace fern, climbing asparagus, or ferny asparagus, is native to South Africa. It is considered a weed in some locations. Asparagus setaceus is a climbing perennial herb, the small flowers are greenish-white in bell-shape, the berries are black when it is mature. [Wikipedia]",193453,Asparagus_setaceus,Asparagus_fern.jpg,image/jpeg,1041515,2019-08-22 22:55:49 UTC,,Herbs and Spices,Herbs,Type 1,2019-08-22 22:55:50 UTC,2019-08-22 22:55:50 UTC,,,FALSE,specific,,FALSE,FOOD00902 +0,75099,935,Thornless blackberry,Rubus ulmifolius,"Rubus ulmifolius, commonly called thornless blackberry or elmleaf blackberry, is a species of wild blackberry. It is native to the Netherlands, Spain, Portugal, Britain, Ireland and North Africa, and naturalized in USA, Australia, southern and western South America. The thornless blackberry is shrub that can grow up to 5 meters tall, sometimes with spines. The flowers are usually pink or white, the fruits are dark purple, almost black. [Wikipedia]",530155,Rubus_ulmifolius,,,,,,Fruits,Berries,Type 1,2019-08-22 22:55:50 UTC,2019-08-22 22:55:50 UTC,,,FALSE,specific,,FALSE,FOOD00903 +0,420769,936,Tropical highland blackberry,Rubus adenotrichos,"Rubus adenotrichos is commonly called tropical highland blackberry. It grows in Central America, northwestern South America, and central and southern Mexico, belongs to the Rosaceae family. Rubus adenotrichos is a shrub that can grow up to 6 meters tall. The flowers are pink or white, the fruits are red or black. [Wikipedia] Rubus adenotrichos contains phenolic compounds, mainly ellagitannins, and anthocyanins, it is a good source of antioxidants. Research has shown that Rubus adenotrichos had potential effects against oxidative stress and inflammation. (PMID: 23697506)",,Rubus_adenotrichos,,,,,,Fruits,Berries,Type 1,2019-08-22 22:55:50 UTC,2019-08-22 22:55:50 UTC,,,FALSE,specific,,FALSE,FOOD00904 +0,190226,937,Andean blackberry,Rubus glaucus,"Rubus glaucus, commonly called Andean blackberry, Andes berry or mora de Castilla, is a species of blackberry, it belongs to the Rosaceae family. It grows in Latin America from Oaxaca to Bolivia. Rubus glaucus is a perennial semi-erect climbing shrub, it can grow up to 3 meters. The fruit is bright purple when ripe. Rubus glaucus is rich in vitamin C, phenols, anthocyanin, it shows a high antioxidant activity. (PMID: 20170356) [Wikipedia]",506228,Rubus_glaucus,,,,,,Fruits,Berries,Type 1,2019-08-22 22:55:51 UTC,2019-08-22 22:55:51 UTC,,,FALSE,specific,,FALSE,FOOD00905 +0,23216,938,Blackberry,Rubus,"The blackberry is an edible fruit produced by many species in the genus Rubus in the family Rosaceae. Blackberry is a perennial plant that grows to 3-6 meter tall. The pale pink flowers are produced in late spring and early summer. The fruits are rich in vitamin C, anthocyanins, flavonols and ellagitannins (PMID: 22082199), they have shown the beneficial effects to human health (PMID: 22082199)",,Blackberry,blackberry.jpg,image/jpeg,387007,2019-08-22 22:55:51 UTC,,Fruits,Berries,Type 1,2019-08-22 22:55:52 UTC,2020-03-12 21:01:01 UTC,,,FALSE,specific,,TRUE,FOOD00906 +1,4442,939,Black tea,,"Black tea is a type of tea that is more oxidized than oolong, green, and white teas.Black tea is generally stronger in flavour than other teas.It is made from leaves of the shrub (or small tree) Camellia sinensis.In China, where black tea was discovered,the beverage is called """"red tea"""" due to the color of the oxidized leaves when processed appropriately.Plain black tea without sweeteners or additives contains caffeine, but negligible quantities of calories or nutrients.",,,,,,,,Teas,Teas,Type 1,2020-01-24 17:05:36 UTC,2020-01-24 17:05:36 UTC,,,FALSE,,,TRUE,FOOD00907 +1,4442,940,Green tea,,"Green tea is a type of tea that is made from Camellia sinensis leaves and buds that have not undergone the same withering and oxidation process used to make oolong teas and black teas.Green tea originated in China, but its production and manufacture has spread to many other countries in Asia. Several varieties of green tea exist, which differ substantially based on the variety of C. sinensis used, growing conditions, horticultural methods, production processing, and time of harvest.",,,,,,,,Teas,Teas,Type 1,2020-01-24 17:05:36 UTC,2020-01-24 17:05:36 UTC,,,FALSE,,,TRUE,FOOD00908 +1,4146,941,Olive oil,,"Olive oil is a liquid obtained from olives (the fruit of Olea europaea; family Oleaceae), a traditional tree crop of the Mediterranean Basin. The oil is produced by pressing whole olives. It is commonly used in cooking, whether for frying or as a salad dressing.It consists mainly of oleic acid (up to 83%), with smaller amounts of other fatty acids including linoleic acid (up to 21%) and palmitic acid (up to 20%).",,,,,,,,Herbs and Spices,Oilseed crops,Type 2,2020-01-24 17:05:36 UTC,2020-01-24 17:05:36 UTC,,,FALSE,,,TRUE,FOOD00909 +1,,942,Macroalgae,,"Seaweed, or macroalgae, refers to several species of macroscopic, multicellular, marine algae. The term includes some types of Rhodophyta (red), Phaeophyta (brown) and Chlorophyta (green) macroalgae.Seaweed species such as kelps provide essential nursery habitat for fisheries and other marine species and thus protect food sources; other species, such as planktonic algae, play a vital role in capturing carbon, producing up to 90% of Earth's oxygen.",,,,,,,,Aquatic foods,Seaweed,Type 1,2020-01-24 17:05:36 UTC,2020-01-24 17:05:36 UTC,,,FALSE,,,TRUE,FOOD00910 +1,,943,Red wine,,"Red wine is a type of wine made from dark-colored (black) grape varieties. The actual color of the wine can range from intense violet, typical of young wines, through to brick red for mature wines and brown for older red wines. The juice from most purple grapes is greenish-white, the red color coming from anthocyan pigments (also called anthocyanins) present in the skin of the grape; exceptions are the relatively uncommon teinturier varieties, which produce a red-colored juice.Much of the red-wine production process therefore involves extraction of color and flavor components from the grape skin.",,,,,,,,Beverages,Fermented beverages,Type 2,2020-01-24 17:05:36 UTC,2020-01-24 17:05:36 UTC,,,FALSE,,,TRUE,FOOD00911 +1,4006,944,linseed oil,,"Linseed oil, also known as flaxseed oil or flax oil, is a colourless to yellowish oil obtained from the dried, ripened seeds of the flax plant (Linum usitatissimum). The oil is obtained by pressing, sometimes followed by solvent extraction. Linseed oil is a drying oil, meaning it can polymerize into a solid form.Linseed oil is an edible oil in demand as a nutritional supplement, as a source of α-Linolenic acid, (an omega-3 fatty acid).",,,,,,,,Herbs and Spices,Oilseed crops,Type 2,2020-01-24 17:05:36 UTC,2020-01-24 17:05:36 UTC,,,FALSE,,,TRUE,FOOD00912 +1,138011,945,Rapeseed oil,,"Rapeseed oil is produced from the bright yellow rape plant. The oil can then used drizzled as salad dressing, or heated to fry or bake.It's low in saturated fat and contains omegas 3, 6 and 9",,,,,,,,Herbs and Spices,Oilseed crops,Type 2,2020-01-24 17:05:36 UTC,2020-01-24 17:05:36 UTC,,,FALSE,,,TRUE,FOOD00913 +1,3847,946,Soybean oil,,"Soybean oil is a vegetable oil extracted from the seeds of the soybean (Glycine max). It is one of the most widely consumed cooking oils. As a drying oil, processed soybean oil is also used as a base for printing inks (soy ink) and oil paints.",,,,,,,,Herbs and Spices,Oilseed crops,Type 2,2020-01-24 17:05:36 UTC,2020-01-24 17:05:36 UTC,,,FALSE,,,TRUE,FOOD00914 +0,392747,947,Guarana,Paullinia cupana,"Guarana is a climbing plant in the family Sapindaceae, native to the Amazon basin and especially common in Brazil.Guarana has large leaves and clusters of flowers and is best known for the seeds from its fruit, which are about the size of a coffee bean.It contains about twice the concentration of caffeine found in coffee seeds. The additive has gained notoriety for being used in energy drinks.The colour of the fruit ranges from brown to red and it contains black seeds that are partly covered by white arils.",,,,,,,,Herbs and Spices,Herbs,Type 1,2020-01-24 17:05:36 UTC,2020-01-24 17:05:36 UTC,,,FALSE,,,TRUE,FOOD00915 +0,185542,948,Mate,Ilex paraguariensis,"Mate is a traditional South American caffeine-rich infused drink.It is prepared by steeping dried leaves of yerba mate (Ilex paraguariensis, known in Portuguese as erva-mate) in hot water and is served with a metal straw from a shared hollow calabash gourd.The mate leaves are dried, chopped, and ground into a powdery mixture called yerba, """"erva"""" in Portuguese, which means """"herb"""".",,,,,,,,Herbs and Spices,Herbs,Type 1,2020-01-24 17:05:36 UTC,2020-01-24 17:05:36 UTC,,,FALSE,,,TRUE,FOOD00916 +1,,949,White wine,,"White wine is a wine that is fermented without skin contact. The colour can be straw-yellow, yellow-green, or yellow-gold.It is produced by the alcoholic fermentation of the non-coloured pulp of grapes, which may have a skin of any colour.White wine is mainly from """"white"""" grapes, which are green or yellow in colour, such as the Chardonnay, Sauvignon, and Riesling.",,,,,,,,Beverages,Fermented beverages,Type 2,2020-01-24 17:05:36 UTC,2020-01-24 17:05:36 UTC,,,FALSE,,,TRUE,FOOD00917 +0,43166,950,Sour orange,Citrus × aurantium,"Sour orange, bigarade orange,bitter orange, Seville orange, or marmalade orange is the citrus tree Citrus × aurantium and its fruit. It is native to southeast Asia and has been spread by humans to many parts of the world.",,,,,,,,Fruits,Citrus,Type 1,2020-01-24 17:05:36 UTC,2020-01-24 17:05:36 UTC,,,FALSE,,,TRUE,FOOD00918 +0,9031,951,Egg yolk,,"The egg yolk is the yellow center of an egg. It is only one cell. It is commonly seen in fried eggs. When it is mixed with the whites, it makes scrambled eggs. It is sometimes used in cooking. It is much higher in calories than the egg white. It has Vitamin D in it. ",,,,,,,,Eggs,Eggs,Type 1,2020-01-24 17:05:36 UTC,2020-01-24 17:05:36 UTC,,,FALSE,,,TRUE,FOOD00919 +1,,952,Rosé wine,,Rosé wine is a kind of wine. It is made from red grapes by letting the juice have only very short skin contact. All colour and tannins come from the skin of the grape.,,,,,,,,Beverages,Fermented beverages,Type 2,2020-01-24 17:05:36 UTC,2020-01-24 17:05:36 UTC,,,FALSE,,,TRUE,FOOD00920 +0,3498,953,White mulberry,Morus alba,"White mulberry trees that produce pure white fruit are rare. Typically, the fruits are white when immature, but gradually ripen to shades of pink or purple. They are a small variety, just a few centimeters long, and far sweeter than the black and red mulberries. They have a low acidity and a mild honey-like flavor. White mulberries are best when slightly overripe",,,,,,,,Herbs and Spices,Herbs,Type 1,2020-01-24 17:05:36 UTC,2020-01-24 17:05:36 UTC,,,FALSE,,,TRUE,FOOD00921 +1,138011,954,Canola oil,,"Canola oil is a vegetable oil derived from a variety of rapeseed that is low in erucic acid, as opposed to colza oil.There are both edible and industrial forms produced from the seed of any of several cultivars of the plant family Brassicaceae.",,,,,,,,Herbs and Spices,Oilseed crops,Type 2,2020-01-24 17:05:36 UTC,2020-01-24 17:05:36 UTC,,,FALSE,,,TRUE,FOOD00922 +1,,955,Dessert wine,,"Dessert wines, sometimes called pudding wines, are sweet wines typically served with dessert.",,,,,,,,Beverages,Fermented beverages,Type 2,2020-01-24 17:05:36 UTC,2020-01-24 17:05:36 UTC,,,FALSE,,,TRUE,FOOD00923 +1,,956,Red champagne,,"Red champagne is also known as Rosé champagne, which is a type of alcoholic drinks that is produced with red grapes. The gentle extracting process minimized the contact between the skins and juice, which gives the liquid red colour. Red (Rosé) Champagne is one of the few wines that allow the production of rosé by the addition of a small amount of red wine during blending.",,,,,,,,Beverages,Alcoholic beverages,Type 1,2020-01-24 17:05:36 UTC,2020-01-24 17:05:36 UTC,,,FALSE,,,TRUE,FOOD00924 +1,,957,Red tea,,"Rooibos tea is also known as red tea or red bush tea.It is made using leaves from a shrub called Aspalathus linearis, usually grown on the western coast of South Africa.Rooibos is a herbal tea and is not related to green or black tea.",,,,,,,,Teas,Teas,Type 1,2020-01-24 17:05:36 UTC,2020-01-24 17:05:36 UTC,,,FALSE,,,TRUE,FOOD00925 +1,,958,White champagne,,"The white champagne is produced from grape juice obtained after minimal possible contact with the skins produces essentially white wine, with a slightly yellower colour than wine from white grapes (due to lack of red skin pigments).",,,,,,,,Beverages,Alcoholic beverages,Type 1,2020-01-24 17:05:36 UTC,2020-01-24 17:05:36 UTC,,,FALSE,,,TRUE,FOOD00926 +1,,959,Red grape juice,,"Red grape juice is typically manufactured from red-skinned grapes (e.g. Pinot Noir, Sweet Jubilee, etc.). Not a significant source of Calories from Fat, Saturated Fat, Trans Fat, Cholesterol, Dietary fiber, Vitamin A and Iron.",,,,,,,,Beverages,Beverages,Type 1,2020-01-24 17:05:36 UTC,2020-01-24 17:05:36 UTC,,,FALSE,,,TRUE,FOOD00927 +1,,960,White grape juice,,"White grape juice is typically manufactured from green-skinned grapes.It has a refreshing, crisp flavor that comes from Niagara grapes. Not a significant source of Calories from Fat, Saturated Fat, Trans Fat, Cholesterol, Dietary fiber, Vitamin A and Iron.",,,,,,,,Beverages,Beverages,Type 1,2020-01-24 17:05:36 UTC,2020-01-24 17:05:36 UTC,,,FALSE,,,TRUE,FOOD00928 +0,168825,961,Crosne,Stachys affinis,"Stachys affinis, commonly called crosne, chinese artichoke, japanese artichoke, knotroot, or artichoke betony, is a perennial herbaceous plant of the family Lamiaceae, originating from China. Its rhizome is a root vegetable that can be eaten raw, pickled, dried or cooked.",,,,,,,,Vegetables,Root vegetables,Type 1,2020-01-24 17:05:36 UTC,2020-01-24 17:05:36 UTC,,,FALSE,,,TRUE,FOOD00929 +0,57577,962,Red clover,Trifolium pratense,"Red clover is a herbaceous, short-lived perennial plant, variable in size, growing to 20–80 cm (8–31 in) tall. The red clover is native to Europe, Western Asia, and northwest Africa.Red clover’s flowers and leaves are edible, and can be added as garnishes to any dish.The flowers often are used to make jelly and tisanes, and are used in essiac recipes.",,,,,,,,Herbs and Spices,Herbs,Type 1,2020-01-24 17:05:36 UTC,2020-01-24 17:05:36 UTC,,,FALSE,,,TRUE,FOOD00930 +0,45181,963,Partridge berry,Mitchella repens,"Partridgeberries are internationally known as lingonberries. This relative of the cranberry family is a low mat forming evergreen shrub with tiny rounded leaves.These berries grow in the dry,acidic soils of Newfoundland and Labrador's barrens and coastal headlands.Tart in flavour they are high in vitamin C, tannin anthocyanin, and antioxidants.",,,,,,,,Fruits,Berries,Type 1,2020-01-24 17:05:36 UTC,2020-01-24 17:05:36 UTC,,,FALSE,,,TRUE,FOOD00931 +0,55188,964,Mikan,Citrus unshiu,"A Mikan is a citrus fruit, also variously called Citrus unshiu, unshu mikan, Wenzhou migan, or a satsuma.",,,,,,,,Fruits,Citrus,Type 1,2020-01-24 17:05:36 UTC,2020-01-24 17:05:36 UTC,,,FALSE,,,TRUE,FOOD00932 +1,,965,Mozzarella cheese,,Mozzarella is a traditionally southern Italian cheese made from Italian buffalo's milk by the pasta filata method.Fresh mozzarella is generally white but may vary seasonally to slightly yellow depending on the animal's diet. Mozzarella of several kinds is used for most types of pizza and several pasta dishes or served with sliced tomatoes and basil in Caprese salad.,,,,,,,,Milk and milk products,Fermented milk products,Type 2,2020-01-24 17:05:36 UTC,2020-01-24 17:05:36 UTC,,,FALSE,,,TRUE,FOOD00933 +1,,966,Plain cream cheese,,"Cream cheese is a soft, usually mild-tasting fresh cheese made from milk and cream.Stabilizers such as carob bean gum and carrageenan are typically added in industrial production",,,,,,,,Milk and milk products,Fermented milk products,Type 2,2020-01-24 17:05:36 UTC,2020-01-24 17:05:36 UTC,,,FALSE,,,TRUE,FOOD00934 +1,,967,Cheddar Cheese,Cheddar Cheese,"Cheddar cheese is a relatively hard, off-white (or orange if colourings such as annatto are added), sometimes sharp-tasting, natural cheese.Originating in the English village of Cheddar in Somerset,[1] cheeses of this style are now produced beyond the region and in several countries around the world.",,,,,,,,Milk and milk products,Fermented milk products,Type 2,2020-01-24 17:05:36 UTC,2020-01-24 17:05:36 UTC,,,FALSE,,,TRUE,FOOD00935 +1,,968,Parmesan cheese,,"Parmesan cheese is the name of an Italian extra-hard cheese made of cow's milk. It is usually the cheese to go with Spaghetti and other typical Italian pasta, but it also has many other uses. Parmesan is a part of Italian national cuisine and it can be consumed both grated and in slivers. It is hard, sharp and dry.",,,,,,,,Milk and milk products,Fermented milk products,Type 2,2020-01-24 17:05:36 UTC,2020-01-24 17:05:36 UTC,,,FALSE,,,TRUE,FOOD00936 +1,3755,969,Almond milk,,"Almond milk is a plant milk manufactured from almonds with a creamy texture and nutty flavor,although some types or brands are flavored in imitation of dairy milk. It does not contain cholesterol, saturated fat or lactose, and is often consumed by those who are lactose-intolerant and others, such as vegans who avoid dairy products. Commercial almond milk comes in sweetened, unsweetened, vanilla and chocolate flavors, and is usually fortified with micronutrients.",,,,,,,,Milk and milk products,Other milk products,Type 1,2020-01-24 17:05:36 UTC,2020-01-24 17:05:36 UTC,,,FALSE,,,TRUE,FOOD00937 +1,13894,970,Coconut milk,,"Coconut milk is an opaque, milky-white liquid extracted from the grated pulp of mature coconuts.The opacity and rich taste of coconut milk is due to its high oil content, most of which is saturated fat.",,,,,,,,Milk and milk products,Other milk products,Type 1,2020-01-24 17:05:36 UTC,2020-01-24 17:05:36 UTC,,,FALSE,,,TRUE,FOOD00938 +1,,971,Salted butter,,"Salted butter is simply butter that contains added salt. In addition to giving a saltier taste, the salt actually acts as a preservative and prolongs the shelf life of the butter.Salted butter is perfect for spreading over crusty bread or melting over homemade pancakes or waffles.",,,,,,,,Milk and milk products,Other milk products,Type 1,2020-01-24 17:05:36 UTC,2020-01-24 17:05:36 UTC,,,FALSE,,,TRUE,FOOD00939 +1,4232,972,Sunflower oil,,"Sunflower oil is the non-volatile oil pressed from the seeds of sunflower (Helianthus annuus). Sunflower oil is commonly used in food as a frying oil, and in cosmetic formulations as an emollient.Sunflower oil is primarily composed of linoleic acid, a polyunsaturated fat, and oleic acid, a monounsaturated fat. ",,,,,,,,Herbs and Spices,Oilseed crops,Type 2,2020-01-24 17:05:36 UTC,2020-01-24 17:05:36 UTC,,,FALSE,,,TRUE,FOOD00940 +1,13894,973,Coconut oil,,"Coconut oil, or copra oil, is an edible oil extracted from the kernel or meat of mature coconuts harvested from the coconut palm (Cocos nucifera). It has various applications. Because of its high saturated fat content, it is slow to oxidize and, thus, resistant to rancidification, lasting up to six months at 24 °C (75 °F) without spoiling.",,,,,,,,Herbs and Spices,Oilseed crops,Type 2,2020-01-24 17:05:36 UTC,2020-01-24 17:05:36 UTC,,,FALSE,,,TRUE,FOOD00941 +1,3818,974,Peanut oil,,"Peanut oil, also known as groundnut oil or arachis oil, is a vegetable oil derived from peanuts. The oil has a strong peanut flavor and aroma.t is often used in American, Chinese, South Asian and Southeast Asian cuisine, both for general cooking, and in the case of roasted oil, for added flavor.",,,,,,,,Herbs and Spices,Oilseed crops,Type 2,2020-01-24 17:05:36 UTC,2020-01-24 17:05:36 UTC,,,FALSE,,,TRUE,FOOD00942 +1,3635,975,Cottonseed oil,,"Cottonseed oil is cooking oil from the seeds of cotton plants of various species, mainly Gossypium hirsutum and Gossypium herbaceum, that are grown for cotton fiber, animal feed, and oil.Cottonseed oil is used for salad oil, mayonnaise, salad dressing, and similar products because of its flavor stability.",,,,,,,,Herbs and Spices,Oilseed crops,Type 2,2020-01-24 17:05:36 UTC,2020-01-24 17:05:36 UTC,,,FALSE,,,TRUE,FOOD00943 +1,381124,976,Corn oil,,"Corn oil (maize oil) is oil extracted from the germ of corn (maize). Its main use is in cooking, where its high smoke point makes refined corn oil a valuable frying oil.",,,,,,,,Herbs and Spices,Oilseed crops,Type 2,2020-01-24 17:05:36 UTC,2020-01-24 17:05:36 UTC,,,FALSE,,,TRUE,FOOD00944 +1,3435,977,Avocado oil,,"Avocado oil is an edible oil pressed from the fruit of the Persea americana (avocado). As a food oil, it is used as an ingredient in other dishes, and as a cooking oil. It is also used for lubrication and in cosmetics, where it is valued for its supposed regenerative and moisturizing properties.",,,,,,,,Herbs and Spices,Oilseed crops,Type 2,2020-01-24 17:05:36 UTC,2020-01-24 17:05:36 UTC,,,FALSE,,,TRUE,FOOD00945 +1,29760,978,Grapeseed oil,,"Grape seed oil (also called grapeseed oil or grape oil) is pressed from the seeds of grapes, and is thus an abundant by-product of winemaking.It is widely used in baked goods, pancakes, and waffles. It is sprayed on raisins to help them retain their flavor.",,,,,,,,Herbs and Spices,Oilseed crops,Type 2,2020-01-24 17:05:36 UTC,2020-01-24 17:05:36 UTC,,,FALSE,,,TRUE,FOOD00946 +1,4182,979,Sesame oil,,"Sesame oil is an edible vegetable oil derived from sesame seeds. Besides being used as a cooking oil, it is used as a flavor enhancer in many cuisines, having a distinctive nutty aroma and taste.The oil is one of the earliest-known crop-based oils.",,,,,,,,Herbs and Spices,Oilseed crops,Type 2,2020-01-24 17:05:36 UTC,2020-01-24 17:05:36 UTC,,,FALSE,,,TRUE,FOOD00947 +1,,980,Monterey Jack cheese,,"Monterey Jack, sometimes shortened to Jack, is an American white, semi-hard cheese made using cow's milk. It is noted for its mild flavor and slight sweetness.Dry Jack is a harder cheese with a longer aging time.",,,,,,,,Milk and milk products,Fermented milk products,Type 2,2020-01-24 17:05:36 UTC,2020-01-24 17:05:36 UTC,,,FALSE,,,TRUE,FOOD00948 +1,,981,Swiss cheese,,"Swiss cheese is a generic name in North America for several related varieties of cheese, mainly of North American manufacture, which resemble Emmental cheese, a yellow, medium-hard cheese that originated in the area around Emmental, in Switzerland. Some types of Swiss cheese have a distinctive appearance, as the blocks of the cheese are riddled with holes known as """"eyes"""". Swiss cheese without eyes is known as """"blind"""".",,,,,,,,Milk and milk products,Fermented milk products,Type 2,2020-01-24 17:05:36 UTC,2020-01-24 17:05:36 UTC,,,FALSE,,,TRUE,FOOD00949 +1,,982,Cottage cheese,,"Cottage cheese is a fresh cheese curd product with a mild flavor.It is made by draining the cheese, as opposed to pressing it - retaining some of the whey, keeping the curds loose.Cottage cheese is low in food energy compared to other types of cheese, making it popular among dieters and some health devotees.",,,,,,,,Milk and milk products,Fermented milk products,Type 2,2020-01-24 17:05:36 UTC,2020-01-24 17:05:36 UTC,,,FALSE,,,TRUE,FOOD00950 +1,,983,Blue cheese,,"Blue cheese is a general classification of cheese that have cultures of the mold Penicillium added so that the final product is spotted or veined throughout with blue mold. Blue cheese can be eaten by itself or can be spread, crumbled or melted into or over a range of other foods.",,,,,,,,Milk and milk products,Fermented milk products,Type 2,2020-01-24 17:05:36 UTC,2020-01-24 17:05:36 UTC,,,FALSE,,,TRUE,FOOD00951 +1,,984,Clam,,"In culinary usage, clams are commonly eaten marine bivalves, as in clam digging and the resulting soup, clam chowder. Many edible clams such as palourde clams are oval or triangular; however, razor clams have an elongated parallel-sided shell, suggesting an old-fashioned straight razor.",,,,,,,,Aquatic foods,Bivalvia,Type 1,2020-01-24 17:05:36 UTC,2020-01-24 17:05:36 UTC,,,FALSE,,,TRUE,FOOD00952 +1,,985,Sour cream,,"Sour cream (American English) or soured cream (British English) is a dairy product obtained by fermenting regular cream with certain kinds of lactic acid bacteria.The bacterial culture, which is introduced either deliberately or naturally, sours and thickens the cream. Its name comes from the production of lactic acid by bacterial fermentation, which is called souring.",,,,,,,,Milk and milk products,Other milk products,Type 2,2020-01-24 17:05:36 UTC,2020-01-24 17:05:36 UTC,,,FALSE,,,TRUE,FOOD00953 +1,,986,Whole wheat bread,,"Whole wheat bread or wholemeal bread is a type of bread made using flour that is partly or entirely milled from whole or almost-whole wheat grains, see whole-wheat flour and whole grain. It is one kind of brown bread.",,,,,,,,Cereals and cereal products,Cereals,Type 1,2020-01-24 17:05:37 UTC,2020-01-24 17:05:37 UTC,,,FALSE,,,FALSE,FOOD00954 +0,4072,987,Jalapeno pepper,Capsicum annuum 'Jalapeño',"The jalapeño is a medium-sized chili pepper pod type cultivar of the species Capsicum annuum.Commonly picked and consumed while still green, it is occasionally allowed to fully ripen and turn red, orange, or yellow.",,,,,,,,Vegetables,Fruit vegetables,Type 1,2020-01-24 17:05:37 UTC,2020-01-24 17:05:37 UTC,,,FALSE,,,TRUE,FOOD00955 +1,,988,Greek feta cheese,,"Feta is a brined curd white cheese made in Greece from sheep's milk or from a mixture of sheep and goat's milk.t is a crumbly aged cheese, commonly produced in blocks, and has a slightly grainy texture. ",,,,,,,,Milk and milk products,Fermented milk products,Type 2,2020-01-24 17:05:37 UTC,2020-01-24 17:05:37 UTC,,,FALSE,,,TRUE,FOOD00956 +0,199218,989,Eddoe,Colocasia antiquorum,"Eddoe or eddo is a tropical vegetable often considered identifiable as the species Colocasia antiquorum,closely related to taro (dasheen, Colocasia esculenta), which is primarily used for its thickened stems (corms).It has smaller corms than taro, and in most cultivars there is an acrid taste that requires careful cooking.The young leaves can also be cooked and eaten, but (unlike taro) they have a somewhat acrid taste.",,,,,,,,Vegetables,Root vegetables,Type 1,2020-01-24 17:05:37 UTC,2020-01-24 17:05:37 UTC,,,FALSE,,,TRUE,FOOD00957 +0,89151,990,Plantain,Musa × paradisiaca,"Plantains are very starchy, green, and not as sweet as bananas. The word plantain can describe a specific, weedy plant, but it's also used more loosely for any bananas or banana-type fruits that are cooked rather than eaten raw. Plantains are made into sweet drinks, chips, snacks, soups, dumplings, and many more dishes. Plantain comes from the Spanish plátano, """"banana.""""",,,,,,,,Fruits,Tropical fruits,Type 1,2020-01-24 17:05:37 UTC,2020-01-24 17:05:37 UTC,,,FALSE,,,TRUE,FOOD00958 +0,85681,991,Clementine,Citrus × clementina,"Clementine or easy peeler (British English) is a tangor, a citrus fruit hybrid between a willowleaf mandarin orange and a sweet orange named for its late 19th-century discoverer.The exterior is a deep orange colour with a smooth, glossy appearance.They are typically juicy and sweet, with less acid than oranges.Their oils, like other citrus fruits, contain mostly limonene as well as myrcene, linalool, α-pinene and many complex aromatics.",,,,,,,,Fruits,Citrus,Type 1,2020-01-24 17:05:37 UTC,2020-01-24 17:05:37 UTC,,,FALSE,,,TRUE,FOOD00959 +0,3750,992,Green apple,,"Green apples are light green in colour and have crisp and juicy white flesh, which has a tart taste compared to red apples.",,,,,,,,Fruits,Pomes,Type 1,2020-01-24 17:05:37 UTC,2020-01-24 17:05:37 UTC,,,FALSE,,,TRUE,FOOD00960 +0,4679,993,White onion,,"White onion (Allium cepa, 'sweet onion') is a cultivar of dry onion, that has a pure white papery skin and a sweet, mild white flesh.Similar to red onions, due to the high sugar content, they have a short shelf life, lasting up to 2 days, or if refrigerated, they can last up to a month.",,,,,,,,Vegetables,Onion-family vegetables,Type 1,2020-01-24 17:05:37 UTC,2020-03-12 21:00:51 UTC,,,FALSE,,,FALSE,FOOD00961 +0,4679,994,Red onion,,Red onions are cultivars of the onion (Allium cepa) with purplish-red skin and white flesh tinged with red.These onions tend to be medium to large in size and have a mild flavor.Red onions are available throughout the year and are high in flavonoids and fibre (compared to white and yellow onions).,,,,,,,,Vegetables,Onion-family vegetables,Type 1,2020-01-24 17:05:37 UTC,2020-01-24 17:05:37 UTC,,,FALSE,,,TRUE,FOOD00962 +0,4679,995,Green onion,,"Scallions (also known as green onions, spring onions, chinese onions, or salad onions) are vegetables of various Allium onion species. Scallions have a milder taste than most onions. Their close relatives include garlic, shallot, leek,chive,and Chinese onion.",,,,,,,,Vegetables,Onion-family vegetables,Type 1,2020-01-24 17:05:37 UTC,2020-01-24 17:05:37 UTC,,,FALSE,,,TRUE,FOOD00963 +1,,996,Green grape,,"Green seedless grapes are small to medium in size and are round to slightly oval in shape, growing in tight or loose clusters depending on the variety. The skin ranges from yellow-green to bright green and is typically crisp, firm, and smooth. The flesh is pale green, semi-translucent, and seedless, though some seedless varieties may have a few underdeveloped seeds that are undetectable when consumed. Green seedless grapes are mild and sweet with a slightly tart flavor. ",,,,,,,,Fruits,Berries,Type 1,2020-01-24 17:05:37 UTC,2020-01-24 17:05:37 UTC,,,FALSE,,,TRUE,FOOD00964 +1,,997,Red grape,,"Red seedless grapes are small to medium in size and are round to slightly oblong in shape, growing in medium to large clusters. The hue of a Red seedless grape can vary widely depending on the variety and local growing conditions, but it usually ranges from a light red to a deep burgundy. The thin skin may also contain a dusty film, also known as a bloom, and this layer forms a natural waterproof barrier which prevents the delicate skin from cracking. The translucent flesh is juicy and is considered seedless, though a few small undetectable and undeveloped seeds may be present. Red seedless grapes are firm, crisp, and sweet with a mild, neutral flavor. ",,,,,,,,Fruits,Berries,Type 1,2020-01-24 17:05:37 UTC,2020-01-24 17:05:37 UTC,,,FALSE,,,TRUE,FOOD00965 +0,260142,998,Black plum,Syzygium cumini,"The Black Plum is oval and about 1 to 2 centimeters in length. It is dark purple to black in color, fleshy and one-seeded, with a tart, sweet-astringent taste.",,,,,,,,Fruits,Berries,Type 1,2020-01-24 17:05:37 UTC,2020-01-24 17:05:37 UTC,,,FALSE,,,TRUE,FOOD00966 +0,1216010,999,Green cabbage,Brassica oleracea var. sabauda L.,"Green cabbage has numerous pale green leaves that are thick and broad with prominent veins and a slightly waxy finish.They overlap to form a dense round to oblate ball and can measure 15 to 18 centimeters in diameter and may weigh up to 10 pounds each. The leaves are firm when raw and tender when cooked and it offers a sweet, grassy flavor.",,,,,,,,Vegetables,Cabbages,Type 1,2020-01-24 17:05:37 UTC,2020-01-24 17:05:37 UTC,,,FALSE,,,TRUE,FOOD00967 +1,,1000,Black raisin,,"Black raisins are made by drying out black Corinth seedless grapes under the sun or in a dehydrator. They have a darker colour compared to the other raisin varieties and are tangy and sweet. Black raisins are used in preparing smoothies, desserts and even as a garnish on salads.",,,,,,,,Fruits,Berries,Type 1,2020-01-24 17:05:37 UTC,2020-01-24 17:05:37 UTC,,,FALSE,,,TRUE,FOOD00968 +0,3885,1001,Cannellini bean,,"Cannellini beans are the largest of the group and because of their traditional kidney shape, they can also be referred to as White Kidney Beans.Meatier than Navy or Great Northern beans, they have a nutty, earthy flavor and tender flesh, and are often used in Italian dishes like Minestrone. They retain their shape and texture well, so they’re perfect to use in salads, soups, stews, and chili.",,,,,,,,Pulses,Beans,Type 1,2020-01-24 17:05:37 UTC,2020-01-24 17:05:37 UTC,,,FALSE,,,TRUE,FOOD00969 +0,3864,1002,Green lentil,Lens culinaris,"Green lentil is a small annual legume of the pea family and it is edible seed.Green lentils can be pale or mottled green-brown in color with a glossy exterior.They have a robust, somewhat peppery flavor.It is used chiefly in soups and stews, and the herbage is used as fodder in some places.",,,,,,,,Pulses,Pulses,Type 1,2020-01-24 17:05:37 UTC,2020-01-24 17:05:37 UTC,,,FALSE,,,TRUE,FOOD00970 +0,4072,1003,Cubanelle pepper,,"The Cubanelle, also known as """"Cuban pepper"""" and """"Italian frying pepper"""",is a variety of sweet pepper of the species Capsicum annuum. When unripe, it is light yellowish-green in color, but will turn bright red if allowed to ripen. ",,,,,,,,Vegetables,Fruit vegetables,Type 1,2020-01-24 17:05:37 UTC,2020-01-24 17:05:37 UTC,,,FALSE,,,TRUE,FOOD00971 +0,3663,1004,Acorn squash,Cucurbita pepo var. turbinata,"Acorn squash also called pepper squash or Des Moines squash is a winter squash with distinctive longitudinal ridges on its exterior and sweet, yellow-orange flesh inside.Although considered a winter squash, acorn squash belongs to the same species (Cucurbita pepo) as all summer squashes (including zucchini and crookneck squash).",,,,,,,,Gourds,Gourds,Type 1,2020-01-24 17:05:37 UTC,2020-01-24 17:05:37 UTC,,,FALSE,,,TRUE,FOOD00972 +0,4236,1005,Iceberg lettuce,,"Crisphead, also called Iceberg: lettuces form tight, dense heads that resemble cabbage. They are generally the mildest of the lettuces, valued more for their crunchy texture than for flavor. Varieties of iceberg lettuce are the most familiar lettuces in the USA. The name Iceberg comes from the way the lettuce was transported in the US in the 1930s. It was transported on trainwagons all covered in crushed ice - making it look like icebergs.",,,,,,,,Vegetables,Leaf vegetables,Type 1,2020-01-24 17:05:37 UTC,2020-01-24 17:05:37 UTC,,,FALSE,,,TRUE,FOOD00973 +0,8164,1006,Japanese sea bass,Lateolabrax japonicus,"The Japanese seabass, also suzuki is a species of Asian sea bass native to the western Pacific Ocean, where it occurs from Japan to the South China Sea.The Japanese sea bass is also commonly referenced to as Suzuki when it comes to food. It is widely fished and even farmed in order to be used as a delicacy that is served as sushi.",,,,,,,,Aquatic foods,Fishes,Type 1,2020-01-24 17:05:37 UTC,2020-01-24 17:05:37 UTC,,,FALSE,,,TRUE,FOOD00974 +0,3888,1007,Pea shoots,,"Pea shoots have long been prominent in Asian cuisine, but they're one of the newer ingredients showing up in U.S. farmer's markets.Their soft leaves, curly-cue tendrils and watery stems hold the promise of spring peas to come. But even better than that, they hold the flavor of them, too.And one of the reasons home cooks are taking to them (apart from their flavor) is because they're rich in nutrients.",,,,,,,,Vegetables,Leaf vegetables,Type 1,2020-01-24 17:05:37 UTC,2020-01-24 17:05:37 UTC,,,FALSE,,,TRUE,FOOD00975 +0,320797,1008,Yau choy,,"Yu choy is a leafy vegetable that produces fleshy stalks 20-30 cm high with oval-shaped leaves. The branching stems are slender, crisp, smooth, and pale green, and attached to the stems are broad and flat, dark green leaves that have prominent veining spanning across the surface. There are also small, bright yellow flowers that first appear as green buds in loosely compacted clusters of 10-20 buds. The leaves, stems, and flowers of Yu choy are all edible and have a crunchy, tender consistency. Yu choy has a sweet, green taste similar to baby spinach, with subtle bitter and peppery notes. ",,,,,,,,Vegetables,Leaf vegetables,Type 1,2020-01-24 17:05:37 UTC,2020-01-24 17:05:37 UTC,,,FALSE,,,TRUE,FOOD00976 +0,89636,1009,Water spinach,Ipomoea aquatica,"Ipomoea aquatica is a semi-aquatic, tropical plant grown as a vegetable for its tender shoots and it is not known where it originated. This plant is known in English as water spinach, river spinach, water morning glory, water convolvulus, or by the more ambiguous names Chinese spinach, Chinese Watercress, Chinese convolvulus, swamp cabbage or kangkong in Southeast Asia.",,,,,,,,Vegetables,Leaf vegetables,Type 1,2020-01-24 17:05:37 UTC,2020-01-24 17:05:37 UTC,,,FALSE,,,TRUE,FOOD00977 +0,88123,1010,Chineese plum,,Prunus salicina commonly called the Japanese plum or Chinese plum.The fruit is a drupe 4-7 cm in diameter with yellow-pink flesh; it can be harvested in the summer. When fully ripe it can be eaten raw.,,,,,,,,Fruits,Berries,Type 1,2020-01-24 17:05:37 UTC,2020-01-24 17:05:37 UTC,,,FALSE,,,TRUE,FOOD00978 +0,2950751,1011,Green plum,,"Green Plum is known by various names, like greengage, kakadu plum, wild plum, and murunga. They contain a lot of fiber and are rich in Vitamin C, sodium, calcium, potassium, Vitamin K, Vitamin A, and phytonutrients.Usually, they are used in the preparation of jams, pies, tarts, and sorbets. However, some people are fond of eating them raw with salt. ",,,,,,,,Fruits,Berries,Type 1,2020-01-24 17:05:37 UTC,2020-01-24 17:05:37 UTC,,,FALSE,,,TRUE,FOOD00979 +0,159037,1012,Wampee,Clausena lansium,"Clausena lansium, also known as wampee or wampi is a species of strongly scented evergreen trees in the family Rutaceae, native to southeast Asia.The wampee is cultivated for its fruit, which looks like a grape.A hybrid, seedless wampee that is larger and juicier than the normal variety; however, it is still more sour thansweet.",,,,,,,,Fruits,Berries,Type 1,2020-01-24 17:05:37 UTC,2020-01-24 17:05:37 UTC,,,FALSE,,,TRUE,FOOD00980 +0,176265,1013,Pitaya,Hylocereus undatus," Pitaya or pitahaya is the fruit of several different cactus species indigenous to the Americas.The fruit's texture is sometimes likened to that of the kiwifruit because of its black, crunchy seeds. The seed oil contains the fatty acids, linoleic acid and linolenic acid.",,,,,,,,Fruits,Tropical fruits,Type 1,2020-01-24 17:05:37 UTC,2020-01-24 17:05:37 UTC,,,FALSE,,,TRUE,FOOD00981 +0,112863,1014,Goji,,"Goji, goji berry or wolfberry is the fruit of Lycium barbarum and Lycium chinense. These are two very closely related species of boxthorn in the family Solanaceae (which also includes the potato, tomato, eggplant, deadly nightshade, chili pepper, and tobacco). The two species are native to Asia.",,,,,,,,Fruits,Berries,Type 1,2020-01-24 17:05:37 UTC,2020-01-24 17:05:37 UTC,,,FALSE,,,TRUE,FOOD00982 +0,190515,1015,Monk fruit,Siraitia grosvenorii,"Siraitia grosvenorii (monk fruit or luo han guo) is a herbaceous perennial vine of the gourd family, Cucurbitaceae, native to southern China and northern Thailand. The plant is cultivated for its fruit, whose extract is nearly 300 times sweeter than sugar and has been used in China as a low-calorie sweetener for cooling drinks and in traditional Chinese medicine.",,,,,,,,Fruits,Berries,Type 1,2020-01-24 17:05:37 UTC,2020-01-24 17:05:37 UTC,,,FALSE,,,TRUE,FOOD00983 +0,3658,1016,Cantaloupe melon,Cucumis melo var. cantalupensis,"The cantaloupe, rockmelon (Australia), sweet melon, or spanspek (South Africa) is a melon that is a variety of the muskmelon species from the family Cucurbitaceae.",,,,,,,,Gourds,Gourds,Type 1,2020-01-24 17:05:37 UTC,2020-01-24 17:05:37 UTC,,,FALSE,,,TRUE,FOOD00984 +0,23159,1017,Hawthorn,Crataegus,"Crataegus commonly called hawthorn, quickthorn, thornapple,May-tree,whitethorn,or hawberry, is a genus of several hundred species of shrubs and trees in the family Rosaceae,native to temperate regions of the Northern Hemisphere in Europe, Asia and North America.",,,,,,,,Fruits,Berries,Type 1,2020-01-24 17:05:37 UTC,2020-01-24 17:05:37 UTC,,,FALSE,,,TRUE,FOOD00985 +0,33120,1018,Lantern fruit,Physalis alkekengi,"Physalis alkekengi (bladder cherry, Chinese lantern,Japanese-lantern,strawberry groundcherry,or winter cherry) is a relative of P. peruviana.It is easily identifiable by the large, bright orange to red papery covering over its fruit, which resembles paper lanterns. It grows naturally in the regions covering Southern Europe to South Asia and Northeast Asia.",,,,,,,,Fruits,Berries,Type 1,2020-01-24 17:05:37 UTC,2020-01-24 17:05:37 UTC,,,FALSE,,,TRUE,FOOD00986 +1,,1019,White bread,,"White bread typically refers to breads made from wheat flour from which the bran and the germ layers have been removed (and set aside) from the whole wheatberry as part of the flour grinding or milling process, producing a light colored flour.White bread contains 1/2 of the magnesium found in whole-wheat bread.",,,,,,,,Cereals and cereal products,Cereals,Type 1,2020-01-24 17:05:37 UTC,2020-01-24 17:05:37 UTC,,,FALSE,,,TRUE,FOOD00987 +0,126903,1020,Cape gooseberry,Physalis peruviana,"Physalis peruviana, a plant species of the genus Physalis in the nightshade family Solanaceae, has its origin in Peru.The plant and its fruit are commonly called Cape gooseberry, goldenberry, and physalis, among numerous regional names.Cape gooseberry is made into fruit-based sauces, pies, puddings, chutneys, jams, and ice cream, or eaten fresh in salads and fruit salads.",,,,,,,,Fruits,Berries,Type 1,2020-01-24 17:05:37 UTC,2020-01-24 17:05:37 UTC,,,FALSE,,,TRUE,FOOD00988 +1,,1021,Herbal tea,,"Herbal teas are the beverages made from the infusion or decoction of herbs, spices, or other plant material in hot water. While most herbal teas are safe for regular consumption, some herbs have toxic or allergenic effects. The most herbal teas include Chamomile Tea, Peppermint Tea, Ginger Tea, etc.",,,,,,,,Teas,Teas,Type 1,2020-03-12 20:55:17 UTC,2020-03-12 20:55:17 UTC,,,FALSE,,,TRUE,FOOD00989 +1,,1022,Fish oil,,"Fish oil is oil derived from the tissues of oily fish. Fish oils contain the omega-3 fatty acids eicosapentaenoic acid (EPA) and docosahexaenoic acid (DHA), precursors of certain eicosanoids that are known to reduce inflammation in the body and improve hypertriglyceridemia. Fish oil has been shown the benefit for cardiovascular disease. The most promising evidence supports supplementation for prevention of cardiac death.",,,,,,,,,,Type 1,2020-03-12 21:00:02 UTC,2020-03-12 21:00:02 UTC,,,FALSE,,,TRUE,FOOD00990 +1,,1023,Taco shell,,"The hard-shell or crispy taco is a tradition that developed in the United States. The most common type of taco in the US is the hard-shell, U-shaped version, first described in a cookbook in 1949.",,,,,,,,,,Type 2,2020-03-12 21:01:58 UTC,2020-03-12 21:01:58 UTC,,,FALSE,,,TRUE,FOOD00991 +1,,1024,Tostada shell,,,,,,,,,,,,Type 2,2020-03-12 21:01:58 UTC,2020-03-12 21:01:58 UTC,,,FALSE,,,TRUE,FOOD00992 From 1d2252cb76eee2d6bd38241b6c085c972444eb08 Mon Sep 17 00:00:00 2001 From: Christian Diener Date: Mon, 17 Mar 2025 14:47:20 +0100 Subject: [PATCH 03/82] add the curated IDs --- database.nf | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/database.nf b/database.nf index 159fc0b..2929af2 100644 --- a/database.nf +++ b/database.nf @@ -10,7 +10,10 @@ workflow { def genbank_summary = "https://ftp.ncbi.nlm.nih.gov/genomes/ASSEMBLY_REPORTS/assembly_summary_genbank.txt" def taxdump = "ftp://ftp.ncbi.nih.gov/pub/taxonomy/taxdump.tar.gz" - download(foodb, genbank_summary) | get_taxids + download(foodb, genbank_summary) + curate_taxids(download.out, file("${projectDir}/data/curated.csv")) + get_taxids(download.out, curate_taxids.out) + download_taxa_dbs(taxdump) get_lineage(get_taxids.out.combine(download_taxa_dbs.out)) | match_taxids From 010b3dd44fb570ff1f169b5ab15f521cd85a40a8 Mon Sep 17 00:00:00 2001 From: Christian Diener Date: Mon, 17 Mar 2025 14:55:29 +0100 Subject: [PATCH 04/82] add the curated IDs --- database.nf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/database.nf b/database.nf index 2929af2..f27b7ad 100644 --- a/database.nf +++ b/database.nf @@ -42,8 +42,8 @@ process download { script: """ - wget --retry-connrefused --waitretry=1 --read-timeout=20 --timeout=15 -t 4 ${params.foodb} -O foodb.tgz && \ - wget --retry-connrefused --waitretry=1 --read-timeout=20 --timeout=15 -t 4 ${params.genbank_summary} -O genbank_summary.tsv && \ + wget --retry-connrefused --waitretry=1 --read-timeout=20 --timeout=15 -t 4 ${foodb} -O foodb.tgz && \ + wget --retry-connrefused --waitretry=1 --read-timeout=20 --timeout=15 -t 4 ${genbank_summary} -O genbank_summary.tsv && \ tar -xf foodb.tgz && \ mv foodb_*_csv foodb """ From b407a18d94ef21295cdba03fa188c3b24dc2d563 Mon Sep 17 00:00:00 2001 From: Christian Diener Date: Tue, 18 Mar 2025 09:40:01 +0100 Subject: [PATCH 05/82] swich to single downloads --- bin/download.R | 38 +++++++++++++---------- bin/match.R | 4 ++- database.nf | 82 ++++++++++++++++++++++++++++++++++++++++++++------ 3 files changed, 98 insertions(+), 26 deletions(-) diff --git a/bin/download.R b/bin/download.R index eca8790..4b23b86 100755 --- a/bin/download.R +++ b/bin/download.R @@ -10,8 +10,10 @@ library(R.utils) args <- commandArgs(trailingOnly = TRUE) matches <- fread(args[1]) -threads <- as.numeric(args[2]) +group <- args[2] out_folder <- args[3] +target_id <- args[4] + if (is.null(getOption("reutils.api.key"))) { rate <- 0.9 @@ -80,7 +82,7 @@ download_sequences <- function(hits, taxid, out_dir="sequences") { } } if (!file.exists(filename) || !grepl(">", content(fetch))) { - flog.error("Failed downloading %s. UIDs=%s) :(", taxid, paste(unique(hits$id), collpase=", ")) + flog.error("Failed downloading %s. UIDs=%s) :(", taxid, paste(unique(hits$id), collapse=", ")) print(post) stop() } @@ -100,26 +102,30 @@ download_sequences <- function(hits, taxid, out_dir="sequences") { } # Download additional contigs -if (any(matches$db == "nucleotide")) { - contigs <- matches[ +if ((args[2] == "nucleotide") && (any(matches$db == "nucleotide"))) { + manifest <- matches[ db == "nucleotide", download_sequences(.SD, matched_taxid[1]), by = "matched_taxid"] flog.info("Downloaded contigs for %d additional taxa.", nrow(contigs)) + manifest[, "orig_taxid" := NULL] + fwrite(manifest, "nucleotide.csv") + sys.exit(0) } # Download full genomes -gb <- matches[db == "genbank"] -flog.info("Downloading %d genomes with %d threads.", gb[, uniqueN(id)], threads) -dls <- parallel::mclapply( - gb[, unique(id)], - function(i) download_genome(gb[id == i]), - mc.cores=threads -) -genomes <- rbindlist(dls) -flog.info("Downloaded %d full genomes.", nrow(genomes)) +if (args[2] == "genbank") { + target = args[4] + gb <- matches[db == "genbank"] + flog.info("Downloading genome %s with.", target) + report <- download_genome(gb[id == target]) + flog.info( + "Found %d records summing to %.3g Mbps.", + report$num_records, + report$seqlength / 1e6 + ) -manifest <- rbind(genomes, contigs) -manifest[, "orig_taxid" := NULL] -fwrite(manifest, "manifest.csv") + report[, "orig_taxid" := NULL] + fwrite(report, paste0(target, ".csv")) +} diff --git a/bin/match.R b/bin/match.R index f2c4ada..9e6fb7c 100755 --- a/bin/match.R +++ b/bin/match.R @@ -137,12 +137,14 @@ flog.info( capture.output(trials) ) matches <- NULL +gb_candidates <- gb_taxa for (i in 1:nrow(trials)) { rank <- trials[i, rank] db <- trials[i, db] queries <- food[!orig_taxid %in% matches$orig_taxid] - m <- ordered_match(queries, gb_taxa, gbs, db = db, rank = rank) + m <- ordered_match(queries, gb_candidates, gbs, db = db, rank = rank) matches <- rbind(matches, m, fill = TRUE, use.names = TRUE) + gb_candidates <- gb_candidates[!matches$uid %chin% gb_candidates[["#assembly_accession"]]] } matches <- unique(food[, c("orig_taxid", RANKS), with = FALSE])[ matches, diff --git a/database.nf b/database.nf index f27b7ad..526641a 100644 --- a/database.nf +++ b/database.nf @@ -17,9 +17,21 @@ workflow { download_taxa_dbs(taxdump) get_lineage(get_taxids.out.combine(download_taxa_dbs.out)) | match_taxids - | download_sequences - download_sequences.out.map{it[0]}.flatten().set{seqs} + nuc = download_nucleotide(match_taxids.out) + match_taxids.out + .splitCsv() + .filter{row -> row.db == "genbank"} + .map{row -> tuple(row.id, match_taxids.out)} + .set{gb_seqs} + download_genbank(gb_seqs) + gb = merge_downloads( + download_genbank.out.map{t -> t[0]}.collect(), + download_genbank.out.map{t -> t[1]}.collect() + ) + merge_all(nuc.concat(gb)) + + merge_all.out.map{it[1]}.flatten().set{seqs} seqs | sketch ANI(sketch.out.collect()) @@ -163,22 +175,74 @@ process match_taxids { """ } -process download_sequences { - cpus 8 - memory "64 GB" - - publishDir params.out +process download_nucleotide { + cpus 2 + memory "8 GB" time "48h" input: path(matches) output: - tuple path("sequences/*.fna.gz"), path("manifest.csv") + tuple path("nucleotide.csv"), path("sequences/*.fna.gz") + + script: + """ + download.R $matches "nucleotide" sequences "all" + """ +} + +process download_genbank { + cpus 2 + memory "16 GB" + time "48h" + + input: + tuple val(id), path(matches) + + output: + tuple path("sequences/*.fna.gz"), path("${id}.csv") + + script: + """ + download.R $matches "genbank" sequences "${id}" + """ +} + +process merge_downloads { + cpus 1 + memory "4 GB" + publishDir params.out + time "1 h" + + input: + path(seqs) + path(manifests) + + output: + tuple path("genbank.csv"), tuple("sequences/*.fna.gz") + + script: + """ + merge.R genbank.csv ${manifests} + """ +} + +process merge_all { + cpus 1 + memory "4 GB" + publishDir params.out + time "1 h" + + input: + tuple path(nuc), path(nuc_seqs), path(gb), path(gb_seqs) + + output: + tuple path("manifest.csv"), path("sequences/*.fna.gz") script: """ - download.R $matches $task.cpus sequences + merge.R manifest.csv nucleotide.csv genbank.csv """ } From ad31b085c2d166ff9d1253efcc9b081a417137c1 Mon Sep 17 00:00:00 2001 From: Christian Diener Date: Tue, 18 Mar 2025 09:44:50 +0100 Subject: [PATCH 06/82] no duplicate matches, switch to single gb downloads --- database.nf | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/database.nf b/database.nf index 526641a..9826678 100644 --- a/database.nf +++ b/database.nf @@ -10,9 +10,9 @@ workflow { def genbank_summary = "https://ftp.ncbi.nlm.nih.gov/genomes/ASSEMBLY_REPORTS/assembly_summary_genbank.txt" def taxdump = "ftp://ftp.ncbi.nih.gov/pub/taxonomy/taxdump.tar.gz" - download(foodb, genbank_summary) - curate_taxids(download.out, file("${projectDir}/data/curated.csv")) - get_taxids(download.out, curate_taxids.out) + download_foodb_genbank(foodb, genbank_summary) + curate_taxids(download_foodb_genbank.out, file("${projectDir}/data/curated.csv")) + get_taxids(download_foodb_genbank.out, curate_taxids.out) download_taxa_dbs(taxdump) get_lineage(get_taxids.out.combine(download_taxa_dbs.out)) @@ -36,12 +36,12 @@ workflow { seqs | sketch ANI(sketch.out.collect()) - food_mappings(download.out, match_taxids.out, curate_taxids.out) + food_mappings(download_foodb_genbank.out, match_taxids.out, curate_taxids.out) } -process download { +process download_foodb_genbank { cpus 1 publishDir "${params.out}/dbs" @@ -195,7 +195,8 @@ process download_nucleotide { process download_genbank { cpus 2 memory "16 GB" - time "48h" + time "8h" + errorStrategy 'ignore' input: tuple val(id), path(matches) From 9e2c458d8089ffeeac163127a0bc38490bd671aa Mon Sep 17 00:00:00 2001 From: Christian Diener Date: Tue, 18 Mar 2025 09:46:52 +0100 Subject: [PATCH 07/82] fixes from cluster --- database.nf | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/database.nf b/database.nf index 9826678..dbff75d 100644 --- a/database.nf +++ b/database.nf @@ -11,7 +11,7 @@ workflow { def taxdump = "ftp://ftp.ncbi.nih.gov/pub/taxonomy/taxdump.tar.gz" download_foodb_genbank(foodb, genbank_summary) - curate_taxids(download_foodb_genbank.out, file("${projectDir}/data/curated.csv")) + curate_taxids(download_foodb_genbank.out, file("${projectDir}/data/missing_foodb_curated.csv")) get_taxids(download_foodb_genbank.out, curate_taxids.out) download_taxa_dbs(taxdump) @@ -83,8 +83,9 @@ process curate_taxids { foods <- fread("foodb/Food.csv") foods[, "revised_taxonomy_id" := ncbi_taxonomy_id] setkey(foods, id) - curated <- fread("curated") - foods[curated[["id"]], revised_taxonomy_id := curated[["taxid"]]] + curated <- fread("${curated}") + foods[J(curated[["id"]]), revised_taxonomy_id := curated[["revised_taxonomy_id"]]] + fwrite(foods, "curated_foods.csv") """ } From 7fa555de99582e81152c2300935f22b95eb5efd9 Mon Sep 17 00:00:00 2001 From: Christian Diener Date: Tue, 18 Mar 2025 09:47:49 +0100 Subject: [PATCH 08/82] fixes from cluster --- database.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/database.nf b/database.nf index dbff75d..84c1174 100644 --- a/database.nf +++ b/database.nf @@ -222,7 +222,7 @@ process merge_downloads { path(manifests) output: - tuple path("genbank.csv"), tuple("sequences/*.fna.gz") + tuple path("genbank.csv"), path("sequences/*.fna.gz") script: """ From 6ba1d0466ea727b8d492e863d619217f166b5483 Mon Sep 17 00:00:00 2001 From: Christian Diener Date: Tue, 18 Mar 2025 13:38:57 +0100 Subject: [PATCH 09/82] several fixes --- bin/download.R | 1 + bin/match.R | 10 +++++++++- database.nf | 9 ++++----- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/bin/download.R b/bin/download.R index 4b23b86..bbc5571 100755 --- a/bin/download.R +++ b/bin/download.R @@ -127,5 +127,6 @@ if (args[2] == "genbank") { report[, "orig_taxid" := NULL] fwrite(report, paste0(target, ".csv")) + sys.exit(0) } diff --git a/bin/match.R b/bin/match.R index 9e6fb7c..3b4db12 100755 --- a/bin/match.R +++ b/bin/match.R @@ -54,6 +54,8 @@ find_taxon <- function(taxid, gb_taxa, gb_summary, col, db) { } uids <- matches[, `#assembly_accession`] url <- matches[, ftp_path] + refseq_category <- matches[, refseq_category] + assembly_level <- matches[, assembly_level] } else { r <- rate for (i in 0:7) { @@ -76,11 +78,17 @@ find_taxon <- function(taxid, gb_taxa, gb_summary, col, db) { } uids <- ret %>% uid() uids <- uids[!is.na(uids)] + refseq_category <- "excluded" + assembly_level <- "contig" + } if (length(uids) == 0) { return(NULL) } - return(data.table(id = uids, db = db, matched_taxid = taxid, url = url)) + return(data.table( + id = uids, db = db, matched_taxid = taxid, url = url, + refseq_category = refseq_category, assembly_level = assembly_level + )) } ordered_match <- function( diff --git a/database.nf b/database.nf index 84c1174..83ed3f8 100644 --- a/database.nf +++ b/database.nf @@ -153,14 +153,14 @@ process get_lineage { script: """ taxonkit lineage --data-dir $taxadb -i 1 $taxids > raw.txt && \ - taxonkit reformat --data-dir $taxadb -i 3 raw.txt > lineage.txt && \ - taxonkit reformat --data-dir $taxadb -t -i 3 raw.txt > lineage_ids.txt + taxonkit reformat -f "{K};{p};{c};{o};{f};{g};{s}" --data-dir $taxadb -i 3 raw.txt > lineage.txt && \ + taxonkit reformat -f "{K};{p};{c};{o};{f};{g};{s}" --data-dir $taxadb -t -i 3 raw.txt > lineage_ids.txt """ } process match_taxids { cpus 1 - publishDir params.out + publishDir params.out, mode: "copy", overwrite: true memory "8 GB" time "1 h" @@ -195,9 +195,8 @@ process download_nucleotide { process download_genbank { cpus 2 - memory "16 GB" + memory "24 GB" time "8h" - errorStrategy 'ignore' input: tuple val(id), path(matches) From f48bd1b9b9953e5ba9b9a583b0c1a7696434da19 Mon Sep 17 00:00:00 2001 From: Christian Diener Date: Tue, 18 Mar 2025 13:39:54 +0100 Subject: [PATCH 10/82] local fixes --- bin/match.R | 2 +- database.nf | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/bin/match.R b/bin/match.R index 3b4db12..4cfeca3 100755 --- a/bin/match.R +++ b/bin/match.R @@ -152,7 +152,7 @@ for (i in 1:nrow(trials)) { queries <- food[!orig_taxid %in% matches$orig_taxid] m <- ordered_match(queries, gb_candidates, gbs, db = db, rank = rank) matches <- rbind(matches, m, fill = TRUE, use.names = TRUE) - gb_candidates <- gb_candidates[!matches$uid %chin% gb_candidates[["#assembly_accession"]]] + gb_candidates <- gb_candidates[!gb_candidates[["#assembly_accession"]] %chin% matches$id] } matches <- unique(food[, c("orig_taxid", RANKS), with = FALSE])[ matches, diff --git a/database.nf b/database.nf index 83ed3f8..6af5fbe 100644 --- a/database.nf +++ b/database.nf @@ -20,11 +20,11 @@ workflow { nuc = download_nucleotide(match_taxids.out) match_taxids.out - .splitCsv() + .splitCsv(header: true) .filter{row -> row.db == "genbank"} - .map{row -> tuple(row.id, match_taxids.out)} - .set{gb_seqs} - download_genbank(gb_seqs) + .map{row -> row.id} + .set{gb_ids} + download_genbank(gb_ids.combine(match_taxids.out)) gb = merge_downloads( download_genbank.out.map{t -> t[0]}.collect(), download_genbank.out.map{t -> t[1]}.collect() @@ -65,7 +65,7 @@ process curate_taxids { cpus 1 memory "4 GB" time "30 m" - publishDir "${params.data_dir}" + publishDir params.out input: tuple path(foodb), path(gb_summary) From 39c903178ed205681f043c1883bf407975927064 Mon Sep 17 00:00:00 2001 From: Christian Diener Date: Tue, 18 Mar 2025 14:26:59 +0100 Subject: [PATCH 11/82] move logs --- bin/download.R | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/bin/download.R b/bin/download.R index bbc5571..63fde2d 100755 --- a/bin/download.R +++ b/bin/download.R @@ -49,6 +49,7 @@ download_genome <- function(hit, out_dir="sequences") { flog.error("Failed downloading %s :(", hit$url) stop() } + flog.info("Downloaded genome for assembly %s...", id) fa <- readDNAStringSet(hit$filename) short_names <- tstrsplit(names(fa), "\\s+")[[1]] names(fa) <- paste0(short_names, "_", 1:length(short_names), @@ -57,7 +58,7 @@ download_genome <- function(hit, out_dir="sequences") { writeXStringSet(fa, hit$filename, compress = "gzip") hit$num_records <- length(fa) hit$seqlength <- as.double(sum(width(fa))) - flog.info("Downloaded genome for assembly %s...", id) + return(hit) } From 1db29f9dd3c4d8affd8df48d03c2fb48ec666a24 Mon Sep 17 00:00:00 2001 From: Christian Diener Date: Tue, 18 Mar 2025 14:26:20 +0100 Subject: [PATCH 12/82] only download unique --- database.nf | 1 + 1 file changed, 1 insertion(+) diff --git a/database.nf b/database.nf index 6af5fbe..e77309b 100644 --- a/database.nf +++ b/database.nf @@ -23,6 +23,7 @@ workflow { .splitCsv(header: true) .filter{row -> row.db == "genbank"} .map{row -> row.id} + .unique() .set{gb_ids} download_genbank(gb_ids.combine(match_taxids.out)) gb = merge_downloads( From 44dd9423568bf5af9d9196b029273a0c1b43c4ff Mon Sep 17 00:00:00 2001 From: Christian Diener Date: Tue, 18 Mar 2025 14:28:02 +0100 Subject: [PATCH 13/82] fix download script --- bin/download.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/download.R b/bin/download.R index 63fde2d..c5acfcf 100755 --- a/bin/download.R +++ b/bin/download.R @@ -128,6 +128,6 @@ if (args[2] == "genbank") { report[, "orig_taxid" := NULL] fwrite(report, paste0(target, ".csv")) - sys.exit(0) + Sys.exit(0) } From 3465218cd979389028983289d5423d0ada7eaab6 Mon Sep 17 00:00:00 2001 From: Christian Diener Date: Tue, 18 Mar 2025 14:30:56 +0100 Subject: [PATCH 14/82] skip problems --- database.nf | 1 + 1 file changed, 1 insertion(+) diff --git a/database.nf b/database.nf index e77309b..2e530ec 100644 --- a/database.nf +++ b/database.nf @@ -198,6 +198,7 @@ process download_genbank { cpus 2 memory "24 GB" time "8h" + errorStrategy "ignore" input: tuple val(id), path(matches) From 50904796f759371702147d3c59ec858c22b91fe0 Mon Sep 17 00:00:00 2001 From: Christian Diener Date: Tue, 18 Mar 2025 14:32:39 +0100 Subject: [PATCH 15/82] fix download --- bin/download.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/download.R b/bin/download.R index c5acfcf..6868077 100755 --- a/bin/download.R +++ b/bin/download.R @@ -111,7 +111,7 @@ if ((args[2] == "nucleotide") && (any(matches$db == "nucleotide"))) { flog.info("Downloaded contigs for %d additional taxa.", nrow(contigs)) manifest[, "orig_taxid" := NULL] fwrite(manifest, "nucleotide.csv") - sys.exit(0) + Sys.exit(0) } # Download full genomes From 9b8e13c702457ed075fb76ac7d069a3408611285 Mon Sep 17 00:00:00 2001 From: Christian Diener Date: Wed, 19 Mar 2025 12:45:58 +0100 Subject: [PATCH 16/82] avoid looking for nucleotide sequences for nonredundant genera --- bin/match.R | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bin/match.R b/bin/match.R index 4cfeca3..4fd28be 100755 --- a/bin/match.R +++ b/bin/match.R @@ -145,14 +145,14 @@ flog.info( capture.output(trials) ) matches <- NULL -gb_candidates <- gb_taxa +gb_candidates <- copy(gb_taxa) for (i in 1:nrow(trials)) { rank <- trials[i, rank] db <- trials[i, db] queries <- food[!orig_taxid %in% matches$orig_taxid] m <- ordered_match(queries, gb_candidates, gbs, db = db, rank = rank) matches <- rbind(matches, m, fill = TRUE, use.names = TRUE) - gb_candidates <- gb_candidates[!gb_candidates[["#assembly_accession"]] %chin% matches$id] + gb_candidates[gb_candidates[["#assembly_accession"]] %chin% matches$id, score := score - 30] } matches <- unique(food[, c("orig_taxid", RANKS), with = FALSE])[ matches, From da5b9226da1500912a0b24c764cfbef1dd0954aa Mon Sep 17 00:00:00 2001 From: Christian Diener Date: Wed, 19 Mar 2025 12:47:09 +0100 Subject: [PATCH 17/82] some fixes --- bin/download.R | 2 -- database.nf | 3 ++- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/bin/download.R b/bin/download.R index 6868077..c4f4ba1 100755 --- a/bin/download.R +++ b/bin/download.R @@ -111,7 +111,6 @@ if ((args[2] == "nucleotide") && (any(matches$db == "nucleotide"))) { flog.info("Downloaded contigs for %d additional taxa.", nrow(contigs)) manifest[, "orig_taxid" := NULL] fwrite(manifest, "nucleotide.csv") - Sys.exit(0) } # Download full genomes @@ -128,6 +127,5 @@ if (args[2] == "genbank") { report[, "orig_taxid" := NULL] fwrite(report, paste0(target, ".csv")) - Sys.exit(0) } diff --git a/database.nf b/database.nf index 2e530ec..1a068b1 100644 --- a/database.nf +++ b/database.nf @@ -179,7 +179,7 @@ process match_taxids { process download_nucleotide { cpus 2 - memory "8 GB" + memory "32 GB" time "48h" input: @@ -227,6 +227,7 @@ process merge_downloads { script: """ + mkdir sequences && mv ${seqs} sequences/ merge.R genbank.csv ${manifests} """ } From 9ac0568f41ff739453da4452f35abc8a0d822f91 Mon Sep 17 00:00:00 2001 From: Christian Diener Date: Thu, 20 Mar 2025 08:18:38 +0100 Subject: [PATCH 18/82] add scores beforehand --- bin/match.R | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bin/match.R b/bin/match.R index 4fd28be..b9ee4dd 100755 --- a/bin/match.R +++ b/bin/match.R @@ -45,7 +45,7 @@ find_taxon <- function(taxid, gb_taxa, gb_summary, col, db) { if (all(is.na(tids))) { return(NULL) } - matches <- gb_summary[tids] %>% genbank_quality() + matches <- gb_summary[tids] # If we have a complete genome we use the most recent one if (matches[, max(score)] > 1) { matches <- matches[score == max(score)][1] @@ -145,7 +145,7 @@ flog.info( capture.output(trials) ) matches <- NULL -gb_candidates <- copy(gb_taxa) +gb_candidates <- copy(gb_taxa) |> genbank_quality() for (i in 1:nrow(trials)) { rank <- trials[i, rank] db <- trials[i, db] From 1f1e4c59184fa0d3ed349ac18b23a5fc5ca23287 Mon Sep 17 00:00:00 2001 From: Christian Diener Date: Thu, 20 Mar 2025 08:26:32 +0100 Subject: [PATCH 19/82] add scores beforehand --- bin/match.R | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/bin/match.R b/bin/match.R index b9ee4dd..8ef4f38 100755 --- a/bin/match.R +++ b/bin/match.R @@ -20,7 +20,7 @@ if (is.null(getOption("reutils.api.key"))) { } genbank_quality <- function(dt) { - dt <- copy(dt)[order(-seq_rel_date)] + dt <- dt[order(-seq_rel_date)] dt[, "score" := 0] dt["reference genome" %in% refseq_category, score := score + 20] dt["representative genome" %in% refseq_category, score := score + 10] @@ -145,14 +145,14 @@ flog.info( capture.output(trials) ) matches <- NULL -gb_candidates <- copy(gb_taxa) |> genbank_quality() +gbs <- genbank_quality(gbs) for (i in 1:nrow(trials)) { rank <- trials[i, rank] db <- trials[i, db] queries <- food[!orig_taxid %in% matches$orig_taxid] - m <- ordered_match(queries, gb_candidates, gbs, db = db, rank = rank) + m <- ordered_match(queries, gb_ttaxa, gbs, db = db, rank = rank) matches <- rbind(matches, m, fill = TRUE, use.names = TRUE) - gb_candidates[gb_candidates[["#assembly_accession"]] %chin% matches$id, score := score - 30] + gbs[`#assembly_accession` %chin% matches$id, score := score - 30] } matches <- unique(food[, c("orig_taxid", RANKS), with = FALSE])[ matches, From f536e5bbce456a4b0ffed7f3ffb9abda176becda Mon Sep 17 00:00:00 2001 From: Christian Diener Date: Thu, 20 Mar 2025 08:47:15 +0100 Subject: [PATCH 20/82] add scores beforehand --- bin/match.R | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bin/match.R b/bin/match.R index 8ef4f38..ca5e892 100755 --- a/bin/match.R +++ b/bin/match.R @@ -129,6 +129,7 @@ gbs <- fread(args[2], sep = "\t") # Only keep the ones actually available. gbs <- gbs[grepl("ftp.ncbi.nlm.nih.gov", ftp_path, fixed = TRUE)] gbs[, "taxid" := as.character(taxid)] +gbs <- genbank_quality(gbs) setkey(gbs, taxid) taxids[, (RANKS) := tstrsplit(names, ";")] taxids[, (paste0(RANKS, "_taxid")) := tstrsplit(taxids, ";")] @@ -145,12 +146,11 @@ flog.info( capture.output(trials) ) matches <- NULL -gbs <- genbank_quality(gbs) for (i in 1:nrow(trials)) { rank <- trials[i, rank] db <- trials[i, db] queries <- food[!orig_taxid %in% matches$orig_taxid] - m <- ordered_match(queries, gb_ttaxa, gbs, db = db, rank = rank) + m <- ordered_match(queries, gb_taxa, gbs, db = db, rank = rank) matches <- rbind(matches, m, fill = TRUE, use.names = TRUE) gbs[`#assembly_accession` %chin% matches$id, score := score - 30] } From 36e0d0f8225ab4e0abbfebd5ac58757b349dcf94 Mon Sep 17 00:00:00 2001 From: Christian Diener Date: Thu, 20 Mar 2025 09:58:46 +0100 Subject: [PATCH 21/82] fix nucleoide logger --- bin/download.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/download.R b/bin/download.R index c4f4ba1..41803ad 100755 --- a/bin/download.R +++ b/bin/download.R @@ -104,7 +104,7 @@ download_sequences <- function(hits, taxid, out_dir="sequences") { # Download additional contigs if ((args[2] == "nucleotide") && (any(matches$db == "nucleotide"))) { - manifest <- matches[ + contigs <- matches[ db == "nucleotide", download_sequences(.SD, matched_taxid[1]), by = "matched_taxid"] From 2e46374a6b372728dc8e4c27e26e0004eb5df9a6 Mon Sep 17 00:00:00 2001 From: Christian Diener Date: Thu, 20 Mar 2025 10:23:03 +0100 Subject: [PATCH 22/82] fix nucleoide logger --- bin/download.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/download.R b/bin/download.R index 41803ad..81494ed 100755 --- a/bin/download.R +++ b/bin/download.R @@ -110,7 +110,7 @@ if ((args[2] == "nucleotide") && (any(matches$db == "nucleotide"))) { by = "matched_taxid"] flog.info("Downloaded contigs for %d additional taxa.", nrow(contigs)) manifest[, "orig_taxid" := NULL] - fwrite(manifest, "nucleotide.csv") + fwrite(contigs, "nucleotide.csv") } # Download full genomes From 9327d030c021367b780d33f05bda568a2217d173 Mon Sep 17 00:00:00 2001 From: Christian Diener Date: Thu, 20 Mar 2025 10:47:21 +0100 Subject: [PATCH 23/82] fix nucleoide logger --- bin/download.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/download.R b/bin/download.R index 81494ed..1fb3ac6 100755 --- a/bin/download.R +++ b/bin/download.R @@ -109,7 +109,7 @@ if ((args[2] == "nucleotide") && (any(matches$db == "nucleotide"))) { download_sequences(.SD, matched_taxid[1]), by = "matched_taxid"] flog.info("Downloaded contigs for %d additional taxa.", nrow(contigs)) - manifest[, "orig_taxid" := NULL] + contigs[, "orig_taxid" := NULL] fwrite(contigs, "nucleotide.csv") } From db0f1ab9f7bb5fdd4a4c28e706d8c15d43da6466 Mon Sep 17 00:00:00 2001 From: Christian Diener Date: Thu, 20 Mar 2025 11:39:12 +0100 Subject: [PATCH 24/82] add decoys --- bin/download.R | 7 +++++++ build_kraken.nf | 28 +++++++++++++++------------- database.nf | 28 ++++++++++++++++++++++++++-- 3 files changed, 48 insertions(+), 15 deletions(-) diff --git a/bin/download.R b/bin/download.R index 1fb3ac6..52a07bb 100755 --- a/bin/download.R +++ b/bin/download.R @@ -129,3 +129,10 @@ if (args[2] == "genbank") { fwrite(report, paste0(target, ".csv")) } +if (args[2] == "decoys") { + flog.info("Downloading %d additional decoys.", nrow(matches)) + decoys <- matches[, download_genome(.SD, out_folder), by = "id"] + flog.info("Downloaded genomes for %d decoys summing to %.2g Mbps.", + nrow(decoys), decoys[, sum(seqlength) / 1e6]) + fwrite(decoys, "decoys.csv") +} \ No newline at end of file diff --git a/build_kraken.nf b/build_kraken.nf index fdfa1cb..104a9ce 100644 --- a/build_kraken.nf +++ b/build_kraken.nf @@ -3,12 +3,13 @@ nextflow.enable.dsl = 2 params.additionalDbs = ["bacteria", "archaea", "human", "viral", "plasmid", "UniVec_Core"] -params.maxDbSize = 500 +params.maxDbSize = "750 GB" params.confidence = 0.3 params.threads = 20 params.rebuild = false params.out = "${launchDir}/data" params.db = "${params.out}/medi_db" +params.additionalDecoys ="${params.out}/decoys" /* Helper functions */ @@ -17,12 +18,8 @@ def estimate_db_size(hash, extra) { def db_size = null // Calculate db memory requirement - if (params.dbmem) { - db_size = MemoryUnit.of("${params.dbmem} GB") + extra - } else { - db_size = MemoryUnit.of(file(hash).size()) + extra - log.info("Based on the hash size I am reserving ${db_size.toGiga()}GB of memory for Kraken2.") - } + db_size = MemoryUnit.of(file(hash).size()) + extra + log.info("Based on the hash size I am reserving ${db_size.toGiga()}GB of memory for Kraken2.") return db_size } @@ -30,9 +27,14 @@ def estimate_db_size(hash, extra) { workflow { if (!params.rebuild) { Channel.fromPath("${params.out}/sequences/*.fna.gz").set{food_sequences} + + Channel.fromPath("${params.additionalDecoys}/*.fna.gz") + .set{decoy_sequences} + setup_kraken_db() add_existing(setup_kraken_db.out, params.additionalDbs) - add_sequences(food_sequences, add_existing.out.last()) + decoys = add_sequences(decoy_sequences, add_existing.out.last()) + add_sequences(food_sequences, decoys.last()) db = add_sequences.out.last() } else { db = Channel.fromPath(params.db) @@ -61,7 +63,6 @@ process setup_kraken_db { process add_sequences { cpus 5 memory "16 GB" - publishDir params.out time "48 h" input: @@ -104,9 +105,10 @@ process add_existing { process build_kraken_db { cpus params.threads - memory { estimate_db_size("${params.db}/hash.k2d", 16.GB) } + memory { MemoryUnit.of(params.maxDbSize) + 16.GB } cpus params.max_threads time "72 h" + publishDir params.out input: path(db) @@ -118,14 +120,14 @@ process build_kraken_db { """ kraken2-build --build --db $db \ --threads ${task.cpus} \ - --max-db-size ${(params.max_db_size as BigInteger) * (1000G**3)} + --max-db-size ${task.memory.toGiga()} """ } process self_classify { cpus 1 - memory "${params.maxDbSize} GB" + memory { estimate_db_size("${db}/hash.k2d", 64.GB) } time "48 h" input: @@ -195,4 +197,4 @@ process add_info { cp ${params.downloads}/dbs/{food_matches.csv,food_contents.csv.gz} ${db} cp ${params.downloads}/manifest.csv ${db} """ -} +} \ No newline at end of file diff --git a/database.nf b/database.nf index 1a068b1..1640e7a 100644 --- a/database.nf +++ b/database.nf @@ -4,6 +4,7 @@ nextflow.enable.dsl = 2 params.threads = 20 params.out = "${launchDir}/data" +params.additionalDecoys = null //"${params.out}/decoys.csv" workflow { def foodb = "https://foodb.ca/public/system/downloads/foodb_2020_4_7_csv.tar.gz" @@ -26,17 +27,23 @@ workflow { .unique() .set{gb_ids} download_genbank(gb_ids.combine(match_taxids.out)) - gb = merge_downloads( + merge_downloads( download_genbank.out.map{t -> t[0]}.collect(), download_genbank.out.map{t -> t[1]}.collect() ) - merge_all(nuc.concat(gb)) + merge_all(nuc.concat(merge_downloads.out)) merge_all.out.map{it[1]}.flatten().set{seqs} seqs | sketch ANI(sketch.out.collect()) + // Add more decoy sequences + if (params.additionalDecoys) { + Channel.fromPath("${params.additionalDecoys}").set{decoy_manifest} + download_decoys(decoy_manifest) + } + food_mappings(download_foodb_genbank.out, match_taxids.out, curate_taxids.out) } @@ -212,6 +219,23 @@ process download_genbank { """ } +process download_decoys { + cpus 2 + memory "32 GB" + time "48h" + + input: + path(decoys) + + output: + tuple path("decoys.csv"), path("decoys/*.fna.gz") + + script: + """ + download.R $decoys decoys decoys "all" + """ +} + process merge_downloads { cpus 1 memory "4 GB" From a1126a276cea617e506f7e32bbdcbe38ebf89e54 Mon Sep 17 00:00:00 2001 From: Christian Diener Date: Thu, 3 Apr 2025 16:09:05 +0200 Subject: [PATCH 25/82] fix decoy add --- build_kraken.nf | 26 +++++++++++++++++++++++--- database.nf | 5 +++-- 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/build_kraken.nf b/build_kraken.nf index 104a9ce..f4a7e59 100644 --- a/build_kraken.nf +++ b/build_kraken.nf @@ -33,8 +33,8 @@ workflow { setup_kraken_db() add_existing(setup_kraken_db.out, params.additionalDbs) - decoys = add_sequences(decoy_sequences, add_existing.out.last()) - add_sequences(food_sequences, decoys.last()) + add_decoys(decoy_sequences, add_existing.out.last()) + add_sequences(food_sequences, add_decoys.out.last()) db = add_sequences.out.last() } else { db = Channel.fromPath(params.db) @@ -61,7 +61,27 @@ process setup_kraken_db { } process add_sequences { - cpus 5 + cpus 4 + memory "16 GB" + time "48 h" + + input: + path(fasta) + path(db) + + output: + path("$db") + + script: + """ + gunzip -c $fasta > ${fasta.baseName} && \ + kraken2-build --add-to-library ${fasta.baseName} --db $db --threads ${task.cpus} && \ + rm ${fasta.baseName} + """ +} + +process add_decoys { + cpus 4 memory "16 GB" time "48 h" diff --git a/database.nf b/database.nf index 1640e7a..57b8459 100644 --- a/database.nf +++ b/database.nf @@ -28,9 +28,10 @@ workflow { .set{gb_ids} download_genbank(gb_ids.combine(match_taxids.out)) merge_downloads( - download_genbank.out.map{t -> t[0]}.collect(), - download_genbank.out.map{t -> t[1]}.collect() + download_genbank.out.collect{t -> t[0]}, + download_genbank.out.collect{t -> t[1]} ) + nuc.concat(merge_downloads.out).view() merge_all(nuc.concat(merge_downloads.out)) merge_all.out.map{it[1]}.flatten().set{seqs} From 12411d91ea46cd4538b538518210a87f91990f82 Mon Sep 17 00:00:00 2001 From: Christian Diener Date: Tue, 8 Apr 2025 13:00:44 +0200 Subject: [PATCH 26/82] major refactor to build_kraken, now cleanly resumable --- build_kraken.nf | 99 ++++++++++++++++++++++++++++--------------------- 1 file changed, 57 insertions(+), 42 deletions(-) diff --git a/build_kraken.nf b/build_kraken.nf index f4a7e59..29d35f7 100644 --- a/build_kraken.nf +++ b/build_kraken.nf @@ -1,4 +1,5 @@ #!/usr/bin/env nextflow +include { food_mappings } from './database.nf' nextflow.enable.dsl = 2 @@ -31,16 +32,22 @@ workflow { Channel.fromPath("${params.additionalDecoys}/*.fna.gz") .set{decoy_sequences} - setup_kraken_db() - add_existing(setup_kraken_db.out, params.additionalDbs) - add_decoys(decoy_sequences, add_existing.out.last()) - add_sequences(food_sequences, add_decoys.out.last()) - db = add_sequences.out.last() + sequences = decoy_sequences.concat(food_sequences) + + taxonomy = setup_kraken_db() + add_existing(taxonomy, params.additionalDbs) + add_sequences(sequences, taxonomy) + lib = assemble_library( + taxonomy, + add_existing.out.collect(), + add_sequences.out.collect() + ) } else { - db = Channel.fromPath(params.db) + taxonomy = Channel.of(file("${params.db}/taxonomy")) + lib = Channel.of(file("${params.db}/library")) } - build_kraken_db(db) + build_kraken_db(taxonomy, lib) self_classify(build_kraken_db.out) build_bracken(self_classify.out) | add_info } @@ -48,11 +55,11 @@ workflow { process setup_kraken_db { cpus 1 - memory "8 GB" + memory "32 GB" time "12 h" output: - path("medi_db") + path("medi_db/taxonomy") script: """ @@ -62,83 +69,91 @@ process setup_kraken_db { process add_sequences { cpus 4 - memory "16 GB" - time "48 h" - - input: - path(fasta) - path(db) - - output: - path("$db") - - script: - """ - gunzip -c $fasta > ${fasta.baseName} && \ - kraken2-build --add-to-library ${fasta.baseName} --db $db --threads ${task.cpus} && \ - rm ${fasta.baseName} - """ -} - -process add_decoys { - cpus 4 - memory "16 GB" + memory "32 GB" time "48 h" input: path(fasta) - path(db) + path(taxonomy) output: - path("$db") + path("medi_db/library/added/*.*") script: """ + mkdir medi_db && mv ${taxonomy} medi_db gunzip -c $fasta > ${fasta.baseName} && \ - kraken2-build --add-to-library ${fasta.baseName} --db $db --threads ${task.cpus} && \ + kraken2-build --add-to-library ${fasta.baseName} --db medi_db --threads ${task.cpus} && \ rm ${fasta.baseName} """ } process add_existing { cpus 4 - memory "16 GB" + memory "32 GB" time "48 h" input: - path(db) + path(taxonomy) each group output: - path("$db") + path("medi_db/library/$group") script: if (group == "human") """ - kraken2-build --download-library $group --db $db --no-mask --threads ${task.cpus} + mkdir medi_db && mv ${taxonomy} medi_db + kraken2-build --download-library $group --db medi_db --no-mask --threads ${task.cpus} """ else """ - kraken2-build --download-library $group --db $db --threads ${task.cpus} + mkdir medi_db && mv taxonomy medi_db + kraken2-build --download-library $group --db medi_db --threads ${task.cpus} """ } +process assemble_library { + cpus 1 + memory "8 GB" + time "12h" + publishDir params.db + + input: + path(taxonomy) + path(existing) + path(sequences) + + output: + path("medi_db/library") + + script: + """ + mkdir medi_db && mkdir medi_db/library && mkdir medi_db/library/added + mv ${taxonomy} medi_db + mv ${existing} medi_db/library + mv ${sequences} medi_db/library/added + """ +} + process build_kraken_db { cpus params.threads memory { MemoryUnit.of(params.maxDbSize) + 16.GB } cpus params.max_threads time "72 h" - publishDir params.out + publishDir params.db input: - path(db) + path(taxonomy) + path(library) output: - path("$db") + tuple path("medi_db/taxonomy"), path("medi_db/*.k2d") script: """ - kraken2-build --build --db $db \ + mkdir medi_db && mv ${taxonomy} ${library} medi_db + kraken2-build --build --db medi_db \ --threads ${task.cpus} \ --max-db-size ${task.memory.toGiga()} """ From 08072e38641db7a1662756c8fb341b352023a225 Mon Sep 17 00:00:00 2001 From: Christian Diener Date: Tue, 8 Apr 2025 13:01:38 +0200 Subject: [PATCH 27/82] major refactor to build_kraken, now cleanly resumable --- build_kraken.nf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build_kraken.nf b/build_kraken.nf index 29d35f7..4d9c12d 100644 --- a/build_kraken.nf +++ b/build_kraken.nf @@ -139,7 +139,7 @@ process assemble_library { process build_kraken_db { cpus params.threads memory { MemoryUnit.of(params.maxDbSize) + 16.GB } - cpus params.max_threads + cpus params.threads time "72 h" publishDir params.db From 51895439604808b5066be843d9b3eb449197f280 Mon Sep 17 00:00:00 2001 From: Christian Diener Date: Thu, 3 Apr 2025 16:09:27 +0200 Subject: [PATCH 28/82] fixes to merging --- bin/merge.R | 13 +++++++++++-- build_kraken.nf | 2 +- database.nf | 26 ++++++++++++-------------- 3 files changed, 24 insertions(+), 17 deletions(-) diff --git a/bin/merge.R b/bin/merge.R index d2dfcdb..758dd2e 100755 --- a/bin/merge.R +++ b/bin/merge.R @@ -5,10 +5,19 @@ library(data.table) +read_medi = function(filepath) { + tab <- fread(filepath) + if ("id" %in% names(tab)) { + tab[, "id" := as.character(id)] + } + + return(tab) +} + args <- commandArgs(trailingOnly = TRUE) out <- args[1] files <- args[-1] print(files) -read <- lapply(files, fread) -fwrite(rbindlist(read), out) +read <- lapply(files, read_medi) +fwrite(rbindlist(read, use.names=TRUE, fill=TRUE), out) diff --git a/build_kraken.nf b/build_kraken.nf index 4d9c12d..6bed08c 100644 --- a/build_kraken.nf +++ b/build_kraken.nf @@ -232,4 +232,4 @@ process add_info { cp ${params.downloads}/dbs/{food_matches.csv,food_contents.csv.gz} ${db} cp ${params.downloads}/manifest.csv ${db} """ -} \ No newline at end of file +} diff --git a/database.nf b/database.nf index 57b8459..5d9dcba 100644 --- a/database.nf +++ b/database.nf @@ -27,18 +27,15 @@ workflow { .unique() .set{gb_ids} download_genbank(gb_ids.combine(match_taxids.out)) - merge_downloads( - download_genbank.out.collect{t -> t[0]}, - download_genbank.out.collect{t -> t[1]} - ) - nuc.concat(merge_downloads.out).view() - merge_all(nuc.concat(merge_downloads.out)) + download_genbank.out.collect() | merge_genbank + merge_all(nuc.combine(merge_genbank.out)) merge_all.out.map{it[1]}.flatten().set{seqs} seqs | sketch ANI(sketch.out.collect()) + println(params) // Add more decoy sequences if (params.additionalDecoys) { Channel.fromPath("${params.additionalDecoys}").set{decoy_manifest} @@ -204,7 +201,7 @@ process download_nucleotide { process download_genbank { cpus 2 - memory "24 GB" + memory "32 GB" time "8h" errorStrategy "ignore" @@ -224,6 +221,7 @@ process download_decoys { cpus 2 memory "32 GB" time "48h" + publishDir params.out input: path(decoys) @@ -237,23 +235,22 @@ process download_decoys { """ } -process merge_downloads { +process merge_genbank { cpus 1 memory "4 GB" publishDir params.out time "1 h" input: - path(seqs) - path(manifests) + path(files) output: tuple path("genbank.csv"), path("sequences/*.fna.gz") script: """ - mkdir sequences && mv ${seqs} sequences/ - merge.R genbank.csv ${manifests} + mkdir sequences && mv *.fna.gz sequences/ + merge.R genbank.csv *.csv """ } @@ -271,6 +268,7 @@ process merge_all { script: """ + mkdir sequences && mv ${nuc_seqs} ${gb_seqs} sequences/ merge.R manifest.csv nucleotide.csv genbank.csv """ } @@ -298,7 +296,7 @@ process food_mappings { process sketch { cpus 2 - memory "4 GB" + memory "16 GB" publishDir "${params.out}/sketches" time "8 h" @@ -316,7 +314,7 @@ process sketch { process ANI { cpus params.threads - memory "64 GB" + memory "96 GB" publishDir "${params.out}", mode: "copy", overwite: true time "8 h" From 78a24bbdd6a09eb6ea8818228c2a4693999cac1b Mon Sep 17 00:00:00 2001 From: Christian Diener Date: Tue, 8 Apr 2025 13:15:32 +0200 Subject: [PATCH 29/82] more refactor --- build_kraken.nf | 53 ++++++++++++++++++++----------------------------- 1 file changed, 21 insertions(+), 32 deletions(-) diff --git a/build_kraken.nf b/build_kraken.nf index 6bed08c..1e06d50 100644 --- a/build_kraken.nf +++ b/build_kraken.nf @@ -1,5 +1,4 @@ #!/usr/bin/env nextflow -include { food_mappings } from './database.nf' nextflow.enable.dsl = 2 @@ -8,6 +7,7 @@ params.maxDbSize = "750 GB" params.confidence = 0.3 params.threads = 20 params.rebuild = false +params.downloads = "${launchDir}/data" params.out = "${launchDir}/data" params.db = "${params.out}/medi_db" params.additionalDecoys ="${params.out}/decoys" @@ -48,8 +48,10 @@ workflow { } build_kraken_db(taxonomy, lib) - self_classify(build_kraken_db.out) - build_bracken(self_classify.out) | add_info + self_classify(build_kraken_db.out, lib) + build_bracken(self_classify.out) + + add_info() } @@ -166,17 +168,19 @@ process self_classify { time "48 h" input: - path(db) + tuple path(taxonomy), path(bins) + path(library) output: - path(db) + tuple path(taxonomy), path(bins), path("medi_db/database.kraken") script: """ - kraken2 --db ${db} --threads ${task.cpus} \ + mkdir medi_db && mv ${taxonomy} ${bins} medi_db + kraken2 --db medi_db --threads ${task.cpus} \ --confidence ${params.confidence} \ --threads ${task.cpus} \ - --memory-mapping ${db}/library/*/*.f*a > ${db}/database.kraken + --memory-mapping ${library}/*/*.f*a > medi_db/database.kraken """ } @@ -185,51 +189,36 @@ process build_bracken { memory "64 GB" publishDir params.out time "12 h" + publishDir params.db input: - path(db) - - output: - path("$db") - - script: - """ - bracken-build -d $db -t ${task.cpus} -k 35 -l 100 && \ - bracken-build -d $db -t ${task.cpus} -k 35 -l 150 - """ -} - -process library { - cpus 1 - memory "4 GB" - time "1 h" - - input: - path(db) + tuple path(taxonomy), path(bins), path(self_class) output: - path("$db/library/*/*.f*a") + path("database*.kmer_distrib") script: """ - ls ${db}/library/*/*.f*a | wc -l + mkdir medi_db && mv ${taxonomy} ${bins} ${self_class} medi_db + bracken-build -d medi_db -t ${task.cpus} -k 35 -l 100 + bracken-build -d medi_db -t ${task.cpus} -k 35 -l 150 """ } process add_info { cpus 1 memory "1 GB" - publishDir params.out + publishDir params.out, mode: "copy", overwrite: true input: path(db) output: - path("$db") + tuple path("manifest.csv"), path("food_matches.csv"), path("food_contents.csv.gz") script: """ - cp ${params.downloads}/dbs/{food_matches.csv,food_contents.csv.gz} ${db} - cp ${params.downloads}/manifest.csv ${db} + cp ${params.downloads}/dbs/{food_matches.csv,food_contents.csv.gz} . + cp ${params.downloads}/manifest.csv . """ } From 86af94c4064f8966f114b227fec7d672ae6abc4f Mon Sep 17 00:00:00 2001 From: Christian Diener Date: Wed, 9 Apr 2025 10:08:09 +0200 Subject: [PATCH 30/82] add ftp option to kraken db downloads --- build_kraken.nf | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/build_kraken.nf b/build_kraken.nf index 1e06d50..ec50d52 100644 --- a/build_kraken.nf +++ b/build_kraken.nf @@ -3,7 +3,7 @@ nextflow.enable.dsl = 2 params.additionalDbs = ["bacteria", "archaea", "human", "viral", "plasmid", "UniVec_Core"] -params.maxDbSize = "750 GB" +params.maxDbSize = "500 GB" params.confidence = 0.3 params.threads = 20 params.rebuild = false @@ -11,6 +11,7 @@ params.downloads = "${launchDir}/data" params.out = "${launchDir}/data" params.db = "${params.out}/medi_db" params.additionalDecoys ="${params.out}/decoys" +params.useFtp = false /* Helper functions */ @@ -26,6 +27,7 @@ def estimate_db_size(hash, extra) { } workflow { + println(params) if (!params.rebuild) { Channel.fromPath("${params.out}/sequences/*.fna.gz").set{food_sequences} @@ -106,12 +108,12 @@ process add_existing { if (group == "human") """ mkdir medi_db && mv ${taxonomy} medi_db - kraken2-build --download-library $group --db medi_db --no-mask --threads ${task.cpus} + kraken2-build --download-library $group --db medi_db --no-mask --threads ${task.cpus} ${params.useFtp ? "--use-ftp" : ""} """ else """ mkdir medi_db && mv taxonomy medi_db - kraken2-build --download-library $group --db medi_db --threads ${task.cpus} + kraken2-build --download-library $group --db medi_db --threads ${task.cpus} ${params.useFtp ? "--use-ftp" : ""} """ } @@ -208,10 +210,7 @@ process build_bracken { process add_info { cpus 1 memory "1 GB" - publishDir params.out, mode: "copy", overwrite: true - - input: - path(db) + publishDir params.db, mode: "copy", overwrite: true output: tuple path("manifest.csv"), path("food_matches.csv"), path("food_contents.csv.gz") From 60c4a6e9a535db92ffbb0471798ef478e37bb538 Mon Sep 17 00:00:00 2001 From: Christian Diener Date: Thu, 24 Apr 2025 13:28:02 +0200 Subject: [PATCH 31/82] further improvements to build --- build_kraken.nf | 64 ++++++++++++++++++++++++++----------------------- 1 file changed, 34 insertions(+), 30 deletions(-) diff --git a/build_kraken.nf b/build_kraken.nf index ec50d52..0c56bfa 100644 --- a/build_kraken.nf +++ b/build_kraken.nf @@ -12,15 +12,16 @@ params.out = "${launchDir}/data" params.db = "${params.out}/medi_db" params.additionalDecoys ="${params.out}/decoys" params.useFtp = false +params.readLengths = [100, 150, 250] /* Helper functions */ // Helper to calculate the required RAM for the Kraken2 database -def estimate_db_size(hash, extra) { +def estimate_db_size(db, extra) { def db_size = null // Calculate db memory requirement - db_size = MemoryUnit.of(file(hash).size()) + extra + db_size = MemoryUnit.of(db*.size().sum()) + extra log.info("Based on the hash size I am reserving ${db_size.toGiga()}GB of memory for Kraken2.") return db_size @@ -28,6 +29,9 @@ def estimate_db_size(hash, extra) { workflow { println(params) + + rlens = Channel.from(params.readLengths) + if (!params.rebuild) { Channel.fromPath("${params.out}/sequences/*.fna.gz").set{food_sequences} @@ -46,12 +50,12 @@ workflow { ) } else { taxonomy = Channel.of(file("${params.db}/taxonomy")) - lib = Channel.of(file("${params.db}/library")) + lib = Channel.of(file("${params.out}/library")) } build_kraken_db(taxonomy, lib) self_classify(build_kraken_db.out, lib) - build_bracken(self_classify.out) + build_bracken(build_kraken_db.out, self_classify.out, lib, rlens) add_info() } @@ -121,22 +125,20 @@ process assemble_library { cpus 1 memory "8 GB" time "12h" - publishDir params.db + publishDir params.out input: - path(taxonomy) path(existing) path(sequences) output: - path("medi_db/library") + path("library") script: """ - mkdir medi_db && mkdir medi_db/library && mkdir medi_db/library/added - mv ${taxonomy} medi_db - mv ${existing} medi_db/library - mv ${sequences} medi_db/library/added + mkdir library && mkdir library/added + mv ${existing} library + mv ${sequences} library/added """ } @@ -152,58 +154,60 @@ process build_kraken_db { path(library) output: - tuple path("medi_db/taxonomy"), path("medi_db/*.k2d") + tuple path("taxonomy"), path("*.k2d"), path("seq2taxid.map") script: """ - mkdir medi_db && mv ${taxonomy} ${library} medi_db - kraken2-build --build --db medi_db \ + kraken2-build --build --db . \ --threads ${task.cpus} \ - --max-db-size ${task.memory.toGiga()} + --max-db-size ${MemoryUnit.of(params.maxDbSize).toBytes()} """ } process self_classify { - cpus 1 - memory { estimate_db_size("${db}/hash.k2d", 64.GB) } - time "48 h" + cpus params.threads + memory { estimate_db_size(bins, 400.GB) } + time "5 d" input: - tuple path(taxonomy), path(bins) + tuple path(tax), path(bins), path(seqmap) path(library) output: - tuple path(taxonomy), path(bins), path("medi_db/database.kraken") + path("database.kraken") script: """ - mkdir medi_db && mv ${taxonomy} ${bins} medi_db - kraken2 --db medi_db --threads ${task.cpus} \ - --confidence ${params.confidence} \ - --threads ${task.cpus} \ - --memory-mapping ${library}/*/*.f*a > medi_db/database.kraken + for f in ${library}/*/*.f*a; do + echo "Classifying \$f..." + kraken2 --db . --threads ${task.cpus} \ + --confidence ${params.confidence} \ + --threads ${task.cpus} \ + --memory-mapping \$f >> medi_db/database.kraken + done """ } process build_bracken { - cpus 20 + cpus params.threads memory "64 GB" publishDir params.out time "12 h" publishDir params.db input: - tuple path(taxonomy), path(bins), path(self_class) + tuple path(taxonomy), path(bins), path(seqmap) + path(self_class) + path(lib) + each rlen output: path("database*.kmer_distrib") script: """ - mkdir medi_db && mv ${taxonomy} ${bins} ${self_class} medi_db - bracken-build -d medi_db -t ${task.cpus} -k 35 -l 100 - bracken-build -d medi_db -t ${task.cpus} -k 35 -l 150 + bracken-build -d . -t ${task.cpus} -k 35 -l ${rlen} """ } From b046ff72f2b04266df8d004339dd7cf60bdbefa9 Mon Sep 17 00:00:00 2001 From: Christian Diener Date: Thu, 17 Apr 2025 14:28:23 +0200 Subject: [PATCH 32/82] make compatible with new NCBI ranks --- bin/fixk2report.R | 19 +++++++++++++------ medi.yml | 2 +- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/bin/fixk2report.R b/bin/fixk2report.R index aedc27f..184b3ce 100755 --- a/bin/fixk2report.R +++ b/bin/fixk2report.R @@ -3,21 +3,28 @@ # Fixes missing ranks in Kraken2 reports library(data.table) +library(futile.logger) + +domains <- c("Archaea", "Bacteria", "Eukaryota") args <- commandArgs(trailingOnly = TRUE) report <- fread(args[1], sep="\t", header=FALSE, strip.white=FALSE) fix <- function(name) { name <- trimws(name) + + out <- "D1" if (name == "root") { - return("R") + out <- "R" } else if (name == "cellular organisms") { - return("R1") - } else { - return("D") + out <- "R1" + } else if (name %in% domains) { + out <- "D" } + + flog.info("Mapping %s -> rank: %s", name, out) + return(out) } -report[V4 == "" | V4 == "1", V4 := sapply(V6, fix)] -report[V4 == "1", V4 := "D1"] +report[V4 == "" | (V4 %chin% as.character(0:9)), V4 := sapply(V6, fix)] fwrite(report, args[2], sep="\t", quote=FALSE, col.names=FALSE) \ No newline at end of file diff --git a/medi.yml b/medi.yml index f545edf..14a5d5b 100755 --- a/medi.yml +++ b/medi.yml @@ -23,5 +23,5 @@ dependencies: - r-futile.logger - bioconductor-biostrings - taxonkit - - architeuthis>=0.2.1 + - architeuthis>=0.4.0 - gxx \ No newline at end of file From 30447cc4589461bcfdce38049b0cfd7e3d6242ec Mon Sep 17 00:00:00 2001 From: Christian Diener Date: Mon, 5 May 2025 12:29:08 +0200 Subject: [PATCH 33/82] several fixes to pipeline --- bin/download.R | 2 +- build_kraken.nf | 7 ++++--- quant.nf | 15 ++++++++++----- 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/bin/download.R b/bin/download.R index 52a07bb..cd3fd09 100755 --- a/bin/download.R +++ b/bin/download.R @@ -135,4 +135,4 @@ if (args[2] == "decoys") { flog.info("Downloaded genomes for %d decoys summing to %.2g Mbps.", nrow(decoys), decoys[, sum(seqlength) / 1e6]) fwrite(decoys, "decoys.csv") -} \ No newline at end of file +} diff --git a/build_kraken.nf b/build_kraken.nf index 0c56bfa..276ef2c 100644 --- a/build_kraken.nf +++ b/build_kraken.nf @@ -144,7 +144,7 @@ process assemble_library { process build_kraken_db { cpus params.threads - memory { MemoryUnit.of(params.maxDbSize) + 16.GB } + memory { MemoryUnit.of(params.maxDbSize) + 100.GB } cpus params.threads time "72 h" publishDir params.db @@ -154,10 +154,11 @@ process build_kraken_db { path(library) output: - tuple path("taxonomy"), path("*.k2d"), path("seq2taxid.map") + tuple path("taxonomy"), path("*.k2d"), path("seqid2taxid.map") script: """ + alias find="find -L" # Kraken2 bug see https://github.com/DerrickWood/kraken2/issues/67 kraken2-build --build --db . \ --threads ${task.cpus} \ --max-db-size ${MemoryUnit.of(params.maxDbSize).toBytes()} @@ -184,7 +185,7 @@ process self_classify { kraken2 --db . --threads ${task.cpus} \ --confidence ${params.confidence} \ --threads ${task.cpus} \ - --memory-mapping \$f >> medi_db/database.kraken + --memory-mapping \$f >> database.kraken done """ } diff --git a/quant.nf b/quant.nf index f91f28b..5e4d169 100644 --- a/quant.nf +++ b/quant.nf @@ -23,15 +23,20 @@ params.help = false /* Helper functions */ // Helper to calculate the required RAM for the Kraken2 database -def estimate_db_size(hash) { +def estimate_db_size(hash, extra) { def db_size = null // Calculate db memory requirement if (params.dbmem) { db_size = MemoryUnit.of("${params.dbmem} GB") - } else { - db_size = MemoryUnit.of(file(hash).size()) + 6.GB - log.info("Based on the hash size I am reserving ${db_size.toGiga()}GB of memory for Kraken2.") + } else { + hash_size = MemoryUnit.of(file(hash).size()) + extra = MemoryUnit.of(extra) + db_size = hash_size + extra + log.info( + "Based on the hash size and input I am reserving ${db_size.toGiga()}GB" + + " of memory for Kraken2 [hash: ${hash_size.toGiga()} GB, reads: ${extra.toGiga()} GB]." + ) } return db_size @@ -175,7 +180,7 @@ process preprocess { process kraken { cpus params.maxcpus - memory { estimate_db_size("${params.db}/hash.k2d") } + memory { estimate_db_size("${params.db}/hash.k2d", reads*.size().max()*4) } time { 2.h + reads.size() * 0.5.h } scratch false publishDir "${params.data_dir}/kraken2" From bb0684facf186ee9dc7a7a34126380e4b0b6f894 Mon Sep 17 00:00:00 2001 From: Christian Diener Date: Mon, 5 May 2025 13:41:00 +0200 Subject: [PATCH 34/82] remove old prefix --- bin/quantify.R | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bin/quantify.R b/bin/quantify.R index ea436a0..2ca80c6 100755 --- a/bin/quantify.R +++ b/bin/quantify.R @@ -30,12 +30,12 @@ abundances[, "total_reads" := sum(reads), by="sample_id"] abundances[, "total_raw_reads" := sum(kraken_raw_reads), by="sample_id"] abundances[ , - "bacteria_reads" := sum(reads[grepl("k__Bacteria;", lineage)], na.rm = TRUE), + "bacteria_reads" := sum(reads[grepl("__Bacteria;", lineage)], na.rm = TRUE), by="sample_id" ] abundances[ , - "human_reads" := sum(reads[grepl("g__Homo;", lineage)], na.rm = TRUE), + "human_reads" := sum(reads[grepl("__Homo;", lineage)], na.rm = TRUE), by="sample_id" ] From 759f56ec8ed9be2bb44be8d5205a2e2807edb649 Mon Sep 17 00:00:00 2001 From: Christian Diener Date: Wed, 9 Apr 2025 10:11:48 +0200 Subject: [PATCH 35/82] add rsync option to database download to enable https downloads --- bin/download.R | 14 ++++++++++---- database.nf | 7 ++++--- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/bin/download.R b/bin/download.R index cd3fd09..adc5606 100755 --- a/bin/download.R +++ b/bin/download.R @@ -13,6 +13,7 @@ matches <- fread(args[1]) group <- args[2] out_folder <- args[3] target_id <- args[4] +rsync <- as.logical(args[5]) if (is.null(getOption("reutils.api.key"))) { @@ -23,9 +24,14 @@ if (is.null(getOption("reutils.api.key"))) { dir.create(out_folder, recursive = TRUE, showWarnings = FALSE) -ncbi_rsync <- function(url, out) { - rsync_url <- gsub("https://", "rsync://", url) - ret <- system2("rsync", c("--no-motd", rsync_url, out)) +ncbi_download <- function(url, out, rsync = TRUE) { + if (rsync) { + rsync_url <- gsub("https://", "rsync://", url) + ret <- system2("rsync", c("--no-motd", rsync_url, out)) + } else { + https_url <- gsub("ftp://", "https://", url) + ret <- system2("wget", c("-cN", https_url, out)) + } Sys.chmod(out, "0755") return(ret) } @@ -38,7 +44,7 @@ download_genome <- function(hit, out_dir="sequences") { for (i in 0:7) { if (file.exists(hit$filename)) unlink(hit$filename) ret <- tryCatch( - ncbi_rsync(hit$url, hit$filename), + ncbi_download(hit$url, hit$filename, rsync), error = function(e) return(1), warning = function(e) return(1) ) diff --git a/database.nf b/database.nf index 5d9dcba..63f5384 100644 --- a/database.nf +++ b/database.nf @@ -5,6 +5,7 @@ nextflow.enable.dsl = 2 params.threads = 20 params.out = "${launchDir}/data" params.additionalDecoys = null //"${params.out}/decoys.csv" +params.useRsync = true workflow { def foodb = "https://foodb.ca/public/system/downloads/foodb_2020_4_7_csv.tar.gz" @@ -195,7 +196,7 @@ process download_nucleotide { script: """ - download.R $matches "nucleotide" sequences "all" + download.R $matches "nucleotide" sequences "all" ${params.useRsync} """ } @@ -213,7 +214,7 @@ process download_genbank { script: """ - download.R $matches "genbank" sequences "${id}" + download.R $matches "genbank" sequences "${id}" ${params.useRsync} """ } @@ -231,7 +232,7 @@ process download_decoys { script: """ - download.R $decoys decoys decoys "all" + download.R $decoys decoys decoys "all" ${params.useRsync} """ } From 580a10070ce5cb59dcd32f5a29e6f4dba5d5d4a5 Mon Sep 17 00:00:00 2001 From: Christian Diener Date: Fri, 31 Oct 2025 12:36:38 +0100 Subject: [PATCH 36/82] fix scoring --- bin/match.R | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/bin/match.R b/bin/match.R index ca5e892..372781a 100755 --- a/bin/match.R +++ b/bin/match.R @@ -10,7 +10,8 @@ library(reutils) ASSEMBLY_SEARCH <- "txid%s[orgn]" NT_SEARCH <- "txid%s[orgn] AND 10000:10000000000[SLEN] AND biomol_genomic[PROP]" -GB_SCORES <- c(Contig = 0, Chromosome = 1, Scaffold = 1, `Complete Genome` = 2) +GB_CATEGORY_SCORES <- c(`na` = 0, `representative genome` = 10, `reference genome` = 20) +GB_ASSEMBLY_SCORES <- c(Contig = 0, Chromosome = 1, Scaffold = 1, `Complete Genome` = 2) if (is.null(getOption("reutils.api.key"))) { @@ -22,9 +23,8 @@ if (is.null(getOption("reutils.api.key"))) { genbank_quality <- function(dt) { dt <- dt[order(-seq_rel_date)] dt[, "score" := 0] - dt["reference genome" %in% refseq_category, score := score + 20] - dt["representative genome" %in% refseq_category, score := score + 10] - dt[, score := score + GB_SCORES[assembly_level]] + dt[, score := score + GB_CATEGORY_SCORES[refseq_category] + GB_ASSEMBLY_SCORES[assembly_level]] + dt[is.na(score), "score" := 0] return(dt) } From c98f0a6eaaaa1cd5e1beafb66c3970576da47688 Mon Sep 17 00:00:00 2001 From: Christian Diener Date: Mon, 3 Nov 2025 12:22:19 +0100 Subject: [PATCH 37/82] changes to matching and downloading --- bin/download.R | 51 +++++++++++++++++++++++++++++++++----------------- bin/match.R | 15 +++++++++++++-- 2 files changed, 47 insertions(+), 19 deletions(-) diff --git a/bin/download.R b/bin/download.R index adc5606..9178acc 100755 --- a/bin/download.R +++ b/bin/download.R @@ -7,6 +7,8 @@ library(futile.logger) library(Biostrings) library(R.utils) +MAX_SEQLENGTH = 2e9 + args <- commandArgs(trailingOnly = TRUE) matches <- fread(args[1]) @@ -68,29 +70,44 @@ download_genome <- function(hit, out_dir="sequences") { return(hit) } -download_sequences <- function(hits, taxid, out_dir="sequences") { - hits <- copy(hits) - filename <- file.path(out_dir, paste0(as.character(taxid), ".fna")) - flog.info("Downloading sequences for taxon %s...", taxid) - for (i in 0:7) { - Sys.sleep(1/rate + 2^i) - if (file.exists(filename)) unlink(filename) - post <- epost(unique(hits$id), db = "nuccore") - Sys.sleep(1/rate) - fetch <- suppressMessages( +fragmented_efetch <- function(hits, filename) { + hits[, "group" := floor(cumsum(seqlength) / MAX_SEQLENGTH)] + if (file.exists(filename)) unlink(filename) + + for (g in unique(hits$group)) { + for (i in 0:7) { + Sys.sleep(1/rate + 2^i) + post <- epost(hits[group == g, id], db = "nuccore") + Sys.sleep(1/rate) + fetch <- suppressMessages( efetch(post, db = "nuccore", rettype = "fasta", retmode = "text") - ) - if (length(getError(fetch)) == 1) { - write(content(fetch), filename) - if (file.exists(filename) && grepl(">", content(fetch))) { - break + ) + if (length(getError(fetch)) == 1) { + write(content(fetch), filename, append=TRUE) + if (file.exists(filename) && grepl(">", content(fetch))) { + done <- TRUE + break + } } } + if (i == 7) { + if (file.exists(filename)) unlink(filename) + done <- FALSE + break + } } - if (!file.exists(filename) || !grepl(">", content(fetch))) { + + return(done) +} + +download_sequences <- function(hits, taxid, out_dir="sequences") { + hits <- copy(hits) %>% unique(by="id") + filename <- file.path(out_dir, paste0(as.character(taxid), ".fna")) + flog.info("Downloading sequences for taxon %s...", taxid) + done <- fragmented_efetch(hits, filename) + if (!done) { flog.error("Failed downloading %s. UIDs=%s) :(", taxid, paste(unique(hits$id), collapse=", ")) - print(post) stop() } hit <- hits[1] diff --git a/bin/match.R b/bin/match.R index 372781a..cbb8e8c 100755 --- a/bin/match.R +++ b/bin/match.R @@ -56,6 +56,9 @@ find_taxon <- function(taxid, gb_taxa, gb_summary, col, db) { url <- matches[, ftp_path] refseq_category <- matches[, refseq_category] assembly_level <- matches[, assembly_level] + seqlength <- matches$genome_size + genome_type <- "full genome" + name <- paste(matches$organism_name, matches$infraspecific_name) } else { r <- rate for (i in 0:7) { @@ -68,6 +71,11 @@ find_taxon <- function(taxid, gb_taxa, gb_summary, col, db) { sort = "SLEN", db = "nuccore" )) + Sys.sleep(1/rate) + summ <- suppressMessages( + esummary(ret, db="nuccore") %>% content("parsed") %>% data.table(fill=T) + ) + summ[, "Slen" := as.integer(Slen)] if (ret$no_errors() || not_found(ret)) { break } @@ -80,14 +88,17 @@ find_taxon <- function(taxid, gb_taxa, gb_summary, col, db) { uids <- uids[!is.na(uids)] refseq_category <- "excluded" assembly_level <- "contig" - + seqlength <- summ$Slen + genome_type <- summ$Genome + name <- summ$Title } if (length(uids) == 0) { return(NULL) } return(data.table( id = uids, db = db, matched_taxid = taxid, url = url, - refseq_category = refseq_category, assembly_level = assembly_level + refseq_category = refseq_category, assembly_level = assembly_level, + seqlength=seqlength, name = name, genome_type = genome_type )) } From 52c311d50af1e54a2198d46e7a515c2badee63d7 Mon Sep 17 00:00:00 2001 From: Christian Diener Date: Mon, 3 Nov 2025 12:41:35 +0100 Subject: [PATCH 38/82] fix match --- bin/match.R | 22 +++++++++++++++++----- build_kraken.nf | 16 ++++++++-------- 2 files changed, 25 insertions(+), 13 deletions(-) diff --git a/bin/match.R b/bin/match.R index cbb8e8c..05f91d7 100755 --- a/bin/match.R +++ b/bin/match.R @@ -52,7 +52,12 @@ find_taxon <- function(taxid, gb_taxa, gb_summary, col, db) { } else { matches <- matches[score == max(score)] } + uids <- matches[, `#assembly_accession`] + if (length(uids) == 0) { + return(NULL) + } + url <- matches[, ftp_path] refseq_category <- matches[, refseq_category] assembly_level <- matches[, assembly_level] @@ -71,24 +76,31 @@ find_taxon <- function(taxid, gb_taxa, gb_summary, col, db) { sort = "SLEN", db = "nuccore" )) + Sys.sleep(1/rate) + if (not_found(ret)) { + break + } + Sys.sleep(1/rate) summ <- suppressMessages( esummary(ret, db="nuccore") %>% content("parsed") %>% data.table(fill=T) ) - summ[, "Slen" := as.integer(Slen)] - if (ret$no_errors() || not_found(ret)) { - break - } + if (i == 7) { flog.info("Querying failed for %s. Aborting.", taxid) stop() } } + uids <- ret %>% uid() uids <- uids[!is.na(uids)] + if (length(uids) == 0) { + return(NULL) + } + refseq_category <- "excluded" assembly_level <- "contig" - seqlength <- summ$Slen + seqlength <- as.integer(summ$Slen) genome_type <- summ$Genome name <- summ$Title } diff --git a/build_kraken.nf b/build_kraken.nf index 276ef2c..e5a8f29 100644 --- a/build_kraken.nf +++ b/build_kraken.nf @@ -30,12 +30,12 @@ def estimate_db_size(db, extra) { workflow { println(params) - rlens = Channel.from(params.readLengths) + rlens = channel.from(params.readLengths) if (!params.rebuild) { - Channel.fromPath("${params.out}/sequences/*.fna.gz").set{food_sequences} + channel.fromPath("${params.out}/sequences/*.fna.gz").set{food_sequences} - Channel.fromPath("${params.additionalDecoys}/*.fna.gz") + channel.fromPath("${params.additionalDecoys}/*.fna.gz") .set{decoy_sequences} sequences = decoy_sequences.concat(food_sequences) @@ -49,8 +49,8 @@ workflow { add_sequences.out.collect() ) } else { - taxonomy = Channel.of(file("${params.db}/taxonomy")) - lib = Channel.of(file("${params.out}/library")) + taxonomy = channel.of(file("${params.db}/taxonomy")) + lib = channel.of(file("${params.out}/library")) } build_kraken_db(taxonomy, lib) @@ -146,7 +146,7 @@ process build_kraken_db { cpus params.threads memory { MemoryUnit.of(params.maxDbSize) + 100.GB } cpus params.threads - time "72 h" + time "36 h" publishDir params.db input: @@ -168,8 +168,8 @@ process build_kraken_db { process self_classify { cpus params.threads - memory { estimate_db_size(bins, 400.GB) } - time "5 d" + memory { estimate_db_size(bins, 250.GB) } + time "1 d" input: tuple path(tax), path(bins), path(seqmap) From 1a9bd9c14b86a0deb8a42950dbe7f704ce855216 Mon Sep 17 00:00:00 2001 From: Christian Diener Date: Mon, 3 Nov 2025 12:42:34 +0100 Subject: [PATCH 39/82] fix match --- bin/match.R | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/bin/match.R b/bin/match.R index 05f91d7..621f08d 100755 --- a/bin/match.R +++ b/bin/match.R @@ -85,11 +85,10 @@ find_taxon <- function(taxid, gb_taxa, gb_summary, col, db) { summ <- suppressMessages( esummary(ret, db="nuccore") %>% content("parsed") %>% data.table(fill=T) ) - - if (i == 7) { - flog.info("Querying failed for %s. Aborting.", taxid) - stop() - } + } + if (i == 7) { + flog.info("Querying failed for %s. Aborting.", taxid) + stop() } uids <- ret %>% uid() From c44854148deba2abab1c392dae651903e1221b37 Mon Sep 17 00:00:00 2001 From: Christian Diener Date: Mon, 3 Nov 2025 12:50:30 +0100 Subject: [PATCH 40/82] fix match --- bin/match.R | 1 + 1 file changed, 1 insertion(+) diff --git a/bin/match.R b/bin/match.R index 621f08d..e8febda 100755 --- a/bin/match.R +++ b/bin/match.R @@ -85,6 +85,7 @@ find_taxon <- function(taxid, gb_taxa, gb_summary, col, db) { summ <- suppressMessages( esummary(ret, db="nuccore") %>% content("parsed") %>% data.table(fill=T) ) + if (ret$no_errors() && summ$no_errors()) break } if (i == 7) { flog.info("Querying failed for %s. Aborting.", taxid) From 85a25d4f28442565abe89ab0204ddf639d3315b7 Mon Sep 17 00:00:00 2001 From: Christian Diener Date: Mon, 3 Nov 2025 12:55:35 +0100 Subject: [PATCH 41/82] fix match --- bin/match.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/match.R b/bin/match.R index e8febda..1e42300 100755 --- a/bin/match.R +++ b/bin/match.R @@ -85,7 +85,7 @@ find_taxon <- function(taxid, gb_taxa, gb_summary, col, db) { summ <- suppressMessages( esummary(ret, db="nuccore") %>% content("parsed") %>% data.table(fill=T) ) - if (ret$no_errors() && summ$no_errors()) break + if (ret$no_errors()) break } if (i == 7) { flog.info("Querying failed for %s. Aborting.", taxid) From da68d5a25adbd683d4d293908a8a0a699855b4fc Mon Sep 17 00:00:00 2001 From: Christian Diener Date: Mon, 3 Nov 2025 13:45:19 +0100 Subject: [PATCH 42/82] fix match --- bin/match.R | 32 ++++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/bin/match.R b/bin/match.R index 1e42300..64c6954 100755 --- a/bin/match.R +++ b/bin/match.R @@ -77,16 +77,11 @@ find_taxon <- function(taxid, gb_taxa, gb_summary, col, db) { db = "nuccore" )) Sys.sleep(1/rate) - if (not_found(ret)) { + if (ret$no_errors() || not_found(ret)) { break } - - Sys.sleep(1/rate) - summ <- suppressMessages( - esummary(ret, db="nuccore") %>% content("parsed") %>% data.table(fill=T) - ) - if (ret$no_errors()) break } + if (i == 7) { flog.info("Querying failed for %s. Aborting.", taxid) stop() @@ -94,19 +89,28 @@ find_taxon <- function(taxid, gb_taxa, gb_summary, col, db) { uids <- ret %>% uid() uids <- uids[!is.na(uids)] - if (length(uids) == 0) { + + s <- list(Slen = 0, Genome = NA, Title = NA) + if (length(uids) > 0) { + for (i in 0:7) { + Sys.sleep(1 / rate + 2^i) + summ <- suppressMessages(esummary(ret, db="nuccore")) + if (summ$no_errors()) { + s <- summ %>% content("parsed") %>% data.table(fill=T) + break + } + } + } else { return(NULL) } refseq_category <- "excluded" assembly_level <- "contig" - seqlength <- as.integer(summ$Slen) - genome_type <- summ$Genome - name <- summ$Title - } - if (length(uids) == 0) { - return(NULL) + seqlength <- as.integer(s$Slen) + genome_type <- s$Genome + name <- s$Title } + return(data.table( id = uids, db = db, matched_taxid = taxid, url = url, refseq_category = refseq_category, assembly_level = assembly_level, From 6e6a3a0438c3bd1d67214269712484f940c19531 Mon Sep 17 00:00:00 2001 From: Christian Diener Date: Mon, 3 Nov 2025 13:53:50 +0100 Subject: [PATCH 43/82] fix match --- bin/match.R | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/bin/match.R b/bin/match.R index 64c6954..84b4e4a 100755 --- a/bin/match.R +++ b/bin/match.R @@ -111,11 +111,15 @@ find_taxon <- function(taxid, gb_taxa, gb_summary, col, db) { name <- s$Title } - return(data.table( + result <- data.table( id = uids, db = db, matched_taxid = taxid, url = url, refseq_category = refseq_category, assembly_level = assembly_level, seqlength=seqlength, name = name, genome_type = genome_type - )) + ) + + print(result) + + return(result) } ordered_match <- function( From 1acbc45c131c7f5a8ff60f69cbb2ef1dc6dd1ecd Mon Sep 17 00:00:00 2001 From: Christian Diener Date: Mon, 3 Nov 2025 14:57:33 +0100 Subject: [PATCH 44/82] fix match --- bin/match.R | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/bin/match.R b/bin/match.R index 84b4e4a..c13ecdb 100755 --- a/bin/match.R +++ b/bin/match.R @@ -104,6 +104,10 @@ find_taxon <- function(taxid, gb_taxa, gb_summary, col, db) { return(NULL) } + if (length(uids) == 0) { + return(NULL) + } + refseq_category <- "excluded" assembly_level <- "contig" seqlength <- as.integer(s$Slen) From 9a825bf85bc0f6b0bc259bac2abcf718777a2526 Mon Sep 17 00:00:00 2001 From: Christian Diener Date: Tue, 4 Nov 2025 12:58:49 +0100 Subject: [PATCH 45/82] fix summary --- bin/match.R | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/bin/match.R b/bin/match.R index c13ecdb..8314896 100755 --- a/bin/match.R +++ b/bin/match.R @@ -96,7 +96,7 @@ find_taxon <- function(taxid, gb_taxa, gb_summary, col, db) { Sys.sleep(1 / rate + 2^i) summ <- suppressMessages(esummary(ret, db="nuccore")) if (summ$no_errors()) { - s <- summ %>% content("parsed") %>% data.table(fill=T) + s <- summ %>% content("parsed") %>% rbindlist(fill=TRUE) break } } @@ -104,10 +104,6 @@ find_taxon <- function(taxid, gb_taxa, gb_summary, col, db) { return(NULL) } - if (length(uids) == 0) { - return(NULL) - } - refseq_category <- "excluded" assembly_level <- "contig" seqlength <- as.integer(s$Slen) @@ -121,8 +117,6 @@ find_taxon <- function(taxid, gb_taxa, gb_summary, col, db) { seqlength=seqlength, name = name, genome_type = genome_type ) - print(result) - return(result) } From 7bd3aa56adae0826ee0e998a45d4dbfadea333f8 Mon Sep 17 00:00:00 2001 From: Christian Diener Date: Tue, 4 Nov 2025 13:08:36 +0100 Subject: [PATCH 46/82] fix summary --- bin/match.R | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/bin/match.R b/bin/match.R index 8314896..e05f752 100755 --- a/bin/match.R +++ b/bin/match.R @@ -96,7 +96,12 @@ find_taxon <- function(taxid, gb_taxa, gb_summary, col, db) { Sys.sleep(1 / rate + 2^i) summ <- suppressMessages(esummary(ret, db="nuccore")) if (summ$no_errors()) { - s <- summ %>% content("parsed") %>% rbindlist(fill=TRUE) + s <- summ %>% content("parsed") + if ("tbl_df" %in% class(s)) { + setDT(s) + } else { + s <- rbindlist(s, fill=TRUE) + } break } } From 1b850400b0947aa3614e9175811ab24d212b2bd6 Mon Sep 17 00:00:00 2001 From: Christian Diener Date: Tue, 4 Nov 2025 13:11:42 +0100 Subject: [PATCH 47/82] provide more info --- bin/match.R | 2 ++ 1 file changed, 2 insertions(+) diff --git a/bin/match.R b/bin/match.R index e05f752..38fd6b6 100755 --- a/bin/match.R +++ b/bin/match.R @@ -121,6 +121,8 @@ find_taxon <- function(taxid, gb_taxa, gb_summary, col, db) { refseq_category = refseq_category, assembly_level = assembly_level, seqlength=seqlength, name = name, genome_type = genome_type ) + flog.info("Found %d records for %s with a total size of %g MBps.", + nrow(result), taxid, result[, sum(seqlength) / 1e6]) return(result) } From 6758c5d1ed7065fcc9730746df3d835a29336eb3 Mon Sep 17 00:00:00 2001 From: Christian Diener Date: Tue, 4 Nov 2025 13:12:17 +0100 Subject: [PATCH 48/82] provide more info --- bin/match.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/match.R b/bin/match.R index 38fd6b6..bb9af18 100755 --- a/bin/match.R +++ b/bin/match.R @@ -122,7 +122,7 @@ find_taxon <- function(taxid, gb_taxa, gb_summary, col, db) { seqlength=seqlength, name = name, genome_type = genome_type ) flog.info("Found %d records for %s with a total size of %g MBps.", - nrow(result), taxid, result[, sum(seqlength) / 1e6]) + nrow(result), taxid, sum(seqlength) / 1e6) return(result) } From e532dddbd2a6816137eff8463fac2e86bcc069f9 Mon Sep 17 00:00:00 2001 From: Christian Diener Date: Tue, 4 Nov 2025 13:30:49 +0100 Subject: [PATCH 49/82] provide more info --- bin/match.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/match.R b/bin/match.R index bb9af18..0adfedf 100755 --- a/bin/match.R +++ b/bin/match.R @@ -37,7 +37,7 @@ not_found <- function(res) { } find_taxon <- function(taxid, gb_taxa, gb_summary, col, db) { - url <- NULL + url <- NA taxid <- as.character(taxid)[!is.na(taxid)] if (db == "genbank") { flog.info("Querying the assembly database for taxon %s...", taxid) From 4927ae00561aa6ffccb8be0306668aea850396b9 Mon Sep 17 00:00:00 2001 From: Christian Diener Date: Tue, 4 Nov 2025 13:42:48 +0100 Subject: [PATCH 50/82] provide more info --- bin/match.R | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bin/match.R b/bin/match.R index 0adfedf..6f2c024 100755 --- a/bin/match.R +++ b/bin/match.R @@ -121,8 +121,8 @@ find_taxon <- function(taxid, gb_taxa, gb_summary, col, db) { refseq_category = refseq_category, assembly_level = assembly_level, seqlength=seqlength, name = name, genome_type = genome_type ) - flog.info("Found %d records for %s with a total size of %g MBps.", - nrow(result), taxid, sum(seqlength) / 1e6) + flog.info("Found %d records for %s with a total size of %g MBps. [%d columns]", + nrow(result), taxid, sum(seqlength) / 1e6, ncol(result)) return(result) } From 76021d93c20ae0becdbb163c92d1ec8584faed19 Mon Sep 17 00:00:00 2001 From: Christian Diener Date: Tue, 4 Nov 2025 13:52:12 +0100 Subject: [PATCH 51/82] handle missing fields in summary --- bin/match.R | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/bin/match.R b/bin/match.R index 6f2c024..238bb62 100755 --- a/bin/match.R +++ b/bin/match.R @@ -111,9 +111,9 @@ find_taxon <- function(taxid, gb_taxa, gb_summary, col, db) { refseq_category <- "excluded" assembly_level <- "contig" - seqlength <- as.integer(s$Slen) - genome_type <- s$Genome - name <- s$Title + seqlength <- ifelse("Slen" %in% names(s), as.integer(s$Slen), 0) + genome_type <- ifelse("Genome" %in% names(s), s$Genome, NA) + name <- ifelse("Title" %in% names(s), s$Title, NA) } result <- data.table( From 750ace467593740c94cad1a832c847e20e46edee Mon Sep 17 00:00:00 2001 From: Christian Diener Date: Tue, 4 Nov 2025 13:58:20 +0100 Subject: [PATCH 52/82] handle missing fields in summary --- bin/match.R | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bin/match.R b/bin/match.R index 238bb62..d740e3a 100755 --- a/bin/match.R +++ b/bin/match.R @@ -112,8 +112,8 @@ find_taxon <- function(taxid, gb_taxa, gb_summary, col, db) { refseq_category <- "excluded" assembly_level <- "contig" seqlength <- ifelse("Slen" %in% names(s), as.integer(s$Slen), 0) - genome_type <- ifelse("Genome" %in% names(s), s$Genome, NA) - name <- ifelse("Title" %in% names(s), s$Title, NA) + genome_type <- ifelse("Genome" %in% names(s), s$Genome, "na") + name <- ifelse("Title" %in% names(s), s$Title, "na") } result <- data.table( From b42f7780810850476d49f761d1b8ea945ff84a43 Mon Sep 17 00:00:00 2001 From: Christian Diener Date: Tue, 4 Nov 2025 15:12:38 +0100 Subject: [PATCH 53/82] remove redundant entries --- bin/download.R | 7 ++++--- bin/match.R | 5 ++++- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/bin/download.R b/bin/download.R index 9178acc..076f94d 100755 --- a/bin/download.R +++ b/bin/download.R @@ -70,9 +70,11 @@ download_genome <- function(hit, out_dir="sequences") { return(hit) } -fragmented_efetch <- function(hits, filename) { +fragmented_efetch <- function(hits, taxid, filename) { hits[, "group" := floor(cumsum(seqlength) / MAX_SEQLENGTH)] if (file.exists(filename)) unlink(filename) + flog.info("Downloading sequences for taxon %s [fragmented into %d groups]...", + taxid, hits[, uniqueN(group)]) for (g in unique(hits$group)) { for (i in 0:7) { @@ -104,8 +106,7 @@ fragmented_efetch <- function(hits, filename) { download_sequences <- function(hits, taxid, out_dir="sequences") { hits <- copy(hits) %>% unique(by="id") filename <- file.path(out_dir, paste0(as.character(taxid), ".fna")) - flog.info("Downloading sequences for taxon %s...", taxid) - done <- fragmented_efetch(hits, filename) + done <- fragmented_efetch(hits, taxid, filename) if (!done) { flog.error("Failed downloading %s. UIDs=%s) :(", taxid, paste(unique(hits$id), collapse=", ")) stop() diff --git a/bin/match.R b/bin/match.R index d740e3a..ced7daf 100755 --- a/bin/match.R +++ b/bin/match.R @@ -121,7 +121,10 @@ find_taxon <- function(taxid, gb_taxa, gb_summary, col, db) { refseq_category = refseq_category, assembly_level = assembly_level, seqlength=seqlength, name = name, genome_type = genome_type ) - flog.info("Found %d records for %s with a total size of %g MBps. [%d columns]", + results <- results[order(id, -seqlength)] %>% + unique(by=c("id", "db", "matched_taxid", "assembly_level", "name", "genome_type")) + + flog.info("Found %d unique records for %s with a total size of %g MBps.", nrow(result), taxid, sum(seqlength) / 1e6, ncol(result)) return(result) From 16ae788829dcd76a1288e419ef050a018375678c Mon Sep 17 00:00:00 2001 From: Christian Diener Date: Tue, 4 Nov 2025 15:15:19 +0100 Subject: [PATCH 54/82] remove redundant entries --- bin/match.R | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bin/match.R b/bin/match.R index ced7daf..3474ce2 100755 --- a/bin/match.R +++ b/bin/match.R @@ -121,8 +121,8 @@ find_taxon <- function(taxid, gb_taxa, gb_summary, col, db) { refseq_category = refseq_category, assembly_level = assembly_level, seqlength=seqlength, name = name, genome_type = genome_type ) - results <- results[order(id, -seqlength)] %>% - unique(by=c("id", "db", "matched_taxid", "assembly_level", "name", "genome_type")) + results <- results[order(-seqlength)] %>% + unique(by=c("db", "matched_taxid", "assembly_level", "name", "genome_type")) flog.info("Found %d unique records for %s with a total size of %g MBps.", nrow(result), taxid, sum(seqlength) / 1e6, ncol(result)) From 133d0535390adbfa49da6a959fde0366b78ba143 Mon Sep 17 00:00:00 2001 From: Christian Diener Date: Tue, 4 Nov 2025 15:17:33 +0100 Subject: [PATCH 55/82] remove redundant entries --- bin/match.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/match.R b/bin/match.R index 3474ce2..6ddab94 100755 --- a/bin/match.R +++ b/bin/match.R @@ -121,7 +121,7 @@ find_taxon <- function(taxid, gb_taxa, gb_summary, col, db) { refseq_category = refseq_category, assembly_level = assembly_level, seqlength=seqlength, name = name, genome_type = genome_type ) - results <- results[order(-seqlength)] %>% + result <- result[order(-seqlength)] %>% unique(by=c("db", "matched_taxid", "assembly_level", "name", "genome_type")) flog.info("Found %d unique records for %s with a total size of %g MBps.", From c27a18593ba4c8603db6d4c2b9e630b27e478599 Mon Sep 17 00:00:00 2001 From: Christian Diener Date: Tue, 4 Nov 2025 15:31:31 +0100 Subject: [PATCH 56/82] fix redundant entries --- bin/match.R | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/bin/match.R b/bin/match.R index 6ddab94..dd4d816 100755 --- a/bin/match.R +++ b/bin/match.R @@ -90,7 +90,6 @@ find_taxon <- function(taxid, gb_taxa, gb_summary, col, db) { uids <- ret %>% uid() uids <- uids[!is.na(uids)] - s <- list(Slen = 0, Genome = NA, Title = NA) if (length(uids) > 0) { for (i in 0:7) { Sys.sleep(1 / rate + 2^i) @@ -111,9 +110,21 @@ find_taxon <- function(taxid, gb_taxa, gb_summary, col, db) { refseq_category <- "excluded" assembly_level <- "contig" - seqlength <- ifelse("Slen" %in% names(s), as.integer(s$Slen), 0) - genome_type <- ifelse("Genome" %in% names(s), s$Genome, "na") - name <- ifelse("Title" %in% names(s), s$Title, "na") + if ("Slen" %in% names(s) { + seqlength <- as.integer(s$Slen) + } else { + seqlength <- 0 + } + if ("Genome" %in% names(s) { + genome_type <- s$Genome + } else { + genome_type <- "na" + } + if ("Title" %in% names(s) { + name <- s$Title + } else { + name <- "na" + } } result <- data.table( From 0333006a00d8dec9061716333b96ca783a6daeed Mon Sep 17 00:00:00 2001 From: Christian Diener Date: Tue, 4 Nov 2025 15:32:16 +0100 Subject: [PATCH 57/82] fix redundant entries --- bin/match.R | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/bin/match.R b/bin/match.R index dd4d816..80d28f3 100755 --- a/bin/match.R +++ b/bin/match.R @@ -110,17 +110,17 @@ find_taxon <- function(taxid, gb_taxa, gb_summary, col, db) { refseq_category <- "excluded" assembly_level <- "contig" - if ("Slen" %in% names(s) { + if ("Slen" %in% names(s)) { seqlength <- as.integer(s$Slen) } else { seqlength <- 0 } - if ("Genome" %in% names(s) { + if ("Genome" %in% names(s)) { genome_type <- s$Genome } else { genome_type <- "na" } - if ("Title" %in% names(s) { + if ("Title" %in% names(s)) { name <- s$Title } else { name <- "na" From 773aaadd30be69c450456d4b2e55c9795c036df1 Mon Sep 17 00:00:00 2001 From: Christian Diener Date: Fri, 31 Oct 2025 12:40:14 +0100 Subject: [PATCH 58/82] add mem --- database.nf | 1 + 1 file changed, 1 insertion(+) diff --git a/database.nf b/database.nf index 63f5384..9780162 100644 --- a/database.nf +++ b/database.nf @@ -50,6 +50,7 @@ workflow { process download_foodb_genbank { cpus 1 + memory "2 GB" publishDir "${params.out}/dbs" input: From c9208e09612e6dc9fc8db3bcf072b6c7a72ebb00 Mon Sep 17 00:00:00 2001 From: Christian Diener Date: Mon, 17 Nov 2025 14:38:50 +0100 Subject: [PATCH 59/82] some small fixes --- build_kraken.nf | 1 - database.nf | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/build_kraken.nf b/build_kraken.nf index e5a8f29..0b003c8 100644 --- a/build_kraken.nf +++ b/build_kraken.nf @@ -44,7 +44,6 @@ workflow { add_existing(taxonomy, params.additionalDbs) add_sequences(sequences, taxonomy) lib = assemble_library( - taxonomy, add_existing.out.collect(), add_sequences.out.collect() ) diff --git a/database.nf b/database.nf index 9780162..fd3cf74 100644 --- a/database.nf +++ b/database.nf @@ -315,7 +315,7 @@ process sketch { } process ANI { - cpus params.threads + cpus 8 memory "96 GB" publishDir "${params.out}", mode: "copy", overwite: true time "8 h" From 50ba29c4c15e5c33c1ce1436bae8d7e894a06ce5 Mon Sep 17 00:00:00 2001 From: Christian Diener Date: Mon, 24 Nov 2025 09:03:21 +0100 Subject: [PATCH 60/82] allow more mem for preprocessing --- patches/build.patch | 28 ++++++++++++++++++++++++++++ patches/download_genomic.patch | 11 +++++++++++ quant.nf | 2 +- 3 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 patches/build.patch create mode 100644 patches/download_genomic.patch diff --git a/patches/build.patch b/patches/build.patch new file mode 100644 index 0000000..d1d519d --- /dev/null +++ b/patches/build.patch @@ -0,0 +1,28 @@ +--- /home/gpfs/o_diener/code/k2/scripts/build_kraken2_db.sh 2025-11-17 14:42:43.458544663 +0100 ++++ /home/gpfs/o_diener/miniforge3/envs/medi/share/kraken2-2.1.3-4/libexec/build_kraken2_db.sh 2025-04-29 09:24:03.422237276 +0200 +@@ -32,7 +32,7 @@ + } + + function list_sequence_files() { +- find library/ '(' -name '*.fna' -o -name '*.faa' ')' -print0 ++ find -L library/ '(' -name '*.fna' -o -name '*.faa' ')' -print0 + } + + start_time=$(get_current_time) +@@ -66,14 +66,14 @@ + + echo "Creating sequence ID to taxonomy ID map (step 1)..." + if [ -d "library/added" ]; then +- find library/added/ -name 'prelim_map_*.txt' | xargs cat > library/added/prelim_map.txt ++ find -L library/added/ -name 'prelim_map_*.txt' | xargs cat > library/added/prelim_map.txt + fi + seqid2taxid_map_file=seqid2taxid.map + if [ -e "$seqid2taxid_map_file" ]; then + echo "Sequence ID to taxonomy ID map already present, skipping map creation." + else + step_time=$(get_current_time) +- find library/ -maxdepth 2 -name prelim_map.txt | xargs cat > taxonomy/prelim_map.txt ++ find -L library/ -maxdepth 2 -name prelim_map.txt | xargs cat > taxonomy/prelim_map.txt + if [ ! -s "taxonomy/prelim_map.txt" ]; then + echo "No preliminary seqid/taxid mapping files found, aborting." + exit 1 diff --git a/patches/download_genomic.patch b/patches/download_genomic.patch new file mode 100644 index 0000000..4dc75cc --- /dev/null +++ b/patches/download_genomic.patch @@ -0,0 +1,11 @@ +--- /home/gpfs/o_diener/code/k2/scripts/download_genomic_library.sh 2025-11-17 14:42:43.476888231 +0100 ++++ /home/gpfs/o_diener/miniforge3/envs/medi/share/kraken2-2.1.3-4/libexec/download_genomic_library.sh 2025-04-09 12:42:41.740766021 +0200 +@@ -68,7 +68,7 @@ + else + awk '{ print $NF }' .listing | perl -ple 'tr/\r//d' | grep '\.fna\.gz' > manifest.txt + fi +- cat manifest.txt | xargs -n1 -I{} wget -q $FTP_SERVER/genomes/refseq/plasmid/{} ++ cat manifest.txt | xargs -n1 -I{} wget -q https://$NCBI_SERVER/genomes/refseq/plasmid/{} + cat manifest.txt | xargs -n1 -I{} gunzip -c {} > $library_file + rm -f plasmid.* .listing + scan_fasta_file.pl $library_file > prelim_map.txt diff --git a/quant.nf b/quant.nf index 5e4d169..05d9d46 100644 --- a/quant.nf +++ b/quant.nf @@ -146,7 +146,7 @@ workflow { process preprocess { cpus 4 - memory "6 GB" + memory "8 GB" publishDir "${params.out_dir}/preprocessed" time "1h" From 4ea06a53920e7f8590b8e9a38927aee584cc7647 Mon Sep 17 00:00:00 2001 From: Christian Diener Date: Mon, 24 Nov 2025 09:04:35 +0100 Subject: [PATCH 61/82] check for errors too --- bin/match.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/match.R b/bin/match.R index 80d28f3..b32364d 100755 --- a/bin/match.R +++ b/bin/match.R @@ -82,7 +82,7 @@ find_taxon <- function(taxid, gb_taxa, gb_summary, col, db) { } } - if (i == 7) { + if ((i == 7) && !ret$no_errors()) { flog.info("Querying failed for %s. Aborting.", taxid) stop() } From 165561d39038901037f8f71a143277f6e7afa656 Mon Sep 17 00:00:00 2001 From: Christian Diener Date: Mon, 24 Nov 2025 09:14:49 +0100 Subject: [PATCH 62/82] handle insufficient reads for bracken --- quant.nf | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/quant.nf b/quant.nf index 05d9d46..e15cb64 100644 --- a/quant.nf +++ b/quant.nf @@ -29,12 +29,12 @@ def estimate_db_size(hash, extra) { // Calculate db memory requirement if (params.dbmem) { db_size = MemoryUnit.of("${params.dbmem} GB") - } else { + } else { hash_size = MemoryUnit.of(file(hash).size()) extra = MemoryUnit.of(extra) db_size = hash_size + extra log.info( - "Based on the hash size and input I am reserving ${db_size.toGiga()}GB" + + "Based on the hash size and input I am reserving ${db_size.toGiga()}GB" + " of memory for Kraken2 [hash: ${hash_size.toGiga()} GB, reads: ${extra.toGiga()} GB]." ) } @@ -329,7 +329,8 @@ process count_taxa { fixk2report.R ${report} ${lev}/${report} && \ bracken -d ${params.db} -i ${lev}/${report} \ -l ${lev} -o ${lev}/${lev}_${id}.b2 -r ${params.read_length} \ - -t ${params.threshold} -w ${lev}/${id}_bracken.tsv + -t ${params.threshold} -w ${lev}/${id}_bracken.tsv || \ + touch ${lev}/${lev}_${id}.b2 """ } From 3592df7de974add9ebd4295a5ecd3952b0c8fa4b Mon Sep 17 00:00:00 2001 From: Christian Diener Date: Mon, 24 Nov 2025 09:57:59 +0100 Subject: [PATCH 63/82] handle insufficient reads for bracken --- quant.nf | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/quant.nf b/quant.nf index e15cb64..78f9d4e 100644 --- a/quant.nf +++ b/quant.nf @@ -121,7 +121,9 @@ workflow { .map{tuple it.baseName.split(".k2")[0], it} | architeuthis_filter | kraken_report count_taxa(kraken_report.out.combine(levels)) - count_taxa.out.map{s -> tuple(s[1], s[2])} + count_taxa.out + .filter{ s -> !s[2].isEmpty()} + .map{s -> tuple(s[1], s[2])} .groupTuple() .set{merge_groups} merge_taxonomy(merge_groups) From 0060d6134cf93b5fab1c96c31ce7a43b612ca334 Mon Sep 17 00:00:00 2001 From: Christian Diener Date: Tue, 2 Dec 2025 15:14:18 +0100 Subject: [PATCH 64/82] add Dockerfile --- Dockerfile | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 Dockerfile diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..c0c93e3 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,17 @@ +FROM conda-forge:miniforge3 + +RUN mkdir /tmp/medi + +COPY medi.yml Makefile patches /tmp/medi + +RUN mamba env create -n medi -f /tmp/medi.yml && \ + patch ${CONDA_DIR}/envs/medi/share/kraken2-2.1.3-4/libexec/build_kraken2_db.sh /tmp/patches/build.patch && \ + patch ${CONDA_DIR}/envs/medi/share/kraken2-2.1.3-4/libexec/download_genomic_library.sh /tmp/patches/download_genomic.patch && \ + conda activate medi && make && \ + conda clean --tarballs --index-cache --packages --yes && \ + find ${CONDA_DIR} -follow -type f -name '*.a' -delete && \ + find ${CONDA_DIR} -follow -type f -name '*.pyc' -delete && \ + conda clean --force-pkgs-dirs --all --yes && \ + echo ". ${CONDA_DIR}/etc/profile.d/conda.sh && conda activate medi" >> /etc/skel/.bashrc && \ + echo ". ${CONDA_DIR}/etc/profile.d/conda.sh && conda activate medi" >> ~/.bashrc && \ + rm -rf /tmp/medi From 3d30a267aceedf870d241234eae0bf25e9950b30 Mon Sep 17 00:00:00 2001 From: Christian Diener Date: Tue, 2 Dec 2025 15:19:38 +0100 Subject: [PATCH 65/82] add image build --- .github/workflows/image.yml | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 .github/workflows/image.yml diff --git a/.github/workflows/image.yml b/.github/workflows/image.yml new file mode 100644 index 0000000..639b677 --- /dev/null +++ b/.github/workflows/image.yml @@ -0,0 +1,34 @@ +name: Build and push the MEDI image + +on: + push: + tags: + - '[0-9]+.[0-9]+.[0-9]+' + +env: + IMAGE_NAME: cdiener/medi + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Docker meta + id: meta + uses: docker/metadata-action@v5 + with: + images: ${{ env.IMAGE_NAME }} + - name: Login to DockerHub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + - name: Build and push + id: docker_build + uses: docker/build-push-action@v5 + with: + push: true + tags: ${{ steps.meta.outputs.tags }} + annotations: ${{ steps.meta.outputs.annotations }} + - name: Image digest + run: echo ${{ steps.docker_build.outputs.digest }} From bc7c4995b7ec99f80d6278923252deba67c46c74 Mon Sep 17 00:00:00 2001 From: Christian Diener Date: Tue, 2 Dec 2025 15:32:39 +0100 Subject: [PATCH 66/82] see if this works --- .github/workflows/image.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/image.yml b/.github/workflows/image.yml index 639b677..2b561f8 100644 --- a/.github/workflows/image.yml +++ b/.github/workflows/image.yml @@ -2,8 +2,11 @@ name: Build and push the MEDI image on: push: + branches: + - "**" tags: - '[0-9]+.[0-9]+.[0-9]+' + pull_request: env: IMAGE_NAME: cdiener/medi @@ -27,7 +30,7 @@ jobs: id: docker_build uses: docker/build-push-action@v5 with: - push: true + push: contains(github.ref, "tag") tags: ${{ steps.meta.outputs.tags }} annotations: ${{ steps.meta.outputs.annotations }} - name: Image digest From a0884f4a3a7ad5b9b1197641304c8b35c3263421 Mon Sep 17 00:00:00 2001 From: Christian Diener Date: Tue, 2 Dec 2025 15:46:15 +0100 Subject: [PATCH 67/82] see if this works --- .github/workflows/image.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/image.yml b/.github/workflows/image.yml index 2b561f8..89882ca 100644 --- a/.github/workflows/image.yml +++ b/.github/workflows/image.yml @@ -30,7 +30,7 @@ jobs: id: docker_build uses: docker/build-push-action@v5 with: - push: contains(github.ref, "tag") + push: {{ contains(github.ref, "tag") }} tags: ${{ steps.meta.outputs.tags }} annotations: ${{ steps.meta.outputs.annotations }} - name: Image digest From 8fda5e0e263e143666951b5e4e2c0ea475b90f77 Mon Sep 17 00:00:00 2001 From: Christian Diener Date: Tue, 2 Dec 2025 15:46:44 +0100 Subject: [PATCH 68/82] see if this works --- .github/workflows/image.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/image.yml b/.github/workflows/image.yml index 89882ca..15aed04 100644 --- a/.github/workflows/image.yml +++ b/.github/workflows/image.yml @@ -30,7 +30,7 @@ jobs: id: docker_build uses: docker/build-push-action@v5 with: - push: {{ contains(github.ref, "tag") }} + push: ${{ contains(github.ref, "tag") }} tags: ${{ steps.meta.outputs.tags }} annotations: ${{ steps.meta.outputs.annotations }} - name: Image digest From 883e9650c138bc3f316776478f996335592b7b14 Mon Sep 17 00:00:00 2001 From: Christian Diener Date: Tue, 2 Dec 2025 15:47:12 +0100 Subject: [PATCH 69/82] see if this works --- .github/workflows/image.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/image.yml b/.github/workflows/image.yml index 15aed04..7fee2d1 100644 --- a/.github/workflows/image.yml +++ b/.github/workflows/image.yml @@ -30,7 +30,7 @@ jobs: id: docker_build uses: docker/build-push-action@v5 with: - push: ${{ contains(github.ref, "tag") }} + push: ${{ contains(github.ref, 'tag') }} tags: ${{ steps.meta.outputs.tags }} annotations: ${{ steps.meta.outputs.annotations }} - name: Image digest From a34fde07da9085206b28d6020cc1e795477e11ba Mon Sep 17 00:00:00 2001 From: Christian Diener Date: Tue, 2 Dec 2025 15:48:20 +0100 Subject: [PATCH 70/82] see if this works --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index c0c93e3..c0f0e89 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM conda-forge:miniforge3 +FROM conda-forge/miniforge3:latest RUN mkdir /tmp/medi From a5814aabda883252a25a9726e1c8850f764c6e4d Mon Sep 17 00:00:00 2001 From: Christian Diener Date: Tue, 2 Dec 2025 15:51:31 +0100 Subject: [PATCH 71/82] see if this works --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index c0f0e89..aeeb4c1 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM conda-forge/miniforge3:latest +FROM condaforge/miniforge3:latest RUN mkdir /tmp/medi From 980543926f430f18ea76145fa7c1225075e2ec3d Mon Sep 17 00:00:00 2001 From: Christian Diener Date: Tue, 2 Dec 2025 15:52:53 +0100 Subject: [PATCH 72/82] fix paths --- Dockerfile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index aeeb4c1..3bb8bae 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,9 +4,9 @@ RUN mkdir /tmp/medi COPY medi.yml Makefile patches /tmp/medi -RUN mamba env create -n medi -f /tmp/medi.yml && \ - patch ${CONDA_DIR}/envs/medi/share/kraken2-2.1.3-4/libexec/build_kraken2_db.sh /tmp/patches/build.patch && \ - patch ${CONDA_DIR}/envs/medi/share/kraken2-2.1.3-4/libexec/download_genomic_library.sh /tmp/patches/download_genomic.patch && \ +RUN mamba env create -n medi -f /tmp/medi/medi.yml && \ + patch ${CONDA_DIR}/envs/medi/share/kraken2-2.1.3-4/libexec/build_kraken2_db.sh /tmp/medi/patches/build.patch && \ + patch ${CONDA_DIR}/envs/medi/share/kraken2-2.1.3-4/libexec/download_genomic_library.sh /tmp/medi/patches/download_genomic.patch && \ conda activate medi && make && \ conda clean --tarballs --index-cache --packages --yes && \ find ${CONDA_DIR} -follow -type f -name '*.a' -delete && \ From 7c6a011ebc085893e74ed6e9a183fad13543633b Mon Sep 17 00:00:00 2001 From: Christian Diener Date: Tue, 2 Dec 2025 15:55:15 +0100 Subject: [PATCH 73/82] add patch --- medi.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/medi.yml b/medi.yml index 14a5d5b..c4b64cc 100755 --- a/medi.yml +++ b/medi.yml @@ -2,8 +2,8 @@ name: medi channels: - conda-forge - bioconda - - defaults dependencies: + - patch - python>=3.8 - nextflow>=23.10.0 - fastp From 2f9743d6bf5b5819219a7a7080759af52e524d3f Mon Sep 17 00:00:00 2001 From: Christian Diener Date: Tue, 2 Dec 2025 15:57:03 +0100 Subject: [PATCH 74/82] add patch --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 3bb8bae..c6692ad 100644 --- a/Dockerfile +++ b/Dockerfile @@ -5,9 +5,9 @@ RUN mkdir /tmp/medi COPY medi.yml Makefile patches /tmp/medi RUN mamba env create -n medi -f /tmp/medi/medi.yml && \ + conda activate medi && make && \ patch ${CONDA_DIR}/envs/medi/share/kraken2-2.1.3-4/libexec/build_kraken2_db.sh /tmp/medi/patches/build.patch && \ patch ${CONDA_DIR}/envs/medi/share/kraken2-2.1.3-4/libexec/download_genomic_library.sh /tmp/medi/patches/download_genomic.patch && \ - conda activate medi && make && \ conda clean --tarballs --index-cache --packages --yes && \ find ${CONDA_DIR} -follow -type f -name '*.a' -delete && \ find ${CONDA_DIR} -follow -type f -name '*.pyc' -delete && \ From d9a6a6263eb0d18ac13f322043bc842b393e6b46 Mon Sep 17 00:00:00 2001 From: Christian Diener Date: Tue, 2 Dec 2025 15:59:17 +0100 Subject: [PATCH 75/82] add patch --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index c6692ad..a8ae1b8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -5,7 +5,7 @@ RUN mkdir /tmp/medi COPY medi.yml Makefile patches /tmp/medi RUN mamba env create -n medi -f /tmp/medi/medi.yml && \ - conda activate medi && make && \ + . ${CONDA_DIR}/etc/profile.d/conda.sh && conda activate medi && make && \ patch ${CONDA_DIR}/envs/medi/share/kraken2-2.1.3-4/libexec/build_kraken2_db.sh /tmp/medi/patches/build.patch && \ patch ${CONDA_DIR}/envs/medi/share/kraken2-2.1.3-4/libexec/download_genomic_library.sh /tmp/medi/patches/download_genomic.patch && \ conda clean --tarballs --index-cache --packages --yes && \ From 954268de83157594017ff1a13f641a26ae3e728c Mon Sep 17 00:00:00 2001 From: Christian Diener Date: Tue, 2 Dec 2025 16:01:00 +0100 Subject: [PATCH 76/82] add patch --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index a8ae1b8..8cf5d3e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -5,7 +5,7 @@ RUN mkdir /tmp/medi COPY medi.yml Makefile patches /tmp/medi RUN mamba env create -n medi -f /tmp/medi/medi.yml && \ - . ${CONDA_DIR}/etc/profile.d/conda.sh && conda activate medi && make && \ + . ${CONDA_DIR}/etc/profile.d/conda.sh && conda activate medi && make report && \ patch ${CONDA_DIR}/envs/medi/share/kraken2-2.1.3-4/libexec/build_kraken2_db.sh /tmp/medi/patches/build.patch && \ patch ${CONDA_DIR}/envs/medi/share/kraken2-2.1.3-4/libexec/download_genomic_library.sh /tmp/medi/patches/download_genomic.patch && \ conda clean --tarballs --index-cache --packages --yes && \ From fb850f693d319f76734a84ecfb41152ed7d6620d Mon Sep 17 00:00:00 2001 From: Christian Diener Date: Tue, 2 Dec 2025 16:04:15 +0100 Subject: [PATCH 77/82] add patch --- Dockerfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 8cf5d3e..653e7aa 100644 --- a/Dockerfile +++ b/Dockerfile @@ -5,7 +5,8 @@ RUN mkdir /tmp/medi COPY medi.yml Makefile patches /tmp/medi RUN mamba env create -n medi -f /tmp/medi/medi.yml && \ - . ${CONDA_DIR}/etc/profile.d/conda.sh && conda activate medi && make report && \ + . ${CONDA_DIR}/etc/profile.d/conda.sh && conda activate medi && \ + cd /tmp/medi && make report && mv /tmp/medi/bin/kraken2-report /bin && \ patch ${CONDA_DIR}/envs/medi/share/kraken2-2.1.3-4/libexec/build_kraken2_db.sh /tmp/medi/patches/build.patch && \ patch ${CONDA_DIR}/envs/medi/share/kraken2-2.1.3-4/libexec/download_genomic_library.sh /tmp/medi/patches/download_genomic.patch && \ conda clean --tarballs --index-cache --packages --yes && \ From 4a9cfebd588bd13d9a22400bb838327cf0598d02 Mon Sep 17 00:00:00 2001 From: Christian Diener Date: Tue, 2 Dec 2025 16:06:42 +0100 Subject: [PATCH 78/82] add patch --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 653e7aa..db16b4c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,6 @@ FROM condaforge/miniforge3:latest -RUN mkdir /tmp/medi +RUN mkdir /tmp/medi /tmp/medi/bin COPY medi.yml Makefile patches /tmp/medi From c3ea9d6da1f7e52ba7302594e0eaa238d2ddd866 Mon Sep 17 00:00:00 2001 From: Christian Diener Date: Tue, 2 Dec 2025 16:10:55 +0100 Subject: [PATCH 79/82] fix copy --- Dockerfile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index db16b4c..466c2b9 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,13 +2,13 @@ FROM condaforge/miniforge3:latest RUN mkdir /tmp/medi /tmp/medi/bin -COPY medi.yml Makefile patches /tmp/medi +COPY medi.yml Makefile patches/*.patch /tmp/medi RUN mamba env create -n medi -f /tmp/medi/medi.yml && \ . ${CONDA_DIR}/etc/profile.d/conda.sh && conda activate medi && \ cd /tmp/medi && make report && mv /tmp/medi/bin/kraken2-report /bin && \ - patch ${CONDA_DIR}/envs/medi/share/kraken2-2.1.3-4/libexec/build_kraken2_db.sh /tmp/medi/patches/build.patch && \ - patch ${CONDA_DIR}/envs/medi/share/kraken2-2.1.3-4/libexec/download_genomic_library.sh /tmp/medi/patches/download_genomic.patch && \ + patch ${CONDA_DIR}/envs/medi/share/kraken2-2.1.3-4/libexec/build_kraken2_db.sh /tmp/medi/build.patch && \ + patch ${CONDA_DIR}/envs/medi/share/kraken2-2.1.3-4/libexec/download_genomic_library.sh /tmp/medi/download_genomic.patch && \ conda clean --tarballs --index-cache --packages --yes && \ find ${CONDA_DIR} -follow -type f -name '*.a' -delete && \ find ${CONDA_DIR} -follow -type f -name '*.pyc' -delete && \ From 33ce339bf883bfd507ead7df69b1ba279f1a0708 Mon Sep 17 00:00:00 2001 From: Christian Diener Date: Wed, 3 Dec 2025 08:41:32 +0100 Subject: [PATCH 80/82] change entrypoint --- Dockerfile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index 466c2b9..80ccc40 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM condaforge/miniforge3:latest +FROM docker.io/condaforge/miniforge3:latest RUN mkdir /tmp/medi /tmp/medi/bin @@ -13,6 +13,6 @@ RUN mamba env create -n medi -f /tmp/medi/medi.yml && \ find ${CONDA_DIR} -follow -type f -name '*.a' -delete && \ find ${CONDA_DIR} -follow -type f -name '*.pyc' -delete && \ conda clean --force-pkgs-dirs --all --yes && \ - echo ". ${CONDA_DIR}/etc/profile.d/conda.sh && conda activate medi" >> /etc/skel/.bashrc && \ - echo ". ${CONDA_DIR}/etc/profile.d/conda.sh && conda activate medi" >> ~/.bashrc && \ rm -rf /tmp/medi + +ENTRYPOINT ["mamba", "run", "-n", "medi"] From 45d98e9dff6cedc9e9ecde80db7a40c829036489 Mon Sep 17 00:00:00 2001 From: Christian Diener Date: Wed, 3 Dec 2025 13:52:18 +0100 Subject: [PATCH 81/82] add install script --- install.sh | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100755 install.sh diff --git a/install.sh b/install.sh new file mode 100755 index 0000000..5c0d914 --- /dev/null +++ b/install.sh @@ -0,0 +1,11 @@ +#!/usr/bin/env bash + +CONDA_DIR=$1 +ENV_NAME="${2:-medi}" + +echo "🔨 Building the report generator..." && \ +. ${CONDA_DIR}/etc/profile.d/conda.sh && conda activate ${ENV_NAME} && \ +make report && \ +echo "🔨 Patching kraken2..." && \ +patch ${CONDA_DIR}/envs/${ENV_NAME}/medi/share/kraken2-2.1.3-4/libexec/build_kraken2_db.sh ./patches/build.patch && \ +patch ${CONDA_DIR}/envs/${ENV_NAME}/share/kraken2-2.1.3-4/libexec/download_genomic_library.sh ./patches/download_genomic.patch \ No newline at end of file From 90b1a840fe7f8c693796c2b0258376439a2b330d Mon Sep 17 00:00:00 2001 From: Christian Diener Date: Thu, 29 Jan 2026 13:40:58 +0100 Subject: [PATCH 82/82] update quant as well --- bin/quantify.R | 4 ++-- build_kraken.nf | 4 ++-- database.nf | 2 +- medi.yml | 4 ++-- quant.nf | 12 ++++++------ 5 files changed, 13 insertions(+), 13 deletions(-) diff --git a/bin/quantify.R b/bin/quantify.R index 2ca80c6..edaaa9c 100755 --- a/bin/quantify.R +++ b/bin/quantify.R @@ -30,12 +30,12 @@ abundances[, "total_reads" := sum(reads), by="sample_id"] abundances[, "total_raw_reads" := sum(kraken_raw_reads), by="sample_id"] abundances[ , - "bacteria_reads" := sum(reads[grepl("__Bacteria;", lineage)], na.rm = TRUE), + "bacteria_reads" := sum(reads[grepl("d__Bacteria;", lineage)], na.rm = TRUE), by="sample_id" ] abundances[ , - "human_reads" := sum(reads[grepl("__Homo;", lineage)], na.rm = TRUE), + "human_reads" := sum(reads[grepl("g__Homo;", lineage)], na.rm = TRUE), by="sample_id" ] diff --git a/build_kraken.nf b/build_kraken.nf index 0b003c8..e6e2a45 100644 --- a/build_kraken.nf +++ b/build_kraken.nf @@ -143,7 +143,7 @@ process assemble_library { process build_kraken_db { cpus params.threads - memory { MemoryUnit.of(params.maxDbSize) + 100.GB } + memory MemoryUnit.of(params.maxDbSize) + 100.GB cpus params.threads time "36 h" publishDir params.db @@ -167,7 +167,7 @@ process build_kraken_db { process self_classify { cpus params.threads - memory { estimate_db_size(bins, 250.GB) } + memory estimate_db_size(bins, 250.GB) time "1 d" input: diff --git a/database.nf b/database.nf index fd3cf74..da5ad82 100644 --- a/database.nf +++ b/database.nf @@ -39,7 +39,7 @@ workflow { println(params) // Add more decoy sequences if (params.additionalDecoys) { - Channel.fromPath("${params.additionalDecoys}").set{decoy_manifest} + channel.fromPath("${params.additionalDecoys}").set{decoy_manifest} download_decoys(decoy_manifest) } diff --git a/medi.yml b/medi.yml index c4b64cc..5f68562 100755 --- a/medi.yml +++ b/medi.yml @@ -22,6 +22,6 @@ dependencies: - r-magrittr - r-futile.logger - bioconductor-biostrings - - taxonkit - - architeuthis>=0.4.0 + - taxonkit>=0.20.0 + - architeuthis>=0.5.0 - gxx \ No newline at end of file diff --git a/quant.nf b/quant.nf index 78f9d4e..dc266e9 100644 --- a/quant.nf +++ b/quant.nf @@ -30,7 +30,7 @@ def estimate_db_size(hash, extra) { if (params.dbmem) { db_size = MemoryUnit.of("${params.dbmem} GB") } else { - hash_size = MemoryUnit.of(file(hash).size()) + def hash_size = MemoryUnit.of(file(hash).size()) extra = MemoryUnit.of(extra) db_size = hash_size + extra log.info( @@ -83,18 +83,18 @@ workflow { exit 0 } - Channel + channel .fromList(["D", "G", "S"]) .set{levels} // find files if (params.single_end) { - Channel + channel .fromPath("${params.data_dir}/raw/*.fastq.gz") .map{row -> tuple(row.baseName.split("\\.fastq")[0], tuple(row))} .set{raw} } else { - Channel + channel .fromFilePairs([ "${params.data_dir}/raw/*_R{1,2}_001.fastq.gz", "${params.data_dir}/raw/*_{1,2}.fastq.gz", @@ -182,8 +182,8 @@ process preprocess { process kraken { cpus params.maxcpus - memory { estimate_db_size("${params.db}/hash.k2d", reads*.size().max()*4) } - time { 2.h + reads.size() * 0.5.h } + memory estimate_db_size("${params.db}/hash.k2d", reads*.size().max()*4) + time 2.h + reads.size() * 0.5.h scratch false publishDir "${params.data_dir}/kraken2"