sippi_adjust_step_size

  sippi_adjust_step_size Adjust step length length for Metropolis sampler in SIPPI

  Call : 
    step=sippi_adjust_step_size(step,P_average,P_target);

  step : current step 
  P_current : Current acceptance ratio
  P_target  : preferred acceptance ratio (def=0.3);

  See also sippi_compute_acceptance_rate, sippi_prior_set_steplength

sippi_anneal_temperature

  sippi_anneal_temperature : compute annealing temperature for
  annealing type sampling

    %% ANNEALING (TEMPERATURE AS A FUNTION OF ITERAITON NUMBER)
     i % iteration number

     mcmc.anneal.i_begin=1; % default, iteration number when annealing begins
     mcmc.anneal.i_end=100000; %  iteration number when annealing stops
     mcmc.anneal.T_begin=5; % Start temperature for annealing 
     mcmc.anneal.T_end=1; % End temperature for anneaing 

     mcmc.anneal.type='exp';     % Exponential temperature change
     mcmc.anneal.type='linear';  % Linear temperature change

  Call
    [T,mcmc]=sippi_anneal_temperature(i,mcmc);

  See also sippi_metropolis

sippi_compute_acceptance_rate

  sippi_compute_acceptance_rate Computes acceptance rate for the Metropolis sampler in SIPPI

  Call:
    P_acc=sippi_compute_acceptance_rate(acc,n_update_history);

sippi_compute_modelization_forward_error

  sippi_compute_modelization_forward_error Computes an estimate of the modelization erro

  Computes and estimate of the Gaussian modelization error, N(dt,Ct)
  caused by the use of an imperfect forward kernel

  If called with only one output '[Ct]=sippi..]' then the Gaussian model is
  assumed by centered around 0, (dt{1}=0).

  Call
    [Ct,dt,dd]=sippi_compute_modelization_forward_error(forward_full,forward_app,prior,N,d);


  For details see:
   Hansen, T.M., Cordua, K. S., Jacobsen, B. J., and Mosegaard, K. (2014)
   Accounting for imperfect forward modeling in geophysical inverse problems - exemplified for cross hole tomography.
   Geophsyics, 79(3) H1-H21, 2014. doi:10.1190/geo2013-0215.1

sippi_forward

  sippi_forward Simple forward wrapper for SIPPI

  Assumes that the actual forward solver has been defined by
  forward.forward_function

  Call:
    [d,forward,prior,data]=sippi_forward(m,forward)

  Optional: 
    [d,forward,prior,data]=sippi_forward(m,forward,prior)
    [d,forward,prior,data]=sippi_forward(m,forward,prior,data)
    [d,forward,prior,data]=sippi_forward(m,forward,prior,data,options)

sippi_forward_linear

  sippi_forward_linear: 

  % options:
  forward.G : Linear forward operator. such that d[
              d{id}=forward.G*m{im}(:)
              if not set, forward.G=eye(prod(size(m{im})));

  forward.force_sparse [0]: Use forward.G as is (default)
                      [1]: force forward.G to be treated as a sparse matrix

  %% Examples
  % Define an example of a prior model
     forward.forward_function='sippi_forward_linear';
     im=1;
     prior{im}.type='FFTMA';
     prior{im}.x=[0:1:100];
     prior{im}.m0=0;
     prior{im}.Va='1 Sph(10)';
  % Define the use of the linear forward solver
     forward.forward_function='sippi_forward_linear';

  % Example 1: Identity, 
  %             by default an identity operator is used if the linear
  %             is not set
    m=sippi_prior(prior);
    tic;
    d=sippi_forward(m,forward);
    t1=toc;
    figure(1);
    subplot(1,2,1);plot(m{1});title('m')
    subplot(1,2,2);plot(d{1});title('d')
    suptitle(sprintf('Ex1, Identity, t=%g',t1))

  % Example 2: Linear Operator
    nd=prod(size(m{im}));
    forward.G=precal_cov_2d(nd,1,1,1,'1 Sph(10)');
    tic;
    d=sippi_forward(m,forward);
    t2=toc;
    figure(2);
    subplot(1,2,1);plot(m{1});title('m')
    subplot(1,2,2);plot(d{1});title('d')
    suptitle(sprintf('Ex2, t=%g',t2))


   % Example 3: Force forward.G to be sparse
    forward.force_sparse=1;
    tic;
    d=sippi_forward(m,forward);
    t3=toc;
    figure(3);
    subplot(1,2,1);plot(m{1});title('m')
    subplot(1,2,2);plot(d{1});title('d')
    suptitle(sprintf('Force sparse, t=%g',t3))

  See also: sippi_forward

sippi_get_resim_data

  sippi_get_resim_data: Get conditional data for resimulation

  d_cond=sippi_get_resim_data(m_current,prior,ip);

  c_cond [n_cond,4]: col1: x, col2: y, col4: z, col4: d

  See also sippi_prior

sippi_get_sample

  sippi_get_sample: Get a posterior sample

  Call :
   [reals,etype_mean,etype_var,reals_all,reals_ite]=sippi_get_sample(working_directory,im,n_reals,skip_seq_gibbs);

     im: A priori model type
     n_reals: Number of realizations to return
     skip_seq_gibbs [1] Skip all realization where sequential gibbs is enabled
                    [0] Use all realization
     data: SIPPI data structure
     prior: SIPPI prior structure
     options: options structure when running sippi_metropolis


  If located in a SIPPI output folder one can simple use :
     [reals,etype_mean,etype_var,reals_all,reals_ite]=sippi_get_sample(im,n_reals);
  or
     skip_seq_gibbs=0;
     [reals,etype_mean,etype_var,reals_all,reals_ite]=sippi_get_sample(im,n_reals,skip_seq_gibbs);

sippi_least_squares

  sippi_least_squares Least squares type inversion for SIPPI

  Call : 
     [m_reals,m_est,Cm_est]=sippi_least_squares(data,prior,forward,n_reals,lsq_type,id,im);



    lsq_type : 'lsq' (def), classical least squares 
               'error_sim', simulation through error simulation
               'visim', simulation through SGSIM of DSSIM

sippi_likelihood

  sippi_likelihood Compute likelihood given an observed dataset

  Call
    [logL,L,data]=sippi_likelihood(d,data);


   data{1}.d_obs [N_data,1] N_data data observations
   data{1}.d_std [N_data,1] N_data uncorrelated Gaussian STD

   data{1}.d_var [N_data,1] N_data uncorrelated Gaussian variances


  Gaussian modelization error, N(dt,Ct), is specified as
   data{1}.dt [N_data,1] : Bias/mean of modelization error
   data{1}.Ct [N_data,N_data] : Covariance of modelization error

   data{1}.Ct [1,1] : Constant Covariance of modelization error
                      imples data{1}.Ct=ones(N_data.N_data)*data{1}.Ct;

  data{id}.recomputeCD [default=0], if '1' then data{1}.iCD is recomputed
  each time sippi_likelihood is called. This should be used if the noise model
  changes between each call to sippi_likelihood.

   data{id}.full_likelihood [default=]0; if '1' the the full likelihood
   (including the determinant) is computed. This not needed if the data
   civariance is constant, but if it changes, then use
   data{id}.full_likelihood=1;


   A new type of noise model can be used as long as it is available in a 
   m file staring with 'sippi_likelihood_'. Further, it should provide the
   inputs and outputs as sippi_likelihood.m
   If a noise model has been implemented in the m-files
   sippi_likelihood_other.m
   then this can be used to evaluate the likelhood in sippi using 
   data{1}.noise_model='sippi_likelihood_other',

sippi_mcmc_init

  sippi_mcmc_init Initialize McMC options for Metropolis and rejection sampling in SIPPI

  Call:
     options=sippi_mcmc_init(options,prior);

sippi_metropolis

  sippi_metropolis Extended Metropolis sampling in SIPPI

  Metropolis sampling.
    See e.g.
      Hansen, T. M., Cordua, K. S., and Mosegaard, K., 2012.
      Inverse problems with non-trivial priors - Efficient solution through Sequential Gibbs Sampling.
      Computational Geosciences. doi:10.1007/s10596-011-9271-1.

      Sambridge, M., 2013 - A Parallel Tempering algorithm for
      probabilistic sampling and multi-modal optimization.

  Call :
     [options,data,prior,forward,m_current]=sippi_metropolis(data,prior,forward,options)
  Input :
     data : sippi data structure
     prior : sippi prior structure
     forward : sippi forward structure

  options :

     options.mcmc.nite=30000;   % [1] : Number if iterations
     options.mcmc.i_sample=100; % : Number of iterations between saving model to disk
     options.mcmc.i_plot=50;  % [1]: Number of iterations between updating plots
     options.mcmc.i_save_workspace=10000;  % [1]: Number of iterations between
                                             saving the complete workspace
     options.mcmc.i_sample=100; % : Number of iterations between saving model to disk

     options.mcmc.m_init : Manually chosen starting model
     options.mcmc.m_ref  : Reference known target model

     options.mcmc.accept_only_improvements [0] : Optimization
     options.mcmc.accept_all [0]: accepts all proposed models (ignores lilkelihood)

     options.txt [string] : string to be used as part of all output file names

     %% PERTURBATION STRATEGY
     % Perturb all model parameter all the time
     options.mcmc.pert_strategy.perturb_all=1; % Perturb all priors in each
                                               % iteration. def =[0]
     options.mcmc.pert_strategy.perturb_all=2; % Perturb a random selection of 
                                               % all priors in each iteration. def =[0]

     % Perturb one a prior type at a time, according to some frequency
     options.mcmc.pert_strategy.i_pert = [1,3]; % only perturb prior 1 and 3
     options.mcmc.pert_strategy.i_pert_freq = [2 8]; % perturb prior 3 80% of
                                                % the time and prior 1 20%
                                                % of the time
     % the default pertubation strategt is to select one prior model to
     % perturb at tandom for each iteration


     %% TEMPERING
     options.mcmc.n_chains=1; % set number of chains (def=1)
     options.mcmc.T=1;      % set temperature of chains [1:n_chains]
     options.mcmc.chain_frequency_jump=0.1; % probability allowing a jump
                                            %  between two chains
     %% ANNEALING (TEMPERATURE AS A FUNCTION OF ITERATION NUMBER)
     options.mcmc.anneal.i_begin=1; % default, iteration number when annealing begins
     options.mcmc.anneal.i_end=100000; %  iteration number when annealing stops
     options.mcmc.anneal.T_begin=5; % Start temperature for annealing
     options.mcmc.anneal.T_end=1; % End temperature for annealing

     %% VERBOSITY
     The amount of text info displayed at the prompt, can be controlled by
     setenv('SIPPI_VERBOSE_LEVEL','2') % all: information on chain swapping
     setenv('SIPPI_VERBOSE_LEVEL','1') % information about seq-gibbs step update
     setenv('SIPPI_VERBOSE_LEVEL','0'); % [def] frequent update
     setenv('SIPPI_VERBOSE_LEVEL','-1'); % rare update om finish time
     setenv('SIPPI_VERBOSE_LEVEL','-2'); % indication of stop and start
     setenv('SIPPI_VERBOSE_LEVEL','-3'); % none

  See also sippi_rejection

sippi_prior

  sippi_prior: A priori models for SIPPI

  To generate a realization of the prior model defined by the prior structure use:
    [m_propose,prior]=sippi_prior(prior);

  To generate a realization of the prior model defined by the prior structure,
  in the vicinity of a current model (using sequential Gibbs sampling) use:
    [m_propose,prior]=sippi_prior(prior,m_current);

  The following types of a priori models can be used
    % two point statistics bases
    GAUSSIAN   [1D] : 1D generalized gaussian model
    UNIFORM [1D-3D] : 1D-3D uncorrelated uniform distribution
    CHOLESKY[1D-3D] : based on Cholesky decomposition
    FFTMA   [1D-3D] : based on the FFT-MA method (Multivariate Gaussian)
    VISIM   [1D-3D] : based on Sequential Gaussian and Direct Sequential simulation
    SISIM   [1D-3D] : based on Sequential indicator SIMULATION
    % multiple point based statistics
    SNESIM_STD  [1D-3D] : (SGEMS) based on a multiple point statistical model inferref from a training images. Relies in the SNESIM algorithm
    SNESIM  [1D-3D] : (GSLIB STYLE) based on a multiple point statistical model inferref from a training images. Relies in the SNESIM algorithm


 %%% SIMPLE EXAMPLE %%%

 % A simple 2D multivariate Gaissian based prior model based on the
 % FFT-MA method, can be defined using
    im=1;
    prior{im}.type='FFTMA';
    prior{im}.name='A SIMPLE PRIOR';
    prior{im}.x=[0:1:100];
    prior{im}.y=[0:1:100];
    prior{im}.m0=10;
    prior{im}.Va='1 Sph(10)';
    prior=sippi_prior_init(prior);
 % A realization from this prior model can be generated using
    m=sippi_prior(prior);
 % This realization can now be plotted using
    sippi_plot_prior(m,prior);
 % or
    imagesc(prior{1}.x,prior{1}.y,m{1})

 %%% A PRIOR MODEL WITH SEVERAL 'TYPES OF A PRIORI MODEL'

    im=1;
    prior{im}.type='GAUSSIAN';
    prior{im}.m0=100;
    prior{im}.std=50;
    prior{im}.norm=100;
    im=im+1;
    prior{im}.type='FFTMA';
    prior{im}.x=[0:1:100];
    prior{im}.y=[0:1:100];
    prior{im}.m0=10;
    prior{im}.Cm='1 Sph(10)';
    im=im+1;
    prior{im}.type='VISIM';
    prior{im}.x=[0:1:100];
    prior{im}.y=[0:1:100];
    prior{im}.m0=10;
    prior{im}.Cm='1 Sph(10)';
    im=im+1;
    prior{im}.type='SISIM';
    prior{im}.x=[0:1:100];
    prior{im}.y=[0:1:100];
    prior{im}.m0=10;
    prior{im}.Cm='1 Sph(10)';
    im=im+1;
    prior{im}.type='SNESIM';
    prior{im}.x=[0:1:100];
    prior{im}.y=[0:1:100];

    sippi_plot_prior(prior);

 %% Sequential Gibbs sampling

    All a priori model types can be perturbed, such that a new realization
    is generated in the vicinity of a current model.
    To do this Sequential Gibbs Sampling is used.
    For more information, see <a href="matlab:web('http://dx.doi.org/10.1007/s10596-011-9271-1')">Hansen, T. M., Cordua, K. S., and Mosegaard, K., 2012. Inverse problems with non-trivial priors - Efficient solution through Sequential Gibbs Sampling. Computational Geosciences</a>.
    The type of sequential Gibbs sampling can be controlled in the
    'seq_gibbs' structures, e.g. prior{1}.seq_gibbs

    im=1;
    prior{im}.type='SNESIM';
    prior{im}.x=[0:1:100];
    prior{im}.y=[0:1:100];

    [m,prior]=sippi_prior(prior);
    prior{1}.seq_gibbs.step=1; % Large step--> independant realizations
    prior{1}.seq_gibbs.step=.1; % Smaller step--> Dependant realizations
    for i=1:30;
       [m,prior]=sippi_prior(prior,m); % One iteration of Sequential Gibbs
       sippi_plot_prior(prior,m);
    end

  See also: sippi_prior_init, sippi_plot_prior, sippi_plot_prior_sample, sippi_prior_set_steplength.m

  TMH/2012

sippi_prior_cholesky

  sippi_prior_cholesky : Cholesky type Gaussian prior for SIPPI

 % Example:
    ip=1;
    prior{ip}.type='cholesky';
    prior{ip}.m0=10;
    prior{ip}.Cm='.001 Nug(0) + 1 Gau(10)';
    prior{ip}.x=0:1:100;linspace(0,100,20);
    prior{ip}.y=0:1:50;linspace(0,33,30);
    [m,prior]=sippi_prior_cholesky(prior);
    sippi_plot_prior(prior,m);

 % Sequential Gibbs sampling
    prior{1}.seq_gibbs.step=.1;
    for i=1:100;
        [m,prior]=sippi_prior_cholesky(prior,m);
        sippi_plot_prior(prior,m);
        caxis([8 12]);drawnow;
    end

 % Prior covariance model
  The prior covarince model can be setup using
    prior{ip}.m0=10;
    prior{ip}.Cm='.001 Nug(0) + 1 Gau(10)';
  or
    prior{ip}.m0=10;
   and the 'Cmat' variable 'prior{ip}.Cmat' which much the contain a full
   nd X nd size covariance matrix.
   (it is computed the first the sippi_prior_cholesky is called)

  See also: gaussian_simulation_cholesky

sippi_prior_dsim

  sippi_prior_dsim : Direct simulation in SIPPI

  Example: 

  prior{1}.type='dsim';
  prior{1}.x=1:1:40;;
  prior{1}.y=1:1:30;;
  prior{1}.ti=channels;;

  m=sippi_prior(prior);
  sippi_plot_prior(prior,m);



  % OPTIONAL OPTIONS

    prior{1}.options.n_cond [int]: number of conditional points (def=5)
    prior{1}.options.n_max_ite [int]: number of maximum iterations through the TI for matching patterns (def=200)

    prior{1}.options.plot    [int]: [0]:none, [1]:plot cond, [2]:storing movie (def=0)
    prior{1}.options.verbose [int]: [0] no infor to screen, [1]:some info (def=1)



  TMH/2014

  See also: sippi_prior_init, sippi_prior

sippi_prior_init

  sippi_prior_init Initialize PRIOR structure for SIPPI

  Call
    prior=sippi_prior_init(prior);

  See also sippi_prior

sippi_prior_mps

  sippi_prior_mps : prior based on MPS

                       Using SNESIM/ENESIM FROM 
                       https://github.com/ergosimulation/mpslib

 % Example:
     ip=1;
     prior{ip}.type='mps';
     prior{ip}.method='mps_snesim';
     prior{ip}.x=1:1:80;
     prior{ip}.y=1:1:80;
     prior{ip}.ti=channels;
     % prior{ip}.ti=maze;

     m=sippi_prior(prior);
     sippi_plot_prior(prior,m)
     figure(1);imagesc(prior{ip}.ti);axis image


 %  The specific algorithm use for MPS simulation is defined in ytje 'method' field
     prior{ip}.method='mps_snesim';         % default, same as 'mps_snesim_tree'
     prior{ip}.method='mps_snesim_tree';
     prior{ip}.method='mps_snesim_list';
     prior{ip}.method='mps_genesim';

     All properties for each algorithm are availale in the prior{ip}.MPS
     field

  See also: sippi_prior, ti, mps_cpp

sippi_prior_plurigaussian

  sippi_prior_plurigaussian: Plurigaussian type prior for SIPPI

 % Example:
    % PluriGaussian based on one Gaussian model / truncated Gaussian
    ip=1;
    prior{ip}.type='plurigaussian';
    prior{ip}.x=1:1:100;
    prior{ip}.y=1:1:100;
    prior{ip}.Cm='1 Gau(10)';
    prior{ip}.pg_map=[0 0 0 0 1 1 0 0 2 2 2];

    % PluriGaussian based on two Gaussian models 
    ip=ip+1;
    prior{ip}.type='plurigaussian';
    prior{ip}.x=1:1:100;
    prior{ip}.y=1:1:100;
    prior{ip}.pg_prior{1}.Cm=' 1 Gau(10)';
    prior{ip}.pg_prior{2}.Cm=' 1 Sph(10,90,.4)';
    prior{ip}.pg_map=[0 0 0 1 1; 1 2 0 1 1; 1 1 1 1 1];

    [m,prior]=sippi_prior(prior);
    sippi_plot_prior(prior,m);

    sippi_plot_prior_sample(prior,1,5);
    sippi_plot_prior_sample(prior,2,5);


 % Sequential Gibbs sampling
    prior{1}.seq_gibbs.step=.01;
    for i=1:100;
        [m,prior]=sippi_prior(prior,m);
        sippi_plot_prior(prior,m);
        caxis([0 2]);drawnow;
    end

  See also: sippi_prior, pg_transform

sippi_prior_set_steplength

  sippi_prior_set_steplength Set step length for Metropolis sampler in SIPPI

  Call
    prior=sippi_prior_set_steplength(prior,mcmc,im);

sippi_prior_sisim

  sippi_prior_sisim: SISIM (SGeMS) type prior for SIPPI

 % Example:
     ip=1;
     prior{ip}.type='sisim';
     prior{ip}.x=1:1:80;
     prior{ip}.y=1:1:80;
     prior{ip}.Cm='1 Sph(60)';
     prior{ip}.marginal_prob=[.1 .4 .5];
     m=sippi_prior(prior);
     sippi_plot_prior(prior,m)

     % optionally a specific random seed can be set using
     prior{ip}.seed=1;

 % Sequential Gibbs sampling type 1 (box selection of pixels)
     prior{ip}.seq_gibbs.type=1;%
     prior{ip}.seq_gibbs.step=10; % resim data in 10x10 pixel grids
     [m,prior]=sippi_prior(prior);
     for i=1:10;
        [m,prior]=sippi_prior(prior,m);
        sippi_plot_prior(prior,m);
        drawnow;
     end

 % Sequential Gibbs sampling type 2 (random pixels)
     prior{ip}.seq_gibbs.type=2;%
     prior{ip}.seq_gibbs.step=.6; % Resim 60% of data
     [m,prior]=sippi_prior(prior);
     for i=1:10;
        [m,prior]=sippi_prior(prior,m);
        sippi_plot_prior(prior,m);
        drawnow;
     end

  See also: sippi_prior, sgems

sippi_prior_snesim

  sippi_prior_snesim : SNESIM type Gaussian prior for SIPPI

                       Using SNESIM form
                       https://github.com/SCRFpublic/snesim-standalone

 % Example:
     ip=1;
     prior{ip}.type='snesim';
     prior{ip}.x=1:1:80;
     prior{ip}.y=1:1:80;
     prior{ip}.ti=channels;
     % prior{ip}.ti=maze;

     m=sippi_prior(prior);
     sippi_plot_prior(prior,m)
     figure(1);imagesc(prior{ip}.ti);axis image

 % Example: scaling and rotation
     ip=1;
     prior{ip}.type='snesim';
     prior{ip}.x=1:1:80;
     prior{ip}.y=1:1:80;
     prior{ip}.ti=channels;
     prior{ip}.scaling=[.1];
     prior{ip}.rotation=[10];

     m=sippi_prior(prior);
     sippi_plot_prior(prior,m)
     figure(1);imagesc(prior{ip}.ti);axis image

 % Hard data
    % hard data are given using either matrix of 4 columns (x,y,z,val)
    % or as a 4 column EAS file (x,y,z,val)
    d_hard=[1 1 0 0; 1 2 0 0; 2 2 0 1 ];
    prior{ip}.hard_data=d_hard;

    write_eas('snesim_hard.dat',d_hard);
    prior{ip}.hard_data='snesim_hard.dat';

 % Soft data
    % soft mush be provided as a matrix of the same size as the simulation
    % grid
    d_soft(:,:,1)=ones(80,80).*NaN
    d_soft(:,:,2)=1-d_soft(:,:,1);
    prior{ip}.soft_data_grid=d_soft;


    % Optionally the soft data can be provided as point data, in which case
    % a grid, the size of the simulation grid, with soft data values will be computed
    d_soft=[1 1 0 0.2 0.8; 1 2 0 0.1 0.9; 2 2 0  0.05 0.95];
    prior{ip}.soft_data=d_soft;

 % Sequential Gibbs sampling type 1 (box selection of pixels)
     prior{ip}.seq_gibbs.type=1;%
     prior{ip}.seq_gibbs.step=10; % resim data in 10x10 pixel grids
     [m,prior]=sippi_prior(prior);
     for i=1:10;
        [m,prior]=sippi_prior(prior,m);
        sippi_plot_prior(prior,m);
        drawnow;
     end

 % Sequential Gibbs sampling type 2 (random pixels)
     prior{ip}.seq_gibbs.type=2;%
     prior{ip}.seq_gibbs.step=.6; % Resim 60% of data
     [m,prior]=sippi_prior(prior);
     for i=1:10;
        [m,prior]=sippi_prior(prior,m);
        sippi_plot_prior(prior,m);
        drawnow;
     end

  See also: sippi_prior, ti

sippi_prior_snesim_std

  sippi_prior_snesim_std : SNESIM_STD (SGeMS) type Gaussian prior for SIPPI

                       Requires SGeMS version 2.1b, available from 
                       http://sgems.sourceforge.net/?q=node/77

 % Example:
     ip=1;
     prior{ip}.type='snesim_std';
     prior{ip}.x=1:1:80;
     prior{ip}.y=1:1:80;
     prior{ip}.ti=channels;
     % prior{ip}.ti=maze;

     m=sippi_prior(prior);
     sippi_plot_prior(prior,m)
     figure(1);imagesc(prior{ip}.ti);axis image

 % Hard data
    % hard data are given using either matrix of 4 columns (x,y,z,val)
    % or as a 4 column EAS file (x,y,z,val)
    d_hard=[1 1 0 0; 1 2 0 0; 2 2 0 1 ];
    prior{ip}.hard_data=d_hard;

    write_eas('snesim_hard.dat',d_hard);
    sgems_write_pointset('snesim_hard.sgems',d_hard);
    prior{ip}.hard_data='snesim_hard.sgems';

 % Example: scaling and rotation
     ip=1;
     prior{ip}.type='snesim_std';
     prior{ip}.x=1:1:80;
     prior{ip}.y=1:1:80;
     prior{ip}.ti=channels;
     prior{ip}.scaling=[.1];
     prior{ip}.rotation=[10];

     m=sippi_prior(prior);
     sippi_plot_prior(prior,m)
     figure(1);imagesc(prior{ip}.ti);axis image

 % Sequential Gibbs sampling type 1 (box selection of pixels)
     prior{ip}.seq_gibbs.type=1;%    
     prior{ip}.seq_gibbs.step=10; % resim data in 10x10 pixel grids
     [m,prior]=sippi_prior(prior);
     for i=1:10;
        [m,prior]=sippi_prior(prior,m);
        sippi_plot_prior(prior,m);
        drawnow;
     end

 % Sequential Gibbs sampling type 2 (random pixels)
     prior{ip}.seq_gibbs.type=2;%    
     prior{ip}.seq_gibbs.step=.6; % Resim 60% of data
     [m,prior]=sippi_prior(prior);
     for i=1:10;
        [m,prior]=sippi_prior(prior,m);
        sippi_plot_prior(prior,m);
        drawnow;
     end

  See also: sippi_prior, sippi_prior_snbesim, ti

sippi_prior_uniform

  sippi_prior_uniform : Uniform prior for SIPPI


 % Example 1D uniform
    ip=1;
    prior{ip}.type='uniform';
    prior{ip}.min=10;
    prior{ip}.max=25;
    [m,prior]=sippi_prior_uniform(prior);
    sippi_plot_prior_sample(prior);

 % Example 10D uniform
    ip=1;
    prior{ip}.type='uniform';
    prior{ip}.x=1:1:10; % As dimensions are uncorrelated, only the lehgth
                        % of prior{ip}.x matters, not its actual values.
    prior{ip}.min=10;
    prior{ip}.max=25;
    [m,prior]=sippi_prior_uniform(prior);
    sippi_plot_prior_sample(prior);

 % Sequential Gibbs sampling
    prior{1}.seq_gibbs.step=.1;
    for i=1:1000;
        [m,prior]=sippi_prior(prior,m);
        mm(i)=m{1};
    end
    subplot(1,2,1);plot(mm);
    subplot(1,2,2);hist(mm);

  TMH/2014

  See also: sippi_prior_init, sippi_prior

sippi_prior_visim

  sippi_prior_visim : VISIM type Gaussian prior for SIPPI

 % Example:
     ip=1;
     prior{ip}.type='visim';
     prior{ip}.x=1:1:80;
     prior{ip}.y=1:1:80;
     prior{ip}.Cm='1 Sph(60)';
     m=sippi_prior(prior);
     sippi_plot_prior(prior,m)

     % optionally a specific random seed can be set using
     prior{ip}.seed=1;

 % Sequential Gibbs sampling type 1 (box selection of pixels)
     prior{ip}.seq_gibbs.type=1;
     prior{ip}.seq_gibbs.step=10; % resim data in 10x10 pixel grids
     prior{ip}.cax=[-2 2];
     [m,prior]=sippi_prior(prior);
     for i=1:1000;
        [m,prior]=sippi_prior(prior,m);
        sippi_plot_prior(prior,m);
        drawnow;
     end

 % Sequential Gibbs sampling type 2 (random pixels)
     prior{ip}.seq_gibbs.type=2;%
     prior{ip}.seq_gibbs.step=.6; % Resim 60% of data
     [m,prior]=sippi_prior(prior);
     for i=1:10;
        [m,prior]=sippi_prior(prior,m);
        sippi_plot_prior(prior,m);
        drawnow;
     end

 % TARGET DISTRIBUTION
  clear prior
  d_target=[7 8 9 10 11 11 12];
  d_target=[7 8 9 10 14 15 20];

  ip=1;
  prior{ip}.type='visim';
  prior{ip}.method='sgsim';
  % prior{ip}.method='dssim';
  prior{ip}.d_target=d_target;
  prior{ip}.cax=[min(d_target) max(d_target)];
  prior{ip}.x=1:1:80;
  prior{ip}.y=1:1:80;
  prior{ip}.Cm=sprintf('%g Gau(20)',var(d_target));
  prior{ip}.Cm=sprintf('%g Gau(20)',1);
  [m,prior]=sippi_prior(prior);
  sippi_plot_prior(prior,m);

  prior{ip}.seq_gibbs.step=16;
  prior{ip}.seq_gibbs.type=1;
  for i=1:10;
     [m,prior]=sippi_prior(prior,m);
     sippi_plot_prior(prior,m);
     drawnow
  end


  See also: sippi_prior, visim, nscore, inscore

sippi_prior_voronoi

  sippi_prior_voronoi: 

  TMH/2014

  Ex: 
    prior{1}.type='voronoi';
    prior{1}.x=1:1:20;
    prior{1}.y=1:1:20;
    prior{1}.cells_N_min=2;
    prior{1}.cells_N_max=100;
    prior{1}.cells_N=10;
    [m,prior]=sippi_prior(prior);
    sippi_plot_prior(prior,m);

  See also: sippi_prior_init, sippi_prior

sippi_rejection

  sippi_rejection Rejection sampling

  Call :
      options=sippi_rejection(data,prior,forward,options)

  input arguments

    options.mcmc.i_plot
    options.mcmc.nite     % maximum number of iterations
    options.mcmc.logLmax [def=1]; % Maximum possible log-likelihood value

    options.mcmc.rejection_normalize_log = log(options.mcmc.Lmax)

    options.mcmc.adaptive_rejection=1, adaptive setting of maximum likelihood
                   (def=[0])
                   At each iteration logLmax will be set if log(L(m_cur)=>options.mcmc.logLmax


    options.mcmc.max_run_time_hours = 1; % maximum runtime in hours
                                         % (overrides options.mcmc.nite if needed)

    options.mcmc.T = 1; % Tempering temperature. T=1, implies no tempering

  See also sippi_metropolis

sippi_set_path

  sippi_set_path Set paths for running sippi

results matching ""

    No results matching ""