123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244 |
- global SWgrowthArea
- global scLst
- global ImParMat
- global projectScansDir
- global matFile
- global fhconsole
- global easyResultsDir
- global printResultsDir
- global pointMapsResultsDir
- global fotosResultsDir
- global matDir
- global ImWidth
- global ImHeigth
- global numRows
- global numCols
- global scan
- global scanMax
- global tptLength
- global easyDir
- numRows=24; % for Single Vertical
- numCols=16; % for Single Vertical
- % CIRCLE related
- doCircle=1; % use Circle area analysis 14_0807
- radius=14;
- ImParMat(10)=radius;
- ImParMat(11)=doCircle;
- % TODO what is this for?
- Fflg=1;
- % Don't think we need this
- % fclose('all'); % close all open files
- % Unset some vars just in case they are already set
- clear('scanIntens','Scanfiles','pathname','tifFileLstP4');
- try
- clf(fhconsole,'reset');
- catch
- end
- % No idea why we're doing this so commenting out
- % close
- % EASYconsole
- if exist(matFile, 'file')
- bkUpMatFile=fullfile(matFile, '.bk');
- copyfile(matFile,bkUpMatFile);
- end
- % Reloacated from 'PTmats' to prevent potential overwrite when PTmats is
- % copied into new job when the PT template is about the same. We also
- % now have a default template if one is not made. i.e., when the images
- % from the new experiment are too sketchy to make a good pintool
- % template. By moving it to 'Fotos' we avoid possible issues due to
- % copying the Nbdg.mat file along with the default template '.mat' files.
- % A copy of Ndbg.mat is placed also saved to the 'PTmats' directory
- % after each run to allow previous version of EASY to access data made
- % by EASY versions after 20_0819.
- try
- load(fullfile(fotosResultsDir,'Nbdg')); % modified to load from 'Fotos' 20_0819
- catch
- load(fullfile(pointMapsResultsDir,'Nbdg')); % left in to accomodate loads of work before 20_0819
- end
- % Load Fotos stored data
- fotosToLoad={'Coordinates', 'BGatTpts', 'anlZones', 'NCFparms'};
- for i=1:length(fotosToLoad)
- try
- load(fullfile(fotosResultsDir, fotosToLoad{i}));
- catch
- load(fullfile(easyDir,'parameters'));
- end
- end
- % Get Print Times
- PrintTimes=[];
- scLst={};
- % Parameter Entry
- NImParamRadiusGui(projectScansDir); % Ncode 122111replaced removed ,numOfPrtTimes)
- width=24;
- widthEx=width-1; % width extention from reference point
- dither=ImParMat(6);
- radius=ImParMat(10);
- NIcircle;
- % Load Stuff
- lastPlateOnLastScan=1; % Ncode
- if size(scLst,1)==1
- SWsingleSc=1;
- else
- SWsingleSc=0;
- end
- dvec=datevec(datestr(floor(now))); %method to get current offset year '01-Jan-"currentyr"'
- dvec(2)=1;
- dvec(3)=1;
- % yrOffset=datenum('01-Jan-2012');%(dvec); %('01-Jan-2009'); %time num default is currentyear jan1
- numScans=size(scLst,1);
- if(isequal(SWsingleSc,1))
- selScan=str2double(char(scLst(1)));
- else
- % startScan=1;
- end
- SWgrowthArea=ImParMat(9);
- load(fullfile(pointMapsResultsDir,'NPTmapSearch'));
- PTmapPos=detPos;
- selScanNumLst=[];
- Scanfiles=[];
- pathname=[];
- for ii=1:length(scLst)
- if (SWsingleSc == 1)
- % TODO proably need to make this more explicit with paths
- [Scanfiles, pathname]=uigetfile('*.bmp', 'Select files','MultiSelect','on'); % change '*hr*.bmp' 12/20/2011
- if ischar(Scanfiles)
- scd=imread(char(Scanfiles));
- tptLength=1;
- else
- scd=imread(char(Scanfiles(1,1)));
- tptLength=length(Scanfiles);
- end
- ImHeigth=size(scd,1);
- ImWidth=size(scd,2);
- sc=scd(1:ImHeigth,1:ImWidth);
- end
- numFiles=size(Scanfiles,2);
- % Initialize tifFilesLst for parfor loop
- dir(fullfile(projectScansDir, char(scLst(ii)), '*.bmp'));
- numFiles=length(tifFileLst4MultiT);
- tptLength=numFiles;
- tifFileLstP4{ii}={tifFileLst4MultiT.name};
- end
- for jj=1:numScans % startScan:numScans
- selScan=str2double(char(scLst(jj)));
- selScanNumLst(jj)=selScan;
- end
- selScanNumLst2=selScanNumLst; % function passthrough, passback to par4gbl_Main 20_0205
- % Preallocation
- scCount=[];
- TmpexpScanIntens00=cell(1); % cell(1,scanMax);
- TmpFexpScanSpots00=cell(1); % cell(1,scanMax);
- TmpFexpScanBMtp00=cell(1); % cell(1,scanMax);
- TmpanlZoneRefs00=cell(1); % cell(1,scanMax);
- Tmpsbdg00=cell(1);
- TmpexpScanIntens4=cell(1,numScans);
- TmpFexpScanSpots4=cell(1,numScans);
- TmpFexpScanBMtp4=cell(1,numScans);
- TmpanlZoneRefs4=cell(1,numScans);
- Tmpsbdg4=cell(1,numScans);
- TmpexpScanIntens5=cell(1,numScans);
- TmpFexpScanSpots5=cell(1,numScans);
- TmpFexpScanBMtp5=cell(1,numScans);
- TmpanlZoneRefs5=cell(1,numScans);
- Tmpsbdg5=cell(1,numScans);
- p4L00=cell(18,1);
- p4L0=p4L00;
- p4L4=cell(18,numScans);
- p4L5=p4L4;
- Ag=ones(384);
- CFscanIntens=zeros(16,24);
-
- [p4L4,TmpexpScanIntens5,TmpFexpScanSpots5,TmpFexpScanBMtp5,TmpanlZoneRefs5,Tmpsbdg5]= ...
- p4loop8c(parMat,tptLength,numScans,selScanNumLst,SWsingleSc,Fflg,PTmapPos,optCirMask,diaExt,doCircle,cirPixA,cirMask,width, ...
- TmpexpScanIntens00,TmpFexpScanSpots00,TmpFexpScanBMtp00,TmpanlZoneRefs00,scCount,tifFileLstP4,pathname,ImParMat, ...
- numRows,numCols,scLst,easyResultsDir,projectScansDir, p4L00,TmpexpScanIntens4,TmpFexpScanSpots4,TmpFexpScanBMtp4,TmpanlZoneRefs4, ...
- Tmpsbdg00,Tmpsbdg4);
- for scanCnt=1:numScans
- selScan=p4L4{16,scanCnt}; % determine the actual scan in the scanCnt parfor distributed "id"
- scan(selScan).plate(1).tSeries=cell2mat(p4L4(1,scanCnt));
- scan(selScan).plate(1).t0Series=cell2mat(p4L4(2,scanCnt));
- scan(selScan).plate(1).printTm=cell2mat(p4L4(3,scanCnt));
- scan(selScan).plate(1).intens=cell2mat(p4L4(4,scanCnt));
- scan(selScan).plate(1).rc=p4L4(5,scanCnt);
- scan(selScan).plate(1).pIndx=cell2mat(p4L4(6,scanCnt));
- scan(selScan).plate(1).Ag=cell2mat(p4L4(7,scanCnt));
- scan(selScan).plate(1).selIntens=p4L4(8,scanCnt);
- scan(selScan).plate(1).selTimes=p4L4(9,scanCnt);
- scan(selScan).plate(1).filterTimes=p4L4(10,scanCnt);
- scan(selScan).plate(1).normIntens=p4L4(11,scanCnt);
- % scan(selScan).plate(1).CFparameters=p4L4(12,scanCnt); %Need to convert to a matrix form like Old versions
- CFparm(1:384)=p4L4{12,scanCnt}(1:384);
- scan(selScan).plate(1).CFparameters=CFparm;
- scan(selScan).plate(1).CFdate=p4L4(13,scanCnt);
- scan(selScan).plate(1).CFout=cell2mat(p4L4(14,scanCnt));
- scan(selScan).plate(1).CFoutStd=cell2mat(p4L4(15,scanCnt));
- scan(selScan).Awindow=cell2mat(p4L4(17,scanCnt));
- scan(selScan).Idate=cell2mat(p4L4(18,scanCnt));
- expScanIntens(selScan)=TmpexpScanIntens5(scanCnt);
- FexpScanSpots(selScan)=TmpFexpScanSpots5(scanCnt);
- FexpScanBMtp(selScan)=TmpFexpScanBMtp5(scanCnt);
- anlZoneRefs(selScan)=TmpanlZoneRefs5(scanCnt);
- if ~isempty(Tmpsbdg5{scanCnt})
- sbdg(selScan)=Tmpsbdg5(scanCnt);
- else
- sbdg{selScan}=uint8(zeros(24,16,4));
- end
- end
- % Save data in .mat files
- save(matFile,'scan');
- % save((fullfile(easyResultsDir,'PTmats','Nbdg')), 'sbdg'); % legacy location can probably get rid of in time
- save((fullfile(fotosResultsDir,'Nbdg')), 'sbdg');
- save((fullfile(fotosResultsDir,'Coordinates')),'FexpScanSpots') % saves frames at each tPt
- save((fullfile(fotosResultsDir,'BGatTpts')),'FexpScanBMtp')
- save((fullfile(fotosResultsDir,'anlZones')),'anlZoneRefs') % saves anl Positions at each tPt
- % Print FitResults
- fileExt='.txt';
- filePrefix='FitResults_';
- for scanCnt=1:numScans
- selScan=p4L4{16,scanCnt}; % determine the actual scan in the scanCnt parfor distributed "id"
- fileSuffix=sprintf('Scan%d_Plate%d', selScan, 1);
- fileNamePlate=[filePrefix fileSuffix fileExt];
- fileName=fullfile(printResultsDir, fileNamePlate); % [outputDirectory fileNamePlate];
- % This,fprint for loop,is an very old legacy feature which slows processing. Could be
- % removed but allows easy observation of how a run is progressing and can be
- % used as a diagnostic tool.
- outCprint=p4L4;
- fid=fopen(fileName,'w');
- fprintf(fid, 'Num.\tAUC\tMSR\tK\tr\tl\tR-squared\tK-lower\tK-upper\tr-lower\tr-upper\tl-upper\tl-lower\tArea\tLastInten\tSpineMaxRateTimePt\tLastFitTimePt\n');
- for n=1:384 % startCount:numCultures
- fprintf(fid,'%d\t',n);
- fprintf(fid, '%.5f\t%.5f\t%.5f\t%.5f\t%.5f\t%.5f\t%.5f\t%.5f\t%.5f\t%.5f\t%.5f\t%.5f\t%.5f\t%.5f\t%.5f\t%.5f\n',...
- outCprint{14,scanCnt}(n,1),outCprint{14,scanCnt}(n,2),outCprint{14,scanCnt}(n,3),outCprint{14,scanCnt}(n,4),...
- outCprint{14,scanCnt}(n,5),outCprint{14,scanCnt}(n,6),outCprint{14,scanCnt}(n,7),outCprint{14,scanCnt}(n,8),...
- outCprint{14,scanCnt}(n,9),outCprint{14,scanCnt}(n,10),outCprint{14,scanCnt}(n,11),outCprint{14,scanCnt}(n,12),...
- outCprint{14,scanCnt}(n,13),outCprint{14,scanCnt}(n,14),outCprint{14,scanCnt}(n,15),outCprint{14,scanCnt}(n,16));
- end
- fclose(fid);
- end
|