Mapping data to color and scale

import * as uchi from "npm:uchimata";
const viewConfig = ({
  scale: {
    values: sineValues,
    min: -100,
    max: 100,
    scaleMin: 0.01,
    scaleMax: 0.03,
  },
  color: {
    values: sineValues,
    min: 0,
    max: 100,
    colorScale: "viridis",
  },
  links: false,
  mark: "sphere",
});

//~ create a scene
let chromatinScene = uchi.initScene();
chromatinScene = uchi.addStructureToScene(chromatinScene, testChunk, viewConfig);

const [renderer, canvas] = uchi.display(chromatinScene, { alwaysRedraw: false});

//~ ObservableHQ mechanism for clean-up after cell re-render
invalidation.then(() => renderer.endDrawing());

display(renderer.getCanvasElement());
const testChunkURL = "https://raw.githubusercontent.com/dvdkouril/chromospace-sample-data/main/dros.3.arrow";
const testChunk = await uchi.loadFromURL(testChunkURL, {
  center: true,
  normalize: true,
});
const num = testChunk.data.numRows;
const sineValues = sineWave(100, 0.2, num);
const sineWave = (amplitude, frequency, length) => Array.from({ length }, (_, i) => amplitude * Math.sin(frequency * i));