Skip to content
View AxelNoun's full-sized avatar
💼
Open to new opportunities.
💼
Open to new opportunities.

Block or report AxelNoun

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
AxelNoun/README.md

Axel Coiffard-Donaty. Machine learning engineer: spiking neural networks, computational neuroscience, efficient inference.

I find the bugs that don't crash. Spiking neural networks, on-device inference, computational neuroscience. Open to full-time roles and contracts.

Live count of pull requests merged upstream Live count of pull requests in review Followers Stars Profile views

Email LinkedIn X Open to full-time roles and contracts

I find the bugs that don't crash.

A parameter order that silently permutes a model's predictive draws. A CI step that stays green when its command fails. An error guard that can never fire. I work on spiking neural networks, computational neuroscience and efficient inference, and most of what I do comes down to one question: is the number this tool gives me actually true?

I'm self-taught: oncology, then bioinformatics, then AI for proteins, and now neuromorphic computing. With no lab behind me, I built my track record where anyone can check it: in other people's code, reviewed and merged by their maintainers.

Pull requests merged upstream, number of open-source projects, and Qwen3.5 decode from 73 to 80 tok/s in ExecuTorch. Counts refreshed daily.

Animated: a Neuropixels probe records spikes; a neuromorphic chip wakes only on spike events; a mixture-of-experts router sends tokens to experts.

Where my work sits: recording brains, chips that compute on events, and models that only activate what they need.

Selected contributions

Project What I fixed or built
PyTorch ExecuTorch
Meta · on-device inference
#20685 · Runtime Mixture-of-Experts expert-sort for the MLX backend's decode path: two custom ops, a wire-compatible FlatBuffer field, C++ interpreter changes, and a stride bug traced down into MLX's matmul.cpp.
💬 "Tested locally. Improves Qwen3.5 perf from 73 tok/sec to 80 tok/sec. Great job!" — reviewer
HSSM
Brown University · cognitive modelling
#1371 · The racing_diffusion_3 parameter order didn't match the simulator's. Fits looked fine; posterior-predictive draws were silently wrong. Fix plus a test over 21 model/likelihood pairs.
💬 "Looks good, and thanks for catching the issue." — maintainer
pyhgf
computational psychiatry
#451 · Fixed the batched weight gradient of binary layers in rshgf.DeepNetwork, a bug that changed the results of releases 0.3.1 and 0.3.2. The maintainer kept the regression test: it fails on the old code and passes on the fix.
Brian2
spiking network simulator
#1861 · Removed a ~80 ms gc.collect() from every Network.run() when the warning it served is disabled, with a regression test.
💬 "This makes perfect sense to me, and everything looks good." — maintainer
python-neo
electrophysiology I/O
#1891 · Spike2 (CED) files stopped loading with sonpy ≥ 1.9.12, which ships three import layouts by version and platform. Restored reading and re-enabled the CED tests. Invited onto the project's authors list.
💬 "Looks great. Thanks." — maintainer
DeepLabCut
pose estimation
#3445 · pandas 3 Copy-on-Write: made ten in-place mutations of read-only arrays safe across eight modules.
💬 "great PR, thanks for your contribution!" — maintainer
PyHealth
UIUC · clinical ML
#1179 · Support for the MEDS medical-event data standard: a typed Parquet scan path, a schema guard, tests, docs and a MIMIC-IV demo (+1.5k lines).
SpikingJelly
SNN framework
#692 · LIAFNode could not be initialised because of a dead assertion. Fixed, closing #655.

Latest merges · live

Refreshed daily by GitHub Actions · last run 2026-11-05

In review right now (17):

  • HSSM #1455 fix(hssm): reorder fixed-vector parameters with the rows _rearrange_data moves
  • HSSM #1454 fix(rldm): give the angle LAN -1/1 choices for 0/1 responses
  • HSSM #1450 fix(utils): find missing-RT rows by the rt column in _rearrange_data
  • ssm-simulators #417 Fix racing_diffusion_model stopping rule on same-step crossings
  • HSSM #1448 fix(utils): index log-likelihood draws by position, not coordinate value
  • NIR #201 fix: Use full kernel shape in Conv2d output shape inference
  • executorch #24484 [XNNPACK] Compose stacked activations in FuseActivationPass instead of overwriting
  • brian2 #1928 Fix linspace and where dropping units when a plain 0 is combined with a quantity

… and 9 more

Where my code is merged

Project Field Merged (live)
PyTorch ExecuTorch on-device inference runtime (Meta) merged PRs in PyTorch ExecuTorch
pyhgf hierarchical Gaussian filters, computational psychiatry merged PRs in pyhgf
Brian2 spiking neural network simulator merged PRs in Brian2
HSSM hierarchical sequential sampling models (Brown) merged PRs in HSSM
python-neo electrophysiology file I/O merged PRs in python-neo
PyHealth clinical machine learning (UIUC) merged PRs in PyHealth
SpikingJelly spiking neural network framework merged PRs in SpikingJelly
NeuroConv neurophysiology data to NWB merged PRs in NeuroConv
DeepLabCut markerless pose estimation merged PRs in DeepLabCut
All merged pull requests, one line each
Project PR What it does
ExecuTorch #20685 MLX backend: runtime MoE expert-sort for the decode path
ExecuTorch #22372 Vulkan quantizer: preserve node output dtype when lifting scalars to attributes
ExecuTorch #22373 Make inoperative error guards raise (ExportSession, XNNPACK node visitor, Samsung conv1d)
ExecuTorch #23798 Fix bf16 positional-embedding interpolation on CPU
ExecuTorch #24203 Enforce per-dimension upper bounds for DYNAMIC_BOUND inputs in set_input
ExecuTorch #24202 Raise InternalError for non-CPU constant storage in the emitter
pyhgf #451 Fix the batched weight gradient of binary layers in rshgf.DeepNetwork
pyhgf #450 Fix add_edges dropping value children, ignoring coupling_fn and mismatching coupling strengths
pyhgf #449 Fix remove_node on nodes with several edges
pyhgf #448 Use all volatility and value children in the unbounded volatility update
Brian2 #1861 Skip gc.collect() in Network.run() when unused-object warnings are disabled
Brian2 #1885 Developer guidelines: drop ruff-enforced rules, fix stale references
Brian2 #1896 Store Cython random-number buffers by value, fixing restore after a buffer refill
HSSM #1371 Align racing_diffusion_3 parameter order with ssm-simulators
HSSM #1411 Suggest a stable sort in the balanced-panel error message
HSSM #1415 Use a stable sort in test_sorted_data_passes
python-neo #1891 Restore CED/Spike2 reading under sonpy ≥ 1.9.12, re-enable its tests
python-neo #1911 CI: drop Python 3.9 from the NeoPlexon2Test matrix
python-neo #1912 CI step no longer stays green when git ls-remote fails
PyHealth #1179 MEDS dataset support with a typed Parquet scan path
PyHealth #1187 PTB-XL ECG dataset support
PyHealth #1344 Normalise URL paths with posixpath in clean_path
SpikingJelly #692 Fix LIAFNode initialisation (closes #655)
SpikingJelly #808 Fix empty intervals and boundary rounding in time-based frame splitting
SpikingJelly #809 Download the SSC archives in SpikingSpeechCommands
NeuroConv #1855 Fix an unsatisfiable Spike2 dependency marker
DeepLabCut #3445 pandas 3 Copy-on-Write guards across eight modules

Always up to date: every merged PR outside my own repos.

Diagnoses maintainers agreed with

  • pytorch/pytorch #200949 — grid_sample on CPU returns wrong values for fp16/bf16 when a gather offset exceeds 32,767 (int16 offset overflow in the vectorized kernel). Labelled "module: correctness (silent)".
  • brian2 #1893 — restore(restore_random_state=True) uses a dangling pointer after a RNG buffer refill (Cython target). Maintainer: "I agree with the analysis and the proposed solution." Fixed in #1896, merged.
  • ml-explore/mlx-lm #1700 — fused Metal KL/JS kernels reused one threadgroup buffer for max and sum exchanges without a barrier; my fix (#1719) was reproduced independently on an M5 Max (26/50 → 0/50 mismatches). Closed by the maintainers for review capacity, not on technical grounds.
  • PCNtoolkit #600 — MLL/MSLL used the posterior mean of log p instead of log p(y | D, x) (Jensen bias). Collaborator: "To me it makes sense… I would change it."

Built in the open

My own repositories say what has been validated and what hasn't. A clean negative result counts as a result.

NeuroVis3D: live diagnostics for spiking neural networks trained with surrogate gradients TPL-Lab: a pre-registered falsification test on Allen Neuropixels data

KinoScope: kinase-inhibitor affinity prediction under a leakage-free evaluation protocol discoursekit: linguistic measures for discourse research

Repository What it is Live status
neurovis3d diagnostics for spiking neural networks (snnTorch) CI last commit stars
tpl-lab pre-registered falsification test on Allen Neuropixels data CI last commit stars release
kinoscope kinase-inhibitor affinity, leakage-free evaluation CI last commit stars
discoursekit linguistic measures for discourse research CI last commit stars

Activity · live

My GitHub contributions over the last 12 months, drawn as a spike raster. Refreshed daily.

Toolbox

Python C++ Cython PyTorch ExecuTorch MLX snnTorch Brian2 SpikingJelly NWB NumPy pandas pytest GitHub Actions

Spiking & neuroscience snnTorch · SpikingJelly · Brian2 · Neo · NeuroConv / NWB · Allen Neuropixels · HSSM · pyhgf
Inference & systems PyTorch · ExecuTorch (XNNPACK, Vulkan, MLX backends) · MLX · dynamic shapes · quantisation paths
Health & bio data PyHealth · MEDS · PTB-XL · MIMIC-IV · RDKit · ESM-2 · PyTorch Geometric
Engineering practice pytest & Hypothesis · mypy --strict · ruff · CI · packaging · pre-registration

What I'm looking for

Full-time roles in neuromorphic and event-driven computing, neurotech and BCI, computational-neuroscience tooling, or ML inference. I'm also open to contracts: bugs that falsify results, scientific-stack migrations (pandas 3, NumPy 2, Python 3.14, Cython), correctness and evaluation reviews of ML and scientific code.

Based in France (CET). French native, English for written work. Long term, I want to bring computational models closer to clinical medicine.

The fastest way to reach me is email. I'm glad to start with a written exchange or a short trial task on your codebase.

Thanks for reading. A small spiking network passes spikes from layer to layer.

Popular repositories Loading

  1. neurovis3d neurovis3d Public

    NeuroVis3D — SNN visualization and pathology indicators (D1/D2/D3)

    Python 1

  2. tpl-lab tpl-lab Public

    Falsification lab for a G2/SU(3) ≅ S⁶ conjecture about cortical dynamics. H1-spontaneous refuted 12/12 on Allen Neuropixels.

    Python 1

  3. discoursekit discoursekit Public

    Linguistic measures for discourse research

    Python 1

  4. AxelNoun AxelNoun Public

    Profile README

    Python

  5. PyHealth PyHealth Public

    Forked from sunlabuiuc/PyHealth

    A Deep Learning Python Toolkit for Healthcare Applications.

    Python

  6. mlx-lm mlx-lm Public

    Forked from ml-explore/mlx-lm

    Run LLMs with MLX

    Python