Published
Edited
May 27, 2021
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
vl1 = vl.data(calibration_data).layer(
calibration_layers
).encode(
vl.x().fieldQ("retention time"),
vl.y().fieldQ("hydrodynamic diameter").scale({zero: false}),
vl.color().fieldN("organisation"))
Insert cell
vl2 = vl.markPoint().data(test_data).encode(
vl.x().fieldQ("retention time"),
vl.y().fieldQ("hydrodynamic diameter").scale({zero: false}),
vl.color().fieldN("organisation")
)
Insert cell
calibration_layers = {
if (show_calibration == "On") {
return [
vl.markPoint(),
vl.markLine().transform({regression: "hydrodynamic diameter", on: "retention time", groupby: ["organisation"]})
];
} else {
return [
vl.markLine().transform({regression: "hydrodynamic diameter", on: "retention time", groupby: ["organisation"]})
];
}
}
Insert cell
test_data = full_data.filter(function(obj) {
return (obj["Sample type"] == "test");
})
Insert cell
calibration_data = full_data.filter(function(obj) {
return (obj["Sample type"] == "calibration");
})
Insert cell
filtered_data = full_data.filter(function(obj) {
if (show_test == "On") {
return obj;
} else {
return (obj["Sample type"] == "calibration");
}

})
Insert cell
full_data = [].concat(...array_of_full_datasets)
Insert cell
array_of_full_datasets = add_metadata_to_datasets(array_of_datasets, array_of_metadata)
Insert cell
function add_metadata_to_datasets(arr_datasets, arr_metadata) {
const new_datasets = [];
for (var i = 0; i < arr_datasets.length; i++) {
const dataset = arr_datasets[i];
const dataset2 = [];
const metadata = arr_metadata[i];
for (var j = 0; j < dataset.length; j++) {
const object = dataset[j];
for (const key in metadata) {
object[key] = metadata[key]
}
object["Sample"] = object["file name"].split(" - ")[0]
object["Replicate"] = object["file name"].split(" - run ")[1]
if (object["Sample"].startsWith("Cal")) {
object["Sample type"] = "calibration"
} else {
object["Sample type"] = "test"
}
dataset2.push(object);
}
new_datasets.push(dataset2);
}
return new_datasets;
}
Insert cell
array_of_metadata = Promise.all(meta_promises)
Insert cell
array_of_datasets = Promise.all(promises)
Insert cell
meta_promises = dataset_ids.map(id => {
const url = api_url + id + "/versions/latest/metadata";
return fetch_metadata(url) })
Insert cell
promises = dataset_ids.map(id => {
const url = api_url + id + "/versions/latest/data";
return fetch_dataset_to_array(url, {}) })
Insert cell
function fetch_metadata(dataset_url) {
return fetch(dataset_url).then(response_dataset => {
if (!response_dataset.ok) throw new Error(response_dataset.status);
return response_dataset.json();}
);
}
Insert cell
function fetch_dataset_to_array(dataset_url, query_options) {
return fetch(dataset_url, query_options).then(response_dataset => {
if (!response_dataset.ok) throw new Error(response_dataset.status);
return response_dataset.json();}).then(json => json.results.map(x => x.data));
}
Insert cell
dataset_ids = [
"4ee2b405-3769-417a-a1c5-0e82682cb98d",
"96b5cc3f-cf6b-47f0-a6b4-08e8697acdd3"
]
Insert cell
api_url = "https://data.acenano.douglasconnect.com/datasets/"
Insert cell
import {vl} from "@vega/vega-lite-api"
Insert cell
import {Select, Range, Toggle} from "@observablehq/inputs"
Insert cell

Purpose-built for displays of data

Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Learn more