Buckets:

redmingwei's picture
download
raw
12.4 kB
#!/usr/bin/env python3
"""build_sources — L0 来源登记表(唯一生成器)。
每行一个上游来源:数据集 / 论文 / 代码 / 本体。
列语义
------
verified_this_session : 1 = 本次会话里实际访问过该来源(文件或接口);0 = 只是引用。
pin_kind : 固定手段的类别(dandi_version / git_commit / bucket_manifest / ...)。
pin_value : 固定到什么(版本串、commit、内容哈希)。必须可直接核验。
pin_checked_at : 该 pin 最后一次实际核对日期。
pin_status :
verified — 版本与内容都已核对,且可重放
partial — 只能用不可变方式之一(例如端点无版本号、OSF 非 registration)
degraded — 上游自身状态不完整(如 dandiset 只有 draft 且 status=Invalid)
broken — 原登记地址失效且未找到等价替代
输出 framework/sources.csv / .parquet
"""
import sys
from pathlib import Path
import pandas as pd
OUT = Path(sys.argv[1]) if len(sys.argv) > 1 else Path("/domains/framework")
TODAY = "2026-10-20"
# 2026-10-20 本会话新增证据:
# 1) steinmetz 桶镜像已按 path+size+xet_hash 规范化取 sha256(43 文件 / 1,761,487,147 B);
# DOI 经 Crossref 核对,标题 "Distributed coding of choice, action and engagement
# across the mouse brain", Nature 2019。
# 2) flywire 论文全文(PMC11446842,已落地 papers/flywire__PMC11446842.xml)正文写明
# "the analysis presented here is from version 783" 与 "version 783, required 3,013,513 edits";
# DOI 经 Crossref 核对,标题 "Neuronal wiring diagram of an adult brain", Nature 2024。
# 3) falcon-challenge 的 preproc/h2_preproc.py 已在固定 commit 下定位并通读:
# 全文没有 add_electrode / add_unit,只 add_acquisition(TimeSeries "binned_spikes");
# 公用模块 preproc/nwb_create_utils.py 也只有 TimeSeries 助手。
# ⇒ FALCON 导出的 NWB 结构上不可能带电极表/单元表,这条从"待复核"变为"代码级证实"。
ROWS = [
dict(source_id="steinmetz2019",
name="Steinmetz 2019 mouse Neuropixels",
kind="dataset",
url="https://doi.org/10.1038/s41586-019-1787-x",
version="2019 Nature 576:266-273",
license="CC-BY-4.0",
used_by="steinmetz; omnibrain_spike_view",
verified_this_session=1,
note=("经 HF 桶镜像取得;DOI 本会话经 Crossref 核对(Nature 2019,"
"Distributed coding of choice, action and engagement across the mouse brain);"
"桶目录 43 文件 / 1,761,487,147 B,按 path+size+xet_hash 规范化后取 sha256。"
"原始 NWB 不在本桶,故只能固定镜像内容而非上游 artifact"),
pin_kind="doi+bucket_manifest",
pin_value=("10.1038/s41586-019-1787-x | hf://buckets/illusion-brain/training-data/"
"spikes/steinmetz-spikes manifest_sha256="
"af1c641e7f3c127b41d3620f937bde96630d29b13eb4293a3090aaa66f1a4381 "
"(files=43 bytes=1761487147; canon='path\\tsize\\txet_hash\\n' sorted by path)"),
pin_checked_at=TODAY,
pin_status="verified"),
dict(source_id="dandi000070",
name="Churchland 2012 reaching (NLB)",
kind="dataset",
url="https://dandiarchive.org/dandiset/000070",
version="0.260528.0919",
license="CC-BY-4.0",
used_by="primate_macaque_nlb(churchland×67); macaque_unit_region",
verified_this_session=1,
note=("6 个 session、每个 192 units;electrodes/location 为 96 PMd + 96 M1;"
"DANDI 侧 10 个 asset / 53,340,156,657 B。桶内 67 段是从这 6 个 session 切出的时间块"),
pin_kind="dandi_version",
pin_value="0.260528.0919 (assets=10 bytes=53340156657)",
pin_checked_at=TODAY,
pin_status="verified"),
dict(source_id="dandi000127",
name="Area2_Bump (macaque S1)",
kind="dataset",
url="https://dandiarchive.org/dandiset/000127",
version="0.220113.0359",
license="CC-BY-4.0",
used_by="primate_macaque_nlb(area2-bump×2)",
verified_this_session=1,
note="96 电极全为 S1 Area 2;桶内 area 列的 S1_M1 是误标;2 asset / 1,823,368,810 B",
pin_kind="dandi_version",
pin_value="0.220113.0359 (assets=2 bytes=1823368810)",
pin_checked_at=TODAY,
pin_status="verified"),
dict(source_id="dandi000130",
name="DMFC_RSG (macaque)",
kind="dataset",
url="https://dandiarchive.org/dandiset/000130",
version="0.241017.1448",
license="CC-BY-4.0",
used_by="primate_macaque_nlb(dmfc-rsg×3); primate_dmfc_rsg",
verified_this_session=1,
note="72 电极全 DMFC;NWB 为区间 + 稀疏 spike_times;2 asset / 15,673,496 B",
pin_kind="dandi_version",
pin_value="0.241017.1448 (assets=2 bytes=15673496)",
pin_checked_at=TODAY,
pin_status="verified"),
dict(source_id="dandi000950",
name="FALCON H2 human handwriting iBCI",
kind="dataset",
url="https://dandiarchive.org/dandiset/000950",
version="0.241029.1403",
license="CC-BY-4.0",
used_by="human_intracortical(omnibrain_multi)",
verified_this_session=1,
note=("NWB 既无 electrodes 表也无 units 表:生成它的 preproc/h2_preproc.py"
"(commit 770c9b9, blob bf42524)只 add_acquisition(TimeSeries 'binned_spikes',"
"20 ms 阈值跨越,data 形状 t×ch),全文无 add_electrode / add_unit;"
"公用模块 nwb_create_utils.py 亦只有 TimeSeries 助手。"
"⇒ omnibrain_multi 里这批「单元」实为分箱矩阵的列号,不是 sorted unit。"
"描述为左手中央前回 hand knob;47 asset / 1,224,956,736 B"),
pin_kind="dandi_version",
pin_value="0.241029.1403 (assets=47 bytes=1224956736)",
pin_checked_at=TODAY,
pin_status="verified"),
dict(source_id="dandi000954",
name="FALCON H1 human 7DoF reach-grasp",
kind="dataset",
url="https://dandiarchive.org/dandiset/000954",
version="draft",
license="CC-BY-4.0",
used_by="human_intracortical(omnibrain_multi)",
verified_this_session=1,
note=("同样无 electrodes 表;半球未记录。注意:该 dandiset 只有 draft 且 status=Invalid,"
"无已发布版本,因此版本维度不可固定。另外 falcon-challenge 仓库里没有 h1_preproc.py,"
"生成 000954 的导出脚本本次未定位,故不能像 000950 那样给代码级证据;"
"40 asset / 102,258,934 B"),
pin_kind="dandi_draft_only",
pin_value="draft status=Invalid (assets=40 bytes=102258934) — 无 published version",
pin_checked_at=TODAY,
pin_status="degraded"),
dict(source_id="things-eeg2",
name="THINGS-EEG2",
kind="dataset",
url="https://osf.io/3jk45/",
version="v2",
license="CC-BY-4.0",
used_by="human_eeg; omnibrain_eeg_view; omnibrain4d",
verified_this_session=0,
note="250 Hz 白化预处理;跨通道相关已被抹掉。OSF 节点非 registration,无不可变版本",
pin_kind="osf_node",
pin_value=("3jk45 @ 2025-07-25T09:14:43 (registration=false) | "
"paper doi:10.1016/j.neuroimage.2022.119754"),
pin_checked_at=TODAY,
pin_status="partial"),
dict(source_id="flywire",
name="FlyWire FAFB v783",
kind="dataset",
url="https://doi.org/10.1038/s41586-024-07558-y",
version="v783",
license="CC-BY-4.0",
used_by="flywire; omnibrain_graph_view",
verified_this_session=1,
note=("DOI 经 Crossref 核对(Neuronal wiring diagram of an adult brain, Nature 2024);"
"v783 由本会话已落地的论文全文直接确认:PMC11446842 正文写 "
"'the analysis presented here is from version 783'、"
"'version 783, required 3,013,513 edits'"),
pin_kind="release+doi",
pin_value="v783 | doi:10.1038/s41586-024-07558-y (Crossref ok; PMC11446842 正文确认 v783)",
pin_checked_at=TODAY,
pin_status="verified"),
dict(source_id="allen-structure-graph",
name="Allen Mouse Brain StructureGraph",
kind="ontology",
url="http://api.brain-map.org/api/v2/structure_graph_download/1.json",
version="1.json",
license="Allen Terms of Use",
used_by="allen_region_map",
verified_this_session=1,
note="1,327 个结构,含 acronym/name/parent;端点无版本号,只能按抓取时点固定",
pin_kind="api_snapshot",
pin_value="structure_graph_download/1.json @ 2026-10-20(端点无版本)",
pin_checked_at=TODAY,
pin_status="partial"),
dict(source_id="mbao",
name="Mouse Brain Atlas Ontology (MBAO)",
kind="ontology",
url="https://github.com/brain-bican/mouse_brain_atlas_ontology/releases/tag/v2025-07-04",
version="v2025-07-04",
license="CC-BY-4.0",
used_by="allen_region_map",
verified_this_session=1,
note=("3.2 MB;Allen ID → UBERON 但粒度粗(19 个区共用一个 UBERON)。"
"该 release 把多条脑神经改映射到 root 结构"
"(MBA_798 facial nerve → UBERON:0004674 facial nerve root)"),
pin_kind="git_commit",
pin_value="01d70bed4a444fdf9886f1aaf2f3b7071d4082b5 (tag v2025-07-04; PGP verified)",
pin_checked_at=TODAY,
pin_status="verified"),
dict(source_id="uberon",
name="UBERON nervous-minimal",
kind="ontology",
url="https://github.com/obophenotype/uberon/releases/tag/v2026-10-01",
version="v2026-10-01",
license="CC-BY-3.0",
used_by="allen_region_map (name fallback)",
verified_this_session=1,
note="3.0 MB;缩写直接匹配会假阳性,只能做全名精确匹配",
pin_kind="git_commit",
pin_value="d225e8458efebec3d8df38fe936bf95fb3521d39 (tag v2026-10-01)",
pin_checked_at=TODAY,
pin_status="verified"),
dict(source_id="falcon-code",
name="FALCON preprocessing code",
kind="code",
url="https://github.com/snel-repo/falcon-challenge",
version="main@770c9b9",
license="见仓库",
used_by="(用于确认 electrodes / units 表在导出时被丢弃)",
verified_this_session=1,
note=("原登记的 https://github.com/snel-repo/falcon 已 404,改指 falcon-challenge 并固定 commit。"
"本会话在该 commit 下定位并通读 preproc/h2_preproc.py:"
"全文无 add_electrode / add_unit,只写 binned_spikes 一个 TimeSeries;"
"preproc/nwb_create_utils.py 也只有 TimeSeries 助手。"
"仓库内不存在 h1_preproc.py,000954 的导出脚本仍未定位"),
pin_kind="git_commit+blob",
pin_value=("770c9b9597b8f58bf67b5a9ec6401ef705a2cb0f | "
"preproc/h2_preproc.py@bf425246593d4a076c359458f28a1872dc804fab | "
"preproc/nwb_create_utils.py@240c8dba4be8a0a6d8346933aac6462cfb9eb783"),
pin_checked_at=TODAY,
pin_status="verified"),
]
COLS = ["source_id", "name", "kind", "url", "version", "license", "used_by",
"verified_this_session", "note", "pin_kind", "pin_value",
"pin_checked_at", "pin_status"]
d = pd.DataFrame(ROWS)[COLS]
OUT.mkdir(parents=True, exist_ok=True)
d.to_csv(OUT / "sources.csv", index=False)
d.to_parquet(OUT / "sources.parquet", index=False)
print(f"rows={len(d)} cols={len(d.columns)}")
print(d.groupby("kind").size().to_string())
print("\npin_status:")
print(d.groupby("pin_status").size().to_string())
print(f"\n本次实际访问过的: {int(d.verified_this_session.sum())}/{len(d)}")
print(d[["source_id", "version", "pin_status", "verified_this_session"]].to_string(index=False))

Xet Storage Details

Size:
12.4 kB
·
Xet hash:
847f84a8e8fca9b0a1ad593f9a95737b8aed3ed236e841ff4bd6bb3f8ce05d1c

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.