texit matlab on error - cosmo - front and backend for Markov-Chain Monte Carlo inversion of cosmogenic nuclide concentrations
 (HTM) git clone git://src.adamsgaard.dk/cosmo
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit b87a5a357c89179c1397be92a291c0d7523252e5
 (DIR) parent 4bdfcc45d50e0c057f7b42f611d17e7693ab48fb
 (HTM) Author: Anders Damsgaard <anders.damsgaard@geo.au.dk>
       Date:   Mon,  7 Dec 2015 14:32:38 +0100
       
       exit matlab on error
       
       Diffstat:
         M matlab/file_scanner_mcmc_starter.m  |     197 ++++++++++++++++---------------
       
       1 file changed, 102 insertions(+), 95 deletions(-)
       ---
 (DIR) diff --git a/matlab/file_scanner_mcmc_starter.m b/matlab/file_scanner_mcmc_starter.m
       t@@ -58,104 +58,111 @@ disp('Entering main loop, waiting for input from web interface...');
        %% main loop
        while 1
            
       -    % detect all files in infolder starting with prefix
       -    infiles = dir(strcat(infolder, '/', prefix, '*'));
       +    try
            
       -    % sort files according to modification time
       -    [sorteddates, sortidx] = sort([infiles.datenum]);
       -    infiles = infiles(sortidx);
       -    
       -    % process files sequentially
       -    for i = 1:length(infiles);
       -        
       -        % read full file name and path
       -        infile = strcat(infolder, '/', infiles(i).name);
       -        
       -        % move to waitfolder
       -        movefile(infile, waitfolder);
       -        waitfile = strcat(waitfolder, '/', infiles(i).name);
       -        
       -        idstring = strsplit(infile, '_');
       -        id = idstring(2);
       -        statusfile = char(strcat(infolder, '/status_', id));
       -        diary(char(strcat(infolder, '/log_', id)));
       -        
       -        if debug
       -            disp(infile);
       -            disp(strcat('Simulation id: ', id));
       +        % detect all files in infolder starting with prefix
       +        infiles = dir(strcat(infolder, '/', prefix, '*'));
       +
       +        % sort files according to modification time
       +        [sorteddates, sortidx] = sort([infiles.datenum]);
       +        infiles = infiles(sortidx);
       +
       +        % process files sequentially
       +        for i = 1:length(infiles);
       +
       +            % read full file name and path
       +            infile = strcat(infolder, '/', infiles(i).name);
       +
       +            % move to waitfolder
       +            movefile(infile, waitfolder);
       +            waitfile = strcat(waitfolder, '/', infiles(i).name);
       +
       +            idstring = strsplit(infile, '_');
       +            id = idstring(2);
       +            statusfile = char(strcat(infolder, '/status_', id));
       +            diary(char(strcat(infolder, '/log_', id)));
       +
       +            if debug
       +                disp(infile);
       +                disp(strcat('Simulation id: ', id));
       +            end
       +
       +            % read file and save data to local scope
       +            [sample_id, name, email, lat, long, ...
       +                be_conc,  al_conc,  c_conc,  ne_conc, ...
       +                be_uncer, al_uncer, c_uncer, ne_uncer, ...
       +                zobs, ...
       +                be_prod_spall, al_prod_spall, c_prod_spall, ne_prod_spall, ...
       +                be_prod_muons, al_prod_muons, c_prod_muons, ne_prod_muons, ...
       +                rock_density, ...
       +                epsilon_gla_min, epsilon_gla_max, ...
       +                epsilon_int_min, epsilon_int_max, ...
       +                t_degla_min, t_degla_max, ...
       +                record, ...
       +                record_threshold_min, record_threshold_max, ...
       +                nwalkers] ...
       +                = import_php_file(waitfile, 1, 1); % only read first line
       +
       +            % run inversion
       +            [Ss, save_file] = mcmc_inversion(matlab_scripts_folder, debug, ...
       +                nwalkers, outfolder, ...
       +                be_conc,  al_conc,  c_conc,  ne_conc, ...
       +                be_uncer, al_uncer, c_uncer, ne_uncer, ...
       +                zobs, ...
       +                be_prod_spall, al_prod_spall, c_prod_spall, ne_prod_spall, ...
       +                be_prod_muons, al_prod_muons, c_prod_muons, ne_prod_muons, ...
       +                rock_density, ...
       +                epsilon_gla_min, epsilon_gla_max, ...
       +                epsilon_int_min, epsilon_int_max, ...
       +                t_degla_min, t_degla_max, ...
       +                record, ...
       +                record_threshold_min, record_threshold_max, ...
       +                statusfile, id);
       +
       +            fid = fopen(statusfile, 'w');
       +            fprintf(fid, 'Generating plots');
       +            fclose(fid);
       +
       +            % generate plots
       +            %CompareWalks2(Ss, save_file)
       +            generate_plots(Ss, matlab_scripts_folder, ...
       +                save_file, graphics_formats, show_figures, ...
       +                sample_id, name, email, lat, long, ...
       +                be_conc,  al_conc,  c_conc,  ne_conc, ...
       +                be_uncer, al_uncer, c_uncer, ne_uncer, ...
       +                zobs, ...
       +                be_prod_spall, al_prod_spall, c_prod_spall, ne_prod_spall, ...
       +                be_prod_muons, al_prod_muons, c_prod_muons, ne_prod_muons, ...
       +                rock_density, ...
       +                epsilon_gla_min, epsilon_gla_max, ...
       +                epsilon_int_min, epsilon_int_max, ...
       +                t_degla_min, t_degla_max, ...
       +                record, ...
       +                record_threshold_min, record_threshold_max, ...
       +                nwalkers);
       +
       +            % close all figures
       +            close all;
       +
       +            % delete or archive the file so it is not processed again
       +            %delete(infile)
       +            %movefile(infile, archivefolder);
       +            movefile(char(strcat(waitfolder, '/cosmo_', id)), archivefolder);
       +
       +            fid = fopen(statusfile, 'w');
       +            fprintf(fid, 'Computations complete');
       +            fclose(fid);
       +
       +            disp(['Computations complete, id = ' id]);
       +
       +            diary off;
       +
       +            %keyboard
                end
       -
       -        % read file and save data to local scope
       -        [sample_id, name, email, lat, long, ...
       -            be_conc,  al_conc,  c_conc,  ne_conc, ...
       -            be_uncer, al_uncer, c_uncer, ne_uncer, ...
       -            zobs, ...
       -            be_prod_spall, al_prod_spall, c_prod_spall, ne_prod_spall, ...
       -            be_prod_muons, al_prod_muons, c_prod_muons, ne_prod_muons, ...
       -            rock_density, ...
       -            epsilon_gla_min, epsilon_gla_max, ...
       -            epsilon_int_min, epsilon_int_max, ...
       -            t_degla_min, t_degla_max, ...
       -            record, ...
       -            record_threshold_min, record_threshold_max, ...
       -            nwalkers] ...
       -            = import_php_file(waitfile, 1, 1); % only read first line
       -        
       -        % run inversion
       -        [Ss, save_file] = mcmc_inversion(matlab_scripts_folder, debug, ...
       -            nwalkers, outfolder, ...
       -            be_conc,  al_conc,  c_conc,  ne_conc, ...
       -            be_uncer, al_uncer, c_uncer, ne_uncer, ...
       -            zobs, ...
       -            be_prod_spall, al_prod_spall, c_prod_spall, ne_prod_spall, ...
       -            be_prod_muons, al_prod_muons, c_prod_muons, ne_prod_muons, ...
       -            rock_density, ...
       -            epsilon_gla_min, epsilon_gla_max, ...
       -            epsilon_int_min, epsilon_int_max, ...
       -            t_degla_min, t_degla_max, ...
       -            record, ...
       -            record_threshold_min, record_threshold_max, ...
       -            statusfile, id);
       -        
       -        fid = fopen(statusfile, 'w');
       -        fprintf(fid, 'Generating plots');
       -        fclose(fid);
       -        
       -        % generate plots
       -        %CompareWalks2(Ss, save_file)
       -        generate_plots(Ss, matlab_scripts_folder, ...
       -            save_file, graphics_formats, show_figures, ...
       -            sample_id, name, email, lat, long, ...
       -            be_conc,  al_conc,  c_conc,  ne_conc, ...
       -            be_uncer, al_uncer, c_uncer, ne_uncer, ...
       -            zobs, ...
       -            be_prod_spall, al_prod_spall, c_prod_spall, ne_prod_spall, ...
       -            be_prod_muons, al_prod_muons, c_prod_muons, ne_prod_muons, ...
       -            rock_density, ...
       -            epsilon_gla_min, epsilon_gla_max, ...
       -            epsilon_int_min, epsilon_int_max, ...
       -            t_degla_min, t_degla_max, ...
       -            record, ...
       -            record_threshold_min, record_threshold_max, ...
       -            nwalkers);
       -        
       -        % close all figures
       -        close all;
       -        
       -        % delete or archive the file so it is not processed again
       -        %delete(infile)
       -        %movefile(infile, archivefolder);
       -        movefile(char(strcat(waitfolder, '/cosmo_', id)), archivefolder);
       -        
       -        fid = fopen(statusfile, 'w');
       -        fprintf(fid, 'Computations complete');
       -        fclose(fid);
       -        
       -        disp(['Computations complete, id = ' id]);
       -        
       -        diary off;
                
       -        %keyboard
       +    catch E
       +        disp(E.message)
       +        exit(1) % quit matlab on error
            end
        
            % sleep in order to reduce system load