[med-svn] [Git][med-team/bart][master-contrib] 8 commits: deterministic archive
Martin Uecker (@uecker-guest)
gitlab at salsa.debian.org
Thu Dec 30 07:03:13 GMT 2021
Martin Uecker pushed to branch master-contrib at Debian Med / bart
Commits:
5cad340e by Martin Uecker at 2021-12-29T19:00:15+01:00
deterministic archive
- - - - -
45a48e77 by Martin Uecker at 2021-12-29T21:00:42+01:00
add tests
- - - - -
f6de618c by Martin Uecker at 2021-12-29T22:01:13+01:00
do not update commands.txt for package builds
- - - - -
3d35433e by Martin Uecker at 2021-12-29T22:02:24+01:00
Test that commands.txt is up-to-date
- - - - -
9cf305ab by Martin Uecker at 2021-12-29T22:12:26+01:00
Update patch to prevent deletion of commands.txt.
- - - - -
dce440f7 by Martin Uecker at 2021-12-29T22:37:12+01:00
fix typo and reorder tests
- - - - -
092749f1 by Martin Uecker at 2021-12-30T07:04:20+01:00
backport fixes for tests
- - - - -
c4910375 by Martin Uecker at 2021-12-30T07:31:38+01:00
Merge branch 'master' into master-contrib
- - - - -
8 changed files:
- debian/changelog
- + debian/patches/0006-do-not-update-doc-commands.txt-automatically.patch
- + debian/patches/0007-backported-test-fixes.patch
- debian/patches/series
- debian/rules
- + debian/tests/commands
- debian/tests/control
- + debian/tests/suite
Changes:
=====================================
debian/changelog
=====================================
@@ -5,6 +5,10 @@ bart-cuda (0.7.00-1) UNRELEASED; urgency=medium
* Update upstream metadata.
* Patch to relax failing unit test.
* Patch to work around compiler bug.
+ * Deterministic build.
+ * Run test suite.
+ * Don't update commands.txt.
+ * Backport fixes for tests.
[ Andreas Tille ]
* Standards-Version: 4.6.0 (routine-update)
=====================================
debian/patches/0006-do-not-update-doc-commands.txt-automatically.patch
=====================================
@@ -0,0 +1,1441 @@
+From: Martin Uecker <martin.uecker at med.uni-goettingen.de>
+Date: Wed, 29 Dec 2021 21:40:59 +0100
+Subject: do not update doc/commands.txt automatically
+
+---
+ Makefile | 4 +-
+ doc/commands.txt | 1403 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 1405 insertions(+), 2 deletions(-)
+ create mode 100644 doc/commands.txt
+
+diff --git a/Makefile b/Makefile
+index c917dc8..3d09e8b 100644
+--- a/Makefile
++++ b/Makefile
+@@ -568,7 +568,7 @@ XTARGETS:=$(sort $(XTARGETS))
+
+
+ doc/commands.txt: bart
+- ./rules/update_commands.sh ./bart doc/commands.txt $(XTARGETS)
++# ./rules/update_commands.sh ./bart doc/commands.txt $(XTARGETS)
+
+ doxygen: makedoc.sh doxyconfig bart
+ ./makedoc.sh
+@@ -649,7 +649,7 @@ allclean: clean
+ rm -f $(srcdir)/misc/version.inc
+ rm -rf $(root)/tests/tmp/*/
+ rm -rf $(root)/doc/dx
+- rm -f $(root)/doc/commands.txt
++# rm -f $(root)/doc/commands.txt
+ touch isclean
+
+ distclean: allclean
+diff --git a/doc/commands.txt b/doc/commands.txt
+new file mode 100644
+index 0000000..2650973
+--- /dev/null
++++ b/doc/commands.txt
+@@ -0,0 +1,1403 @@
++AUTOGENERATED. DO NOT EDIT.
++
++
++--avg--
++
++Usage: avg [-w] <bitmask> <input> <output>
++
++Calculates (weighted) average along dimensions specified by bitmask.
++
++-w weighted average
++-h help
++
++
++--bench--
++
++Usage: bench [-T] [-S] [-s d] [<output>]
++
++Performs a series of micro-benchmarks.
++
++-T varying number of threads
++-S varying problem size
++-s flags select benchmarks
++-h help
++
++
++--bin--
++
++Usage: bin [-l d] [-o] [-R d] [-C d] [-r ...] [-c ...] [-a d] [-A d] [-x <string>] <label> <src> <dst>
++
++Binning
++
++
++-l dim Bin according to labels: Specify cluster dimension
++-o Reorder according to labels
++-R n_resp Quadrature Binning: Number of respiratory labels
++-C n_card Quadrature Binning: Number of cardiac labels
++-r x:y (Respiration: Eigenvector index)
++-c x:y (Cardiac motion: Eigenvector index)
++-a window Quadrature Binning: Moving average
++-A window (Quadrature Binning: Cardiac moving average window)
++-x file (Output filtered cardiac EOFs)
++-h help
++
++
++--bitmask--
++
++Usage: bitmask [-b] -b <bitmask> | <dim1> ... <dimN>
++
++Convert between a bitmask and set of dimensions.
++
++-b dimensions from bitmask
++-h help
++
++
++--cabs--
++
++Usage: cabs <input> <output>
++
++Absolute value of array (|<input>|).
++
++-h help
++
++
++--caldir--
++
++Usage: caldir cal_size <input> <output>
++
++Estimates coil sensitivities from the k-space center using
++a direct method (McKenzie et al.). The size of the fully-sampled
++calibration region is automatically determined but limited by
++{cal_size} (e.g. in the readout direction).
++
++-h help
++
++
++--calmat--
++
++Usage: calmat [-k ...] [-r ...] <kspace> <calibration matrix>
++
++Compute calibration matrix.
++
++-k ksize kernel size
++-r cal_size Limits the size of the calibration region.
++-h help
++
++
++--carg--
++
++Usage: carg <input> <output>
++
++Argument (phase angle).
++
++-h help
++
++
++--casorati--
++
++Usage: casorati dim1 kern1 dim2 kern2 ... dimn kernn <input> <output>
++
++Casorati matrix with kernel (kern1, ..., kernn) along dimensions (dim1, ..., dimn).
++
++
++-h help
++
++
++--cc--
++
++Usage: cc [-p d] [-M] [-r ...] [-A] [-S ...] [-G ...] [-E ...] <kspace> <coeff>|<proj_kspace>
++
++Performs coil compression.
++
++-p N perform compression to N virtual channels
++-M output compression matrix
++-r S size of calibration region
++-A use all data to compute coefficients
++-S type: SVD
++-G type: Geometric
++-E type: ESPIRiT
++-h help
++
++
++--ccapply--
++
++Usage: ccapply [-p d] [-u] [-t] [-S ...] [-G ...] [-E ...] <kspace> <cc_matrix> <proj_kspace>
++
++Apply coil compression forward/inverse operation.
++
++-p N perform compression to N virtual channels
++-u apply inverse operation
++-t don't apply FFT in readout
++-S type: SVD
++-G type: Geometric
++-E type: ESPIRiT
++-h help
++
++
++--cdf97--
++
++Usage: cdf97 [-i] bitmask <input> <output>
++
++Perform a wavelet (cdf97) transform.
++
++
++-i inverse
++-h help
++
++
++--circshift--
++
++Usage: circshift dim shift <input> <output>
++
++Perform circular shift along {dim} by {shift} elements.
++
++-h help
++
++
++--conj--
++
++Usage: conj <input> <output>
++
++Compute complex conjugate.
++
++-h help
++
++
++--conv--
++
++Usage: conv bitmask <input> <kernel> <output>
++
++Performs a convolution along selected dimensions.
++
++-h help
++
++
++--conway--
++
++Usage: conway [-P] [-n d] <input> <output>
++
++Conway's game of life.
++
++
++-P periodic boundary conditions
++-n # nr. of iterations
++-h help
++
++
++--copy--
++
++Usage: copy [dim1 pos1 ... dimn posn] <input> <output>
++
++Copy an array (to a given position in the output file - which then must exist).
++
++-h help
++
++
++--cpyphs--
++
++Usage: cpyphs <input> <output
++
++Copy phase from <input> to <output>.
++
++-h help
++
++
++--creal--
++
++Usage: creal <input> <output>
++
++Real value.
++
++-h help
++
++
++--crop--
++
++Usage: crop dimension size <input> <output>
++
++Extracts a sub-array corresponding to the central part of {size} along {dimension}
++
++-h help
++
++
++--delta--
++
++Usage: delta dims flags size out
++
++Kronecker delta.
++
++-h help
++
++
++--ecalib--
++
++Usage: ecalib [-t f] [-c f] [-k ...] [-r ...] [-m d] [-S] [-W] [-I] [-1] [-P] [-v f] [-a] [-d d] <kspace> <sensitivites> [<ev-maps>]
++
++Estimate coil sensitivities using ESPIRiT calibration.
++Optionally outputs the eigenvalue maps.
++
++-t threshold This determined the size of the null-space.
++-c crop_value Crop the sensitivities if the eigenvalue is smaller than {crop_value}.
++-k ksize kernel size
++-r cal_size Limits the size of the calibration region.
++-m maps Number of maps to compute.
++-S create maps with smooth transitions (Soft-SENSE).
++-W soft-weighting of the singular vectors.
++-I intensity correction
++-1 perform only first part of the calibration
++-P Do not rotate the phase with respect to the first principal component
++-v variance Variance of noise in data.
++-a Automatically pick thresholds.
++-d level Debug level
++-h help
++
++
++--ecaltwo--
++
++Usage: ecaltwo [-c f] [-m d] [-S] x y z <input> <sensitivities> [<ev_maps>]
++
++Second part of ESPIRiT calibration.
++Optionally outputs the eigenvalue maps.
++
++-c crop_value Crop the sensitivities if the eigenvalue is smaller than {crop_value}.
++-m maps Number of maps to compute.
++-S Create maps with smooth transitions (Soft-SENSE).
++-h help
++
++
++--estdelay--
++
++Usage: estdelay [-R] [-p d] [-n d] [-r f] <trajectory> <data> [<qf>]
++
++Estimate gradient delays from radial data.
++
++-R RING method
++-p p [RING] Padding
++-n n [RING] Number of intersecting spokes
++-r r [RING] Central region size
++-h help
++
++
++--estdims--
++
++Usage: estdims <traj>
++
++Estimate image dimension from non-Cartesian trajectory.
++Assume trajectory scaled to -DIM/2 to DIM/2 (ie dk=1/FOV=1)
++
++-h help
++
++
++--estshift--
++
++Usage: estshift flags <arg1> <arg2>
++
++Estimate sub-pixel shift.
++
++-h help
++
++
++--estvar--
++
++Usage: estvar [-k ...] [-r ...] <kspace>
++
++Estimate the noise variance assuming white Gaussian noise.
++
++-k ksize kernel size
++-r cal_size Limits the size of the calibration region.
++-h help
++
++
++--extract--
++
++Usage: extract dim1 start1 end1 ... dimn startn endn <input> <output>
++
++Extracts a sub-array along dims from index start to (not including) end..
++
++
++-h help
++
++
++--fakeksp--
++
++Usage: fakeksp [-r] <image> <kspace> <sens> <output>
++
++Recreate k-space from image and sensitivities.
++
++-r replace measured samples with original values
++-h help
++
++
++--fft--
++
++Usage: fft [-u] [-i] [-n] bitmask <input> <output>
++
++Performs a fast Fourier transform (FFT) along selected dimensions.
++
++-u unitary
++-i inverse
++-n un-centered
++-h help
++
++
++--fftmod--
++
++Usage: fftmod [-i] bitmask <input> <output>
++
++Apply 1 -1 modulation along dimensions selected by the {bitmask}.
++
++
++-i inverse
++-h help
++
++
++--fftrot--
++
++Usage: fftrot dim1 dim2 theta <input> <output>
++
++Performs a rotation using Fourier transform (FFT) along selected dimensions.
++
++-h help
++
++
++--fftshift--
++
++Usage: fftshift bitmask <input> <output>
++
++Apply fftshift along dimensions selected by the {bitmask}.
++
++-h help
++
++
++--filter--
++
++Usage: filter [-m d] [-l d] <input> <output>
++
++Apply filter.
++
++
++-m dim median filter along dimension dim
++-l len length of filter
++-h help
++
++
++--flatten--
++
++Usage: flatten <input> <output>
++
++Flatten array to one dimension.
++
++-h help
++
++
++--flip--
++
++Usage: flip bitmask <input> <output>
++
++Flip (reverse) dimensions specified by the {bitmask}.
++
++-h help
++
++
++--fmac--
++
++Usage: fmac [-A] [-C] [-s d] <input1> [<input2>] <output>
++
++Multiply <input1> and <input2> and accumulate in <output>.
++If <input2> is not specified, assume all-ones.
++
++-A add to existing output (instead of overwriting)
++-C conjugate input2
++-s b squash dimensions selected by bitmask b
++-h help
++
++
++--homodyne--
++
++Usage: homodyne [-r f] [-I] [-C] [-P <string>] [-n] dim fraction <input> <output>
++
++Perform homodyne reconstruction along dimension dim.
++
++-r alpha Offset of ramp filter, between 0 and 1. alpha=0 is a full ramp, alpha=1 is a horizontal line
++-I Input is in image domain
++-C Clear unacquired portion of kspace
++-P phase_ref> Use <phase_ref> as phase reference
++-n use uncentered ffts
++-h help
++
++
++--index--
++
++Usage: index dim size name
++
++Create an array counting from 0 to {size-1} in dimensions {dim}.
++
++-h help
++
++
++--invert--
++
++Usage: invert <input> <output>
++
++Invert array (1 / <input>). The output is set to zero in case of divide by zero.
++
++-h help
++
++
++--itsense--
++
++Usage: itsense alpha <sensitivities> <kspace> <pattern> <image>
++
++A simplified implementation of iterative sense reconstruction
++with l2-regularization.
++
++-h help
++
++
++--join--
++
++Usage: join [-a] dimension <input1> ... <inputn> <output>
++
++Join input files along {dimensions}. All other dimensions must have the same size.
++ Example 1: join 0 slice_001 slice_002 slice_003 full_data
++ Example 2: join 0 `seq -f "slice_%%03g" 0 255` full_data
++
++
++-a append - only works for cfl files!
++-h help
++
++
++--looklocker--
++
++Usage: looklocker [-t f] [-D f] <input> <output>
++
++Compute T1 map from M_0, M_ss, and R_1*.
++
++
++-t threshold Pixels with M0 values smaller than {threshold} are set to zero.
++-D delay Time between the middle of inversion pulse and the first excitation.
++-h help
++
++
++--lrmatrix--
++
++Usage: lrmatrix [-d] [-i d] [-m d] [-f d] [-j d] [-k d] [-N] [-s] [-l d] [-o <string>] <input> <output>
++
++Perform (multi-scale) low rank matrix completion
++
++-d perform decomposition instead, ie fully sampled
++-i iter maximum iterations.
++-m flags which dimensions are reshaped to matrix columns.
++-f flags which dimensions to perform multi-scale partition.
++-j scale block size scaling from one scale to the next one.
++-k size smallest block size
++-N add noise scale to account for Gaussian noise.
++-s perform low rank + sparse matrix completion.
++-l size perform locally low rank soft thresholding with specified block size.
++-o out2 summed over all non-noise scales to create a denoised output.
++-h help
++
++
++--mandelbrot--
++
++Usage: mandelbrot [-s d] [-n d] [-t f] [-z f] [-r f] [-i f] output
++
++Compute mandelbrot set.
++
++
++-s size image size
++-n # nr. of iterations
++-t t threshold for divergence
++-z z zoom
++-r r offset real
++-i i offset imag
++-h help
++
++
++--mip--
++
++Usage: mip [-m] [-a] bitmask <input> <output>
++
++Maximum (minimum) intensity projection (MIP) along dimensions specified by bitmask.
++
++
++-m minimum
++-a do absolute value first
++-h help
++
++
++--moba--
++
++Usage: moba [-r ...] [-L ...] [-F ...] [-G ...] [-m d] [-l d] [-i d] [-R f] [-T f] [-j f] [-u f] [-C d] [-s f] [-B f] [-b ...] [-d d] [-f f] [-p <string>] [-J] [-M] [-g] [-I <string>] [-t <string>] [-o f] [-k] [--kfilter-1 ...] [--kfilter-2 ...] [-n] [--fat_spec_0 ...] <kspace> <TI/TE> <output> [<sensitivities>]
++
++Model-based nonlinear inverse reconstruction
++
++
++-r <T>:A:B:C generalized regularization options (-rh for help)
++-L T1 mapping using model-based look-locker
++-F T2 mapping using model-based Fast Spin Echo
++-G T2* mapping using model-based multiple gradient echo
++-m model Select the MGRE model from enum { WF = 0, WFR2S, WF2R2S, R2S, PHASEDIFF } [default: WFR2S]
++-l reg 1/-l2 toggle l1-wavelet or l2 regularization.
++-i iter Number of Newton steps
++-R redu reduction factor
++-T damp damping on temporal frames
++-j minreg Minimum regu. parameter
++-u rho ADMM rho [default: 0.01]
++-C iter inner iterations
++-s step step size
++-B bound lower bound for relaxivity
++-b SMO:SC B0 field: spatial smooth level; scaling [default: 222.; 1.]
++-d level Debug level
++-f FOV
++-p PSF
++-J Stack frames for joint recon
++-M Simultaneous Multi-Slice reconstruction
++-g use gpu
++-I init File for initialization
++-t Traj
++-o os Oversampling factor for gridding [default: 1.25]
++-k k-space edge filter for non-Cartesian trajectories
++--kfilter-1 k-space edge filter 1
++--kfilter-2 k-space edge filter 2
++-n disable normlization of parameter maps for thresholding
++--fat_spec_0 select fat spectrum from ISMRM fat-water tool
++-h help
++
++
++--mobafit--
++
++Usage: mobafit [-G ...] [-m d] [-i d] [-p ...] [-g] <TE> <echo images> <parameters>
++
++Pixel-wise fitting of sequence models.
++
++-G MGRE
++-m model Select the MGRE model from enum { WF = 0, WFR2S, WF2R2S, R2S, PHASEDIFF } [default: WFR2S]
++-i iter Number of IRGNM steps
++-p px,py,pz (patch size)
++-g use gpu
++-h help
++
++
++--nlinv--
++
++Usage: nlinv [-i d] [-d d] [-c] [-N] [-m d] [-U] [-f f] [-p <string>] [-t <string>] [-I <string>] [-g] [-S] [--lowmem] <kspace> <output> [<sensitivities>]
++
++Jointly estimate image and sensitivities with nonlinear
++inversion using {iter} iteration steps. Optionally outputs
++the sensitivities.
++
++-i iter Number of Newton steps
++-d level Debug level
++-c Real-value constraint
++-N Do not normalize image with coil sensitivities
++-m nmaps Number of ENLIVE maps to use in reconstruction
++-U Do not combine ENLIVE maps in output
++-f FOV restrict FOV
++-p file pattern / transfer function
++-t file kspace trajectory
++-I file File for initialization
++-g use gpu
++-S Re-scale image after reconstruction
++--lowmem Use low-mem mode of the nuFFT
++-h help
++
++
++--noise--
++
++Usage: noise [-s d] [-r] [-n f] <input> <output>
++
++Add noise with selected variance to input.
++
++-s random seed initialization
++-r real-valued input
++-n variance DEFAULT: 1.0
++-h help
++
++
++--normalize--
++
++Usage: normalize flags <input> <output>
++
++Normalize along selected dimensions.
++
++-h help
++
++
++--nrmse--
++
++Usage: nrmse [-t f] [-s] <reference> <input>
++
++Output normalized root mean square error (NRMSE),
++i.e. norm(input - ref) / norm(ref)
++
++-t eps compare to eps
++-s automatic (complex) scaling
++-h help
++
++
++--nufft--
++
++Usage: nufft [-a] [-i] [-d ...] [-t] [-r] [-c] [-l f] [-P] [-s] [-g] [-1] [--lowmem] <traj> <input> <output>
++
++Perform non-uniform Fast Fourier Transform.
++
++-a adjoint
++-i inverse
++-d x:y:z dimensions
++-t Toeplitz embedding for inverse NUFFT
++-r turn-off Toeplitz embedding for inverse NUFFT
++-c Preconditioning for inverse NUFFT
++-l lambda l2 regularization
++-P periodic k-space
++-s DFT
++-g GPU (only inverse)
++-1 use/return oversampled grid
++--lowmem Use low-mem mode of the nuFFT
++-h help
++
++
++--ones--
++
++Usage: ones dims dim1 ... dimn name
++
++Create an array filled with ones with {dims} dimensions of size {dim1} to {dimn}.
++
++-h help
++
++
++--pattern--
++
++Usage: pattern [-s d] <kspace> <pattern>
++
++Compute sampling pattern from kspace
++
++
++-s bitmask Squash dimensions selected by bitmask
++-h help
++
++
++--phantom--
++
++Usage: phantom [-s d] [-S d] [-k] [-t <string>] [-G ...] [-T ...] [-N d] [-B ...] [-x d] [-g d] [-3] [-b] [-r d] <output>
++
++Image and k-space domain phantoms.
++
++-s nc nc sensitivities
++-S nc Output nc sensitivities
++-k k-space
++-t file trajectory
++-G geometric object phantom
++-T tubes phantom
++-N num Random tubes phantom and number
++-B BART logo
++-x n dimensions in y and z
++-g n=1,2 select geometry for object phantom
++-3 3D
++-b basis functions for geometry
++-r seed random seed initialization
++-h help
++
++
++--pics--
++
++Usage: pics [-l ...] [-r f] [-R ...] [-c] [-s f] [-i d] [-t <string>] [-n] [-N] [-g] [-G d] [-p <string>] [-I ...] [-b d] [-e] [-T <string>] [-W <string>] [-d d] [-O d] [-o f] [-u f] [-C d] [-q f] [-f f] [-m ...] [-w f] [-S] [-L d] [-K] [-B <string>] [-P f] [-a ...] [-M] [-U,--lowmem] <kspace> <sensitivities> <output>
++
++Parallel-imaging compressed-sensing reconstruction.
++
++-l1/-l2 toggle l1-wavelet or l2 regularization.
++-r lambda regularization parameter
++-R <T>:A:B:C generalized regularization options (-Rh for help)
++-c real-value constraint
++-s step iteration stepsize
++-i iter max. number of iterations
++-t file k-space trajectory
++-n disable random wavelet cycle spinning
++-N do fully overlapping LLR blocks
++-g use GPU
++-G gpun use GPU device gpun
++-p file pattern or weights
++-I select IST
++-b blk Lowrank block size
++-e Scale stepsize based on max. eigenvalue
++-T file (truth file)
++-W <img> Warm start with <img>
++-d level Debug level
++-O rwiter (reweighting)
++-o gamma (reweighting)
++-u rho ADMM rho
++-C iter ADMM max. CG iterations
++-q cclambda (cclambda)
++-f rfov restrict FOV
++-m select ADMM
++-w val inverse scaling of the data
++-S re-scale the image after reconstruction
++-L flags batch-mode
++-K randshift for NUFFT
++-B file temporal (or other) basis
++-P eps Basis Pursuit formulation, || y- Ax ||_2 <= eps
++-a select Primal Dual
++-M Simultaneous Multi-Slice reconstruction
++-U,--lowmem Use low-mem mode of the nuFFT
++-h help
++
++
++--pocsense--
++
++Usage: pocsense [-i d] [-r f] [-l d] <kspace> <sensitivities> <output>
++
++Perform POCSENSE reconstruction.
++
++-i iter max. number of iterations
++-r alpha regularization parameter
++-l 1/-l2 toggle l1-wavelet or l2 regularization
++-h help
++
++
++--poisson--
++
++Usage: poisson [-Y d] [-Z d] [-y f] [-z f] [-C d] [-v] [-e] [-s d] <outfile>
++
++Computes Poisson-disc sampling pattern.
++
++-Y size size dimension 1
++-Z size size dimension 2
++-y acc acceleration dim 1
++-z acc acceleration dim 2
++-C size size of calibration region
++-v variable density
++-e elliptical scanning
++-s seed random seed
++-h help
++
++
++--pol2mask--
++
++Usage: pol2mask [-X d] [-Y d] <poly> <output>
++
++Compute masks from polygons.
++
++-X size size dimension 0
++-Y size size dimension 1
++-h help
++
++
++--poly--
++
++Usage: poly L N a_0 a_1 ... a_N output
++
++Evaluate polynomial p(x) = a_0 + a_1 x + a_2 x^2 ... a_N x^N at x = {0, 1, ... , L - 1} where a_i are floats.
++
++-h help
++
++
++--repmat--
++
++Usage: repmat dimension repetitions <input> <output>
++
++Repeat input array multiple times along a certain dimension.
++
++-h help
++
++
++--reshape--
++
++Usage: reshape flags dim1 ... dimN <input> <output>
++
++Reshape selected dimensions.
++
++
++-h help
++
++
++--resize--
++
++Usage: resize [-c] dim1 size1 ... dimn sizen <input> <output>
++
++Resizes an array along dimensions to sizes by truncating or zero-padding.
++
++-c center
++-h help
++
++
++--rmfreq--
++
++Usage: rmfreq [-N d] <traj> <k> <k_cor>
++
++Remove angle-dependent frequency
++
++
++-N # Number of harmonics [Default: 5]
++-h help
++
++
++--rof--
++
++Usage: rof <lambda> <flags> <input> <output>
++
++Perform total variation denoising along dims <flags>.
++
++-h help
++
++
++--roistat--
++
++Usage: roistat [-b] [-C ...] [-S ...] [-M ...] [-D ...] [-E ...] [-V ...] <roi> <input> [<output>]
++
++Compute ROI statistics.
++
++-b Bessel's correction, i.e. 1 / (n - 1)
++-C voxel count
++-S sum
++-M mean
++-D standard deviation
++-E energy
++-V variance
++-h help
++
++
++--rss--
++
++Usage: rss bitmask <input> <output>
++
++Calculates root of sum of squares along selected dimensions.
++
++-h help
++
++
++--rtnlinv--
++
++Usage: rtnlinv [-i d] [-d d] [-c] [-N] [-m d] [-U] [-f f] [-p <string>] [-t <string>] [-I <string>] [-g] [-S] [-T f] [-x ...] <kspace> <output> [<sensitivities>]
++
++Jointly estimate a time-series of images and sensitivities with nonlinear
++inversion using {iter} iteration steps. Optionally outputs
++the sensitivities.
++
++-i iter Number of Newton steps
++-d level Debug level
++-c Real-value constraint
++-N Do not normalize image with coil sensitivities
++-m nmaps Number of ENLIVE maps to use in reconstruction
++-U Do not combine ENLIVE maps in output
++-f FOV restrict FOV
++-p file pattern / transfer function
++-t file kspace trajectory
++-I file File for initialization
++-g use gpu
++-S Re-scale image after reconstruction
++-T temp_damp temporal damping [default: 0.9]
++-x x:y:z Explicitly specify image dimensions
++-h help
++
++
++--sake--
++
++Usage: sake [-i d] [-s f] <kspace> <output>
++
++Use SAKE algorithm to recover a full k-space from undersampled
++data using low-rank matrix completion.
++
++-i iter tnumber of iterations
++-s size rel. size of the signal subspace
++-h help
++
++
++--saxpy--
++
++Usage: saxpy scale <input1> <input2> <output>
++
++Multiply input1 with scale factor and add input2.
++
++-h help
++
++
++--scale--
++
++Usage: scale factor <input> <output>
++
++Scale array by {factor}. The scale factor can be a complex number.
++
++-h help
++
++
++--sdot--
++
++Usage: sdot <input1> <input2>
++
++Compute dot product along selected dimensions.
++
++-h help
++
++
++--show--
++
++Usage: show [-m] [-d d] [-s <string>] [-f <string>] <input>
++
++Outputs values or meta data.
++
++-m show meta data
++-d dim show size of dimension
++-s sep use <sep> as the separator
++-f format use <format> as the format. Default: "%%+.6e%%+.6ei"
++-h help
++
++
++--signal--
++
++Usage: signal [-F ...] [-B ...] [-T ...] [-M ...] [-G ...] [--fat] [-I] [-s] [-0 ...] [-1 ...] [-2 ...] [-3 ...] [-r f] [-e f] [-f f] [-t f] [-n d] [-b d] <basis-functions>
++
++Analytical simulation tool.
++
++-F FLASH
++-B bSSFP
++-T TSE
++-M MOLLI
++-G MGRE
++--fat Simulate additional fat component.
++-I inversion recovery
++-s inversion recovery starting from steady state
++-0 min:max:N range of off-resonance frequency (Hz)
++-1 min:max:N range of T1s (s)
++-2 min:max:N range of T2s (s)
++-3 min:max:N range of Mss
++-r TR repetition time
++-e TE echo time
++-f FA flip ange
++-t T1 relax T1 relax period (second) for MOLLI
++-n n number of measurements
++-b heart beats number of heart beats for MOLLI
++-h help
++
++
++--slice--
++
++Usage: slice dim1 pos1 ... dimn posn <input> <output>
++
++Extracts a slice from positions along dimensions.
++
++
++-h help
++
++
++--spow--
++
++Usage: spow exponent <input> <output>
++
++Raise array to the power of {exponent}. The exponent can be a complex number.
++
++-h help
++
++
++--sqpics--
++
++Usage: sqpics [-l ...] [-r f] [-R ...] [-s f] [-i d] [-t <string>] [-n] [-g] [-p <string>] [-b d] [-e] [-T <string>] [-W <string>] [-d d] [-u f] [-C d] [-f f] [-m ...] [-w f] [-S] <kspace> <sensitivities> <output>
++
++Parallel-imaging compressed-sensing reconstruction.
++
++-l1/-l2 toggle l1-wavelet or l2 regularization.
++-r lambda regularization parameter
++-R <T>:A:B:C generalized regularization options (-Rh for help)
++-s step iteration stepsize
++-i iter max. number of iterations
++-t file k-space trajectory
++-n disable random wavelet cycle spinning
++-g use GPU
++-p file pattern or weights
++-b blk Lowrank block size
++-e Scale stepsize based on max. eigenvalue
++-T file (truth file)
++-W <img> Warm start with <img>
++-d level Debug level
++-u rho ADMM rho
++-C iter ADMM max. CG iterations
++-f rfov restrict FOV
++-m Select ADMM
++-w val scaling
++-S Re-scale the image after reconstruction
++-h help
++
++
++--squeeze--
++
++Usage: squeeze <input> <output>
++
++Remove singleton dimensions of array.
++
++-h help
++
++
++--ssa--
++
++Usage: ssa [-w d] [-z] [-m d] [-n d] [-r d] [-g d] <src> <EOF> [<S>] [<backprojection>]
++
++Perform SSA-FARY or Singular Spectrum Analysis. <src>: [samples, coordinates]
++
++
++-w window Window length
++-z Zeropadding [Default: True]
++-m 0/1 Remove mean [Default: True]
++-n 0/1 Normalize [Default: False]
++-r rank Rank for backprojection. r < 0: Throw away first r components. r > 0: Use only first r components.
++-g bitmask Bitmask for Grouping (long value!)
++-h help
++
++
++--std--
++
++Usage: std bitmask <input> <output>
++
++Compute standard deviation along selected dimensions specified by the {bitmask}
++
++-h help
++
++
++--svd--
++
++Usage: svd [-e] <input> <U> <S> <VH>
++
++Compute singular-value-decomposition (SVD).
++
++
++-e econ
++-h help
++
++
++--tgv--
++
++Usage: tgv <lambda> <flags> <input> <output>
++
++Perform total generalized variation denoising along dims <flags>.
++
++-h help
++
++
++--threshold--
++
++Usage: threshold [-H ...] [-W ...] [-L ...] [-D ...] [-B ...] [-j d] [-b d] lambda <input> <output>
++
++Perform (soft) thresholding with parameter lambda.
++
++-H hard thresholding
++-W daubechies wavelet soft-thresholding
++-L locally low rank soft-thresholding
++-D divergence-free wavelet soft-thresholding
++-B thresholding with binary output
++-j bitmask joint soft-thresholding
++-b blocksize locally low rank block size
++-h help
++
++
++--toimg--
++
++Usage: toimg [-g f] [-c f] [-w f] [-d] [-m] [-W] [-h] <input> <output_prefix>
++
++Create magnitude images as png or proto-dicom.
++The first two non-singleton dimensions will
++be used for the image, and the other dimensions
++will be looped over.
++
++
++-g gamma gamma level
++-c contrast contrast level
++-w window window level
++-d write to dicom format (deprecated, use extension .dcm)
++-m re-scale each image
++-W use dynamic windowing
++-h help
++
++
++--traj--
++
++Usage: traj [-x d] [-y d] [-d d] [-e d] [-a d] [-t d] [-m d] [-l] [-g] [-r] [-G] [-H] [-s d] [-D] [-R f] [-q ...] [-Q ...] [-O] [-3] [-c] [-E] [-z ...] [-C <string>] [-V <string>] <output>
++
++Computes k-space trajectories.
++
++-x x readout samples
++-y y phase encoding lines
++-d d full readout samples
++-e e number of echoes
++-a a acceleration
++-t t turns
++-m mb SMS multiband factor
++-l aligned partition angle
++-g golden angle in partition direction
++-r radial
++-G golden-ratio sampling
++-H halfCircle golden-ratio sampling
++-s # Tiny GA tiny golden angle
++-D projection angle in [0,360°), else in [0,180°)
++-R phi rotate
++-q delays gradient delays: x, y, xy
++-Q delays (gradient delays: z, xz, yz)
++-O correct transverse gradient error for radial tajectories
++-3 3D
++-c asymmetric trajectory [DC sampled]
++-E multi-echo multi-spoke trajectory
++-z Ref:Acel Undersampling in z-direction.
++-C file custom_angle file [phi + i * psi]
++-V file (custom_gdelays)
++-h help
++
++
++--transpose--
++
++Usage: transpose dim1 dim2 <input> <output>
++
++Transpose dimensions {dim1} and {dim2}.
++
++-h help
++
++
++--twixread--
++
++Usage: twixread [-x d] [-r d] [-y d] [-z d] [-s d] [-v d] [-c d] [-n d] [-a d] [-A] [-L] [-P] [-M] <dat file> <output>
++
++Read data from Siemens twix (.dat) files.
++
++-x X number of samples (read-out)
++-r R radial lines
++-y Y phase encoding steps
++-z Z partition encoding steps
++-s S number of slices
++-v V number of averages
++-c C number of channels
++-n N number of repetitions
++-a A total number of ADCs
++-A automatic [guess dimensions]
++-L use linectr offset
++-P use partctr offset
++-M MPI mode
++-h help
++
++
++--upat--
++
++Usage: upat [-Y d] [-Z d] [-y d] [-z d] [-c d] output
++
++Create a sampling pattern.
++
++
++-Y Y size Y
++-Z Z size Z
++-y uy undersampling y
++-z uz undersampling z
++-c cen size of k-space center
++-h help
++
++
++--var--
++
++Usage: var bitmask <input> <output>
++
++Compute variance along selected dimensions specified by the {bitmask}
++
++-h help
++
++
++--vec--
++
++Usage: vec val1 val2 ... valN name
++
++Create a vector of values.
++
++-h help
++
++
++--version--
++
++Usage: version [-t <string>] [-V] [-h]
++
++Print BART version. The version string is of the form
++TAG or TAG-COMMITS-SHA as produced by 'git describe'. It
++specifies the last release (TAG), and (if git is used)
++the number of commits (COMMITS) since this release and
++the abbreviated hash of the last commit (SHA). If there
++are local changes '-dirty' is added at the end.
++
++
++-t version Check minimum version
++-V Output verbose info
++-h help
++
++
++--walsh--
++
++Usage: walsh [-r ...] [-b ...] <input> <output>
++
++Estimate coil sensitivities using walsh method (use with ecaltwo).
++
++-r cal_size Limits the size of the calibration region.
++-b block_size Block size.
++-h help
++
++
++--wave--
++
++Usage: wave [-r f] [-b d] [-i d] [-s f] [-c f] [-t f] [-e f] [-g] [-f] [-H] [-v] [-w] [-l] <maps> <wave> <kspace> <output>
++
++Perform a wave-caipi reconstruction.
++
++Conventions:
++ * (sx, sy, sz) - Spatial dimensions.
++ * wx - Extended FOV in READ_DIM due to
++ wave's voxel spreading.
++ * (nc, md) - Number of channels and ESPIRiT's
++ extended-SENSE model operator
++ dimensions (or # of maps).
++Expected dimensions:
++ * maps - ( sx, sy, sz, nc, md)
++ * wave - ( wx, sy, sz, 1, 1)
++ * kspace - ( wx, sy, sz, nc, 1)
++ * output - ( sx, sy, sz, 1, md)
++
++-r lambda Soft threshold lambda for wavelet or locally low rank.
++-b blkdim Block size for locally low rank.
++-i mxiter Maximum number of iterations.
++-s stepsz Step size for iterative method.
++-c cntnu Continuation value for IST/FISTA.
++-t toler Tolerance convergence condition for iterative method.
++-e eigvl Maximum eigenvalue of normal operator, if known.
++-g use GPU
++-f Reconstruct using FISTA instead of IST.
++-H Use hogwild in IST/FISTA.
++-v Split result to real and imaginary components.
++-w Use wavelet.
++-l Use locally low rank across the real and imaginary components.
++-h help
++
++
++--wavelet--
++
++Usage: wavelet [-a] flags [dims] <input> <output>
++
++Perform wavelet transform.
++
++-a adjoint (specify dims)
++-h help
++
++
++--wavepsf--
++
++Usage: wavepsf [-c] [-x d] [-y d] [-r f] [-a d] [-t f] [-g f] [-s f] [-n d] <output>
++
++Generate a wave PSF in hybrid space.
++- Assumes the first dimension is the readout dimension.
++- Only generates a 2 dimensional PSF.
++- Use reshape and fmac to generate a 3D PSF.
++
++3D PSF Example:
++bart wavepsf -x 768 -y 128 -r 0.1 -a 3000 -t 0.00001 -g 0.8 -s 17000 -n 6 wY
++bart wavepsf -c -x 768 -y 128 -r 0.1 -a 3000 -t 0.00001 -g 0.8 -s 17000 -n 6 wZ
++bart reshape 7 wZ 768 1 128 wZ wZ
++bart fmac wY wZ wYZ
++
++-c Set to use a cosine gradient wave
++-x RO_dim Number of readout points
++-y PE_dim Number of phase encode points
++-r PE_res Resolution of phase encode in cm
++-a ADC_T Readout duration in microseconds.
++-t ADC_dt ADC sampling rate in seconds
++-g gMax Maximum gradient amplitude in Gauss/cm
++-s sMax Maximum gradient slew rate in Gauss/cm/second
++-n ncyc Number of cycles in the gradient wave
++-h help
++
++
++--whiten--
++
++Usage: whiten [-o <string>] [-c <string>] [-n] <input> <ndata> <output> [<optmat_out>] [<covar_out>]
++
++Apply multi-channel noise pre-whitening on <input> using noise data <ndata>.
++Optionally output whitening matrix and noise covariance matrix
++
++-o <optmat_in> use external whitening matrix <optmat_in>
++-c <covar_in> use external noise covariance matrix <covar_in>
++-n normalize variance to 1 using noise data <ndata>
++-h help
++
++
++--window--
++
++Usage: window [-H] flags <input> <output>
++
++Apply Hamming (Hann) window to <input> along dimensions specified by flags
++
++-H Hann window
++-h help
++
++
++--wshfl--
++
++Usage: wshfl [-R ...] [-b d] [-i d] [-j d] [-s f] [-e f] [-F <string>] [-O <string>] [-t f] [-g] [-K] [-H] [-v] <maps> <wave> <phi> <reorder> <table> <output>
++
++Perform a wave-shuffling reconstruction.
++
++Conventions:
++ * (sx, sy, sz) - Spatial dimensions.
++ * wx - Extended FOV in READ_DIM due to
++ wave's voxel spreading.
++ * (nc, md) - Number of channels and ESPIRiT's
++ extended-SENSE model operator
++ dimensions (or # of maps).
++ * (tf, tk) - Turbo-factor and the rank
++ of the temporal basis used in
++ shuffling.
++ * ntr - Number of TRs, or the number of
++ (ky, kz) points acquired of one
++ echo image.
++ * n - Total number of (ky, kz) points
++ acquired. This is equal to the
++ product of ntr and tf.
++
++Descriptions:
++ * reorder is an (n by 3) index matrix such that
++ [ky, kz, t] = reorder(i, :) represents the
++ (ky, kz) kspace position of the readout line
++ acquired at echo number (t), and 0 <= ky < sy,
++ 0 <= kz < sz, 0 <= t < tf).
++ * table is a (wx by nc by n) matrix such that
++ table(:, :, k) represents the kth multichannel
++ kspace line.
++
++Expected dimensions:
++ * maps - ( sx, sy, sz, nc, md, 1, 1)
++ * wave - ( wx, sy, sz, 1, 1, 1, 1)
++ * phi - ( 1, 1, 1, 1, 1, tf, tk)
++ * output - ( sx, sy, sz, 1, md, 1, tk)
++ * reorder - ( n, 3, 1, 1, 1, 1, 1)
++ * table - ( wx, nc, n, 1, 1, 1, 1)
++
++-R<T>:A:B:C Generalized regularization options. (-Rh for help)
++-b blkdim Block size for locally low rank.
++-i mxiter Maximum number of iterations.
++-j cgiter Maximum number of CG iterations in ADMM.
++-s admrho ADMM Rho value.
++-e eigval Eigenvalue to scale step size. (Optional.)
++-F frwrd Go from shfl-coeffs to data-table. Pass in coeffs path.
++-O initl Initialize reconstruction with guess.
++-t toler Tolerance convergence condition for FISTA.
++-g Use GPU.
++-K Go from data-table to shuffling basis k-space.
++-H Use hogwild.
++-v Split coefficients to real and imaginary components.
++-h help
++
++
++--zeros--
++
++Usage: zeros dims dim1 ... dimn name
++
++Create a zero-filled array with {dims} dimensions of size {dim1} to {dimn}.
++
++-h help
++
++
++--zexp--
++
++Usage: zexp [-i] <input> <output>
++
++Point-wise complex exponential.
++
++
++-i imaginary
++-h help
=====================================
debian/patches/0007-backported-test-fixes.patch
=====================================
@@ -0,0 +1,85 @@
+From: Martin Uecker <uecker at tugraz.at>
+Date: Sat, 18 Dec 2021 19:45:51 +0100
+Subject: backported test fixes
+
+---
+ src/num/splines.c | 2 +-
+ src/num/vec3.c | 5 +++--
+ src/simu/biot_savart.c | 3 +--
+ utests/test_biot_savart.c | 6 +++---
+ 4 files changed, 8 insertions(+), 8 deletions(-)
+
+diff --git a/src/num/splines.c b/src/num/splines.c
+index 289a055..f710937 100644
+--- a/src/num/splines.c
++++ b/src/num/splines.c
+@@ -316,7 +316,7 @@ void bspline_coeff_derivative_n(unsigned int k, unsigned int n, unsigned int p,
+ double v1[n - p - 1];
+
+ bspline_coeff_derivative(n, p, t1, v1, t, v);
+- bspline_coeff_derivative_n(k - 1, n - 1, p - 1, t2, v2, t1, v1);
++ bspline_coeff_derivative_n(k - 1, n - 2, p - 1, t2, v2, t1, v1);
+ }
+ }
+
+diff --git a/src/num/vec3.c b/src/num/vec3.c
+index b75ebbe..72d872f 100644
+--- a/src/num/vec3.c
++++ b/src/num/vec3.c
+@@ -30,12 +30,13 @@ void vec3_add(vec3_t dst, const vec3_t src1, const vec3_t src2)
+
+ void vec3_copy(vec3_t dst, const vec3_t src)
+ {
+- vec3_saxpy(dst, src, 0., src);
++ for (int i = 0; i < 3; i++)
++ dst[i] = src[i];
+ }
+
+ void vec3_clear(vec3_t dst)
+ {
+- vec3_saxpy(dst, dst, -1., dst);
++ vec3_copy(dst, (vec3_t){ 0. });
+ }
+
+ float vec3_sdot(const vec3_t a, const vec3_t b)
+diff --git a/src/simu/biot_savart.c b/src/simu/biot_savart.c
+index 446ff84..2e7ee73 100644
+--- a/src/simu/biot_savart.c
++++ b/src/simu/biot_savart.c
+@@ -39,8 +39,7 @@ void biot_savart(vec3_t b, const vec3_t r, unsigned int N, const vec3_t curve[st
+
+ vec3_t x;
+ vec3_rot(x, l, d);
+- vec3_smul(x, x, c / pow(n, 3.)); //saxpy
+- vec3_add(b, b, x);
++ vec3_saxpy(b, b, c / pow(n, 3.), x);
+ }
+ }
+
+diff --git a/utests/test_biot_savart.c b/utests/test_biot_savart.c
+index 85aeb93..4017ecf 100644
+--- a/utests/test_biot_savart.c
++++ b/utests/test_biot_savart.c
+@@ -32,7 +32,7 @@ static bool test_vec3_ring(void)
+ ok &= (1.E-6 > fabs(0.33 - vec3_norm(r[i])));
+
+ for (unsigned int i = 0; i < N; i++)
+- ok &= (0. == vec3_sdot(r[i], n));
++ ok &= (1.E-9 > fabsf(vec3_sdot(r[i], n)));
+
+ return ok;
+ }
+@@ -46,11 +46,11 @@ static bool test_biot_savart(void)
+ vec3_t n = { 1., 0., 0. };
+ vec3_ring(N, r, c, n, 0.5);
+ vec3_t x;
+- biot_savart(x, c, N, (const vec3_t*)r);
++ biot_savart(x, c, N, r);
+
+ vec3_t d;
+ vec3_sub(d, x, n);
+- return (1.E-3 > vec3_norm(d));
++ return (1.E-3 > vec3_norm(d));
+ }
+
+
=====================================
debian/patches/series
=====================================
@@ -3,3 +3,5 @@
0003-deactivate-ode-unit-tests.patch
0004-relax-failing-unit-test.patch
0005-workaround-for-compiler-bug.patch
+0006-do-not-update-doc-commands.txt-automatically.patch
+0007-backported-test-fixes.patch
=====================================
debian/rules
=====================================
@@ -4,11 +4,13 @@ export DEB_BUILD_MAINT_OPTIONS = hardening=+all
DEB_BUILD_ARCH ?= $(shell dpkg-architecture -qDEB_BUILD_ARCH)
-
# Activate CUDA.
export CUDA=1
export CUDA_BASE=/usr/
+# set AR flags for deterministic archive
+export ARFLAGS=rs
+
# Some tests fail on the following architectures probably
# due to minor differences in floating point processing.
# For now, just turn it off...
=====================================
debian/tests/commands
=====================================
@@ -0,0 +1,8 @@
+#!/bin/sh
+set -e
+
+CMDS=`bart | tail -n +2`
+
+./rules/update_commands.sh /usr/bin/bart $AUTOPKGTEST_TMP/commands.txt $CMDS
+zcmp /usr/share/doc/bart/commands.txt.gz $AUTOPKGTEST_TMP/commands.txt
+
=====================================
debian/tests/control
=====================================
@@ -5,3 +5,17 @@ Restrictions: superficial
Tests: octave-integration
Depends: octave-bart, octave
Restrictions: superficial
+
+Tests: commands
+Depends: bart
+Restrictions: superficial
+
+Tests: suite
+Depends: bart, make
+Architecture: amd64
+Restrictions: allow-stderr
+
+Tests: suite
+Depends: bart, make
+Architecture: i386, mips64el, s390x
+Restrictions: allow-stderr, flaky
=====================================
debian/tests/suite
=====================================
@@ -0,0 +1,32 @@
+#!/bin/sh
+set -e
+
+CMDS=`bart | tail -n +2`
+
+mkdir $AUTOPKGTEST_TMP/tests/
+mkdir $AUTOPKGTEST_TMP/tests/out/
+mkdir $AUTOPKGTEST_TMP/tests/tmp/
+
+cat <<EOF > $AUTOPKGTEST_TMP/Makefile
+
+TOOLDIR=$AUTOPKGTEST_TMP/
+TESTS_TMP=$AUTOPKGTEST_TMP/tests/tmp/\$\$\$\$/
+TESTS_OUT=$AUTOPKGTEST_TMP/tests/out/
+
+include tests/*.mk
+
+all: \${TESTS}
+
+EOF
+
+cp version.txt $AUTOPKGTEST_TMP/
+
+for CMD in $CMDS ; do
+
+ ln -s /usr/bin/bart $AUTOPKGTEST_TMP/$CMD
+ [ -e tests/$CMD.mk ] && cp tests/$CMD.mk $AUTOPKGTEST_TMP/tests/
+done
+
+cd $AUTOPKGTEST_TMP
+make all
+
View it on GitLab: https://salsa.debian.org/med-team/bart/-/compare/46bb1d4ddc8bdace1254b79a81daf397666c2183...c4910375a775754bb19eefa08317792a664c9a88
--
View it on GitLab: https://salsa.debian.org/med-team/bart/-/compare/46bb1d4ddc8bdace1254b79a81daf397666c2183...c4910375a775754bb19eefa08317792a664c9a88
You're receiving this email because of your account on salsa.debian.org.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/debian-med-commit/attachments/20211230/97635962/attachment-0001.htm>
More information about the debian-med-commit
mailing list