diff --git a/doc/core/checkModelStruct.html b/doc/core/checkModelStruct.html index 90aa5bf6..5189ae79 100644 --- a/doc/core/checkModelStruct.html +++ b/doc/core/checkModelStruct.html @@ -305,116 +305,128 @@

SOURCE CODE ^'The following reactions have bounds contradicting their reversibility:'; 0247 dispEM(EM,throwErrors,model.rxns(model.lb<0 & model.rev==0),trimWarnings); 0248 -0249 %Mapping of compartments -0250 if isfield(model,'compOutside') -0251 EM='The following compartments are in "compOutside" but not in "comps":'; -0252 dispEM(EM,throwErrors,setdiff(model.compOutside,[{''};model.comps]),trimWarnings); -0253 end -0254 -0255 %Met names which start with number -0256 I=false(numel(model.metNames),1); -0257 for i=1:numel(model.metNames) -0258 index=strfind(model.metNames{i},' '); -0259 if any(index) -0260 if any(str2double(model.metNames{i}(1:index(1)-1))) -0261 I(i)=true; -0262 end -0263 end -0264 end -0265 EM='The following metabolite names begin with a number directly followed by space:'; -0266 dispEM(EM,throwErrors,model.mets(I),trimWarnings); -0267 -0268 %Non-parseable composition -0269 if isfield(model,'metFormulas') -0270 [~, ~, exitFlag]=parseFormulas(model.metFormulas,true,false); -0271 EM='The composition for the following metabolites could not be parsed:'; -0272 dispEM(EM,false,model.mets(exitFlag==-1),trimWarnings); -0273 end -0274 -0275 %Check if there are metabolites with different names but the same MIRIAM -0276 %codes -0277 if isfield(model,'metMiriams') -0278 miriams=containers.Map(); -0279 for i=1:numel(model.mets) -0280 if ~isempty(model.metMiriams{i}) -0281 %Loop through and add for each miriam -0282 for j=1:numel(model.metMiriams{i}.name) -0283 %Get existing metabolite indexes -0284 current=strcat(model.metMiriams{i}.name{j},'/',model.metMiriams{i}.value{j}); -0285 if isKey(miriams,current) -0286 existing=miriams(current); -0287 else -0288 existing=[]; -0289 end -0290 miriams(current)=[existing;i]; -0291 end -0292 end -0293 end -0294 -0295 %Get all keys -0296 allMiriams=keys(miriams); -0297 -0298 hasMultiple=false(numel(allMiriams),1); -0299 for i=1:numel(allMiriams) -0300 if numel(miriams(allMiriams{i}))>1 -0301 %Check if they all have the same name -0302 if numel(unique(model.metNames(miriams(allMiriams{i}))))>1 -0303 if ~regexp(allMiriams{i},'^sbo\/SBO:') % SBO terms are expected to be multiple -0304 hasMultiple(i)=true; -0305 end -0306 end -0307 end -0308 end +0249 %Multiple or no objective functions not allowed in SBML L3V1 FBCv2 +0250 if find(model.c)>1 | +0251 EM='The model has multiple objective functions, which might be intended, but will not allow export to SBML'; +0252 dispEM(EM,false); +0253 else ~any(model.c) +0254 EM='The model no objective functions, which might be intended, but will not allow export to SBML'; +0255 dispEM(EM,false); +0256 end +0257 +0258 EM='The following reactions have contradicting bounds:'; +0259 dispEM(EM,throwErrors,model.rxns(model.lb>model.ub),trimWarnings); +0260 +0261 %Mapping of compartments +0262 if isfield(model,'compOutside') +0263 EM='The following compartments are in "compOutside" but not in "comps":'; +0264 dispEM(EM,throwErrors,setdiff(model.compOutside,[{''};model.comps]),trimWarnings); +0265 end +0266 +0267 %Met names which start with number +0268 I=false(numel(model.metNames),1); +0269 for i=1:numel(model.metNames) +0270 index=strfind(model.metNames{i},' '); +0271 if any(index) +0272 if any(str2double(model.metNames{i}(1:index(1)-1))) +0273 I(i)=true; +0274 end +0275 end +0276 end +0277 EM='The following metabolite names begin with a number directly followed by space:'; +0278 dispEM(EM,throwErrors,model.mets(I),trimWarnings); +0279 +0280 %Non-parseable composition +0281 if isfield(model,'metFormulas') +0282 [~, ~, exitFlag]=parseFormulas(model.metFormulas,true,false); +0283 EM='The composition for the following metabolites could not be parsed:'; +0284 dispEM(EM,false,model.mets(exitFlag==-1),trimWarnings); +0285 end +0286 +0287 %Check if there are metabolites with different names but the same MIRIAM +0288 %codes +0289 if isfield(model,'metMiriams') +0290 miriams=containers.Map(); +0291 for i=1:numel(model.mets) +0292 if ~isempty(model.metMiriams{i}) +0293 %Loop through and add for each miriam +0294 for j=1:numel(model.metMiriams{i}.name) +0295 %Get existing metabolite indexes +0296 current=strcat(model.metMiriams{i}.name{j},'/',model.metMiriams{i}.value{j}); +0297 if isKey(miriams,current) +0298 existing=miriams(current); +0299 else +0300 existing=[]; +0301 end +0302 miriams(current)=[existing;i]; +0303 end +0304 end +0305 end +0306 +0307 %Get all keys +0308 allMiriams=keys(miriams); 0309 -0310 %Print output -0311 EM='The following MIRIAM strings are associated to more than one unique metabolite name:'; -0312 dispEM(EM,false,allMiriams(hasMultiple),trimWarnings); -0313 end -0314 -0315 %Check if there are metabolites with different names but the same InChI -0316 %codes -0317 if isfield(model,'inchis') -0318 inchis=containers.Map(); -0319 for i=1:numel(model.mets) -0320 if ~isempty(model.inchis{i}) -0321 %Get existing metabolite indexes -0322 if isKey(inchis,model.inchis{i}) -0323 existing=inchis(model.inchis{i}); -0324 else -0325 existing=[]; -0326 end -0327 inchis(model.inchis{i})=[existing;i]; -0328 end -0329 end -0330 -0331 %Get all keys -0332 allInchis=keys(inchis); -0333 -0334 hasMultiple=false(numel(allInchis),1); -0335 for i=1:numel(allInchis) -0336 if numel(inchis(allInchis{i}))>1 -0337 %Check if they all have the same name -0338 if numel(unique(model.metNames(inchis(allInchis{i}))))>1 -0339 hasMultiple(i)=true; -0340 end -0341 end -0342 end -0343 -0344 %Print output -0345 EM='The following InChI strings are associated to more than one unique metabolite name:'; -0346 dispEM(EM,false,allInchis(hasMultiple),trimWarnings); -0347 end -0348 end -0349 -0350 function I=duplicates(strings) -0351 I=false(numel(strings),1); -0352 [J, K]=unique(strings); -0353 if numel(J)~=numel(strings) -0354 L=1:numel(strings); -0355 L(K)=[]; -0356 I(L)=true; -0357 end -0358 end +0310 hasMultiple=false(numel(allMiriams),1); +0311 for i=1:numel(allMiriams) +0312 if numel(miriams(allMiriams{i}))>1 +0313 %Check if they all have the same name +0314 if numel(unique(model.metNames(miriams(allMiriams{i}))))>1 +0315 if ~regexp(allMiriams{i},'^sbo\/SBO:') % SBO terms are expected to be multiple +0316 hasMultiple(i)=true; +0317 end +0318 end +0319 end +0320 end +0321 +0322 %Print output +0323 EM='The following MIRIAM strings are associated to more than one unique metabolite name:'; +0324 dispEM(EM,false,allMiriams(hasMultiple),trimWarnings); +0325 end +0326 +0327 %Check if there are metabolites with different names but the same InChI +0328 %codes +0329 if isfield(model,'inchis') +0330 inchis=containers.Map(); +0331 for i=1:numel(model.mets) +0332 if ~isempty(model.inchis{i}) +0333 %Get existing metabolite indexes +0334 if isKey(inchis,model.inchis{i}) +0335 existing=inchis(model.inchis{i}); +0336 else +0337 existing=[]; +0338 end +0339 inchis(model.inchis{i})=[existing;i]; +0340 end +0341 end +0342 +0343 %Get all keys +0344 allInchis=keys(inchis); +0345 +0346 hasMultiple=false(numel(allInchis),1); +0347 for i=1:numel(allInchis) +0348 if numel(inchis(allInchis{i}))>1 +0349 %Check if they all have the same name +0350 if numel(unique(model.metNames(inchis(allInchis{i}))))>1 +0351 hasMultiple(i)=true; +0352 end +0353 end +0354 end +0355 +0356 %Print output +0357 EM='The following InChI strings are associated to more than one unique metabolite name:'; +0358 dispEM(EM,false,allInchis(hasMultiple),trimWarnings); +0359 end +0360 end +0361 +0362 function I=duplicates(strings) +0363 I=false(numel(strings),1); +0364 [J, K]=unique(strings); +0365 if numel(J)~=numel(strings) +0366 L=1:numel(strings); +0367 L(K)=[]; +0368 I(L)=true; +0369 end +0370 end
Generated by m2html © 2005
\ No newline at end of file diff --git a/doc/external/kegg/getKEGGModelForOrganism.html b/doc/external/kegg/getKEGGModelForOrganism.html index dfac9da3..b60b69fb 100644 --- a/doc/external/kegg/getKEGGModelForOrganism.html +++ b/doc/external/kegg/getKEGGModelForOrganism.html @@ -1249,7 +1249,7 @@

SOURCE CODE ^end 0934 fprintf('\b\b\b\b\b\b\b\b\b\b\b\b\b\b\bCOMPLETE\n'); 0935 else -0936 fprintf(['Querying <strong>' fastaFile '</strong> against the KEGG Orthology specific HMMs... COMPLETE\n']); +0936 fprintf(['Querying <strong>' strrep(fastaFile,'\','/') '</strong> against the KEGG Orthology specific HMMs... COMPLETE\n']); 0937 end 0938 0939 diff --git a/doc/installation/checkInstallation.html b/doc/installation/checkInstallation.html index b0381763..7ffd1c56 100644 --- a/doc/installation/checkInstallation.html +++ b/doc/installation/checkInstallation.html @@ -72,177 +72,179 @@

SOURCE CODE ^'\n*** THE RAVEN TOOLBOX - DEVELOPMENT VERSION ***\n\n'); 0023 end 0024 -0025 fprintf('Checking if RAVEN is on the MATLAB path...\t\t\t\t\t\t\t\t\t'); -0026 if ismember(ravenDir,paths) -0027 fprintf('OK\n'); -0028 else -0029 fprintf('OK (just added)\n'); -0030 subpath=regexp(genpath(ravenDir),pathsep,'split'); %List all subdirectories -0031 pathsToKeep=cellfun(@(x) isempty(strfind(x,'.git')),subpath) & cellfun(@(x) isempty(strfind(x,'doc')),subpath); -0032 addpath(strjoin(subpath(pathsToKeep),pathsep)); -0033 savepath -0034 end -0035 -0036 %Add the required classes to the static Java path if not already added -0037 addJavaPaths(); -0038 -0039 excelFile=fullfile(ravenDir,'tutorial','empty.xlsx'); -0040 xmlFile=fullfile(ravenDir,'tutorial','empty.xml'); -0041 matFile=fullfile(ravenDir,'tutorial','empty.mat'); -0042 -0043 %Check if it is possible to parse an Excel file -0044 fprintf('Checking if it is possible to parse a model in Microsoft Excel format...\t'); -0045 try -0046 importExcelModel(excelFile,false,false,true); -0047 fprintf('OK\n'); -0048 catch -0049 fprintf('Not OK\n'); -0050 end -0051 -0052 %Check if it is possible to import an SBML model using libSBML -0053 fprintf('Checking if it is possible to import an SBML model using libSBML...\t\t\t'); -0054 try -0055 importModel(xmlFile); -0056 try -0057 libSBMLver=OutputSBML; % Only works in libSBML 5.17.0+ -0058 fprintf('OK\n'); -0059 catch -0060 fprintf(['Not OK\n\n'... -0061 'An older libSBML version was found, update to version 5.17.0 or higher\n'... -0062 'for a significant improvement of model import\n\n']); -0063 end -0064 catch -0065 fprintf(['Not OK\nTo import SBML models, download libSBML from\n'... -0066 'http://sbml.org/Software/libSBML/Downloading_libSBML and add to MATLAB path\n']); -0067 end -0068 -0069 %Define values for keepSolver and workingSolvers, needed for solver -0070 %functionality check -0071 keepSolver=false; -0072 workingSolvers=''; -0073 %Get current solver. Set it to 'none', if it is not set -0074 if ~ispref('RAVEN','solver') -0075 fprintf('Solver found in preferences... NONE\n'); -0076 setRavenSolver('none'); -0077 curSolv=getpref('RAVEN','solver'); -0078 else +0025 fprintf(['MATLAB R' version('-release') ' detected\n\n']); +0026 +0027 fprintf('Checking if RAVEN is on the MATLAB path...\t\t\t\t\t\t\t\t\t'); +0028 if ismember(ravenDir,paths) +0029 fprintf('OK\n'); +0030 else +0031 fprintf('OK (just added)\n'); +0032 subpath=regexp(genpath(ravenDir),pathsep,'split'); %List all subdirectories +0033 pathsToKeep=cellfun(@(x) isempty(strfind(x,'.git')),subpath) & cellfun(@(x) isempty(strfind(x,'doc')),subpath); +0034 addpath(strjoin(subpath(pathsToKeep),pathsep)); +0035 savepath +0036 end +0037 +0038 %Add the required classes to the static Java path if not already added +0039 addJavaPaths(); +0040 +0041 excelFile=fullfile(ravenDir,'tutorial','empty.xlsx'); +0042 xmlFile=fullfile(ravenDir,'tutorial','empty.xml'); +0043 matFile=fullfile(ravenDir,'tutorial','empty.mat'); +0044 +0045 %Check if it is possible to parse an Excel file +0046 fprintf('Checking if it is possible to parse a model in Microsoft Excel format...\t'); +0047 try +0048 importExcelModel(excelFile,false,false,true); +0049 fprintf('OK\n'); +0050 catch +0051 fprintf('Not OK\n'); +0052 end +0053 +0054 %Check if it is possible to import an SBML model using libSBML +0055 fprintf('Checking if it is possible to import an SBML model using libSBML...\t\t\t'); +0056 try +0057 importModel(xmlFile); +0058 try +0059 libSBMLver=OutputSBML; % Only works in libSBML 5.17.0+ +0060 fprintf('OK\n'); +0061 catch +0062 fprintf(['Not OK\n\n'... +0063 'An older libSBML version was found, update to version 5.17.0 or higher\n'... +0064 'for a significant improvement of model import\n\n']); +0065 end +0066 catch +0067 fprintf(['Not OK\nTo import SBML models, download libSBML from\n'... +0068 'http://sbml.org/Software/libSBML/Downloading_libSBML and add to MATLAB path\n']); +0069 end +0070 +0071 %Define values for keepSolver and workingSolvers, needed for solver +0072 %functionality check +0073 keepSolver=false; +0074 workingSolvers=''; +0075 %Get current solver. Set it to 'none', if it is not set +0076 if ~ispref('RAVEN','solver') +0077 fprintf('Solver found in preferences... NONE\n'); +0078 setRavenSolver('none'); 0079 curSolv=getpref('RAVEN','solver'); -0080 fprintf(['Solver found in preferences... ',curSolv,'\n']); -0081 end -0082 -0083 %Check if it is possible to solve an LP problem using different solvers -0084 solver={'gurobi','cobra'}; -0085 -0086 for i=1:numel(solver) -0087 fprintf(['Checking if it is possible to solve an LP problem using ',solver{i},'...\t\t\t']); -0088 try -0089 setRavenSolver(solver{i}); -0090 load(matFile); -0091 solveLP(emptyModel); -0092 workingSolvers=strcat(workingSolvers,';',solver{i}); -0093 fprintf('OK\n'); -0094 if strcmp(curSolv,solver{i}) -0095 keepSolver=true; -0096 end -0097 catch -0098 fprintf('Not OK\n'); -0099 end -0100 end -0101 -0102 if keepSolver -0103 %The solver set in curSolv is functional, so the settings are restored -0104 %to the ones which were set before running checkInstallation -0105 setRavenSolver(curSolv); -0106 fprintf(['Preferred solver... KEPT\nSolver saved as preference... ',curSolv,'\n\n']); -0107 elseif ~isempty(workingSolvers) -0108 %There are working solvers, but the none of them is the solver defined -0109 %by curSolv. The first working solver is therefore set as RAVEN solver -0110 workingSolvers=regexprep(workingSolvers,'^;',''); -0111 workingSolvers=regexprep(workingSolvers,';.+$',''); -0112 %Only one working solver should be left by now in workingSolvers -0113 setRavenSolver(workingSolvers); -0114 fprintf(['Preferred solver... NEW\nSolver saved as preference... ',workingSolvers,'\n\n']); -0115 else -0116 %No functional solvers were found, so the setting is restored back to -0117 %original -0118 setRavenSolver(curSolv); -0119 fprintf(['WARNING: No working solver was found!\n'... -0120 'Install the solver, set it using setRavenSolver(''solverName'') and run checkInstallation again\n'... -0121 'Available solverName options are ''mosek'', ''gurobi'' and ''cobra''\n\n']); -0122 end -0123 -0124 if ismac -0125 binEnd='.mac'; -0126 elseif isunix -0127 binEnd=''; -0128 elseif ispc -0129 binEnd='.exe'; -0130 end -0131 fprintf('Checking essential binary executables:\n'); -0132 fprintf('NOTE: Broken binary executables <strong>must be fixed</strong> before running RAVEN\n'); -0133 fprintf(['\tmakeblastdb' binEnd '...\t\t\t\t\t\t\t']); -0134 [res,~]=system(['"' fullfile(ravenDir,'software','blast+',['makeblastdb' binEnd]) '"']); -0135 if res==1 -0136 fprintf('OK\n'); -0137 else -0138 fprintf('Not OK! Download/compile the binary and run checkInstallation again\n'); -0139 end -0140 fprintf(['\tblastp' binEnd '...\t\t\t\t\t\t\t\t']); -0141 [res,~]=system(['"' fullfile(ravenDir,'software','blast+',['blastp' binEnd]) '"']); -0142 if res==1 -0143 fprintf('OK\n'); -0144 else -0145 fprintf('Not OK! Download/compile the binary and run checkInstallation again\n'); -0146 end -0147 fprintf(['\tdiamond' binEnd '...\t\t\t\t\t\t\t\t']); -0148 [res,~]=system(['"' fullfile(ravenDir,'software','diamond',['diamond' binEnd]) '"']); -0149 if res==1 -0150 fprintf('OK\n'); -0151 else -0152 fprintf('Not OK! Download/compile the binary and run checkInstallation again\n'); -0153 end -0154 fprintf(['\thmmsearch' binEnd '...\t\t\t\t\t\t\t']); -0155 [res,~]=system(['"' fullfile(ravenDir,'software','hmmer',['hmmsearch' binEnd]) '"']); -0156 if res==1 -0157 fprintf('OK\n'); -0158 else -0159 fprintf('Not OK! Download/compile the binary and run checkInstallation again\n'); -0160 end -0161 fprintf('Checking non-essential/development binary executables:\n'); -0162 fprintf('NOTE: Only fix these binaries if planning to use KEGG FTP dump files in getKEGGModelForOrganism\n'); -0163 fprintf(['\tcd-hit' binEnd '...\t\t\t\t\t\t\t\t']); -0164 [res,~]=system(['"' fullfile(ravenDir,'software','cd-hit',['cd-hit' binEnd]) '"']); -0165 if res==1 -0166 fprintf('OK\n'); -0167 else -0168 fprintf('Not OK! If necessary, download/compile the binary and run checkInstallation again\n'); -0169 end -0170 fprintf('\tmafft.bat...\t\t\t\t\t\t\t\t'); -0171 if ismac -0172 [res,~]=system(['"' fullfile(ravenDir,'software','mafft','mafft-mac','mafft.bat') '" --help ']); -0173 elseif isunix -0174 [res,~]=system(['"' fullfile(ravenDir,'software','mafft','mafft-linux64','mafft.bat') '" --help ']); -0175 elseif ispc -0176 [res,~]=system(['"' fullfile(ravenDir,'software','mafft','mafft-win','mafft.bat') '" --help ']); -0177 end -0178 if res==1 -0179 fprintf('OK\n'); -0180 else -0181 fprintf('Not OK! If necessary, download/compile the binary and run checkInstallation again\n'); -0182 end -0183 fprintf(['\thmmbuild' binEnd '...\t\t\t\t\t\t\t\t']); -0184 [res,~]=system(['"' fullfile(ravenDir,'software','hmmer',['hmmbuild' binEnd]) '"']); -0185 if res==1 -0186 fprintf('OK\n\n'); -0187 else -0188 fprintf('Not OK! If necessary, download/compile the binary and run checkInstallation again\n'); -0189 end -0190 -0191 fprintf('Checking whether RAVEN functions are non-redundant across MATLAB path...\t'); -0192 checkFunctionUniqueness(); -0193 -0194 fprintf('\n*** checkInstallation complete ***\n\n'); -0195 end +0080 else +0081 curSolv=getpref('RAVEN','solver'); +0082 fprintf(['Solver found in preferences... ',curSolv,'\n']); +0083 end +0084 +0085 %Check if it is possible to solve an LP problem using different solvers +0086 solver={'gurobi','cobra'}; +0087 +0088 for i=1:numel(solver) +0089 fprintf(['Checking if it is possible to solve an LP problem using ',solver{i},'...\t\t\t']); +0090 try +0091 setRavenSolver(solver{i}); +0092 load(matFile); +0093 solveLP(emptyModel); +0094 workingSolvers=strcat(workingSolvers,';',solver{i}); +0095 fprintf('OK\n'); +0096 if strcmp(curSolv,solver{i}) +0097 keepSolver=true; +0098 end +0099 catch +0100 fprintf('Not OK\n'); +0101 end +0102 end +0103 +0104 if keepSolver +0105 %The solver set in curSolv is functional, so the settings are restored +0106 %to the ones which were set before running checkInstallation +0107 setRavenSolver(curSolv); +0108 fprintf(['Preferred solver... KEPT\nSolver saved as preference... ',curSolv,'\n\n']); +0109 elseif ~isempty(workingSolvers) +0110 %There are working solvers, but the none of them is the solver defined +0111 %by curSolv. The first working solver is therefore set as RAVEN solver +0112 workingSolvers=regexprep(workingSolvers,'^;',''); +0113 workingSolvers=regexprep(workingSolvers,';.+$',''); +0114 %Only one working solver should be left by now in workingSolvers +0115 setRavenSolver(workingSolvers); +0116 fprintf(['Preferred solver... NEW\nSolver saved as preference... ',workingSolvers,'\n\n']); +0117 else +0118 %No functional solvers were found, so the setting is restored back to +0119 %original +0120 setRavenSolver(curSolv); +0121 fprintf(['WARNING: No working solver was found!\n'... +0122 'Install the solver, set it using setRavenSolver(''solverName'') and run checkInstallation again\n'... +0123 'Available solverName options are ''gurobi'' and ''cobra''\n\n']); +0124 end +0125 +0126 if ismac +0127 binEnd='.mac'; +0128 elseif isunix +0129 binEnd=''; +0130 elseif ispc +0131 binEnd='.exe'; +0132 end +0133 fprintf('Checking essential binary executables:\n'); +0134 fprintf('NOTE: Broken binary executables <strong>must be fixed</strong> before running RAVEN\n'); +0135 fprintf(['\tmakeblastdb' binEnd '...\t\t\t\t\t\t\t']); +0136 [res,~]=system(['"' fullfile(ravenDir,'software','blast+',['makeblastdb' binEnd]) '"']); +0137 if res==1 +0138 fprintf('OK\n'); +0139 else +0140 fprintf('Not OK! Download/compile the binary and run checkInstallation again\n'); +0141 end +0142 fprintf(['\tblastp' binEnd '...\t\t\t\t\t\t\t\t']); +0143 [res,~]=system(['"' fullfile(ravenDir,'software','blast+',['blastp' binEnd]) '"']); +0144 if res==1 +0145 fprintf('OK\n'); +0146 else +0147 fprintf('Not OK! Download/compile the binary and run checkInstallation again\n'); +0148 end +0149 fprintf(['\tdiamond' binEnd '...\t\t\t\t\t\t\t\t']); +0150 [res,~]=system(['"' fullfile(ravenDir,'software','diamond',['diamond' binEnd]) '"']); +0151 if res==1 +0152 fprintf('OK\n'); +0153 else +0154 fprintf('Not OK! Download/compile the binary and run checkInstallation again\n'); +0155 end +0156 fprintf(['\thmmsearch' binEnd '...\t\t\t\t\t\t\t']); +0157 [res,~]=system(['"' fullfile(ravenDir,'software','hmmer',['hmmsearch' binEnd]) '"']); +0158 if res==1 +0159 fprintf('OK\n'); +0160 else +0161 fprintf('Not OK! Download/compile the binary and run checkInstallation again\n'); +0162 end +0163 fprintf('Checking non-essential/development binary executables:\n'); +0164 fprintf('NOTE: Only fix these binaries if planning to use KEGG FTP dump files in getKEGGModelForOrganism\n'); +0165 fprintf(['\tcd-hit' binEnd '...\t\t\t\t\t\t\t\t']); +0166 [res,~]=system(['"' fullfile(ravenDir,'software','cd-hit',['cd-hit' binEnd]) '"']); +0167 if res==1 +0168 fprintf('OK\n'); +0169 else +0170 fprintf('Not OK! If necessary, download/compile the binary and run checkInstallation again\n'); +0171 end +0172 fprintf('\tmafft.bat...\t\t\t\t\t\t\t\t'); +0173 if ismac +0174 [res,~]=system(['"' fullfile(ravenDir,'software','mafft','mafft-mac','mafft.bat') '" --help ']); +0175 elseif isunix +0176 [res,~]=system(['"' fullfile(ravenDir,'software','mafft','mafft-linux64','mafft.bat') '" --help ']); +0177 elseif ispc +0178 [res,~]=system(['"' fullfile(ravenDir,'software','mafft','mafft-win','mafft.bat') '" --help ']); +0179 end +0180 if res==1 +0181 fprintf('OK\n'); +0182 else +0183 fprintf('Not OK! If necessary, download/compile the binary and run checkInstallation again\n'); +0184 end +0185 fprintf(['\thmmbuild' binEnd '...\t\t\t\t\t\t\t\t']); +0186 [res,~]=system(['"' fullfile(ravenDir,'software','hmmer',['hmmbuild' binEnd]) '"']); +0187 if res==1 +0188 fprintf('OK\n\n'); +0189 else +0190 fprintf('Not OK! If necessary, download/compile the binary and run checkInstallation again\n'); +0191 end +0192 +0193 fprintf('Checking whether RAVEN functions are non-redundant across MATLAB path...\t'); +0194 checkFunctionUniqueness(); +0195 +0196 fprintf('\n*** checkInstallation complete ***\n\n'); +0197 end
Generated by m2html © 2005
\ No newline at end of file diff --git a/doc/io/exportModel.html b/doc/io/exportModel.html index ef6d5ad4..b4ee2aaf 100644 --- a/doc/io/exportModel.html +++ b/doc/io/exportModel.html @@ -281,7 +281,7 @@

SOURCE CODE ^end 0223 0224 if isfield(modelSBML.compartment,'metaid') -0225 if regexp(model.comps(i),'^[^a-zA-Z_]') +0225 if regexp(model.comps{i},'^[^a-zA-Z_]') 0226 EM='The compartment IDs are in numeric format. For the compliance with SBML specifications, compartment IDs will be preceded with "c_" string'; 0227 dispEM(EM,false); 0228 model.comps(i)=strcat('c_',model.comps(i));