0001
0002
0003 function Found = xFindCandidates(File,Model,Verbose)
0004
0005 Found = uint16([]);
0006
0007 starttime = cputime;
0008
0009 for f=1:length(File),
0010 if File(f).NumNT > 0,
0011 filestarttime = cputime;
0012 Codes = cat(1,File(f).NT(:).Code);
0013 if isfield(Model,'OKPairs') | isfield(Model,'ExPairs'),
0014 N = length(Codes);
0015 PC = Codes * ones(1,N) + 4*(ones(N,1)*(Codes'-1));
0016 else
0017 PC = [];
0018 end
0019
0020 for i=2:min(9,Model.NumNT)
0021 for j=1:(i-1)
0022 PS{i,j} = xPairwiseScreen(File(f),Codes,Model,i,j,PC);
0023 PS{j,i} = PS{i,j}';
0024 NNZ(i,j) = nnz(PS{i,j});
0025 NNZ(j,i) = NNZ(i,j);
0026 end
0027 end
0028
0029 Perm = sFindPermutation(NNZ);
0030 PS = PS(Perm,Perm);
0031
0032 [List,SS] = xFindPolyhedra(Model,min(9,Model.NumNT),PS);
0033
0034 if ~isempty(List),
0035 List(:,Perm) = List(:,1:min(9,Model.NumNT));
0036 end
0037
0038
0039 for r = 10:Model.NumNT,
0040 if length(List(:,1)) > 0,
0041 for q = 1:(r-1),
0042 S{r,q} = xPairwiseScreen(File(f),Codes,Model,r,q);
0043 end
0044 [List,SS] = xAddNucleotide(Model,List,S,SS,r);
0045 end
0046
0047 end
0048
0049
0050
0051 [s,t] = size(List);
0052 if s > 0,
0053 Found = [Found; [List uint16(f*ones(s,1))]];
0054 if Verbose > 0,
0055 fprintf('Found %7d possibilities from %10s in %8.3f seconds\n', s, File(f).Filename, cputime-filestarttime);
0056 end
0057 end
0058
0059 drawnow
0060
0061 end
0062 end
0063
0064 [s,t] = size(Found);
0065 if (length(File) > 1) && (Verbose > 0),
0066 fprintf('Found %7d possible candidates in %8.3f seconds\n', s, (cputime-starttime));
0067 end
0068
0069 drawnow
0070