|
19 | 19 | fitOptions = optimset('Display','iter','MaxIter',300);
|
20 | 20 |
|
21 | 21 | %%
|
22 |
| -GR = input('(1) Convolve GR-alpha + GR-beta;\n(2) ODES for GR-alpha + GR-beta;\n(3) SSAs\nChoose your destiny: '); |
| 22 | +GR = input('(1) Convolve GR-alpha + GR-beta with FSP;\n(2) ODES for GR-alpha + GR-beta;\n(3) SSAs\nChoose your destiny: '); |
23 | 23 |
|
24 | 24 | switch GR
|
25 | 25 | case 1
|
|
199 | 199 | % Specify dataset time points for GR-beta.
|
200 | 200 | ModelGRfit_b{1}.tSpan = ModelGRfit_b{1}.dataSet.times;
|
201 | 201 |
|
| 202 | + |
| 203 | + %% |
| 204 | + % PA = rand(2); PA = PA/(sum(PA,"all")); |
| 205 | + % PB = rand(2); PB = PB/(sum(PB,"all")); |
| 206 | + % % PA=[.5 .15;.25 .1];PB =PA; |
| 207 | + % PC = conv2(PA,PB) |
| 208 | + % %% |
| 209 | + % N = 100000; |
| 210 | + % PAs = zeros(size(PA)); |
| 211 | + % PBs = zeros(size(PB)); |
| 212 | + % PCs = zeros(size(PA,1)+size(PB,1)-1,... |
| 213 | + % size(PA,2)+size(PB,2)-1); |
| 214 | + % for i = 1:N |
| 215 | + % r = rand; |
| 216 | + % j = 1; |
| 217 | + % while sum(PA(1:j))<r |
| 218 | + % j = j+1; |
| 219 | + % end |
| 220 | + % PAs(j) = PAs(j) + 1/N; |
| 221 | + % [kA1,kA2] = ind2sub(size(PAs),j); |
| 222 | + % r = rand; |
| 223 | + % j = 1; |
| 224 | + % while sum(PB(1:j))<r |
| 225 | + % j = j+1; |
| 226 | + % end |
| 227 | + % PBs(j) = PBs(j) + 1/N; |
| 228 | + % [kB1,kB2] = ind2sub(size(PBs),j); |
| 229 | + % PCs(kA1+kB1-1,kA2+kB2-1) = PCs(kA1+kB1-1,kA2+kB2-1)+1/N; |
| 230 | + % end |
| 231 | + % PCs |
| 232 | + % PC |
| 233 | + % |
| 234 | + % %% REMOVE |
| 235 | + % ModelGR_a.solutionScheme = 'FSP'; |
| 236 | + % FSPsoln = ModelGR_a.solve; |
| 237 | + % solnTensor = double(FSPsoln.fsp{3}.p.data); |
| 238 | + % contourf(log10(solnTensor)); |
| 239 | + % |
| 240 | + % %% sample fake data |
| 241 | + % N = 100; |
| 242 | + % PAs = zeros(size(solnTensor)); |
| 243 | + % for i = 1:N |
| 244 | + % r = rand; |
| 245 | + % j = 1; |
| 246 | + % while sum(solnTensor(1:j))<r |
| 247 | + % j = j+1; |
| 248 | + % end |
| 249 | + % PAs(j) = PAs(j)+1; |
| 250 | + % % [kA1,kA2] = ind2sub(size(PAs),j); |
| 251 | + % end |
| 252 | + % |
| 253 | + % %% add scatter points to plot. |
| 254 | + % hold on |
| 255 | + % [rows,cols,vals] = find(PAs); |
| 256 | + % scatter(rows,cols,20,vals,'r','filled') |
| 257 | + % |
| 258 | + % %% compute likelihood |
| 259 | + % logLikelihood = sum(log(solnTensor(PAs>0)).*PAs((PAs>0)),"all"); |
| 260 | + |
| 261 | + |
202 | 262 | %% Solve for combined GR-alpha model for three Dex_Conc=Dex0 and fit using a single parameter set.
|
203 | 263 | for jj = 1:fitIters
|
204 | 264 | % Solve
|
|
361 | 421 | end
|
362 | 422 | end
|
363 | 423 |
|
| 424 | + %% resample data if wanted |
| 425 | + |
| 426 | + data = readtable('../EricModel/EricData/Gated_dataframe_Ron_020224_NormalizedGR_bins.csv'); |
| 427 | + |
| 428 | + % Filter the data if desired for particular Time_index and/or Dex_Conc |
| 429 | + filteredData = data(data.time == 150 & data.Dex_Conc == 10, :); |
| 430 | + |
| 431 | + % Randomly sample 1000 points from the filtered data |
| 432 | + numSamples = min(1000, height(filteredData)); % Ensure we don’t sample more than available data |
| 433 | + randomIndices = randperm(height(filteredData), numSamples); |
| 434 | + normgrnuc = filteredData.normgrnuc(randomIndices); |
| 435 | + normgrcyt = filteredData.normgrcyt(randomIndices); |
| 436 | + |
| 437 | + %% compute likelihood |
| 438 | + |
| 439 | + normgr = [filteredData.normgrcyt,filteredData.normgrnuc]; |
| 440 | + for logL=1:max(size(conv2solnTensor_postData)) |
| 441 | + logLikelihood = sum(log(conv2solnTensor_postData{logL}(normgr>0)).*normgr((normgr>0)),"all") |
| 442 | + end |
| 443 | + %% |
364 | 444 | save('conv2solnTensor_postData','GRpars_a','combinedGRModel_a', 'ModelGRfit_a','ModelGRfit_b','GRpars_b','GR_b_fspSoln', 'fspSolnsSMM')
|
365 | 445 |
|
366 | 446 | dusp1 = input('(0) GR-beta turns off the DUSP1 gene;\n(1) GR-beta has no effect on DUSP1;\nChoose your destiny: ');
|
|
707 | 787 |
|
708 | 788 | %% compute likelihood
|
709 | 789 | % logLikelihood = sum(log(conv2solnTensor{f}(PAs>0)).*PAs((PAs>0)),"all");
|
710 |
| - %logLikelihood = sum(log(conv2solnTensor_postData{t}(fspsoln_sptensor_a_postData{t}>0)).*fspsoln_sptensor_a_postData{t}((fspsoln_sptensor_a_postData{t}>0)),"all"); |
| 790 | + %logLikelihood = sum(log(conv2solnTensor_postData{t}(PAs>0)).*PAs((PAs>0)),"all"); |
711 | 791 |
|
712 | 792 | case 2
|
713 | 793 | %% ODEs
|
|
0 commit comments