Algorithmic recipes: Difference between revisions

From Hackers & Designers
No edit summary
 
m (Hd-onions moved page Algorthimic recipes to Algorithmic recipes)
 
(11 intermediate revisions by the same user not shown)
Line 1: Line 1:
=Algorithmic Chicken Soup=
During the workshop: [[Algorithmic Kitchen]] with [[Luis Rodil-Fernández]] algorithmic recipes were compiled by scraping and sorting a BBC recipe database.
'''The Human/Machine Recipe Collaboration'''
See underneath 2 delicious examples:


[[file:Chicken-and-Potato-Soup.png]]
==Algorithmic Chicken Soup==
 
[[File:Chicken-and-Potato-Soup.png|600px]]
   
Input:


     import re
     import re
     import operator
     import operator
 
   
     verbMap = {}
     verbMap = {}
     adjMap = {}
     adjMap = {}
     otherMap = {}
     otherMap = {}
 
   
     o = store.find(Recipe, Recipe.name.like(u'%onions%'))
     o = store.find(Recipe, Recipe.name.like(u'%onions%'))
     for r in o:
     for r in o:
Line 38: Line 42:
     #    print key, value
     #    print key, value
          
          
     sortedAdj = sorted(adjMap.keys(), key=lambda key: adjMap[key], reverse=True)
     sortedAdj = sorted(adjMap.keys(), key=lambda key:  
    adjMap[key], reverse=True)
     for ing in sortedAdj:
     for ing in sortedAdj:
       print ing
       print ing
     print "------"
     print "------"
     sortedVerbs = sorted(verbMap.keys(), key=lambda key: verbMap[key], reverse=True)
     sortedVerbs = sorted(verbMap.keys(), key=lambda key:  
    verbMap[key], reverse=True)
     for ing in sortedVerbs:
     for ing in sortedVerbs:
         print ing
         print ing
     print "------"
     print "------"
     sortedIng = sorted(ingMap.keys(), key=lambda key: ingMap[key], reverse=True)
     sortedIng = sorted(ingMap.keys(), key=lambda key:  
    ingMap[key], reverse=True)
     for ing in sortedIng:
     for ing in sortedIng:
         print ing
         print ing


The Output
 
----------
Output:
* freshly chopped onions
* freshly chopped onions
* finely sliced olives
* finely sliced olives
Line 59: Line 66:


The End...Eat!
The End...Eat!
==============
 
==HOT Algorithms==
 
[[File:SichuanCucumber.png|600px]]
 
    FROM recipes
    WHERE
    Description LIKE “%spicy%”
    AND description LIKE “%salad%”;
        ID 1026
        u’Chunky bacon and cucumber salad’
        u’A spicy Sichuan-style salad of cucumber
        and fried bacon.’
           
            Serves 6
            PT30M
            PT10M
 
    re = store.find(Recipe, Recipe.id == 1026).any()
    print “name”, re.name
    #print “photo url”, fs.photo.url
    print re.ingredients.count()
 
    print re.ingredients.count()
 
    for i in re.ingredients:
    print i.name
 
Output:
 
name Chunky bacon and cucumber salad
3 tbsp groundnut oil
18 long dried chillies
6 tsp Sichuan peppercorns
3 whole star anise (optional)
300g smoked lardons, cut into 1cm/½in thick pieces
3 red chilli, de-seeded, finely chopped
3 tbsp Shaoxing rice wine or dry sherry
6 tbsp clear rice vinegar or cider vinegar
6 tbsp toasted sesame oil
600g cucumber, halved lengthways, de-seeded and sliced into 1cm/½in thick wedges
1 pinch sea salt
3 pinches dried chilli flakes
3 tbsp lime juice
3 tbsp chilli oil
3 small handful fresh coriander leaves, roughly chopped dry-roasted peanuts (optional)
 
%%sqlite cookbook.db
SELECT id, ordinal, description FROM preparations WHERE recipe_id = 1026 ORDER BY ordinal;
 
id ordinal description
8652 1 u’Heat a wok until smoking and add the groundnut oil, then add the dried chillies and
Sichuan peppercorns. Stir fry for a few seconds, or until fragrant. ‘
8653 2 u’Add the star anise (if using), bacon lardons and chilli and stir fry for
2-3 minutes, or until the lardons have turned golden-brown at the edges.’
8654 3 u’Add the rice wine or sherry, vinegar and sesame oil and stir-fry for a few seconds,
then add the cucumber and stir-fry for a few more seconds.’
8655 4 u’Season with sea salt, dried chilli flakes and lime juice, stirring well.’
8656 5 u’Pile the stir-fry onto a serving plate, drizzle over the chilli oil, garnish
with the chopped coriander, sprinkle over some peanuts, if using, and serve
immediately.’
 


See our scrapes here: [http://pantry.algorithmickitchen.org:8000/tree pantry.algorithmickitchen.org:8000/]
See our scrapes here: [http://pantry.algorithmickitchen.org:8000/tree pantry.algorithmickitchen.org:8000/]

Latest revision as of 15:13, 21 December 2015

During the workshop: Algorithmic Kitchen with Luis Rodil-Fernández algorithmic recipes were compiled by scraping and sorting a BBC recipe database. See underneath 2 delicious examples:

Algorithmic Chicken Soup

Chicken-and-Potato-Soup.png

Input:

   import re
   import operator
   
   verbMap = {}
   adjMap = {}
   otherMap = {}
   
   o = store.find(Recipe, Recipe.name.like(u'%onions%'))
   for r in o:
       for i in r.ingredients:
           #print i.name
           l = i.name.split()
           for j in l:
               s = re.sub('[^A-Za-z]+', , j)
               if s.endswith('ly'):
                   if s in adjMap:
                       adjMap[s] += 1
                   else:
                       adjMap[s] = 1
               elif s.endswith('ed') or s.endswith('ing'):
                   if s in verbMap:
                       verbMap[s] += 1
                   else:
                       verbMap[s] = 1
               else:
                   if s in ingMap:
                       ingMap[s] += 1
                   else:
                       ingMap[s] = 1
                
                 
   #for key, value in ingMap.iteritems():
   #    print key, value
       
   sortedAdj = sorted(adjMap.keys(), key=lambda key: 
   adjMap[key], reverse=True)
   for ing in sortedAdj:
     print ing
   print "------"
   sortedVerbs = sorted(verbMap.keys(), key=lambda key: 
   verbMap[key], reverse=True)
   for ing in sortedVerbs:
       print ing
   print "------"
   sortedIng = sorted(ingMap.keys(), key=lambda key: 
   ingMap[key], reverse=True)
   for ing in sortedIng:
       print ing


Output:

  • freshly chopped onions
  • finely sliced olives
  • thinly peeled potatos
  • roughly halved chicken
  • thickly grated garlic

The End...Eat!

HOT Algorithms

SichuanCucumber.png

   FROM recipes 
   WHERE 
   Description LIKE “%spicy%”
   AND description LIKE “%salad%”;

       ID 1026
       u’Chunky bacon and cucumber salad’
       u’A spicy Sichuan-style salad of cucumber 
       and fried bacon.’
            
           Serves 6
           PT30M
           PT10M
   re = store.find(Recipe, Recipe.id == 1026).any()
   print “name”, re.name
   #print “photo url”, fs.photo.url
   print re.ingredients.count()
   print re.ingredients.count()
   for i in re.ingredients:
   print i.name

Output:

name Chunky bacon and cucumber salad 3 tbsp groundnut oil 18 long dried chillies 6 tsp Sichuan peppercorns 3 whole star anise (optional) 300g smoked lardons, cut into 1cm/½in thick pieces 3 red chilli, de-seeded, finely chopped 3 tbsp Shaoxing rice wine or dry sherry 6 tbsp clear rice vinegar or cider vinegar 6 tbsp toasted sesame oil 600g cucumber, halved lengthways, de-seeded and sliced into 1cm/½in thick wedges 1 pinch sea salt 3 pinches dried chilli flakes 3 tbsp lime juice 3 tbsp chilli oil 3 small handful fresh coriander leaves, roughly chopped dry-roasted peanuts (optional)

%%sqlite cookbook.db SELECT id, ordinal, description FROM preparations WHERE recipe_id = 1026 ORDER BY ordinal;

id ordinal description 8652 1 u’Heat a wok until smoking and add the groundnut oil, then add the dried chillies and Sichuan peppercorns. Stir fry for a few seconds, or until fragrant. ‘ 8653 2 u’Add the star anise (if using), bacon lardons and chilli and stir fry for 2-3 minutes, or until the lardons have turned golden-brown at the edges.’ 8654 3 u’Add the rice wine or sherry, vinegar and sesame oil and stir-fry for a few seconds, then add the cucumber and stir-fry for a few more seconds.’ 8655 4 u’Season with sea salt, dried chilli flakes and lime juice, stirring well.’ 8656 5 u’Pile the stir-fry onto a serving plate, drizzle over the chilli oil, garnish with the chopped coriander, sprinkle over some peanuts, if using, and serve immediately.’


See our scrapes here: pantry.algorithmickitchen.org:8000/