def main(): print("Reading and analyzing file...") spectrum, freqs = ReadAndAnalyze(inPath) print(len(freqs)) print(len(spectrum[0])) print("Scaling logarithmically (kinda)...") for i, s in enumerate(spectrum): spectrum[i] = list(map(loggish, s)) print("Generating linear scale...") scale = scales.linear(domain=[spectrum.min(), spectrum.max()], codomain=[1, 10]) print("Normalizing spectrum data...") datapoints = list(map(lambda x: list(map(scale, x)), spectrum)) print("Trimming spectrum data post-normalization...") for i, x in enumerate(datapoints): for j, v in enumerate(x): if v > 9: datapoints[i][j] = 9 print("Generating bars...") bars = BarsND(datapoints, bar_width=1, bar_depth=1) print("Rendering...") code = bars.render(backend=OpenScadBackend) print("Saving to file...") with open(outPath, "w") as f: f.write(code)
def main(): print "Reading and analyzing file..." spectrum, freqs = ReadAndAnalyze(inPath) print "Scaling logarithmically (kinda)..." for i, s in enumerate(spectrum): spectrum[i] = map(loggish, s) print "Generating linear scale..." scale = scales.linear(domain=[spectrum.min(), spectrum.max()], codomain=[0, 20000]) print "Generating ring-shaped pieces..." rIndexes = range(len(freqs)-1) unitAngle = 360.0/len(spectrum[0]) # depends on total time & sample rate angles = numpy.arange(0, 360, unitAngle) print len(spectrum[0]) print len(angles) print len(freqs) rings = [] for rIndex in rIndexes: rInner = freqs[rIndex] + 8000 rOuter = freqs[rIndex+1] + 8000 print "Generating ring for region: %s Hz - %s Hz" % (rInner, rOuter) print "-- Normalizing spectrum data with linear scale..." data = map(scale, spectrum[:][rIndex]) ringSectors = [] for angleIndex, angle in enumerate(angles): sector = ast.CircleSector(rOuter, unitAngle) if rInner: killer = ast.CircleSector(rInner, unitAngle) sector = ast.Difference([sector, killer]) sector = ast.Rotate(unitAngle*angleIndex, (0,0,1), sector) sector = ast.LinearExtrusion(data[angleIndex], sector) ringSectors.append(sector) ring = ast.Union(ringSectors) rings.append(ring) print "Generating unified geometry..." union = ast.Union(rings) print "Rendering..." with open(outPath, "w") as f: code = OpenScadBackend(union).generate() f.write(code)
def main(): print "Reading and analyzing file..." spectrum, freqs = ReadAndAnalyze(inPath) print len(freqs) print len(spectrum[0]) print "Scaling logarithmically (kinda)..." for i, s in enumerate(spectrum): spectrum[i] = map(loggish, s) print "Generating linear scale..." scale = scales.linear(domain=[spectrum.min(), spectrum.max()], codomain=[1, 10]) print "Normalizing spectrum data..." datapoints = map(lambda x: map(scale, x), spectrum) print "Trimming spectrum data post-normalization..." for i, x in enumerate(datapoints): for j, v in enumerate(x): if v > 9: datapoints[i][j] = 9 print "Generating bars..." bars = BarsND(datapoints, bar_width=1, bar_depth=1) print "Rendering..." code = bars.render(backend=OpenScadBackend) print "Saving to file..." with open(outPath, "w") as f: f.write(code)
def test_linear_inverted_codomain(param, clamp, expected): """Test the linear scale with inverted codomain.""" domain = (1, 3) codomain = (20, 10) scale = scales.linear(domain, codomain, clamp) assert scale(param) == expected
def test_linear(param, clamp, expected): """Test the linear scale.""" domain = (2, 4) codomain = (10, 20) scale = scales.linear(domain, codomain, clamp) assert scale(param) == expected
# -*- coding: utf-8 -*- from __future__ import print_function, division, absolute_import, unicode_literals import csv from tangible import scales from tangible.shapes.vertical import SquareTower1D from tangible.backends.openscad import OpenScadBackend # Read data into list datapoints = [] with open('analytics-sep-13.csv', 'r') as datafile: reader = csv.DictReader(datafile) for row in reader: visits = int(row['Visits']) datapoints.append(visits) # Normalize data scale = scales.linear([min(datapoints), max(datapoints)], [10, 50]) datapoints = [scale(p) for p in datapoints] # Create shape tower = SquareTower1D(datapoints, layer_height=10) code = tower.render(backend=OpenScadBackend) print(code)
# -*- coding: utf-8 -*- from __future__ import print_function, division, absolute_import, unicode_literals import csv from tangible import scales from tangible.shapes.bars import Bars1D from tangible.backends.openscad import OpenScadBackend # Read data into list datapoints = [] with open('analytics-sep-13.csv', 'r') as datafile: reader = csv.DictReader(datafile) for row in reader: visits = int(row['Visits']) datapoints.append(visits) # Normalize data scale = scales.linear([min(datapoints), max(datapoints)], [10, 80]) datapoints = map(scale, datapoints) # Create shape bars1d = Bars1D(datapoints, bar_width=10, bar_depth=10) code = bars1d.render(backend=OpenScadBackend) print(code)
import csv from itertools import chain from tangible import scales from tangible.shapes.bars import BarsND from tangible.backends.openscad import OpenScadBackend # Read data into list datapoints = [list() for i in xrange(9)] with open('analytics-full-13.csv', 'r') as datafile: reader = csv.DictReader(datafile) for row in reader: date = row['Day'] month = int(date.split('/', 1)[0]) visits = int(row['Visits']) datapoints[month - 1].append(visits) # Normalize data all_datapoints = list(chain.from_iterable(datapoints)) scale = scales.linear([min(all_datapoints), max(all_datapoints)], [10, 150]) datapoints = map(lambda x: map(scale, x), datapoints) # Create shape bars = BarsND(datapoints, bar_width=7, bar_depth=7, center_layers=False) code = bars.render(backend=OpenScadBackend) print(code)