Skip to content
Commits on Source (129)
......@@ -59,7 +59,6 @@ matrix:
- liblapacke-dev
- libblocksruntime-dev
script:
- make test
- make utest
- name: "Makefile OpenMP"
......
Copyright (c) 2013-2018. The Regents of the University of California.
Copyright (c) 2013-2018. BART Developer Team and Contributors.
Copyright (c) 2013-2019. BART Developer Team and Contributors.
Copyright (c) 2012. Intel Corporation. (src/lapacke/)
All rights reserved.
......
# Copyright 2013-2015. The Regents of the University of California.
# Copyright 2015-2018. Martin Uecker <martin.uecker@med.uni-goettingen.de>
# Copyright 2015-2019. Martin Uecker <martin.uecker@med.uni-goettingen.de>
# All rights reserved. Use of this source code is governed by
# a BSD-style license which can be found in the LICENSE file.
......@@ -9,6 +9,9 @@ MAKESTAGE ?= 1
# silent make
#MAKEFLAGS += --silent
# auto clean on makefile updates
AUTOCLEAN?=1
# clear out all implicit rules and variables
MAKEFLAGS += -R
......@@ -23,6 +26,7 @@ SLINK?=0
DEBUG?=0
FFTWTHREADS?=1
ISMRMRD?=0
NOEXEC_STACK?=0
LOG_BACKEND?=0
LOG_SIEMENS_BACKEND?=0
......@@ -165,6 +169,7 @@ MODULES_pics = -lgrecon -lsense -liter -llinops -lwavelet -llowrank -lnoncart
MODULES_sqpics = -lsense -liter -llinops -lwavelet -llowrank -lnoncart
MODULES_pocsense = -lsense -liter -llinops -lwavelet
MODULES_nlinv = -lnoir -liter -lnlops -llinops
MODULES_moba = -lmoba -lnoir -liter -lnlops -llinops -lwavelet
MODULES_bpsense = -lsense -lnoncart -liter -llinops -lwavelet
MODULES_itsense = -liter -llinops
MODULES_ecalib = -lcalib
......@@ -177,21 +182,24 @@ MODULES_ccapply = -lcalib
MODULES_estvar = -lcalib
MODULES_nufft = -lnoncart -liter -llinops
MODULES_rof = -liter -llinops
MODULES_tgv = -liter -llinops
MODULES_bench = -lwavelet -llinops
MODULES_phantom = -lsimu
MODULES_bart = -lbox -lgrecon -lsense -lnoir -liter -llinops -lwavelet -llowrank -lnoncart -lcalib -lsimu -lsake -ldfwavelet -lnlops
MODULES_bart = -lbox -lgrecon -lsense -lnoir -liter -llinops -lwavelet -llowrank -lnoncart -lcalib -lsimu -lsake -ldfwavelet -lnlops -lmoba
MODULES_sake = -lsake
MODULES_wave = -liter -lwavelet -llinops -lsense
MODULES_traj = -lnoncart
MODULES_wave = -liter -lwavelet -llinops -llowrank
MODULES_threshold = -llowrank -liter -ldfwavelet -llinops -lwavelet
MODULES_fakeksp = -lsense -llinops
MODULES_lrmatrix = -llowrank -liter -llinops
MODULES_estdims = -lnoncart -llinops
MODULES_ismrmrd = -lismrm
MODULES_wavelet = -llinops -lwavelet
MODULES_wshfl = -llinops -lwavelet -liter -llowrank -llinops
MODULES_wshfl = -llinops -lwavelet -liter -llowrank
MAKEFILES = $(root)/Makefiles/Makefile.*
MAKEFILES = $(wildcard $(root)/Makefiles/Makefile.*)
ALLMAKEFILES = $(root)/Makefile $(wildcard $(root)/Makefile.* $(root)/*.mk $(root)/rules/*.mk $(root)/Makefiles/Makefile.*)
-include Makefile.$(NNAME)
-include Makefile.local
......@@ -233,6 +241,9 @@ CPPFLAGS += -g
CFLAGS += -g
endif
ifeq ($(NOEXEC_STACK),1)
CPPFLAGS += -DNOEXEC_STACK
endif
ifeq ($(PARALLEL),1)
MAKEFLAGS += -j
......@@ -243,6 +254,12 @@ ifeq ($(MAKESTAGE),1)
.PHONY: doc/commands.txt $(TARGETS)
default all clean allclean distclean doc/commands.txt doxygen test utest gputest $(TARGETS):
make MAKESTAGE=2 $(MAKECMDGOALS)
tests/test-%: force
make MAKESTAGE=2 $(MAKECMDGOALS)
force: ;
else
......@@ -506,20 +523,39 @@ $(UTARGETS): % : utests/utest.c utests/%.o $$(MODULES_%) $(MODULES)
clean:
rm -f `find $(srcdir) -name "*.o"`
rm -f utests/*.o
rm -f $(root)/utests/*.o
rm -f $(patsubst %, %, $(UTARGETS))
rm -f $(root)/lib/.*.lock
rm -f $(libdir)/.*.lock
allclean: clean
rm -f $(libdir)/*.a $(ALLDEPS)
rm -f $(patsubst %, %, $(TARGETS))
rm -f $(srcdir)/misc/version.inc
rm -rf doc/dx
rm -f doc/commands.txt
rm -rf $(root)/tests/tmp/*/
rm -rf $(root)/doc/dx
rm -f $(root)/doc/commands.txt
touch isclean
distclean: allclean
-include isclean
isclean: $(ALLMAKEFILES)
ifeq ($(AUTOCLEAN),1)
@echo "CONFIGURATION MODIFIED. RUNNING FULL REBUILD."
touch isclean
make allclean || rm isclean
else
ifneq ($(MAKECMDGOALS),allclean)
@echo "CONFIGURATION MODIFIED."
endif
endif
# automatic tests
# system tests
......
......@@ -72,7 +72,7 @@ The software tools in recon should run on any recent Linux distribution.
To install the required libraries on Debian and Ubuntu run:
$ sudo apt-get install gcc make libfftw3-dev liblapacke-dev libpng-dev libopenblas-dev
$ sudo apt-get install gcc make libfftw3-dev liblapacke-dev libpng-dev libopenblas-dev gfortran
(optional)
$ sudo apt-get install octave
......@@ -110,7 +110,7 @@ want to try an older version (e.g. version 4.00).
The recommended way to use BART on Windows is with the Windows Subsystem for
Linux (WSL) which is available for Windows 10. If you use WSL, you need to
use the clang compiler.
either use the clang compiler or gcc with the NOEXEC_STACK option.
BART should also work with Cygwin:
......
......@@ -2,9 +2,10 @@
#
TBASE=show slice crop resize join transpose squeeze flatten zeros ones flip circshift extract repmat bitmask reshape version delta copy casorati vec poly index
TFLP=scale invert conj fmac saxpy sdot spow cpyphs creal carg normalize cdf97 pattern nrmse mip avg cabs zexp
TNUM=fft fftmod fftshift noise bench threshold conv rss filter mandelbrot wavelet window var std
TRECO=pics pocsense sqpics itsense nlinv nufft rof sake wave lrmatrix estdims estshift estdelay wavepsf wshfl
TNUM=fft fftmod fftshift noise bench threshold conv rss filter mandelbrot wavelet window var std fftrot
TRECO=pics pocsense sqpics itsense nlinv moba nufft rof tgv sake wave lrmatrix estdims estshift estdelay wavepsf wshfl
TCALIB=ecalib ecaltwo caldir walsh cc ccapply calmat svd estvar whiten
TMRI=homodyne poisson twixread fakeksp
TMRI=homodyne poisson twixread fakeksp looklocker
TSIM=phantom traj
TIO=toimg
bart (0.5.00-1) UNRELEASED; urgency=medium
* New upstream version.
* Standards-Version: 4.4.0
-- Martin Uecker <martin.uecker@med.uni-goettingen.de> Tue, 27 Aug 2019 14:18:12 +0200
bart (0.4.04-2) unstable; urgency=medium
* Add some fixes from upstream.
......
......@@ -8,7 +8,7 @@ Build-Depends: debhelper (>= 11~),
liblapack-dev | liblapack.so,
libpng-dev,
liblapacke-dev
Standards-Version: 4.2.1
Standards-Version: 4.4.0
Vcs-Browser: https://salsa.debian.org/med-team/bart
Vcs-Git: https://salsa.debian.org/med-team/bart.git
Homepage: https://mrirecon.github.io/bart/
......
......@@ -4,9 +4,9 @@ Upstream-Contact: Martin Uecker <martin.uecker@med.uni-goettingen.de>
Source: https://github.com/mrirecon/bart
Files: *
Copyright: 2013-2018 The Regents of the University of California
2015-2018 Martin Uecker
2017-2018 Massachusetts Institute of Technology
Copyright: 2013-2019 The Regents of the University of California
2015-2019 Martin Uecker
2017-2019 Massachusetts Institute of Technology
2017 University of Oxford
2012,2017 Intel Corporation
2014-2016 Joseph Y Cheng
......@@ -15,8 +15,8 @@ Copyright: 2013-2018 The Regents of the University of California
2016 David Smith
2016 Hans Johnson
2017-2018 Damien Nguyen
2017-2018 Christian Holme
2017-2018 Sebastian Rosenzweig
2017-2019 Christian Holme
2017-2019 Sebastian Rosenzweig
License: BSD-3-clause
All rights reserved.
.
......
......@@ -7,10 +7,10 @@ Subject: makefile change for compatibility with debian
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Makefile b/Makefile
index 0729483..29258b6 100644
index a2821d2..78fb74e 100644
--- a/Makefile
+++ b/Makefile
@@ -33,7 +33,7 @@ MEMONLY_CFL?=0
@@ -37,7 +37,7 @@ MEMONLY_CFL?=0
DESTDIR ?= /
......
From: Martin Uecker <martin.uecker@med.uni-goettingen.de>
Date: Mon, 10 Dec 2018 21:32:53 +0100
Subject: some more memory leaks
---
src/noncart/nufft.c | 1 +
src/pics.c | 14 +++++---------
2 files changed, 6 insertions(+), 9 deletions(-)
diff --git a/src/noncart/nufft.c b/src/noncart/nufft.c
index ed0a6e4..2d9d6bc 100644
--- a/src/noncart/nufft.c
+++ b/src/noncart/nufft.c
@@ -590,6 +590,7 @@ static void nufft_free_data(const linop_data_t* _data)
md_free(data->fftmod);
md_free(data->weights);
md_free(data->roll);
+ md_free(data->basis);
#ifdef USE_CUDA
md_free(data->linphase_gpu);
diff --git a/src/pics.c b/src/pics.c
index da6ce4b..38b7624 100644
--- a/src/pics.c
+++ b/src/pics.c
@@ -79,20 +79,15 @@ static const struct linop_s* sense_nc_init(const long max_dims[DIMS], const long
*/
const struct linop_s* fft_slice = linop_fft_create(DIMS, map_dims, SLICE_FLAG);
- const struct linop_s* tmp = fft_op;
- fft_op = linop_chain(fft_slice, tmp);
- linop_free(tmp);
- linop_free(fft_slice);
+
+ fft_op = linop_chain_FF(fft_slice, fft_op);
}
- const struct linop_s* lop = linop_chain(maps_op, fft_op);
+ const struct linop_s* lop = linop_chain_FF(maps_op, fft_op);
//precond_op[0] = (struct operator_s*) nufft_precond_create( fft_op );
precond_op[0] = NULL;
- linop_free(maps_op);
- linop_free(fft_op);
-
return lop;
}
@@ -414,7 +409,7 @@ int main_pics(int argc, char* argv[])
if (NULL != basis_file) {
const struct linop_s* basis_op = linop_fmac_create(DIMS, bmx_dims, COEFF_FLAG, TE_FLAG, ~(COEFF_FLAG | TE_FLAG), basis);
- forward_op = linop_chain(forward_op, basis_op);
+ forward_op = linop_chain_FF(forward_op, basis_op);
}
} else {
@@ -677,6 +672,7 @@ int main_pics(int argc, char* argv[])
xfree(pat_file);
xfree(traj_file);
+ xfree(basis_file);
double end_time = timestamp();
From: Martin Uecker <martin.uecker@med.uni-goettingen.de>
Date: Tue, 11 Dec 2018 09:25:17 +0100
Subject: fix bart script
---
matlab/bart.m | 51 ++++++++++++++++++++++++++-------------------------
1 file changed, 26 insertions(+), 25 deletions(-)
diff --git a/matlab/bart.m b/matlab/bart.m
index 47d0af4..861a024 100644
--- a/matlab/bart.m
+++ b/matlab/bart.m
@@ -12,23 +12,24 @@ function [varargout] = bart(cmd, varargin)
end
bart_path = getenv('TOOLBOX_PATH');
- isWSL = false;
+ isWSL = false;
if isempty(bart_path)
if exist('/usr/local/bin/bart', 'file')
bart_path = '/usr/local/bin';
elseif exist('/usr/bin/bart', 'file')
bart_path = '/usr/bin';
- else
- % Try to execute bart inside wsl, if it works, then it returns
- % status 0
- [bartstatus, ~] = system('wsl bart version -V');
- if bartstatus==0
- bart_path = '/usr/bin';
- isWSL = true;
- else
- error('Environment variable TOOLBOX_PATH is not set.');
- end
+ else
+ % Try to execute bart inside wsl, if it works, then it returns
+ % status 0
+ [bartstatus, ~] = system('wsl bart version -V');
+ if bartstatus==0
+ bart_path = '/usr/bin';
+ isWSL = true;
+ else
+ error('Environment variable TOOLBOX_PATH is not set.');
+ end
+ end
end
% clear the LD_LIBRARY_PATH environment variable (to work around
@@ -60,20 +61,20 @@ function [varargout] = bart(cmd, varargin)
out_str = sprintf(' %s', out{:});
if ispc
- if isWSL
- % For WSL and modify paths
- cmdWSL = WSLPathCorrection(cmd);
- in_strWSL = WSLPathCorrection(in_str);
- out_strWSL = WSLPathCorrection(out_str);
- ERR = system(['wsl bart ', cmdWSL, ' ', in_strWSL, ' ', out_strWSL]);
- else
- % For cygwin use bash and modify paths
- ERR = system(['bash.exe --login -c ', ...
- strrep(bart_path, filesep, '/'), ...
- '"', '/bart ', strrep(cmd, filesep, '/'), ' ', ...
- strrep(in_str, filesep, '/'), ...
- ' ', strrep(out_str, filesep, '/'), '"']);
- end
+ if isWSL
+ % For WSL and modify paths
+ cmdWSL = WSLPathCorrection(cmd);
+ in_strWSL = WSLPathCorrection(in_str);
+ out_strWSL = WSLPathCorrection(out_str);
+ ERR = system(['wsl bart ', cmdWSL, ' ', in_strWSL, ' ', out_strWSL]);
+ else
+ % For cygwin use bash and modify paths
+ ERR = system(['bash.exe --login -c ', ...
+ strrep(bart_path, filesep, '/'), ...
+ '"', '/bart ', strrep(cmd, filesep, '/'), ' ', ...
+ strrep(in_str, filesep, '/'), ...
+ ' ', strrep(out_str, filesep, '/'), '"']);
+ end
else
ERR = system([bart_path, '/bart ', cmd, ' ', in_str, ' ', out_str]);
end
......@@ -7,10 +7,10 @@ Subject: remove empty directory
1 file changed, 1 deletion(-)
diff --git a/Makefile b/Makefile
index 29258b6..89a02cb 100644
index 78fb74e..37d5003 100644
--- a/Makefile
+++ b/Makefile
@@ -560,7 +560,6 @@ install: bart $(root)/doc/commands.txt
@@ -596,7 +596,6 @@ install: bart $(root)/doc/commands.txt
install bart $(DESTDIR)/$(PREFIX)/bin/
install -d $(DESTDIR)/$(PREFIX)/share/doc/bart/
install $(root)/doc/*.txt $(root)/README $(DESTDIR)/$(PREFIX)/share/doc/bart/
......
From: Martin Uecker <martin.uecker@med.uni-goettingen.de>
Date: Tue, 11 Dec 2018 09:26:07 +0100
Subject: relax unit test
---
utests/test_nufft.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/utests/test_nufft.c b/utests/test_nufft.c
index f834283..ce998ce 100644
--- a/utests/test_nufft.c
+++ b/utests/test_nufft.c
@@ -224,7 +224,7 @@ static bool test_nufft_basis_toeplitz(void)
md_zsmul(N, ci2_dims, dst1, dst1, sc / (n * n));
- return md_znrmse(N, ci2_dims, dst1, dst2) < 1.E-5;
+ return md_znrmse(N, ci2_dims, dst1, dst2) < 1.E-4;
}
0001-some-more-memory-leaks.patch
0002-fix-bart-script.patch
0003-relax-unit-test.patch
0004-makefile-change-for-compatibility-with-debian.patch
0005-remove-empty-directory.patch
0006-deactivate-ode-unit-tests.patch
0001-makefile-change-for-compatibility-with-debian.patch
0002-remove-empty-directory.patch
0003-deactivate-ode-unit-tests.patch
(an incomplete list of papers using BART...)
Hollingsworth KG, Higgins DM, McCallum M, Ward L, Coombs A, Straub V.
Investigating the quantitative fidelity of prospectively undersampled
chemical shift imaging in muscular dystrophy with compressed sensing
and parallel imaging reconstruction.
Magn Reson Med 2014; 72:1610-1619.
Zhang T, Cheng JY, Potnick AG, Barth RA, Alley MT, Uecker M, Lustig M,
Pauly JM, Vasanawala SS.
Fast Pediatric 3D Free Breathing Abdominal Dynamic Contrast Enhanced MRI
with a High Spatiotemporal Resolution,
J Magn Reson Imaging 2015; 41:460-473.
Addy NO, Ingle RR, Wu HH, Hu BS, Nishimura DG.
High-resolution variable-density 3D cones coronary MRA.
Magn Reson Med 2015; 74:614-621.
Cheng JY, Zhang T, Ruangwattanapaisarn N, Alley MT, Uecker M, Pauly JM,
Lustig M, Vasanawala SS.
Free-Breathing Pediatric MRI with Nonrigid Motion Correction and Acceleration,
J Magn Reson Imaging 2015; 42:407-420.
Athalye V, Lustig M, Uecker M.
Parallel Magnetic Resonance Imaging as Approximation in a
Reproducing Kernel Hilbert Space,
Inverse Problems 2015; 31:045008.
Mann LW, Higgins DM, Peters CN, Cassidy S, Hodson KK, Coombs A,
Taylor R, Hollingsworth KG.
Accelerating MR Imaging Liver Steatosis Measurement Using Combined
Compressed Sensing and Parallel Imaging: A Quantitative Evaluation,
Radiology 2016; 278:245-256.
Cheng JY, Hanneman K, Zhang T, Alley MT, Lai P, Tamir JI, Uecker M,
Pauly JM, Lustig M, Vasanawala SS.
Comprehensive Motion-Compensated Highly-Accelerated 4D Flow MRI with
Ferumoxytol Enhancement for Pediatric Congenital Heart Disease.
J Magn Reson Imaging 2016; 43:1355-1368.
Tamir JI, Uecker M, Chen W, Lai P, Aleey MT, Vasanawala SS, Lustig M.
T2-Shuffling: Sharp, Multi-Contrast, Volumetric Fast Spin-Echo Imaging.
Magn Recon Med 2017; 77:180-195.
Uecker M, Lustig M.
Estimating Absolute-Phase Maps Using ESPIRiT and Virtual Conjugate Coils.
Magn Reson Med 2017; 77:1201-1207.
Cheng JY, Zhang T, Alley MT, Uecker M, Lustig M, Pauly JM, Vasanawala SS.
Comprehensive Multi-Dimensional MRI for the Simultaneous Assessment
of Cardiopulmonary Anatomy and Physiology.
Scientific Reports 2017; 7:5330.
Bao S, Tamir JI, Young JL, Tariq U, Uecker M, Lai P, Chen W, Lustig M,
Vasanawala SS.
Fast comprehensive single-sequence four-dimensional pediatric knee MRI with
T2 shuffling.
J Magn Reson Imaging 2017; 45:1700-1711.
Mazzoli V, Schoormans J, Froeling M, Sprengers AM, Coolen BF, Verdonschot N,
Strijkers GJ, Nederveen AJ.
Accelerated 4D self‐gated MRI of tibiofemoral kinematics.
NMR in Biomed 2017; 30:e3791.
Moghari MH, Uecker M, Roujol S, Sabbagh M, Geva T, Powell AJ.
Accelerated Whole-heart Magnetic Resonance Angiography Using
a Variable-Density Poisson-Disc Undersampling Pattern and
Compressed Sensing Reconstruction.
Magn Reson Med 2018; 79:761-769.
Peper ES, Strijkers GJ, Gazzola K, Potters WV, Motaal AG, Luirink IK, Hutten BA,
Wiegman A, van Ooij P, van den Born B-JH, Nederveen AJ, Coolen BF.
Regional assessment of carotid artery pulse wave velocity using compressed
sensing accelerated high temporal resolution 2D CINE PC MRI.
J Cardiovasc Magn Reson 2018; 20:1-12.
Mazzoli V, Gottwald LM, Peper ES, Froeling M, Coolen BF, Verdonschot N,
Sprengers AM, van Ooij P, Strijkers GJ, Nederveen AJ.
Accelerated 4D phase contrast MRI in skeletal muscles contraction.
Magn Reson Med 2018; 80:1799-1811.
Rosenzweig S, Holme HCM, Wilke RN, Voit D, Frahm J, Uecker M.
Simultaneous Multi-Slice Reconstruction Using Regularized Nonlinear Inversion:
SMS-NLINV.
Magn Reson Med 2018; 79:2057-2066.
Sanders J, Song H, Frank S, Bathala T, Venkatesan A, Anscher M, Tang C, Bruno T,
Wei W, Ma J.
Parallel imaging compressed sensing for accelerated imaging and improved SNR in
MRI-based prostate brachytherapy post-implant dosimetry.
Brachytherapy 2018; 17:816-824.
Roeloffs V, Rosenzweig S, Holme HCM, Uecker M, Frahm J.
Frequency-modulated SSFP with radial sampling and subspace reconstruction:
A time-efficient alternative to phase-cycled bSSFP.
Magn Reson Med 2019; 81:1566-1579.
de Jonge CS, Coolen BF, Peper ES, Motaal AG, Nio CY, Somers I, Strijkers GJ,
Stoker J, Nederveen AJ.
Evaluation of compressed sensing MRI for accelerated bowel motility imaging.
European Radiology Experimental 2019; 3:1-12.
Walheim J, Dillinger H, Kozerke.
Multipoint 5D flow cardiovascular magnetic resonance - accelerated cardiac-
and respiratory-motion resolved mapping of mean and turbulent velocities.
J Cardiovasc Magn Reson 2019; 21:42.
Wang X, Kohler F, Unterberg-Buchwald C, Lotz J, Frahm J, Uecker M.
Model-based myocardial T1 mapping with sparsity constraints using single-shot
inversion-recovery radial FLASH.
J Cardiovasc Magn Reson 2019; in press.
......@@ -5,7 +5,7 @@
Uecker M, Ong F, Tamir JI, Bahri D, Virtue P, Cheng JY, Zhang T, Lustig M.
Berkeley Advanced Reconstruction Toolbox.
Annual Meeting ISMRM, Toronto 2015,
In: Proc Intl Soc Mag Reson Med 23; 2486.
In: Proc Intl Soc Mag Reson Med 2015; 23:2486.
Uecker M, Virtue P, Ong F, Murphy MJ, Alley MT, Vasanawala SS, Lustig M.
Software Toolbox and Programming Library for Compressed Sensing and
......@@ -30,19 +30,18 @@ https://github.com/mrirecon/vcc-espirit
Rosenzweig S, Holme HCM, Wilke RN, Voit D, Frahm J, Uecker M.
Simultaneous Multi-Slice Reconstruction Using Regularized Nonlinear Inversion:
SMS-NLINV.
Magnetic Resonance in Medicine 2018; 79:2057-2066.
Magn Reson Med 2018; 79:2057-2066.
https://github.com/mrirecon/sms-nlinv
Rosenzweig S, Holme HCM, Uecker M.
Simple Auto-Calibrated Gradient Delay Estimation From Few Spokes Using Radial
Intersections (RING).
Magnetic Resonance in Medicine, DOI:10.1002/mrm.27506 (2018)
Magn Reson Med 2019; 81:1898-1906.
https://github.com/mrirecon/ring
Holme HCM, Rosenzweig S, Ong F, Wilke RN, Lustig M, Uecker M.
ENLIVE: An Efficient Nonlinear Method for Calibrationless and Robust Parallel
Imaging.
arXiv:1706.09780 [physics.med-ph]
Imaging. Scientific Reports 2019; 9:3034.
https://github.com/mrirecon/enlive
......@@ -72,8 +71,8 @@ Magn Reson Med 2004; 52:1397-1406.
- implementation of the non-uniform FFT -
(command: nufft, pics)
- implementation of the (non-uniform) FFT -
(commands: fft, nufft, pics)
O’Sullivan JD.
......@@ -89,7 +88,11 @@ Wajer F and Pruessmann KP.
Major speedup of reconstruction for sensitivity­encoding with arbitrary
trajectories.
Annual Meeting of the ISMRM, Glasgow 2001,
In: Proc Intl Soc Mag Reson Med 9; 767.
In: Proc Intl Soc Mag Reson Med 2001; 9:767.
Frigo M, Johnson SG.
The Design and Implementation of FFTW3.
Proc IEEE 2005; 93:216-231.
Uecker M, Zhang S, Frahm J.
Nonlinear Inverse Reconstruction for Real-time MRI of the
......@@ -99,7 +102,7 @@ Magn Reson Med 2010; 63:1456-1462.
Ong F, Uecker M, Jiang W, Lustig M.
Fast Non-Cartesian Reconstruction with Pruned Fast Fourier Transform.
Annual Meeting ISMRM, Toronto 2015,
In: Proc Intl Soc Mag Reson Med 23; 3639.
In: Proc Intl Soc Mag Reson Med 2015; 23:3639.
......@@ -110,13 +113,13 @@ In: Proc Intl Soc Mag Reson Med 23; 3639.
Walsh DO, Gmitro AF, Marcellin MW.
Adaptive reconstruction of phased array MR imagery.
Magn Reson Med 2000, 43:682-690.
Magn Reson Med 2000; 43:682-690.
Griswold M, Walsh D, Heidemann R, Haase A, Jakob A.
The Use of an Adaptive Reconstruction for Array Coil Sensitivity
Mapping and Intensity Normalization
Annual Meetig ISMRM, Honolulu 2002,
In: Proc Intl Soc Mag Reson Med 10; 2410.
In: Proc Intl Soc Mag Reson Med 2002; 10:2410.
McKenzie CA, Yeh EN, Ohliger MA, Price MD, Sodickson DK.
Self-calibrating parallel imaging with automatic coil sensitivity
......@@ -126,7 +129,7 @@ Magn Reson Med 2002; 47:529-538.
Uecker M, Virtue P, Vasanawala SS, Lustig M.
ESPIRiT Reconstruction Using Soft SENSE.
Annual Meeting ISMRM, Salt Lake City 2013,
In: Proc Intl Soc Mag Reson Med 21; 127.
In: Proc Intl Soc Mag Reson Med 2013; 21:127.
Uecker M, Lai P, Murphy MJ, Virtue P, Elad M, Pauly JM, Vasanawala SS,
Lustig M.
......@@ -150,7 +153,7 @@ Bi Z, Uecker M, Jiang D, Lustig M, Ying K.
Robust Low-rank Matrix Completion for sparse motion correction in auto
calibration PI.
Annual Meeting ISMRM, Salt Lake City 2013,
In: Proc Intl Soc Mag Reson Med 21; 2584.
In: Proc Intl Soc Mag Reson Med 2013; 21:2584.
Shin PJ, Larson PEZ, Ohliger MA, Elad M, Pauly JM, Vigneron DB, Lustig M.
Calibrationless Parallel Imaging Reconstruction Based on Structured
......@@ -158,9 +161,9 @@ Low-Rank Matrix Completion.
Magn Reson Med 2014; 72:959-970.
Holme HCM, Rosenzweig S, Ong F, Wilke RN, Lustig M, Uecker M.
ENLIVE: An Efficient Nonlinear Method for Calibrationless and
Robust Parallel Imaging.
arXiv:1706.09780 [physics.med-ph]
ENLIVE: An Efficient Nonlinear Method for Calibrationless and Robust Parallel
Imaging. Scientific Reports 2019; 9:3034.
......@@ -185,7 +188,7 @@ Magn Reson Med 2013; 69:571-582.
Bahri D, Uecker M, Lustig M.
ESPIRiT-Based Coil Compression for Cartesian Sampling.
Annual Meeting ISMRM, Salt Lake City 2013,
In: Proc Intl Soc Mag Reson Med 21; 2657.
In: Proc Intl Soc Mag Reson Med 2013; 21:2657.
......@@ -194,12 +197,12 @@ In: Proc Intl Soc Mag Reson Med 21; 2657.
(commands: pocsense, pics)
Block KT, Uecker M, and Frahm J.
Block KT, Uecker M, Frahm J.
Undersampled radial MRI with multiple coils. Iterative image
reconstruction using a total variation constraint.
Magn Reson Med 2007; 57:1086-1098.
Lustig M, Donoho D and Pauly JM.
Lustig M, Donoho D, Pauly JM.
Sparse MRI: The application of compressed sensing for rapid MR imaging.
Magn Reson Med 2007; 58:1182-1195.
......@@ -211,8 +214,33 @@ Magn Reson Med 2009; 61:145-152.
- model-based reconstruction -
(commands: moba, pics)
Block KT, Uecker M, Frahm J.
Model-Based Iterative Reconstruction for Radial Fast Spin-Echo MRI.
IEEE Trans Med Imag 2019; 28:1759-1769.
Petzschner FH, Ponce IP, Blaimer M, Jakob PM, Breuer FA.
Fast MR parameter mapping using k‐t principal component analysis.
Magn Reson Med 2011; 66;706-716.
Mani M, Jacob M, Magnotta V, Zhong J.
Fast iterative algorithm for the reconstruction of multishot non-cartesian
diffusion data.
Magn Reson Med 2015; 74:1086–1094.
Wang X, Roeloffs V, Klosowski J, Tan Z, Voit D, Uecker M, Frahm J.
Model-based T1 Mapping with Sparsity Constraints Using Single-Shot
Inversion-Recovery Radial FLASH.
Magn Reson Med 2018; 79:730-740.
- sparsity transforms, variational penalties, regularization -
(commands: cdf97, rof, lrmatrix, pocsense, pics)
(commands: cdf97, rof, tgv, lrmatrix, pocsense, pics)
Rudin LI, Osher S, Fatemi E.
......@@ -231,10 +259,15 @@ Ong F, Lustig M.
Beyond low rank + sparse: Multi-scale low rank matrix decomposition,
IEEE J Sel Topics Signal Process 2016; 10:672-687.
Bredies K, Kunisch K, Pock T.
Total generalized variation.
SIAM Journal on Imaging Sciences 2010; 3:492-526.
- sampling schemes -
(commands: traj, poisson)
(commands: traj, poisson, wave, wavepsf)
Winkelmann S, Schaeffter T, Koehler T, Eggers H, Doessel O.
......@@ -245,7 +278,17 @@ IEEE Trans Med Imaging 2007; 26:68-76.
Lustig M, Alley M, Vasanawala S, Donoho DL, Pauly JM.
L1 SPIR-iT: Autocalibrating Parallel Imaging Compressed Sensing
Annual Meeting ISMRM, Honolulu 2009,
In: Proc Intl Soc Mag Reson Med 17; 379.
In: Proc Intl Soc Mag Reson Med 2009; 17:379.
Bilgic B, Gagoski BA, Cauley SF, Fan AP, Polimeni JR, Grant PE,
Wald LL, Setsompop K. Wave-CAIPI for highly accelerated 3D
imaging.
Magn Reson Med 2014; 73:2152-2162.
Wundrak S, Paul J, Ulrici J, Hell E, Geibel M-A, Bernhardt P, Rottbauer W,
Rasche V.
Golden ratio sparse MRI using tiny golden angles.
Magn Reson Med 2016; 75:2372-2378.
......@@ -257,13 +300,12 @@ In: Proc Intl Soc Mag Reson Med 17; 379.
Block KT, Uecker M.
Simple Method for Adaptive Gradient-Delay Compensation in Radial MRI.
Annual Meeting ISMRM, Montreal 2011,
In: Proc. Intl. Soc. Mag. Reson. Med 19: 2816.
In: Proc. Intl. Soc. Mag. Reson. Med 2011; 19:2816.
Rosenzweig S, Holme HCM, Uecker M.
Simple Auto-Calibrated Gradient Delay Estimation From Few Spokes Using Radial
Intersections (RING).
Magnetic Resonance in Medicine, DOI:10.1002/mrm.27506 (2018)
Magn Reson Med 2019; 81:1898-1906.
......@@ -303,87 +345,3 @@ Realistic Analytical Phantoms for Parallel Magnetic Resonance Imaging.
IEEE Trans Med Imaging 2012; 31:626-636.
- applications -
(an incomplete list of papers using BART...)
Hollingsworth KG, Higgins DM, McCallum M, Ward L, Coombs A, Straub V.
Investigating the quantitative fidelity of prospectively undersampled
chemical shift imaging in muscular dystrophy with compressed sensing
and parallel imaging reconstruction.
Magn Reson Med 2014; 72:1610-1619.
Zhang T, Cheng JY, Potnick AG, Barth RA, Alley MT, Uecker M, Lustig M,
Pauly JM, Vasanawala SS.
Fast Pediatric 3D Free Breathing Abdominal Dynamic Contrast Enhanced MRI
with a High Spatiotemporal Resolution,
J Magn Reson Imaging 2015; 41:460-473.
Addy NO, Ingle RR, Wu HH, Hu BS, Nishimura DG.
High-resolution variable-density 3D cones coronary MRA.
Magn Reson Med 2015; 74:614-621.
Cheng JY, Zhang T, Ruangwattanapaisarn N, Alley MT, Uecker M, Pauly JM,
Lustig M, Vasanawala SS.
Free-Breathing Pediatric MRI with Nonrigid Motion Correction and Acceleration,
J Magn Reson Imaging 2015; 42:407-420.
Athalye V, Lustig M, Uecker M.
Parallel Magnetic Resonance Imaging as Approximation in a
Reproducing Kernel Hilbert Space,
Inverse Problems 2015; 31:045008.
Mann LW, Higgins DM, Peters CN, Cassidy S, Hodson KK, Coombs A,
Taylor R, Hollingsworth KG.
Accelerating MR Imaging Liver Steatosis Measurement Using Combined
Compressed Sensing and Parallel Imaging: A Quantitative Evaluation,
Radiology 2016; 278:245-256.
Cheng JY, Hanneman K, Zhang T, Alley MT, Lai P, Tamir JI, Uecker M,
Pauly JM, Lustig M, Vasanawala SS.
Comprehensive Motion-Compensated Highly-Accelerated 4D Flow MRI with
Ferumoxytol Enhancement for Pediatric Congenital Heart Disease.
J Magn Reson Imaging 2016; 43:1355-1368.
Tamir JI, Uecker M, Chen W, Lai P, Aleey MT, Vasanawala SS, Lustig M.
T2-Shuffling: Sharp, Multi-Contrast, Volumetric Fast Spin-Echo Imaging.
Magn Recon Med 2017; 77:180-195.
Uecker M, Lustig M.
Estimating Absolute-Phase Maps Using ESPIRiT and Virtual Conjugate Coils.
Magn Reson Med 2017; 77:1201-1207.
Moghari MH, Uecker M, Roujol S, Sabbagh M, Geva T, Powell AJ.
Accelerated Whole-heart Magnetic Resonance Angiography Using
a Variable-Density Poisson-Disc Undersampling Pattern and
Compressed Sensing Reconstruction.
Magn Reson Med 2018; 79:761-769.
Cheng JY, Zhang T, Alley MT, Uecker M, Lustig M, Pauly JM, Vasanawala SS.
Comprehensive Multi-Dimensional MRI for the Simultaneous Assessment
of Cardiopulmonary Anatomy and Physiology.
Scientific Reports 2017; 7:5330.
Bao S, Tamir JI, Young JL, Tariq U, Uecker M, Lai P, Chen W, Lustig M,
Vasanawala SS.
Fast comprehensive single-sequence four-dimensional pediatric knee MRI with
T2 shuffling.
Journal of Magnetic Resonance Imaging 2017; 45:1700-1711.
Rosenzweig S, Holme HCM, Wilke RN, Voit D, Frahm J, Uecker M.
Simultaneous Multi-Slice Reconstruction Using Regularized Nonlinear Inversion:
SMS-NLINV.
Magnetic Resonance in Medicine 2018; 79:2057-2066.
Roeloffs V, Rosenzweig S, Holme HCM, Uecker M, Frahm J.
Frequency-modulated SSFP with radial sampling and subspace reconstruction:
A time-efficient alternative to phase-cycled bSSFP.
Magnetic Resonance in Medicine, DOI:10.1002/mrm.27505 (2018)
Rosenzweig S, Holme HCM, Uecker M.
Simple Auto-Calibrated Gradient Delay Estimation From Few Spokes Using Radial
Intersections (RING).
Magnetic Resonance in Medicine, DOI:10.1002/mrm.27506 (2018)
......@@ -12,23 +12,24 @@ function [varargout] = bart(cmd, varargin)
end
bart_path = getenv('TOOLBOX_PATH');
isWSL = false;
isWSL = false;
if isempty(bart_path)
if exist('/usr/local/bin/bart', 'file')
bart_path = '/usr/local/bin';
elseif exist('/usr/bin/bart', 'file')
bart_path = '/usr/bin';
else
% Try to execute bart inside wsl, if it works, then it returns
% status 0
[bartstatus, ~] = system('wsl bart version -V');
if bartstatus==0
bart_path = '/usr/bin';
isWSL = true;
else
error('Environment variable TOOLBOX_PATH is not set.');
end
else
% Try to execute bart inside wsl, if it works, then it returns
% status 0
[bartstatus, ~] = system('wsl bart version -V');
if bartstatus==0
bart_path = '/usr/bin';
isWSL = true;
else
error('Environment variable TOOLBOX_PATH is not set.');
end
end
end
% clear the LD_LIBRARY_PATH environment variable (to work around
......@@ -60,20 +61,20 @@ function [varargout] = bart(cmd, varargin)
out_str = sprintf(' %s', out{:});
if ispc
if isWSL
% For WSL and modify paths
cmdWSL = WSLPathCorrection(cmd);
in_strWSL = WSLPathCorrection(in_str);
out_strWSL = WSLPathCorrection(out_str);
ERR = system(['wsl bart ', cmdWSL, ' ', in_strWSL, ' ', out_strWSL]);
else
% For cygwin use bash and modify paths
ERR = system(['bash.exe --login -c ', ...
strrep(bart_path, filesep, '/'), ...
'"', '/bart ', strrep(cmd, filesep, '/'), ' ', ...
strrep(in_str, filesep, '/'), ...
' ', strrep(out_str, filesep, '/'), '"']);
end
if isWSL
% For WSL and modify paths
cmdWSL = WSLPathCorrection(cmd);
in_strWSL = WSLPathCorrection(in_str);
out_strWSL = WSLPathCorrection(out_str);
ERR = system(['wsl bart ', cmdWSL, ' ', in_strWSL, ' ', out_strWSL]);
else
% For cygwin use bash and modify paths
ERR = system(['bash.exe --login -c ', ...
strrep(bart_path, filesep, '/'), ...
'"', '/bart ', strrep(cmd, filesep, '/'), ' ', ...
strrep(in_str, filesep, '/'), ...
' ', strrep(out_str, filesep, '/'), '"']);
end
else
ERR = system([bart_path, '/bart ', cmd, ' ', in_str, ' ', out_str]);
end
......
mobasrcs := $(wildcard $(srcdir)/moba/*.c)
mobaobjs := $(mobasrcs:.c=.o)
.INTERMEDIATE: $(mobaobjs)
lib/libmoba.a: libmoba.a($(mobaobjs))
UTARGETS += test_moba
MODULES_test_moba += -lmoba -lnlops -llinops
......@@ -18,5 +18,5 @@ lib/libnum.a: libnum.a($(numobjs))
UTARGETS += test_multind test_flpmath test_splines test_linalg test_polynom test_window
UTARGETS += test_blas test_mdfft
UTARGETS += test_blas test_mdfft test_ops test_ops_p