.. image:: _static/branding/monkey-mice-paired.svg :alt: Animated monkey and mouse LFP delay trajectories :align: center :class: landing-animation Neural Field Manifold ===================== .. raw:: html
Recover low-dimensional manifold geometry from noisy, autocorrelated time series
Overview -------- **Neural Field Manifold** connects local signal dynamics to the geometry of delay embeddings. Use it to process neural recordings, fit autoregressive models, reconstruct delay-coordinate trajectories, and quantify ring and torus geometry. The framework models local signals as autoregressive processes and relates their oscillatory modes to delay-embedding geometry. Under the paper's assumptions, ``K`` sustained oscillatory modes correspond to a ``K``-torus. The tutorials examine how noise, nonstationarity, and source mixing affect that reconstruction, and compare intrinsic dynamics with PCA dimensionality. The package includes **DeepLagField**, a PyTorch model that jointly estimates autoregressive order and time-varying coefficients. NumPy and SciPy tools support classical AR models, synthetic dynamical systems, and geometric fits. .. image:: _static/overview.jpg :alt: Oscillatory dynamics and delay-coordinate geometry :width: 90% :align: center Installation ------------ Requires Python 3.10 or later. Install from GitHub while the PyPI release is being prepared: .. code-block:: sh python -m pip install "neuralfieldmanifold @ git+https://github.com/erfanzabeh/NeuralFieldManifold.git@main" See :doc:`installation` for plotting, notebook dependencies, and editable installs. Quick Start ----------- Load a bundled recording, process it, and measure its delay geometry: .. code-block:: python import neuralfieldmanifold as nfm recording = nfm.datasets.load("monkey_lfp") processed = nfm.preprocessing.process( recording.signal, sampling_rate_hz=recording.sampling_rate_hz, config=nfm.preprocessing.PreprocessConfig( notch_hz=50, band_hz=(1, 50), envelope_band_hz=(1, 80), envelope_lowpass_hz=3, ), ) cloud = nfm.embedding.delay(processed.signal, dimension=3, tau_samples=30) fit = nfm.geometry.fit_torus(cloud) print(f"Torus score: {fit.score:.3f}; error: {fit.error:.3f}") Use your own one-dimensional signal and sampling rate in place of the sample. Choose filtering bands and delays appropriate to that recording. Continue with :doc:`getting_started` or browse the :doc:`api`. Foundations ----------- Explore intrinsic and embedding dimensions, oscillatory dynamics, and synthetic manifold reconstruction in the :doc:`tutorial library