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