timport_php_input.m - 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
       ---
       timport_php_input.m (4287B)
       ---
            1 %% Import data from text file.
            2 % NOT USED! But kept in case it becomes useful later on.
            3 
            4 %  Script for importing data from the following text file:
            5 %
            6 %    /tmp/cosmo_pgpzvt
            7 %
            8 % To extend the code to different selected data or a different text file,
            9 % generate a function instead of a script.
           10 
           11 % Auto-generated by MATLAB on 2015/08/24 12:46:56
           12 
           13 %% Initialize variables.
           14 filename = '/tmp/cosmo_pgpzvt';
           15 delimiter = '\t';
           16 
           17 %% Read columns of data as strings:
           18 % For more information, see the TEXTSCAN documentation.
           19 formatSpec = '%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%[^\n\r]';
           20 
           21 %% Open the text file.
           22 fileID = fopen(filename,'r');
           23 
           24 %% Read columns of data according to format string.
           25 % This call is based on the structure of the file used to generate this
           26 % code. If an error occurs for a different file, try regenerating the code
           27 % from the Import Tool.
           28 dataArray = textscan(fileID, formatSpec, 'Delimiter', delimiter,  'ReturnOnError', false);
           29 
           30 %% Close the text file.
           31 fclose(fileID);
           32 
           33 %% Convert the contents of columns containing numeric strings to numbers.
           34 % Replace non-numeric strings with NaN.
           35 raw = repmat({''},length(dataArray{1}),length(dataArray)-1);
           36 for col=1:length(dataArray)-1
           37     raw(1:length(dataArray{col}),col) = dataArray{col};
           38 end
           39 numericData = NaN(size(dataArray{1},1),size(dataArray,2));
           40 
           41 for col=[6,7,8,9,10,11,12,13,18,19,20,21,22,23,24,25,26,27]
           42     % Converts strings in the input cell array to numbers. Replaced non-numeric
           43     % strings with NaN.
           44     rawData = dataArray{col};
           45     for row=1:size(rawData, 1);
           46         % Create a regular expression to detect and remove non-numeric prefixes and
           47         % suffixes.
           48         regexstr = '(?<prefix>.*?)(?<numbers>([-]*(\d+[\,]*)+[\.]{0,1}\d*[eEdD]{0,1}[-+]*\d*[i]{0,1})|([-]*(\d+[\,]*)*[\.]{1,1}\d+[eEdD]{0,1}[-+]*\d*[i]{0,1}))(?<suffix>.*)';
           49         try
           50             result = regexp(rawData{row}, regexstr, 'names');
           51             numbers = result.numbers;
           52             
           53             % Detected commas in non-thousand locations.
           54             invalidThousandsSeparator = false;
           55             if any(numbers==',');
           56                 thousandsRegExp = '^\d+?(\,\d{3})*\.{0,1}\d*$';
           57                 if isempty(regexp(thousandsRegExp, ',', 'once'));
           58                     numbers = NaN;
           59                     invalidThousandsSeparator = true;
           60                 end
           61             end
           62             % Convert numeric strings to numbers.
           63             if ~invalidThousandsSeparator;
           64                 numbers = textscan(strrep(numbers, ',', ''), '%f');
           65                 numericData(row, col) = numbers{1};
           66                 raw{row, col} = numbers{1};
           67             end
           68         catch me
           69         end
           70     end
           71 end
           72 
           73 
           74 %% Split data into numeric and cell columns.
           75 rawNumericColumns = raw(:, [6,7,8,9,10,11,12,13,18,19,20,21,22,23,24,25,26,27]);
           76 rawCellColumns = raw(:, [1,2,3,4,5,14,15,16,17]);
           77 
           78 
           79 %% Allocate imported array to column variable names
           80 sampleid = rawCellColumns(:, 1);
           81 name = rawCellColumns(:, 2);
           82 email = rawCellColumns(:, 3);
           83 lat = rawCellColumns(:, 4);
           84 long = rawCellColumns(:, 5);
           85 be_conc = cell2mat(rawNumericColumns(:, 1));
           86 al_conc = cell2mat(rawNumericColumns(:, 2));
           87 c_conc = cell2mat(rawNumericColumns(:, 3));
           88 ne_conc = cell2mat(rawNumericColumns(:, 4));
           89 be_uncer = cell2mat(rawNumericColumns(:, 5));
           90 al_uncer = cell2mat(rawNumericColumns(:, 6));
           91 c_uncer = cell2mat(rawNumericColumns(:, 7));
           92 ne_uncer = cell2mat(rawNumericColumns(:, 8));
           93 be_prod = rawCellColumns(:, 6);
           94 al_prod = rawCellColumns(:, 7);
           95 c_prod = rawCellColumns(:, 8);
           96 ne_prod = rawCellColumns(:, 9);
           97 rock_density = cell2mat(rawNumericColumns(:, 9));
           98 epsilon_gla_min = cell2mat(rawNumericColumns(:, 10));
           99 epsilon_gla_max = cell2mat(rawNumericColumns(:, 11));
          100 epsilon_int_min = cell2mat(rawNumericColumns(:, 12));
          101 epsilon_int_max = cell2mat(rawNumericColumns(:, 13));
          102 t_degla = cell2mat(rawNumericColumns(:, 14));
          103 t_degla_uncer = cell2mat(rawNumericColumns(:, 15));
          104 record = cell2mat(rawNumericColumns(:, 16));
          105 record_threshold_min = cell2mat(rawNumericColumns(:, 17));
          106 record_threshold_max = cell2mat(rawNumericColumns(:, 18));
          107 
          108 
          109 %% Clear temporary variables
          110