Skip to content

Commit da5b4e7

Browse files
ENH: fetch heavy sample data lazily in jupyterlite notebooks
1 parent fb342b5 commit da5b4e7

1 file changed

Lines changed: 26 additions & 6 deletions

File tree

doc/conf.py

Lines changed: 26 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -707,25 +707,24 @@
707707
"_base = _page.split('/lite/')[0] + '/mne_data/'\n"
708708
"mne_data_path = '/tmp/mne_data'\n"
709709
"_sample_dir = mne_data_path + '/MNE-sample-data'\n"
710+
"# Eager 'core': small, commonly-used sample files fetched once at\n"
711+
"# notebook start. The heavy files (raw / filt raw / ernoise / fwd /\n"
712+
"# inv / src, ~360 MB total) are intentionally omitted here -- they are\n"
713+
"# fetched lazily on first read via the reader shims below, so each\n"
714+
"# notebook only downloads the sample files it actually uses.\n"
710715
"_sample_files = [\n"
711716
" 'version.txt',\n"
712-
" 'MEG/sample/sample_audvis_raw.fif',\n"
713717
" 'MEG/sample/sample_audvis_raw-eve.fif',\n"
714718
" 'MEG/sample/sample_audvis_filt-0-40_raw-eve.fif',\n"
715719
" 'MEG/sample/sample_audvis_ecg-proj.fif',\n"
716720
" 'MEG/sample/sample_audvis-cov.fif',\n"
717721
" 'MEG/sample/sample_audvis-ave.fif',\n"
718-
" 'MEG/sample/sample_audvis_filt-0-40_raw.fif',\n"
719-
" 'MEG/sample/sample_audvis-meg-eeg-oct-6-fwd.fif',\n"
720-
" 'MEG/sample/sample_audvis-meg-oct-6-meg-inv.fif',\n"
721-
" 'MEG/sample/ernoise_raw.fif',\n"
722722
" 'MEG/sample/sample_audvis-no-filter-ave.fif',\n"
723723
" 'MEG/sample/sample_audvis_raw-trans.fif',\n"
724724
" 'MEG/sample/sample_audvis-shrunk-cov.fif',\n"
725725
" 'MEG/sample/sample_audvis-meg-lh.stc',\n"
726726
" 'MEG/sample/sample_audvis-meg-rh.stc',\n"
727727
" 'subjects/sample/mri/T1.mgz',\n"
728-
" 'subjects/sample/bem/sample-oct-6-src.fif',\n"
729728
" 'subjects/sample/surf/rh.pial',\n"
730729
" 'subjects/sample/surf/lh.pial',\n"
731730
" 'subjects/sample/surf/rh.white',\n"
@@ -878,6 +877,27 @@
878877
" )\n"
879878
"_mne_minv.read_inverse_operator = _lite_read_inverse_operator\n"
880879
"mne.minimum_norm.read_inverse_operator = _lite_read_inverse_operator\n"
880+
"# Lazily fetch the heavy sample raw / source-space files only when a\n"
881+
"# notebook actually reads them (same pattern as the fwd/inv shims\n"
882+
"# above), instead of pulling the whole sample set up front.\n"
883+
"_orig_read_raw_fif = mne.io.read_raw_fif\n"
884+
"def _lite_read_raw_fif(fname, *_a, **_kw):\n"
885+
" return _orig_read_raw_fif(\n"
886+
" _lite_fetch_if_under_mne_data(fname), *_a, **_kw\n"
887+
" )\n"
888+
"mne.io.read_raw_fif = _lite_read_raw_fif\n"
889+
"_orig_read_raw = mne.io.read_raw\n"
890+
"def _lite_read_raw(fname, *_a, **_kw):\n"
891+
" return _orig_read_raw(\n"
892+
" _lite_fetch_if_under_mne_data(fname), *_a, **_kw\n"
893+
" )\n"
894+
"mne.io.read_raw = _lite_read_raw\n"
895+
"_orig_read_source_spaces = mne.read_source_spaces\n"
896+
"def _lite_read_source_spaces(fname, *_a, **_kw):\n"
897+
" return _orig_read_source_spaces(\n"
898+
" _lite_fetch_if_under_mne_data(fname), *_a, **_kw\n"
899+
" )\n"
900+
"mne.read_source_spaces = _lite_read_source_spaces\n"
881901
"\n"
882902
"# EXPERIMENTAL 3D: MNE's normal Brain/VTK stack can't load in WASM, so\n"
883903
"# route SourceEstimate.plot() through pyvista-js (vtk.js) instead.\n"

0 commit comments

Comments
 (0)