keepset 0.37.0 → 0.38.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/{bundled-CRr7GPD3.js → bundled-U2l4WT5T.js} +358 -61
- package/dist/{categories-Djnk3zwg.d.ts → categories-gZh8cn-G.d.ts} +130 -14
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/node/fetch-dataset.d.ts +1 -1
- package/dist/node/fetch-dataset.js +910 -80
- package/dist-cli/keepset.mjs +1 -1
- package/package.json +1 -1
- package/schemas/entry.schema.json +1 -1
- package/schemas/manifest.schema.json +1 -1
package/README.md
CHANGED
|
@@ -63,7 +63,7 @@ The catalogue itself is a manifest (`catalogue/manifest.json`: id, version, repo
|
|
|
63
63
|
|
|
64
64
|
## Categories and normalisation targets
|
|
65
65
|
|
|
66
|
-
A category names a normalisation target: the shape every entry in that category resolves to, whatever its native shape. `graph/v1` is `{ meta, nodes, edges }` with unique node ids and edges whose endpoints name nodes; its entries are graph datasets taken from upstream collections such as SuiteSparse, Netzschleuder, SNAP, KONECT and OGB, read by one parser per format (delimited edge lists, Matrix Market, GML, Pajek, UCINet DL full matrices, Graph Drawing contest files, KONECT edge files, rating and count files, knowledge graph triples and Heterogeneous Graph Benchmark node and link files), each giving the graph's topology and, where the format states them, node and edge types, weights, times and the split each edge belongs to. `tasks/v1` is `{ meta, nodes }`, a set of tasks as the places or cases it offers to visit or serve (a routing benchmark, or an open data register of permits and complaints), each flat with optional coordinates, prize, prize probability, duration, travel time, skill, territory, lifecycle status and times, and deadline, read from tabular sources by the `csv-table` parser (a delimited file, a member of an archive, a sheet of an Excel workbook, or an open data portal read a page at a time) and from ArcGIS feature layers by the `geojson` parser. Its entries come from a survey of open operations-research datasets, imported with a curation that records, for each source, what its download gives and how its columns map onto the node; a dataset whose source has no usable table is imported without a recipe and says why. Any category can be fetched as a collection: a recipe that selects every matching archive member with `members` (by path, by the extensions its name ends with, or by a regular expression its whole path matches) resolves to `{ meta, instances }`, where each instance is a document of the entry's category under the path of the member it came from, the schema derived from the category's own, so a category needs nothing of its own to be collected. The parser reads each member, the crosswalk is applied to each, and a member that does not parse or does not validate fails the fetch and is named. Instance files are read by one parser per format (Solomon and TOPTW time window files, Chao team orienteering files, TSPLIB style orienteering files, VRP-REP XML, VeRoLog 2019 files and customer point lists), which gives each node the columns the file has and each instance a header of its own; a curation says which of them fill the `tasks/v1` node's fields, which pass through under their own names and which are dropped, so what an entry leaves out is written down, and a source whose time quantities are not seconds keeps them under the source's names with the unit recorded as the entry's `timeUnit`. A new category starts by defining its target schema in `src/targets/` and registering it in the category registry; an entry cannot name a category that does not exist. The statically generated site renders every entry with schema.org Dataset JSON-LD, so the catalogue surfaces in the dataset discovery layers.
|
|
66
|
+
A category names a normalisation target: the shape every entry in that category resolves to, whatever its native shape. `graph/v1` is `{ meta, nodes, edges }` with unique node ids and edges whose endpoints name nodes; its entries are graph datasets taken from upstream collections such as SuiteSparse, Netzschleuder, SNAP, KONECT and OGB, read by one parser per format (delimited edge lists, which can also be a sheet of a spreadsheet, Matrix Market, GML, Pajek, UCINet DL full matrices, Graph Drawing contest files, Witvliet connectome synapse files, KONECT edge files, rating and count files, knowledge graph triples and Heterogeneous Graph Benchmark node and link files), each giving the graph's topology and, where the format states them, node and edge types, weights, times and the split each edge belongs to. `tasks/v1` is `{ meta, nodes }`, a set of tasks as the places or cases it offers to visit or serve (a routing benchmark, or an open data register of permits and complaints), each flat with optional coordinates, prize, prize probability, duration, travel time, skill, territory, lifecycle status and times, and deadline, read from tabular sources by the `csv-table` parser (a delimited file, a member of an archive, a sheet of an Excel workbook, a legacy binary xls workbook or an OpenDocument spreadsheet, or an open data portal read a page at a time) and from ArcGIS feature layers by the `geojson` parser. Its entries come from a survey of open operations-research datasets, imported with a curation that records, for each source, what its download gives and how its columns map onto the node; a dataset whose source has no usable table is imported without a recipe and says why. Any category can be fetched as a collection: a recipe that selects every matching archive member with `members` (by path, by the extensions its name ends with, or by a regular expression its whole path matches) resolves to `{ meta, instances }`, where each instance is a document of the entry's category under the path of the member it came from, the schema derived from the category's own, so a category needs nothing of its own to be collected. The parser reads each member, the crosswalk is applied to each, and a member that does not parse or does not validate fails the fetch and is named. Instance files are read by one parser per format (Solomon and TOPTW time window files, Chao team orienteering files, TSPLIB style orienteering files, VRP-REP XML, VeRoLog 2019 files and customer point lists), which gives each node the columns the file has and each instance a header of its own; a curation says which of them fill the `tasks/v1` node's fields, which pass through under their own names and which are dropped, so what an entry leaves out is written down, and a source whose time quantities are not seconds keeps them under the source's names with the unit recorded as the entry's `timeUnit`. A new category starts by defining its target schema in `src/targets/` and registering it in the category registry; an entry cannot name a category that does not exist. The statically generated site renders every entry with schema.org Dataset JSON-LD, so the catalogue surfaces in the dataset discovery layers.
|
|
67
67
|
|
|
68
68
|
## Licensing
|
|
69
69
|
|
|
@@ -523,11 +523,24 @@ const CollectionArchiveSchema = z.object({
|
|
|
523
523
|
sheets: MemberPatternSchema.optional()
|
|
524
524
|
}).strict().optional()
|
|
525
525
|
}).strict();
|
|
526
|
-
/**
|
|
527
|
-
const
|
|
528
|
-
kind:
|
|
529
|
-
|
|
530
|
-
|
|
526
|
+
/** A spreadsheet read as the CSV of one of its sheets (the sheet's name, as the workbook gives it): an Excel workbook (`xlsx`), a legacy binary Excel 97 to 2003 workbook (`xls`, BIFF8) or an OpenDocument spreadsheet (`ods`, whose sheets are its tables). The three give the same text for the same cells. */
|
|
527
|
+
const SheetArchiveSchema = z.object({
|
|
528
|
+
kind: z.enum([
|
|
529
|
+
"xlsx",
|
|
530
|
+
"xls",
|
|
531
|
+
"ods"
|
|
532
|
+
]),
|
|
533
|
+
sheet: z.string().min(1)
|
|
534
|
+
}).strict();
|
|
535
|
+
/** How a member that is itself an archive unpacks into the file the parser reads: gunzipped, one member of it selected, or one sheet of it read when it is a spreadsheet. It nests one level, which is as deep as any source in the catalogue goes. */
|
|
536
|
+
const InnerArchiveSchema = z.union([
|
|
537
|
+
z.object({ kind: z.literal("gzip") }).strict(),
|
|
538
|
+
z.object({
|
|
539
|
+
kind: FileArchiveKindSchema,
|
|
540
|
+
member: ArchiveMemberSchema
|
|
541
|
+
}).strict(),
|
|
542
|
+
SheetArchiveSchema
|
|
543
|
+
]);
|
|
531
544
|
/** The name of a part of a document read from several files, which the parser gives its meaning: the split a triples file holds (`train`, `valid`, `test`), or which of an HGB dataset's files it is (`nodes`, `links`). */
|
|
532
545
|
const PartNameSchema = z.string().regex(/^[a-z][a-z0-9]*$/, { message: "must be a lowercase name of letters and digits, such as train" });
|
|
533
546
|
/** An archive one document is read from several files of: each part names the one member it is read from, and the parser reads the parts together in the order given. */
|
|
@@ -538,7 +551,7 @@ const PartsArchiveSchema = z.object({
|
|
|
538
551
|
member: ArchiveMemberSchema
|
|
539
552
|
}).strict()).min(1).refine((parts) => new Set(parts.map((part) => part.name)).size === parts.length, { message: "each part must have its own name" })
|
|
540
553
|
}).strict();
|
|
541
|
-
/** How the downloaded bytes unpack into the file the parser reads, the named files a parser reads together into one document (`parts`), or for a collection the files it reads one by one. A `members` selector gives every member it matches, at least one, in path order. `gzip` and `bzip2` are one compressed file, and `tar.gz` and `tar.bz2` a tar archive compressed with them. A member that is an archive in its turn (a contest bundle that ships its problems as a zip inside the zip) is unpacked by `inner`. A
|
|
554
|
+
/** How the downloaded bytes unpack into the file the parser reads, the named files a parser reads together into one document (`parts`), or for a collection the files it reads one by one. A `members` selector gives every member it matches, at least one, in path order. `gzip` and `bzip2` are one compressed file, and `tar.gz` and `tar.bz2` a tar archive compressed with them. A member that is an archive in its turn (a contest bundle that ships its problems as a zip inside the zip, a spreadsheet inside a zip) is unpacked by `inner`. A spreadsheet (`xlsx`, `xls` or `ods`) is read as the CSV of its named sheet, with dates as ISO 8601 text, for the `csv-table` or `edge-list` parser. A point shapefile (`shapefile`) is a zip whose `member` selects the `.shp`, read with the `.dbf`, `.prj` and `.cpg` of the same name beside it as the CSV of its attribute table with each point's stored coordinates and its WGS84 position, for the `csv-table` parser. */
|
|
542
555
|
const ArchiveSchema = z.union([
|
|
543
556
|
z.object({ kind: z.literal("none") }).strict(),
|
|
544
557
|
z.object({ kind: z.literal("gzip") }).strict(),
|
|
@@ -550,10 +563,7 @@ const ArchiveSchema = z.union([
|
|
|
550
563
|
}).strict(),
|
|
551
564
|
CollectionArchiveSchema,
|
|
552
565
|
PartsArchiveSchema,
|
|
553
|
-
|
|
554
|
-
kind: z.literal("xlsx"),
|
|
555
|
-
sheet: z.string().min(1)
|
|
556
|
-
}).strict(),
|
|
566
|
+
SheetArchiveSchema,
|
|
557
567
|
z.object({
|
|
558
568
|
kind: z.literal("shapefile"),
|
|
559
569
|
member: ArchiveMemberSchema
|
|
@@ -579,10 +589,22 @@ const ParserSchema = z.discriminatedUnion("format", [
|
|
|
579
589
|
skipLines: z.int().min(0),
|
|
580
590
|
commentPrefixes: z.array(z.string().min(1)),
|
|
581
591
|
sourceColumn: ColumnSchema,
|
|
582
|
-
targetColumn: ColumnSchema
|
|
592
|
+
targetColumn: ColumnSchema,
|
|
593
|
+
/** Keep only the lines whose `column` holds one of `values`, so a table that lists several relations side by side (a connectome's synapse types) gives the graph of the ones named. */
|
|
594
|
+
keep: z.object({
|
|
595
|
+
column: ColumnSchema,
|
|
596
|
+
values: z.array(z.string().min(1)).min(1)
|
|
597
|
+
}).strict().optional(),
|
|
598
|
+
/** The column holding how many edges a line stands for, a whole number, for a table that lists each pair once with its count; a line that stands for none adds neither an edge nor a node. */
|
|
599
|
+
multiplicityColumn: ColumnSchema.optional(),
|
|
600
|
+
/** The table lists every undirected edge twice, once in each direction and with the same multiplicity: each pair's edges are emitted once, in the direction it is first listed, a self-loop's once, and a line whose mirror is missing is an error. graph/v1 records direction in `meta` and never by duplicating edges, so an undirected graph read from such a table needs this. */
|
|
601
|
+
mirrored: z.literal(true).optional()
|
|
583
602
|
}).strict().refine((parser) => parser.sourceColumn !== parser.targetColumn, {
|
|
584
603
|
message: "sourceColumn and targetColumn must differ",
|
|
585
604
|
path: ["targetColumn"]
|
|
605
|
+
}).refine((parser) => [parser.keep?.column, parser.multiplicityColumn].every((column) => column === void 0 || column !== parser.sourceColumn && column !== parser.targetColumn), {
|
|
606
|
+
message: "the keep and multiplicity columns must not be an endpoint column",
|
|
607
|
+
path: ["keep"]
|
|
586
608
|
}),
|
|
587
609
|
z.object({
|
|
588
610
|
format: z.literal("matrix-market"),
|
|
@@ -674,6 +696,10 @@ const ParserSchema = z.discriminatedUnion("format", [
|
|
|
674
696
|
format: z.literal("gd-contest"),
|
|
675
697
|
encoding: EncodingSchema
|
|
676
698
|
}).strict(),
|
|
699
|
+
z.object({
|
|
700
|
+
format: z.literal("witvliet-synapses"),
|
|
701
|
+
encoding: z.literal("utf-8")
|
|
702
|
+
}).strict(),
|
|
677
703
|
z.object({
|
|
678
704
|
format: z.literal("customer-points"),
|
|
679
705
|
encoding: EncodingSchema
|
|
@@ -1180,7 +1206,7 @@ var catalogue_default = {
|
|
|
1180
1206
|
"id": "keepset",
|
|
1181
1207
|
"name": "keepset",
|
|
1182
1208
|
"description": "The keepset catalogue: datasets with machine-readable recipes that fetch each one and normalise it into its category's target shape.",
|
|
1183
|
-
"version": "1.
|
|
1209
|
+
"version": "1.29.0",
|
|
1184
1210
|
"repository": "https://github.com/Mearman/keepset",
|
|
1185
1211
|
"namespaceAliases": {
|
|
1186
1212
|
"networkrepository": ["nr"],
|
|
@@ -6451,6 +6477,10 @@ var catalogue_default = {
|
|
|
6451
6477
|
"url": "https://environment.data.gov.uk/dataset/88bed270-d465-11e4-8669-f0def148f590",
|
|
6452
6478
|
"retrieved": "2026-10-19",
|
|
6453
6479
|
"status": "live"
|
|
6480
|
+
}, {
|
|
6481
|
+
"url": "https://environment.data.gov.uk/api/file/download?fileDataSetId=766cb094-b392-4bd6-a02e-f60e143f3213&fileName=Historic_Flood_Warnings.zip",
|
|
6482
|
+
"retrieved": "2026-10-19",
|
|
6483
|
+
"status": "live"
|
|
6454
6484
|
}],
|
|
6455
6485
|
"licence": {
|
|
6456
6486
|
"kind": "spdx",
|
|
@@ -6458,10 +6488,62 @@ var catalogue_default = {
|
|
|
6458
6488
|
},
|
|
6459
6489
|
"citations": [],
|
|
6460
6490
|
"recipe": {
|
|
6461
|
-
"status": "
|
|
6462
|
-
"
|
|
6491
|
+
"status": "fetchable",
|
|
6492
|
+
"source": 1,
|
|
6493
|
+
"archive": {
|
|
6494
|
+
"kind": "zip",
|
|
6495
|
+
"member": { "extensions": [".ods"] },
|
|
6496
|
+
"inner": {
|
|
6497
|
+
"kind": "ods",
|
|
6498
|
+
"sheet": "tblAllData"
|
|
6499
|
+
}
|
|
6500
|
+
},
|
|
6501
|
+
"parser": {
|
|
6502
|
+
"format": "csv-table",
|
|
6503
|
+
"encoding": "utf-8",
|
|
6504
|
+
"delimiter": "comma",
|
|
6505
|
+
"skipLines": 0,
|
|
6506
|
+
"idColumn": null,
|
|
6507
|
+
"numericColumns": [],
|
|
6508
|
+
"columns": [
|
|
6509
|
+
"DATE",
|
|
6510
|
+
"TYPE",
|
|
6511
|
+
"AREA"
|
|
6512
|
+
]
|
|
6513
|
+
}
|
|
6514
|
+
},
|
|
6515
|
+
"crosswalk": {
|
|
6516
|
+
"source": "csv-table",
|
|
6517
|
+
"target": "tasks/v1",
|
|
6518
|
+
"rules": [
|
|
6519
|
+
{
|
|
6520
|
+
"op": "move",
|
|
6521
|
+
"from": "meta",
|
|
6522
|
+
"to": "meta"
|
|
6523
|
+
},
|
|
6524
|
+
{
|
|
6525
|
+
"op": "move",
|
|
6526
|
+
"from": "nodes[].id",
|
|
6527
|
+
"to": "nodes[].id"
|
|
6528
|
+
},
|
|
6529
|
+
{
|
|
6530
|
+
"op": "move",
|
|
6531
|
+
"from": "nodes[].DATE",
|
|
6532
|
+
"to": "nodes[].opened"
|
|
6533
|
+
},
|
|
6534
|
+
{
|
|
6535
|
+
"op": "move",
|
|
6536
|
+
"from": "nodes[].TYPE",
|
|
6537
|
+
"to": "nodes[].status"
|
|
6538
|
+
},
|
|
6539
|
+
{
|
|
6540
|
+
"op": "move",
|
|
6541
|
+
"from": "nodes[].AREA",
|
|
6542
|
+
"to": "nodes[].territory"
|
|
6543
|
+
}
|
|
6544
|
+
],
|
|
6545
|
+
"oneWay": []
|
|
6463
6546
|
},
|
|
6464
|
-
"crosswalk": { "file": "crosswalks/tasks-v1/nodes.json" },
|
|
6465
6547
|
"expectedCounts": {},
|
|
6466
6548
|
"properties": { "surveyId": "or-120" }
|
|
6467
6549
|
},
|
|
@@ -8470,6 +8552,10 @@ var catalogue_default = {
|
|
|
8470
8552
|
"url": "https://github.com/Oberfichtner/Clustering_and_TSP_with_R",
|
|
8471
8553
|
"retrieved": "2026-10-19",
|
|
8472
8554
|
"status": "live"
|
|
8555
|
+
}, {
|
|
8556
|
+
"url": "https://raw.githubusercontent.com/Oberfichtner/Clustering_and_TSP_with_R/main/rawdataclear.xls",
|
|
8557
|
+
"retrieved": "2026-10-19",
|
|
8558
|
+
"status": "live"
|
|
8473
8559
|
}],
|
|
8474
8560
|
"licence": { "kind": "unrecorded" },
|
|
8475
8561
|
"citations": [{
|
|
@@ -8477,11 +8563,56 @@ var catalogue_default = {
|
|
|
8477
8563
|
"doi": "10.1007/s10479-022-04883-1"
|
|
8478
8564
|
}],
|
|
8479
8565
|
"recipe": {
|
|
8480
|
-
"status": "
|
|
8481
|
-
"
|
|
8566
|
+
"status": "fetchable",
|
|
8567
|
+
"source": 1,
|
|
8568
|
+
"archive": {
|
|
8569
|
+
"kind": "xls",
|
|
8570
|
+
"sheet": "objects"
|
|
8571
|
+
},
|
|
8572
|
+
"parser": {
|
|
8573
|
+
"format": "csv-table",
|
|
8574
|
+
"encoding": "utf-8",
|
|
8575
|
+
"delimiter": "comma",
|
|
8576
|
+
"skipLines": 0,
|
|
8577
|
+
"idColumn": null,
|
|
8578
|
+
"numericColumns": [{
|
|
8579
|
+
"column": "LATITUDE",
|
|
8580
|
+
"factor": 1
|
|
8581
|
+
}, {
|
|
8582
|
+
"column": "LONGITUDE",
|
|
8583
|
+
"factor": 1
|
|
8584
|
+
}],
|
|
8585
|
+
"columns": ["LATITUDE", "LONGITUDE"]
|
|
8586
|
+
}
|
|
8482
8587
|
},
|
|
8483
|
-
"crosswalk": {
|
|
8484
|
-
|
|
8588
|
+
"crosswalk": {
|
|
8589
|
+
"source": "csv-table",
|
|
8590
|
+
"target": "tasks/v1",
|
|
8591
|
+
"rules": [
|
|
8592
|
+
{
|
|
8593
|
+
"op": "move",
|
|
8594
|
+
"from": "meta",
|
|
8595
|
+
"to": "meta"
|
|
8596
|
+
},
|
|
8597
|
+
{
|
|
8598
|
+
"op": "move",
|
|
8599
|
+
"from": "nodes[].id",
|
|
8600
|
+
"to": "nodes[].id"
|
|
8601
|
+
},
|
|
8602
|
+
{
|
|
8603
|
+
"op": "move",
|
|
8604
|
+
"from": "nodes[].LATITUDE",
|
|
8605
|
+
"to": "nodes[].lat"
|
|
8606
|
+
},
|
|
8607
|
+
{
|
|
8608
|
+
"op": "move",
|
|
8609
|
+
"from": "nodes[].LONGITUDE",
|
|
8610
|
+
"to": "nodes[].lon"
|
|
8611
|
+
}
|
|
8612
|
+
],
|
|
8613
|
+
"oneWay": []
|
|
8614
|
+
},
|
|
8615
|
+
"expectedCounts": { "nodes": 237 },
|
|
8485
8616
|
"properties": { "surveyId": "or-38" }
|
|
8486
8617
|
},
|
|
8487
8618
|
{
|
|
@@ -63378,18 +63509,39 @@ var catalogue_default = {
|
|
|
63378
63509
|
"sources": [{
|
|
63379
63510
|
"url": "https://www.wormatlas.org/images/NeuronConnect.xls",
|
|
63380
63511
|
"retrieved": "2026-04-20",
|
|
63381
|
-
"status": "
|
|
63512
|
+
"status": "dead",
|
|
63513
|
+
"snapshot": {
|
|
63514
|
+
"url": "https://web.archive.org/web/20260829213511/https://www.wormatlas.org/images/NeuronConnect.xls",
|
|
63515
|
+
"timestamp": "20260829213511"
|
|
63516
|
+
}
|
|
63382
63517
|
}],
|
|
63383
63518
|
"licence": { "kind": "unrecorded" },
|
|
63384
63519
|
"citations": [{ "text": "White, J. G., Southgate, E., Thomson, J. N., Brenner, S. (1986). The Structure of the Nervous System of the Nematode Caenorhabditis elegans. Phil. Trans. R. Soc. Lond. B 314, 1-340." }],
|
|
63385
63520
|
"recipe": {
|
|
63386
|
-
"status": "
|
|
63387
|
-
"
|
|
63521
|
+
"status": "fetchable",
|
|
63522
|
+
"source": 0,
|
|
63523
|
+
"archive": {
|
|
63524
|
+
"kind": "xls",
|
|
63525
|
+
"sheet": "NeuronConnect.csv"
|
|
63526
|
+
},
|
|
63527
|
+
"parser": {
|
|
63528
|
+
"format": "edge-list",
|
|
63529
|
+
"encoding": "utf-8",
|
|
63530
|
+
"delimiter": "comma",
|
|
63531
|
+
"skipLines": 1,
|
|
63532
|
+
"commentPrefixes": [],
|
|
63533
|
+
"sourceColumn": 0,
|
|
63534
|
+
"targetColumn": 1,
|
|
63535
|
+
"keep": {
|
|
63536
|
+
"column": 2,
|
|
63537
|
+
"values": ["S", "Sp"]
|
|
63538
|
+
}
|
|
63539
|
+
}
|
|
63388
63540
|
},
|
|
63389
63541
|
"crosswalk": { "file": "crosswalks/graph-v1/topology.json" },
|
|
63390
63542
|
"expectedCounts": {
|
|
63391
|
-
"edges":
|
|
63392
|
-
"nodes":
|
|
63543
|
+
"edges": 2575,
|
|
63544
|
+
"nodes": 279
|
|
63393
63545
|
},
|
|
63394
63546
|
"properties": {
|
|
63395
63547
|
"directed": true,
|
|
@@ -63412,18 +63564,39 @@ var catalogue_default = {
|
|
|
63412
63564
|
"sources": [{
|
|
63413
63565
|
"url": "https://www.wormatlas.org/images/NeuronConnect.xls",
|
|
63414
63566
|
"retrieved": "2026-04-20",
|
|
63415
|
-
"status": "
|
|
63567
|
+
"status": "dead",
|
|
63568
|
+
"snapshot": {
|
|
63569
|
+
"url": "https://web.archive.org/web/20260829213511/https://www.wormatlas.org/images/NeuronConnect.xls",
|
|
63570
|
+
"timestamp": "20260829213511"
|
|
63571
|
+
}
|
|
63416
63572
|
}],
|
|
63417
63573
|
"licence": { "kind": "unrecorded" },
|
|
63418
63574
|
"citations": [{ "text": "White, J. G., Southgate, E., Thomson, J. N., Brenner, S. (1986). The Structure of the Nervous System of the Nematode Caenorhabditis elegans. Phil. Trans. R. Soc. Lond. B 314, 1-340." }],
|
|
63419
63575
|
"recipe": {
|
|
63420
|
-
"status": "
|
|
63421
|
-
"
|
|
63576
|
+
"status": "fetchable",
|
|
63577
|
+
"source": 0,
|
|
63578
|
+
"archive": {
|
|
63579
|
+
"kind": "xls",
|
|
63580
|
+
"sheet": "NeuronConnect.csv"
|
|
63581
|
+
},
|
|
63582
|
+
"parser": {
|
|
63583
|
+
"format": "edge-list",
|
|
63584
|
+
"encoding": "utf-8",
|
|
63585
|
+
"delimiter": "comma",
|
|
63586
|
+
"skipLines": 1,
|
|
63587
|
+
"commentPrefixes": [],
|
|
63588
|
+
"sourceColumn": 0,
|
|
63589
|
+
"targetColumn": 1,
|
|
63590
|
+
"keep": {
|
|
63591
|
+
"column": 2,
|
|
63592
|
+
"values": ["S", "Sp"]
|
|
63593
|
+
}
|
|
63594
|
+
}
|
|
63422
63595
|
},
|
|
63423
63596
|
"crosswalk": { "file": "crosswalks/graph-v1/topology.json" },
|
|
63424
63597
|
"expectedCounts": {
|
|
63425
|
-
"edges":
|
|
63426
|
-
"nodes":
|
|
63598
|
+
"edges": 2575,
|
|
63599
|
+
"nodes": 279
|
|
63427
63600
|
},
|
|
63428
63601
|
"properties": {
|
|
63429
63602
|
"directed": false,
|
|
@@ -63446,18 +63619,39 @@ var catalogue_default = {
|
|
|
63446
63619
|
"sources": [{
|
|
63447
63620
|
"url": "https://www.wormatlas.org/images/NeuronConnect.xls",
|
|
63448
63621
|
"retrieved": "2026-04-20",
|
|
63449
|
-
"status": "
|
|
63622
|
+
"status": "dead",
|
|
63623
|
+
"snapshot": {
|
|
63624
|
+
"url": "https://web.archive.org/web/20260829213511/https://www.wormatlas.org/images/NeuronConnect.xls",
|
|
63625
|
+
"timestamp": "20260829213511"
|
|
63626
|
+
}
|
|
63450
63627
|
}],
|
|
63451
63628
|
"licence": { "kind": "unrecorded" },
|
|
63452
63629
|
"citations": [{ "text": "White, J. G., Southgate, E., Thomson, J. N., Brenner, S. (1986). The Structure of the Nervous System of the Nematode Caenorhabditis elegans. Phil. Trans. R. Soc. Lond. B 314, 1-340." }],
|
|
63453
63630
|
"recipe": {
|
|
63454
|
-
"status": "
|
|
63455
|
-
"
|
|
63631
|
+
"status": "fetchable",
|
|
63632
|
+
"source": 0,
|
|
63633
|
+
"archive": {
|
|
63634
|
+
"kind": "xls",
|
|
63635
|
+
"sheet": "NeuronConnect.csv"
|
|
63636
|
+
},
|
|
63637
|
+
"parser": {
|
|
63638
|
+
"format": "edge-list",
|
|
63639
|
+
"encoding": "utf-8",
|
|
63640
|
+
"delimiter": "comma",
|
|
63641
|
+
"skipLines": 1,
|
|
63642
|
+
"commentPrefixes": [],
|
|
63643
|
+
"sourceColumn": 0,
|
|
63644
|
+
"targetColumn": 1,
|
|
63645
|
+
"keep": {
|
|
63646
|
+
"column": 2,
|
|
63647
|
+
"values": ["S", "Sp"]
|
|
63648
|
+
}
|
|
63649
|
+
}
|
|
63456
63650
|
},
|
|
63457
63651
|
"crosswalk": { "file": "crosswalks/graph-v1/topology.json" },
|
|
63458
63652
|
"expectedCounts": {
|
|
63459
|
-
"edges":
|
|
63460
|
-
"nodes":
|
|
63653
|
+
"edges": 2575,
|
|
63654
|
+
"nodes": 279
|
|
63461
63655
|
},
|
|
63462
63656
|
"properties": {
|
|
63463
63657
|
"directed": true,
|
|
@@ -63480,18 +63674,40 @@ var catalogue_default = {
|
|
|
63480
63674
|
"sources": [{
|
|
63481
63675
|
"url": "https://www.wormatlas.org/images/NeuronConnect.xls",
|
|
63482
63676
|
"retrieved": "2026-04-20",
|
|
63483
|
-
"status": "
|
|
63677
|
+
"status": "dead",
|
|
63678
|
+
"snapshot": {
|
|
63679
|
+
"url": "https://web.archive.org/web/20260829213511/https://www.wormatlas.org/images/NeuronConnect.xls",
|
|
63680
|
+
"timestamp": "20260829213511"
|
|
63681
|
+
}
|
|
63484
63682
|
}],
|
|
63485
63683
|
"licence": { "kind": "unrecorded" },
|
|
63486
63684
|
"citations": [{ "text": "White, J. G., Southgate, E., Thomson, J. N., Brenner, S. (1986). The Structure of the Nervous System of the Nematode Caenorhabditis elegans. Phil. Trans. R. Soc. Lond. B 314, 1-340." }],
|
|
63487
63685
|
"recipe": {
|
|
63488
|
-
"status": "
|
|
63489
|
-
"
|
|
63686
|
+
"status": "fetchable",
|
|
63687
|
+
"source": 0,
|
|
63688
|
+
"archive": {
|
|
63689
|
+
"kind": "xls",
|
|
63690
|
+
"sheet": "NeuronConnect.csv"
|
|
63691
|
+
},
|
|
63692
|
+
"parser": {
|
|
63693
|
+
"format": "edge-list",
|
|
63694
|
+
"encoding": "utf-8",
|
|
63695
|
+
"delimiter": "comma",
|
|
63696
|
+
"skipLines": 1,
|
|
63697
|
+
"commentPrefixes": [],
|
|
63698
|
+
"sourceColumn": 0,
|
|
63699
|
+
"targetColumn": 1,
|
|
63700
|
+
"keep": {
|
|
63701
|
+
"column": 2,
|
|
63702
|
+
"values": ["S", "Sp"]
|
|
63703
|
+
},
|
|
63704
|
+
"multiplicityColumn": 3
|
|
63705
|
+
}
|
|
63490
63706
|
},
|
|
63491
63707
|
"crosswalk": { "file": "crosswalks/graph-v1/topology.json" },
|
|
63492
63708
|
"expectedCounts": {
|
|
63493
|
-
"edges":
|
|
63494
|
-
"nodes":
|
|
63709
|
+
"edges": 6394,
|
|
63710
|
+
"nodes": 279
|
|
63495
63711
|
},
|
|
63496
63712
|
"properties": {
|
|
63497
63713
|
"directed": true,
|
|
@@ -63514,18 +63730,44 @@ var catalogue_default = {
|
|
|
63514
63730
|
"sources": [{
|
|
63515
63731
|
"url": "https://www.wormatlas.org/images/NeuronConnect.xls",
|
|
63516
63732
|
"retrieved": "2026-04-20",
|
|
63517
|
-
"status": "
|
|
63733
|
+
"status": "dead",
|
|
63734
|
+
"snapshot": {
|
|
63735
|
+
"url": "https://web.archive.org/web/20260829213511/https://www.wormatlas.org/images/NeuronConnect.xls",
|
|
63736
|
+
"timestamp": "20260829213511"
|
|
63737
|
+
}
|
|
63518
63738
|
}],
|
|
63519
63739
|
"licence": { "kind": "unrecorded" },
|
|
63520
63740
|
"citations": [{ "text": "White, J. G., Southgate, E., Thomson, J. N., Brenner, S. (1986). The Structure of the Nervous System of the Nematode Caenorhabditis elegans. Phil. Trans. R. Soc. Lond. B 314, 1-340." }],
|
|
63521
63741
|
"recipe": {
|
|
63522
|
-
"status": "
|
|
63523
|
-
"
|
|
63742
|
+
"status": "fetchable",
|
|
63743
|
+
"source": 0,
|
|
63744
|
+
"archive": {
|
|
63745
|
+
"kind": "xls",
|
|
63746
|
+
"sheet": "NeuronConnect.csv"
|
|
63747
|
+
},
|
|
63748
|
+
"parser": {
|
|
63749
|
+
"format": "edge-list",
|
|
63750
|
+
"encoding": "utf-8",
|
|
63751
|
+
"delimiter": "comma",
|
|
63752
|
+
"skipLines": 1,
|
|
63753
|
+
"commentPrefixes": [],
|
|
63754
|
+
"sourceColumn": 0,
|
|
63755
|
+
"targetColumn": 1,
|
|
63756
|
+
"keep": {
|
|
63757
|
+
"column": 2,
|
|
63758
|
+
"values": [
|
|
63759
|
+
"S",
|
|
63760
|
+
"Sp",
|
|
63761
|
+
"EJ",
|
|
63762
|
+
"NMJ"
|
|
63763
|
+
]
|
|
63764
|
+
}
|
|
63765
|
+
}
|
|
63524
63766
|
},
|
|
63525
63767
|
"crosswalk": { "file": "crosswalks/graph-v1/topology.json" },
|
|
63526
63768
|
"expectedCounts": {
|
|
63527
|
-
"edges":
|
|
63528
|
-
"nodes":
|
|
63769
|
+
"edges": 3759,
|
|
63770
|
+
"nodes": 281
|
|
63529
63771
|
},
|
|
63530
63772
|
"properties": {
|
|
63531
63773
|
"directed": true,
|
|
@@ -63548,17 +63790,39 @@ var catalogue_default = {
|
|
|
63548
63790
|
"sources": [{
|
|
63549
63791
|
"url": "https://www.wormatlas.org/images/NeuronConnect.xls",
|
|
63550
63792
|
"retrieved": "2026-04-20",
|
|
63551
|
-
"status": "
|
|
63793
|
+
"status": "dead",
|
|
63794
|
+
"snapshot": {
|
|
63795
|
+
"url": "https://web.archive.org/web/20260829213511/https://www.wormatlas.org/images/NeuronConnect.xls",
|
|
63796
|
+
"timestamp": "20260829213511"
|
|
63797
|
+
}
|
|
63552
63798
|
}],
|
|
63553
63799
|
"licence": { "kind": "unrecorded" },
|
|
63554
63800
|
"citations": [{ "text": "White, J. G., Southgate, E., Thomson, J. N., Brenner, S. (1986). The Structure of the Nervous System of the Nematode Caenorhabditis elegans. Phil. Trans. R. Soc. Lond. B 314, 1-340." }],
|
|
63555
63801
|
"recipe": {
|
|
63556
|
-
"status": "
|
|
63557
|
-
"
|
|
63802
|
+
"status": "fetchable",
|
|
63803
|
+
"source": 0,
|
|
63804
|
+
"archive": {
|
|
63805
|
+
"kind": "xls",
|
|
63806
|
+
"sheet": "NeuronConnect.csv"
|
|
63807
|
+
},
|
|
63808
|
+
"parser": {
|
|
63809
|
+
"format": "edge-list",
|
|
63810
|
+
"encoding": "utf-8",
|
|
63811
|
+
"delimiter": "comma",
|
|
63812
|
+
"skipLines": 1,
|
|
63813
|
+
"commentPrefixes": [],
|
|
63814
|
+
"sourceColumn": 0,
|
|
63815
|
+
"targetColumn": 1,
|
|
63816
|
+
"keep": {
|
|
63817
|
+
"column": 2,
|
|
63818
|
+
"values": ["EJ"]
|
|
63819
|
+
},
|
|
63820
|
+
"mirrored": true
|
|
63821
|
+
}
|
|
63558
63822
|
},
|
|
63559
63823
|
"crosswalk": { "file": "crosswalks/graph-v1/topology.json" },
|
|
63560
63824
|
"expectedCounts": {
|
|
63561
|
-
"edges":
|
|
63825
|
+
"edges": 517,
|
|
63562
63826
|
"nodes": 253
|
|
63563
63827
|
},
|
|
63564
63828
|
"properties": {
|
|
@@ -63591,12 +63855,25 @@ var catalogue_default = {
|
|
|
63591
63855
|
"licence": { "kind": "unrecorded" },
|
|
63592
63856
|
"citations": [{ "text": "Bumbarger, Daniel J., Sommer, Ralf J. (2013). System-wide rewiring underlies behavioral differences in predatory and bacterial-feeding nematodes. Cell 152(1), 109-119." }],
|
|
63593
63857
|
"recipe": {
|
|
63594
|
-
"status": "
|
|
63595
|
-
"
|
|
63858
|
+
"status": "fetchable",
|
|
63859
|
+
"source": 0,
|
|
63860
|
+
"archive": {
|
|
63861
|
+
"kind": "xlsx",
|
|
63862
|
+
"sheet": "Sheet1"
|
|
63863
|
+
},
|
|
63864
|
+
"parser": {
|
|
63865
|
+
"format": "edge-list",
|
|
63866
|
+
"encoding": "utf-8",
|
|
63867
|
+
"delimiter": "comma",
|
|
63868
|
+
"skipLines": 2,
|
|
63869
|
+
"commentPrefixes": [],
|
|
63870
|
+
"sourceColumn": 0,
|
|
63871
|
+
"targetColumn": 1
|
|
63872
|
+
}
|
|
63596
63873
|
},
|
|
63597
63874
|
"crosswalk": { "file": "crosswalks/graph-v1/topology.json" },
|
|
63598
63875
|
"expectedCounts": {
|
|
63599
|
-
"edges":
|
|
63876
|
+
"edges": 78,
|
|
63600
63877
|
"nodes": 29
|
|
63601
63878
|
},
|
|
63602
63879
|
"properties": {
|
|
@@ -63626,7 +63903,7 @@ var catalogue_default = {
|
|
|
63626
63903
|
"citations": [{ "text": "Witvliet, Daniel, et al. (2020). Connectomes across development reveal principles of brain maturation. Nature." }],
|
|
63627
63904
|
"recipe": {
|
|
63628
63905
|
"status": "not-fetchable",
|
|
63629
|
-
"reason": "
|
|
63906
|
+
"reason": "the graph joins the specimen's chemical synapse file with its gap junction file (Dataset1_gapjunctions.json beside it), and a recipe reads one download"
|
|
63630
63907
|
},
|
|
63631
63908
|
"crosswalk": { "file": "crosswalks/graph-v1/topology.json" },
|
|
63632
63909
|
"expectedCounts": {
|
|
@@ -63659,8 +63936,13 @@ var catalogue_default = {
|
|
|
63659
63936
|
"licence": { "kind": "unrecorded" },
|
|
63660
63937
|
"citations": [{ "text": "Witvliet, Daniel, Mulcahy, Ben, Mitchell, James K., Meirovitch, Yaron, Bender, Andrew, Garrett, Miranda, Holmyard, Dianne, Schwarz, Kathryn, Ackerman, David G., Bhatt, Dhaval S., Bhatt, Bharti, Bhatt, Heena, Bhatt, Gauri, Bhatt, Rajni, Bhatt, Arushi, Bhatt, Tanya, Bhatt, Prateek, Bhatt, Sanskriti, Bhatt, Ananya, Bhatt, Aanya (2020). Connectomes across development reveal principles of brain maturation. Nature." }],
|
|
63661
63938
|
"recipe": {
|
|
63662
|
-
"status": "
|
|
63663
|
-
"
|
|
63939
|
+
"status": "fetchable",
|
|
63940
|
+
"source": 0,
|
|
63941
|
+
"archive": { "kind": "none" },
|
|
63942
|
+
"parser": {
|
|
63943
|
+
"format": "witvliet-synapses",
|
|
63944
|
+
"encoding": "utf-8"
|
|
63945
|
+
}
|
|
63664
63946
|
},
|
|
63665
63947
|
"crosswalk": { "file": "crosswalks/graph-v1/topology.json" },
|
|
63666
63948
|
"expectedCounts": {
|
|
@@ -63694,7 +63976,7 @@ var catalogue_default = {
|
|
|
63694
63976
|
"citations": [{ "text": "Witvliet, Daniel, et al. (2020). Connectomes across development reveal principles of brain maturation. Nature." }],
|
|
63695
63977
|
"recipe": {
|
|
63696
63978
|
"status": "not-fetchable",
|
|
63697
|
-
"reason": "
|
|
63979
|
+
"reason": "the graph joins the specimen's chemical synapse file with its gap junction file (Dataset4_gapjunctions.json beside it), and a recipe reads one download"
|
|
63698
63980
|
},
|
|
63699
63981
|
"crosswalk": { "file": "crosswalks/graph-v1/topology.json" },
|
|
63700
63982
|
"expectedCounts": {
|
|
@@ -63727,8 +64009,13 @@ var catalogue_default = {
|
|
|
63727
64009
|
"licence": { "kind": "unrecorded" },
|
|
63728
64010
|
"citations": [{ "text": "Witvliet, Daniel, et al. (2020). Connectomes across development reveal principles of brain maturation. Nature." }],
|
|
63729
64011
|
"recipe": {
|
|
63730
|
-
"status": "
|
|
63731
|
-
"
|
|
64012
|
+
"status": "fetchable",
|
|
64013
|
+
"source": 0,
|
|
64014
|
+
"archive": { "kind": "none" },
|
|
64015
|
+
"parser": {
|
|
64016
|
+
"format": "witvliet-synapses",
|
|
64017
|
+
"encoding": "utf-8"
|
|
64018
|
+
}
|
|
63732
64019
|
},
|
|
63733
64020
|
"crosswalk": { "file": "crosswalks/graph-v1/topology.json" },
|
|
63734
64021
|
"expectedCounts": {
|
|
@@ -63761,8 +64048,13 @@ var catalogue_default = {
|
|
|
63761
64048
|
"licence": { "kind": "unrecorded" },
|
|
63762
64049
|
"citations": [{ "text": "Witvliet, Daniel, et al. (2020). Connectomes across development reveal principles of brain maturation. Nature." }],
|
|
63763
64050
|
"recipe": {
|
|
63764
|
-
"status": "
|
|
63765
|
-
"
|
|
64051
|
+
"status": "fetchable",
|
|
64052
|
+
"source": 0,
|
|
64053
|
+
"archive": { "kind": "none" },
|
|
64054
|
+
"parser": {
|
|
64055
|
+
"format": "witvliet-synapses",
|
|
64056
|
+
"encoding": "utf-8"
|
|
64057
|
+
}
|
|
63766
64058
|
},
|
|
63767
64059
|
"crosswalk": { "file": "crosswalks/graph-v1/topology.json" },
|
|
63768
64060
|
"expectedCounts": {
|
|
@@ -63795,8 +64087,13 @@ var catalogue_default = {
|
|
|
63795
64087
|
"licence": { "kind": "unrecorded" },
|
|
63796
64088
|
"citations": [{ "text": "Witvliet, Daniel, et al. (2020). Connectomes across development reveal principles of brain maturation. Nature." }],
|
|
63797
64089
|
"recipe": {
|
|
63798
|
-
"status": "
|
|
63799
|
-
"
|
|
64090
|
+
"status": "fetchable",
|
|
64091
|
+
"source": 0,
|
|
64092
|
+
"archive": { "kind": "none" },
|
|
64093
|
+
"parser": {
|
|
64094
|
+
"format": "witvliet-synapses",
|
|
64095
|
+
"encoding": "utf-8"
|
|
64096
|
+
}
|
|
63800
64097
|
},
|
|
63801
64098
|
"crosswalk": { "file": "crosswalks/graph-v1/topology.json" },
|
|
63802
64099
|
"expectedCounts": {
|