This is an automated email from the git hooks/post-receive script. uecker-guest pushed a commit to annotated tag v0.2.09d in repository bart.
commit 5e9bf804ad71c884c3a6645f900600b83f581421 Author: Frank Ong <frank...@berkeley.edu> Date: Tue Dec 1 22:18:20 2015 -0800 changed lrdecom to lrmatrix. added matrix completion ability --- Makefile | 4 ++-- src/{lrdecom.c => lrmatrix.c} | 28 ++++++++++++++++++++++++---- 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/Makefile b/Makefile index 34f6ee5..9ba314c 100644 --- a/Makefile +++ b/Makefile @@ -109,7 +109,7 @@ ismrm.top ?= /usr/local/ismrmrd/ TBASE=show slice crop resize join transpose zeros ones flip circshift extract repmat bitmask reshape version TFLP=scale conj fmac saxpy sdot spow cpyphs creal normalize cdf97 relnorm pattern nrmse TNUM=fft fftmod fftshift noise bench threshold conv rss filter -TRECO=pics pocsense rsense bpsense itsense nlinv nufft rof sake wave lrdecom +TRECO=pics pocsense rsense bpsense itsense nlinv nufft rof sake wave lrmatrix TCALIB=ecalib ecaltwo caldir walsh cc calmat svd estvar TMRI=homodyne poisson twixread fakeksp TSIM=phantom traj @@ -149,7 +149,7 @@ MODULES_sake += -lsake MODULES_wave += -liter -lwavelet2 -llinops -lsense MODULES_threshold += -llowrank -llinops -lwavelet2 -liter -ldfwavelet MODULES_fakeksp += -lsense -llinops -MODULES_lrdecom = -llowrank -liter -llinops +MODULES_lrmatrix = -llowrank -liter -llinops -include Makefile.$(NNAME) -include Makefile.local diff --git a/src/lrdecom.c b/src/lrmatrix.c similarity index 88% rename from src/lrdecom.c rename to src/lrmatrix.c index ab00589..d928252 100644 --- a/src/lrdecom.c +++ b/src/lrmatrix.c @@ -30,6 +30,7 @@ #include "lowrank/lrthresh.h" #include "linops/sum.h" +#include "linops/sampling.h" #include "iter/prox.h" #include "linops/someops.h" @@ -69,21 +70,22 @@ static void usage(const char* name, FILE* fd) static void help(void) { printf( "\n" - "Perform multi-scale low rank decomposition.\n" + "Perform (multi-scale) low rank matrix completion\n" + "-d\t\tperform decomposition instead, ie fully sampled\n" "-i\t\tmaximum iterations.\n" "-m\t\tflags to specify which dimensions are reshaped to matrix columns.\n" "-f\t\tflags to specify which dimensions to perform multi-scale partition.\n" "-j scale\tblock size scaling from one scale to the next one.\n" "-k block-size\tsmallest block size\n" "-N\t\tadd noise scale to account for Gaussian noise.\n" - "-s\t\tperform low rank + sparse decomposition.\n" + "-s\t\tperform low rank + sparse matrix completion.\n" "-l block-size\tperform locally low rank soft thresholding with specified block size.\n" "-o <output2>\tsummed over all non-noise scales to create a denoised output.\n" "\n"); } -int main_lrdecom(int argc, char* argv[]) +int main_lrmatrix(int argc, char* argv[]) { double start_time = timestamp(); @@ -97,6 +99,7 @@ int main_lrdecom(int argc, char* argv[]) unsigned long flags = ~0; const char* sum_str = NULL; _Bool noise = false; + _Bool decom = false; _Bool llr = false; long llrblk = 8; @@ -107,8 +110,11 @@ int main_lrdecom(int argc, char* argv[]) int remove_mean = 0; int c; - while (-1 != (c = getopt(argc, argv, "uvNi:p:m:j:k:o:hnl:sf:gHF"))) { + while (-1 != (c = getopt(argc, argv, "uvNi:p:m:j:k:o:hnl:sf:gHFd"))) { switch(c) { + + case 'd': + decom = true; case 'u': remove_mean = 1; @@ -216,6 +222,13 @@ int main_lrdecom(int argc, char* argv[]) complex float* odata = create_cfl(argv[optind + 1], DIMS, odims); md_clear( DIMS, odims, odata, sizeof(complex float) ); + // Get pattern + complex float* pattern = NULL; + + if (!decom) { + pattern = md_alloc(DIMS, idims, CFL_SIZE); + estimate_pattern(DIMS, idims, TIME_DIM, pattern, idata); + } // Initialize algorithm void* iconf; @@ -233,6 +246,13 @@ int main_lrdecom(int argc, char* argv[]) // Initialize operators const struct linop_s* sum_op = sum_create( odims, use_gpu ); + const struct linop_s* sampling_op = NULL; + if (!decom) { + sampling_op = sampling_create(idims, idims, pattern); + sum_op = linop_chain(sum_op, sampling_op); + linop_free(sampling_op); + } + const struct operator_p_s* sum_prox = prox_lineq_create( sum_op, idata ); const struct operator_p_s* lr_prox = lrthresh_create(odims, randshift, mflags, (const long (*)[])blkdims, 1., noise, remove_mean, use_gpu); -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-med/bart.git _______________________________________________ debian-med-commit mailing list debian-med-commit@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/debian-med-commit