studiesData = {
const rows = await d3.csv("/studies/studies.csv");
return rows.map(d => ({
...d,
yearNum: +d.year || null,
stageList: (d.stages || "").split("|").filter(s => s),
recNum: +d.top_rec || 0
}));
}
stageMeta = ({
DM: {label: "Data management", chapters: "Ch. 3–4", note: "dm_note", accent: "#1f6feb"},
CR: {label: "Concept representation", chapters: "Ch. 5–6", note: "cr_note", accent: "#8250df"},
DA: {label: "Computational analysis", chapters: "Ch. 7–8", note: "da_note", accent: "#bc4c00"},
SC: {label: "Scientific communication", chapters: "Ch. 9–10", note: "sc_note", accent: "#1a7f37"}
})
// A lens is either fixed by the hub page or chosen by the reader. When fixed,
// show plain text instead of a disabled dropdown: a disabled control announces
// as "unavailable" to screen readers, which misdescribes a deliberate setting.
viewof chosenLens = stageLens === null
? Inputs.select(
new Map([
["All design stages", "ALL"],
...Object.entries(stageMeta).map(([k, v]) => [`${v.label} (${v.chapters})`, k])
]),
{label: "Design stage", value: "ALL"}
)
: Inputs.input(stageLens);
activeLens = stageLens === null ? chosenLens : stageLens
inScope = activeLens === "ALL"
? studiesData
: studiesData.filter(d => d.stageList.includes(activeLens))
viewof queryText = Inputs.text({
label: "Search",
placeholder: "title, journal, abstract, annotation…",
width: 320,
submit: false
})
viewof disciplinePick = Inputs.select(
["All disciplines", ...new Set(inScope.map(d => d.discipline).filter(x => x))].sort(
(a, b) => (a === "All disciplines" ? -1 : b === "All disciplines" ? 1 : a.localeCompare(b))
),
{label: "Discipline", value: "All disciplines"}
)
viewof recommendedOnly = Inputs.toggle({
label: "Recommended for at least one stage",
value: false
})
filtered = {
const q = (queryText || "").trim().toLowerCase();
return inScope
.filter(d => disciplinePick === "All disciplines" || d.discipline === disciplinePick)
.filter(d => !recommendedOnly || d.recNum >= 4)
.filter(d => {
if (!q) return true;
return [d.title, d.journal, d.abstract, d.discipline, d.theme,
d.dm_note, d.cr_note, d.da_note, d.sc_note]
.some(v => (v || "").toLowerCase().includes(q));
})
.sort((a, b) => (b.recNum - a.recNum) || (b.yearNum - a.yearNum));
}Chapter 3 — Data as relational and process
Materials for the data-management Practice section
Materials for Chapter 3’s data-management practice: the 3S framework (source, structure, standardization) applied to published studies from the database.
Chapter 3 develops the 3S framework (source, structure, standardization) as a way to examine where data came from, how they were organized, and how the work was made consistent and repeatable.
The Practice assignment. Analyze two empirical studies that interest you and write a one-page annotated bibliography on their data-management practices, critiquing each study’s approach to its source, its structure, and its standardization.
The studies, filtered to data management
Ninety-one studies in the database carry a written annotation on how they handled their data. Use the card annotations to choose a study, then read its paper and supporting materials. Base your critique on that evidence, considering the constraints its authors faced.
Choosing well
Choose a pair with a question you can compare. For example, how does a study that repurposes existing records establish their fitness for a research question? How does a study that collects its own data handle the same problem? The 3S framework helps you explain the tradeoffs each design makes.
The recommended flag marks a suggested starting point for at least one design stage.