Changelog#
All notable changes to NeuroLang are documented here.
Contributors: when adding a change, add an entry under Unreleased using the format below, then move it to the appropriate version section when releasing.
Unreleased#
New features:
Declarative engine registry for the
neurolang-queryCLI. Engines are defined in YAML and initialised by pluggable Python modules underneurolang/utils/engines/. Includes--list-enginesfor discovery and--list-predicatesshowing declarative metadata without data download. (neurolang.utils.engine_registry,neurolang.utils.engines)The existing NeuroSynth and Destrieux engines were refactored into the new declarative system. Engine init code moved from
neurolang.utils.clitoneurolang.utils.engines.neurosynth.initandneurolang.utils.engines.destrieux.init.neurolang-query --list-predicatesno longer requires downloading data; predicate metadata is read from the YAML engine config.Datalog init — engines can declare inline Datalog rules that run after the Python init via the
datalog_initYAML field. Derived predicates can be defined without writing Python.CSV/TSV relations — engines can load tabular data files as extensional predicates with the
relationsYAML field. Supported formats:.csv,.tsv,.csv.gz,.tsv.gz. Relation entries may include an optionaldescriptionfield for predicate metadata shown by--list-predicates. Thefilevalue may be a URL for automatic download.Builtins — engines can declare
builtins: [exp, log, startswith]in YAML to register known functions as callable symbols without Python.Downloads — the
downloadssection fetches files from URLs (with optional archive extraction) before other init phases.Probabilistic choices — engines can declare uniform probabilistic choices declaratively with
probabilistic_choice:instead of callingadd_uniform_probabilistic_choice_over_setin Python.Ontology loading — the
ontologiessection loads OWL/RDF ontologies from URLs or local paths.Atlases — engines can declare
atlases:with nilearn atlas names (destrieux,schaefer,difumo) and parameters. Atlas regions are loaded asExplicitVBRpredicates before Datalog init rules.Declarative migration —
exp,log,startswithsymbols now come from YAMLbuiltinsrather thanbase.py; theselected_studychoice for the neurosynth engine is now declared in the engine YAML instead of Python init code; thedestrieuxpredicate is now declared in the YAMLatlases:section.Base symbols — engines can set
use_base_symbols: truein YAML to register common neuroimaging symbols (agg_count,agg_create_region,agg_create_region_overlay,principal_direction,region_union) automatically, without a Python init script.region_unionwas moved intoinit_base_engine()as part of this change.YAML-only engines — the
destrieuxengine no longer needs apython_initmodule. It is now fully declarative, usinguse_base_symbolsand theatlases:section. Theneurolang/utils/engines/destrieux/init.pymodule was removed.
v0.0.1 (Alpha)#
Initial alpha release of NeuroLang.
New features:
Datalog-based logic programming frontend (
NeurolangDL)Probabilistic extensions with independent probabilistic facts (
NeurolangPDL)Tuple-generating dependencies (TGDs) for open-world reasoning
Aggregation support (
COUNT,MAX,SUM, custom callables)Neuroimaging integration: nibabel image loading, Destrieux atlas, NeuroSynth
Example gallery: Destrieux gyri, sulcal queries, NeuroSynth implementation
How to add a changelog entry#
Add entries under Unreleased in the following format:
Unreleased
----------
**New features:**
* Short description of the feature (`:class:` or `:func:` link if applicable)
**Bug fixes:**
* Short description of the bug and fix
**Breaking changes:**
* What changed and how to migrate