Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Supplemental data 8b : mRNA degradation t0 distribution thalf distribution 250 25% 40% 140 ) 200 120 20% 20% 100 15% 10% 50 0 0 30 60 120 210 300 15% 80 60 10% 40 5% 5% 20 0% 0 330 time [s] 0% 1 2 3 4 5 6 7 8 9 0 5 5 5 0 5 0 0 0 0 0- 1- 2- 3- 4- 5- 6- 7- 8- 9-1 12. 5-1 17. 5-2 0-2 5-3 0-4 0-5 >5 - . - . 2 2 3 4 10 12 15 17 time [s] This part contains: Two Matlab program files (decay_fit.m and genex_fit.m) that can be used to calculate the half-life of mRNA from dynamic transcript data based on equation: mRNA(t)/mRNA(t0)= A + A*exp(-kd*(t-t0)) The data used for the calculation are stored in peNia_data_update.mat (6c) and Wang_data_update.mat (6d). As a summary, the data and results are also presented as an excel file (mRNA degradation.xls). 1- decay_fit_m %% decay_fit %% estimation of degradation constant of mRNA %% from dynamic transcript data (mRNA degradation.xls), for fitting process in Matlab data are also stored as peNia_data_update.mat and Wang_data_update.mat %% mRNA decay is modeled by a flat line y=A (before decay) and exponential y=A*exp(-kd*(t-t0)) for the decay itself, t0 is the time at which the decay starts %% results to be compared with Wang data (PNAS,2002) in which the kd is analysed with this program as well %% data structure %% time_vec = time vector of the raw data (z) %% genex = ratio matrix (m,z) %% genex_sd = std of the ratio (m,z) opt=optimset('fmincon'); opt=optimset(opt,'Display','off','Diagnostics','off','MaxIter',2000,'MaxFunEvals',10000,' TolX',1e-12,'TolFun',1e-12,'DiffMinChange',1e-8); %load data (time_vec, genex, genex_sd) M=input('processing peNia data (1) or Wang data (2)?') if M=1;load (peNia_data_upade); elseif M=2;load (Wang_data_update); end m=size(genex,1); zA=size(genex,2); ss_mat=[]; par_mat=[]; m_mat=[]; t_half_mat=[]; z=[]; ) 100 %( 25% 150 number of genes ( 30% %( ) number of genes ( ) 35% for gene=1:m gene %% screening data close all genex_i=genex(gene,:); genex_sd_i= genex_sd(gene,:); time_vec_i= time_vec; pR= find(genex_i==0); genex_i(pR)=[] genex_sd_i(pR)=[] time_vec_i(pR)=[] z(gene)= zA-length(pR) pause %%%% adjusting the weight matrix pE= find(genex_sd_i==1); if length(pE)<z(gene) genex_sd_i(pE)= mean(genex_sd_i); % for peNia's data since if std=0 means perfect data or in case of Wang's data std=0 means only 1 measurement available (much simplification because a lot of the data do not have any duplicate) else genex_sd_i(pE)=1; % if all data were taken one only, no weight is applied to the optimization process end pE= find(genex_sd_i==0);genex_sd_i(pE)=1 pause if z(gene)<=1 m_mat=[m_mat;0]; ss_mat=[ss_mat; 0]; par_mat=[par_mat; [0 0]]; else errorbar(time_vec_i,genex_i,genex_sd_i,'r*');title(num2str(gene)); hold on %% estimation of model parameters: A, kd ss_vec=[]; par_vec=[]; for timepoint=1:z(gene)-1 [parameters,ss]=FMINCON('genex_fit',[1;0.01],[],[],[],[],[0.5 10],[],opt,timepoint,genex_i,genex_sd_i,time_vec_i,z(gene)); ss_vec=[ss_vec ss]; par_vec=[par_vec parameters]; sim_tot= parameters(1).* [ones(1,timepoint) parameters(2).*(time_vec_i(timepoint+1:z(gene))-time_vec_i(timepoint)))]; plot(time_vec_i,sim_tot,'b'); end hold off pause %% choosing the best result gene ss_vec par_vec maxi= find(ss_vec==min(ss_vec)) if length(maxi)>0 if length(maxi)>1 0],[2 exp(- maxi=max(maxi); end m_mat=[m_mat; maxi]; ss_mat=[ss_mat; ss_vec(maxi)]; par_mat=[par_mat; (par_vec(:,maxi))']; else m_mat=[m_mat;0]; ss_mat=[ss_mat; 0]; par_mat=[par_mat; [0 0]]; end pause close all end end t_half_mat=-log(0.5)./par_mat(:,2)/60 2- genex_fit m % genex_fit function [ss]=genex_fit(parameters,timepoint,genex_i,genex_sd_i,time_vec_i,z) sim_tot= parameters(1).* [ones(1,timepoint) exp(parameters(2).*(time_vec_i(timepoint+1:z)-time_vec_i(timepoint)))]; ss=((sim_tot-genex_i)*inv(diag((genex_sd_i).^2))*(sim_tot-genex_i)')/z;