BrainSMASH (Brain Surrogate Maps with Autocorrelated Spatial Heterogeneity) is a Python-based computational platform for statistical testing of spatially autocorrelated brain maps. At the heart of BrainSMASH is the ability to simulate surrogate brain maps with spatial autocorrelation that is matched to spatial autocorrelation in a target brain map. Additional utilities are provided for users using Connectome Workbench style surface-based neuroimaging files.
Exhaustive documentation can be found here.
Installing BrainSMASH requires:
If you wish to use the additional utilities provided for Connectome Workbench users, you must have
Connectome Workbench installed with the wb_command
executable locatable in your
system PATH environment variable.
BrainSMASH is most easily installed using pip:
pip install brainsmash
You may also clone and install the source files manually:
git clone https://github.com/murraylab/brainsmash.git
cd brainsmash
python setup.py install
The BrainSMASH source code is available under the GNU General Public License v3.0.
Please cite the following paper if you use BrainSMASH in your research:
Burt, J.B., Helmer, M., Shinn, M.W., Anticevic, A., Murray, J.D. Generative modeling of brain maps with spatial autocorrelation. Neuroimage, 220 (2020).
return_data
keyword argument to both variogram-plotting functions in the eval
module, such that users can easily customize variogram plots to their liking and/or compute numerical goodness-of-fit metrics. mapgen.Base
thanks to contributions from Ross Markello. Note that generating surrogate maps before vs. after this update with the same random seed will yield different results due to a minor implementational change.mapgen.stats
module.geo.volume
method to compute 3D Euclidean distance matrix from an arbitrary set of voxel coordinates, per several requests.unassigned_value
kwarg to cortex
and subcortex
.geo.subcortex
to have parallel structure with cortex
.geo.cortex
function with Ross' new implementation, in a backwards-compatible fashion.Bumps wheel from 0.33.6 to 0.38.1.
Sourced from wheel's changelog.
Release Notes
UNRELEASED
- Updated vendored
packaging
to 22.00.38.4 (2022-11-09)
- Fixed
PKG-INFO
conversion inbdist_wheel
mangling UTF-8 header values inMETADATA
(PR by Anderson Bravalheri)0.38.3 (2022-11-08)
- Fixed install failure when used with
--no-binary
, reported on Ubuntu 20.04, by removingsetup_requires
fromsetup.cfg
0.38.2 (2022-11-05)
- Fixed regression introduced in v0.38.1 which broke parsing of wheel file names with multiple platform tags
0.38.1 (2022-11-04)
- Removed install dependency on setuptools
- The future-proof fix in 0.36.0 for converting PyPy's SOABI into a abi tag was faulty. Fixed so that future changes in the SOABI will not change the tag.
0.38.0 (2022-10-21)
- Dropped support for Python < 3.7
- Updated vendored
packaging
to 21.3- Replaced all uses of
distutils
withsetuptools
- The handling of
license_files
(including glob patterns and default values) is now delegated tosetuptools>=57.0.0
(#466). The package dependencies were updated to reflect this change.- Fixed potential DoS attack via the
WHEEL_INFO_RE
regular expression- Fixed
ValueError: ZIP does not support timestamps before 1980
when usingSOURCE_DATE_EPOCH=0
or when on-disk timestamps are earlier than 1980-01-01. Such timestamps are now changed to the minimum value before packaging.0.37.1 (2021-12-22)
- Fixed
wheel pack
duplicating theWHEEL
contents when the build number has changed (#415)- Fixed parsing of file names containing commas in
RECORD
(PR by Hood Chatham)0.37.0 (2021-08-09)
- Added official Python 3.10 support
- Updated vendored
packaging
library to v20.9
... (truncated)
6f1608d
Created a new releasecf8f5ef
Moved news item from PR #484 to its proper place9ec2016
Removed install dependency on setuptools (#483)747e1f6
Fixed PyPy SOABI parsing (#484)7627548
[pre-commit.ci] pre-commit autoupdate (#480)7b9e8e1
Test on Python 3.11 finala04dfef
Updated the pypi-publish action94bb62c
Fixed docs not building due to code style changesd635664
Updated the codecov action to the latest versionfcb94cd
Updated version to match the releaseDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase
.
Bumps joblib from 0.14.1 to 1.2.0.
Sourced from joblib's changelog.
Release 1.2.0
Fix a security issue where
eval(pre_dispatch)
could potentially run arbitrary code. Now only basic numerics are supported. joblib/joblib#1327Make sure that joblib works even when multiprocessing is not available, for instance with Pyodide joblib/joblib#1256
Avoid unnecessary warnings when workers and main process delete the temporary memmap folder contents concurrently. joblib/joblib#1263
Fix memory alignment bug for pickles containing numpy arrays. This is especially important when loading the pickle with
mmap_mode != None
as the resultingnumpy.memmap
object would not be able to correct the misalignment without performing a memory copy. This bug would cause invalid computation and segmentation faults with native code that would directly access the underlying data buffer of a numpy array, for instance C/C++/Cython code compiled with older GCC versions or some old OpenBLAS written in platform specific assembly. joblib/joblib#1254Vendor cloudpickle 2.2.0 which adds support for PyPy 3.8+.
Vendor loky 3.3.0 which fixes several bugs including:
robustly forcibly terminating worker processes in case of a crash (joblib/joblib#1269);
avoiding leaking worker processes in case of nested loky parallel calls;
reliability spawn the correct number of reusable workers.
Release 1.1.0
Fix byte order inconsistency issue during deserialization using joblib.load in cross-endian environment: the numpy arrays are now always loaded to use the system byte order, independently of the byte order of the system that serialized the pickle. joblib/joblib#1181
Fix joblib.Memory bug with the
ignore
parameter when the cached function is a decorated function.
... (truncated)
5991350
Release 1.2.03fa2188
MAINT cleanup numpy warnings related to np.matrix in tests (#1340)cea26ff
CI test the future loky-3.3.0 branch (#1338)8aca6f4
MAINT: remove pytest.warns(None) warnings in pytest 7 (#1264)067ed4f
XFAIL test_child_raises_parent_exits_cleanly with multiprocessing (#1339)ac4ebd5
MAINT add back pytest warnings plugin (#1337)a23427d
Test child raises parent exits cleanly more reliable on macos (#1335)ac09691
[MAINT] various test updates (#1334)4a314b1
Vendor loky 3.2.0 (#1333)bdf47e9
Make test_parallel_with_interactively_defined_functions_default_backend timeo...Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase
.
Bumps numpy from 1.17.4 to 1.22.0.
Sourced from numpy's releases.
v1.22.0
NumPy 1.22.0 Release Notes
NumPy 1.22.0 is a big release featuring the work of 153 contributors spread over 609 pull requests. There have been many improvements, highlights are:
- Annotations of the main namespace are essentially complete. Upstream is a moving target, so there will likely be further improvements, but the major work is done. This is probably the most user visible enhancement in this release.
- A preliminary version of the proposed Array-API is provided. This is a step in creating a standard collection of functions that can be used across application such as CuPy and JAX.
- NumPy now has a DLPack backend. DLPack provides a common interchange format for array (tensor) data.
- New methods for
quantile
,percentile
, and related functions. The new methods provide a complete set of the methods commonly found in the literature.- A new configurable allocator for use by downstream projects.
These are in addition to the ongoing work to provide SIMD support for commonly used functions, improvements to F2PY, and better documentation.
The Python versions supported in this release are 3.8-3.10, Python 3.7 has been dropped. Note that 32 bit wheels are only provided for Python 3.8 and 3.9 on Windows, all other wheels are 64 bits on account of Ubuntu, Fedora, and other Linux distributions dropping 32 bit support. All 64 bit wheels are also linked with 64 bit integer OpenBLAS, which should fix the occasional problems encountered by folks using truly huge arrays.
Expired deprecations
Deprecated numeric style dtype strings have been removed
Using the strings
"Bytes0"
,"Datetime64"
,"Str0"
,"Uint32"
, and"Uint64"
as a dtype will now raise aTypeError
.(gh-19539)
Expired deprecations for
loads
,ndfromtxt
, andmafromtxt
in npyio
numpy.loads
was deprecated in v1.15, with the recommendation that users usepickle.loads
instead.ndfromtxt
andmafromtxt
were both deprecated in v1.17 - users should usenumpy.genfromtxt
instead with the appropriate value for theusemask
parameter.(gh-19615)
... (truncated)
4adc87d
Merge pull request #20685 from charris/prepare-for-1.22.0-releasefd66547
REL: Prepare for the NumPy 1.22.0 release.125304b
wipc283859
Merge pull request #20682 from charris/backport-204165399c03
Merge pull request #20681 from charris/backport-20954f9c45f8
Merge pull request #20680 from charris/backport-20663794b36f
Update armccompiler.pyd93b14e
Update test_public_api.py7662c07
Update init.py311ab52
Update armccompiler.pyDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase
.
Bumps ipython from 7.11.1 to 7.16.3.
d43c7c7
release 7.16.35fa1e40
Merge pull request from GHSA-pq7m-3gw7-gq5x8df8971
back to dev9f477b7
release 7.16.2138f266
bring back release helper from master branch5aa3634
Merge pull request #13341 from meeseeksmachine/auto-backport-of-pr-13335-on-7...bcae8e0
Backport PR #13335: What's new 7.16.28fcdcd3
Pin Jedi to <0.17.2.2486838
release 7.16.120bdc6f
fix conda buildDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase
.
Bumps pip from 19.3.1 to 21.1.
Sourced from pip's changelog.
21.1 (2021-04-24)
Process
- Start installation scheme migration from
distutils
tosysconfig
. A warning is implemented to detect differences between the two implementations to encourage user reports, so we can avoid breakages before they happen.Features
- Add the ability for the new resolver to process URL constraints. (
[#8253](https://github.com/pypa/pip/issues/8253) <https://github.com/pypa/pip/issues/8253>
_)- Add a feature
--use-feature=in-tree-build
to build local projects in-place when installing. This is expected to become the default behavior in pip 21.3; seeInstalling from local packages <https://pip.pypa.io/en/stable/user_guide/#installing-from-local-packages>
_ for more information. ([#9091](https://github.com/pypa/pip/issues/9091) <https://github.com/pypa/pip/issues/9091>
_)- Bring back the "(from versions: ...)" message, that was shown on resolution failures. (
[#9139](https://github.com/pypa/pip/issues/9139) <https://github.com/pypa/pip/issues/9139>
_)- Add support for editable installs for project with only setup.cfg files. (
[#9547](https://github.com/pypa/pip/issues/9547) <https://github.com/pypa/pip/issues/9547>
_)- Improve performance when picking the best file from indexes during
pip install
. ([#9748](https://github.com/pypa/pip/issues/9748) <https://github.com/pypa/pip/issues/9748>
_)- Warn instead of erroring out when doing a PEP 517 build in presence of
--build-option
. Warn when doing a PEP 517 build in presence of--global-option
. ([#9774](https://github.com/pypa/pip/issues/9774) <https://github.com/pypa/pip/issues/9774>
_)Bug Fixes
- Fixed
--target
to work with--editable
installs. ([#4390](https://github.com/pypa/pip/issues/4390) <https://github.com/pypa/pip/issues/4390>
_)- Add a warning, discouraging the usage of pip as root, outside a virtual environment. (
[#6409](https://github.com/pypa/pip/issues/6409) <https://github.com/pypa/pip/issues/6409>
_)- Ignore
.dist-info
directories if the stem is not a valid Python distribution name, so they don't show up in e.g.pip freeze
. ([#7269](https://github.com/pypa/pip/issues/7269) <https://github.com/pypa/pip/issues/7269>
_)- Only query the keyring for URLs that actually trigger error 401. This prevents an unnecessary keyring unlock prompt on every pip install invocation (even with default index URL which is not password protected). (
[#8090](https://github.com/pypa/pip/issues/8090) <https://github.com/pypa/pip/issues/8090>
_)- Prevent packages already-installed alongside with pip to be injected into an isolated build environment during build-time dependency population. (
[#8214](https://github.com/pypa/pip/issues/8214) <https://github.com/pypa/pip/issues/8214>
_)- Fix
pip freeze
permission denied error in order to display an understandable error message and offer solutions. ([#8418](https://github.com/pypa/pip/issues/8418) <https://github.com/pypa/pip/issues/8418>
_)- Correctly uninstall script files (from setuptools'
scripts
argument), when installed with--user
. ([#8733](https://github.com/pypa/pip/issues/8733) <https://github.com/pypa/pip/issues/8733>
_)- New resolver: When a requirement is requested both via a direct URL (
req @ URL
) and via version specifier with extras (req[extra]
), the resolver will now be able to use the URL to correctly resolve the requirement with extras. ([#8785](https://github.com/pypa/pip/issues/8785) <https://github.com/pypa/pip/issues/8785>
_)- New resolver: Show relevant entries from user-supplied constraint files in the error message to improve debuggability. (
[#9300](https://github.com/pypa/pip/issues/9300) <https://github.com/pypa/pip/issues/9300>
_)- Avoid parsing version to make the version check more robust against lousily debundled downstream distributions. (
[#9348](https://github.com/pypa/pip/issues/9348) <https://github.com/pypa/pip/issues/9348>
_)--user
is no longer suggested incorrectly when pip fails with a permission error in a virtual environment. ([#9409](https://github.com/pypa/pip/issues/9409) <https://github.com/pypa/pip/issues/9409>
_)- Fix incorrect reporting on
Requires-Python
conflicts. ([#9541](https://github.com/pypa/pip/issues/9541) <https://github.com/pypa/pip/issues/9541>
_)
... (truncated)
2b2a268
Bump for releaseea761a6
Update AUTHORS.txt2edd3fd
Postpone a deprecation to 21.23cccfbf
Rename mislabeled news fragment21cd124
Fix NEWS.rst placeholder positione46bdda
Merge pull request #9827 from pradyunsg/fix-git-improper-tag-handling0e4938d
:newspaper:ca832b2
Don't split git references on unicode separators1320bac
Merge pull request #9814 from pradyunsg/revamp-ci-apr-2021-v2e9cc23f
Skip checks on PRs onlyDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase
.
Dear brainSMASH community,
This tool is awesome, and we've used it previously in our lab. Now we want to use it for a white matter voxel map from a white matter tract atlas. We are now following the whole-brain volume example for this white matter analysis. However, we were wondering whether the brainsmash code for the voxelwise approach would still work as intended with our reduced coverage of the brain (only white matter voxels from the tract atlas). I am sorry if this is a really beginner's question. Thank you for your time, Josiane