f = open("1_Topic_en_xml_v2.xml") print f.readline() print f.readline() for i in range(10): print f.readline(), for i in range(40): print f.readline(), import xml.etree.ElementTree as ET tree = ET.parse('1_Topic_en_xml_v2.xml') root = tree.getroot() root for child in root: print child.tag, ":", child.attrib root[0] data = root[0] records = data.getchildren() len(records) records[0] r = records[0] r.getchildren() records[0][0] records[0][0].text r = records[0] for field in r: print field.attrib records_parsed = [] for record in records: r = {} for field in record: if field.attrib['name'] == 'Country or Area': r['country'] = field.text if field.attrib['name'] == 'Item': r['item'] = field.text if field.attrib['name'] == 'Year': r['year'] = field.text if field.attrib['name'] == 'Value': r['value'] = field.text records_parsed.append(r) records_parsed[0] items = set() for r in records_parsed: items.add(r['item']) items items = set() for r in records_parsed: items.add(r['country']) items forest_areas = [] for r in records_parsed: if r['item'] == 'Forest area (% of land area)': forest_areas.append(r) forest_areas[:5] forest_areas_parsed = {} for sample in forest_areas: if sample['value']: if not forest_areas_parsed.has_key(sample['country']): forest_areas_parsed[sample['country']] =[[],[]] forest_areas_parsed[sample['country']][0].append(int(sample['year'])) forest_areas_parsed[sample['country']][1].append(float(sample['value'])) forest_areas_parsed['Aruba'] aruba_data = forest_areas_parsed['Aruba'] plot(aruba_data[0], aruba_data[1]) plot(*forest_areas_parsed['Aruba']) for country,areas in forest_areas_parsed.items(): plot(*areas, label=country) def foo(*arg): print arg foo(*'hello') foo('hello') len(forest_areas_parsed) import csnd6 cs = csnd6.Csound() csPerf = csnd6.CsoundPerformanceThread(cs) cs.SetOption('-odac') cs.CompileOrc( '''sr = 44100 ksmps = 128 nchnls = 2 0dbfs = 1.0 ''') cs.Start() csPerf.Play() cs.CompileOrc( '''instr 1 idur = p3 iamp = p4 ifreq = p5 k1 line 1, idur, 0 a1 oscils iamp, ifreq, 1 out a1 * k1, a1 * k1 endin ''') cs.ReadScore('i 1 0 1 0.5 440') def event(*args): e = ' '.join(map(str, args)) cs.ReadScore(e) #print e event('i', 1, 0, 0.25, 0.707, 262) for t in xrange(8): event('i', 1, t, 1, 0.707, 440 + 440 * random.random()) cs.CompileOrc( '''instr 2 iplk = 0.75 kamp = p4 icps = p5 kpick = 0.75 krefl = 0.5 aenv linen 1, 0.01, p3, 0.01 apluck wgpluck2 iplk, kamp, icps, kpick, krefl out apluck * aenv, apluck * aenv endin ''') for t in xrange(8): event('i', 2, t*0.3, 1, 0.4, 440 + 440 * random.random()) forest_areas_parsed['Colombia'][1] forest_areas_parsed['Colombia'] max(forest_areas_parsed['Colombia'][1]) min(forest_areas_parsed['Colombia'][1]) score = '' base_hz = 220 ceil_hz = 440 initial_year = 1990 dur = 0.25 import itertools colombia_max = max(forest_areas_parsed['Colombia'][1]) colombia_min = min(forest_areas_parsed['Colombia'][1]) for year, value in itertools.izip(*forest_areas_parsed['Colombia']): start_time = (year - initial_year) * dur amp = 0.1 freq = base_hz + (ceil_hz - base_hz) * (value - colombia_min) / ( colombia_max - colombia_min) score += "i 2 %f %f %f %f\n"%(start_time, dur, amp, freq) print score cs.ReadScore(score) plot(*forest_areas_parsed['Colombia']) score = '' base_hz = 220 ceil_hz = 440 initial_year = 1990 dur = 0.25 num = 20 for country,areas in forest_areas_parsed.items()[:num]: max_areas = max(areas[1]) min_areas = min(areas[1]) #print country for year, area in zip(*areas): area_range = max_areas - min_areas #print area, area_range if area_range > 0: freq = base_hz + ((area - min_areas)/(max_areas - min_areas)) * (ceil_hz - base_hz) amp = 0.2 else: freq = 110.0 amp = 0.0001 score += "i 2 %f %f %f %f\n"%((year - initial_year) * dur, dur, amp/num, freq) #cs.ReadScore(score) # too big! cs.ReadScore(score) for country,areas in forest_areas_parsed.items()[:20]: plot(*areas) score = '' base_hz = 220 ceil_hz = 880 initial_year = 1990 dur = 0.25 num = 20 max_areas = max(max(areas[1]) for country,areas in forest_areas_parsed.items()[:num]) min_areas = min(min(areas[1]) for country,areas in forest_areas_parsed.items()[:num]) counter = 0 for country,areas in forest_areas_parsed.items()[:num]: #print country for year, area in zip(*areas): local_max_areas = max(areas[1]) local_min_areas = min(areas[1]) area_range = local_max_areas - local_min_areas #print area, area_range if area_range > 0: freq = base_hz + ((area - min_areas)/(max_areas - min_areas)) * (ceil_hz - base_hz) amp = 0.2 else: freq = 110.0 amp = 0.01 score += "i 2 %f %f %f %f\n"%((year - initial_year) * dur + counter, dur, amp/num, freq) counter += 0.5*dur/num cs.ReadScore(score)