Home > io > exportToTabDelimited.m

exportToTabDelimited

PURPOSE ^

exportToTabDelimited

SYNOPSIS ^

function exportToTabDelimited(model,path,sortIds)

DESCRIPTION ^

 exportToTabDelimited
   Exports a model structure to a set of tab-delimited text files

   model    a model structure
   path    the path to export to. The resulting text files will be saved
           under the names excelRxns.txt, excelMets.txt, excelGenes.txt,
           excelModel.txt, and excelComps.txt
   sortIds logical whether metabolites, reactions and genes should be
           sorted alphabetically by their identifiers (optional, default false)

   NOTE: This functionality was previously a part of exportToExcelFormat.
         The naming of the resulting text files is to preserve backward
         compatibility

   NOTE: No checks are made regarding the correctness of the model. Use
         checkModelStruct to identify problems in the model structure

 Usage: exportToTabDelimited(model,path,sortIds)

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function exportToTabDelimited(model,path,sortIds)
0002 % exportToTabDelimited
0003 %   Exports a model structure to a set of tab-delimited text files
0004 %
0005 %   model    a model structure
0006 %   path    the path to export to. The resulting text files will be saved
0007 %           under the names excelRxns.txt, excelMets.txt, excelGenes.txt,
0008 %           excelModel.txt, and excelComps.txt
0009 %   sortIds logical whether metabolites, reactions and genes should be
0010 %           sorted alphabetically by their identifiers (optional, default false)
0011 %
0012 %   NOTE: This functionality was previously a part of exportToExcelFormat.
0013 %         The naming of the resulting text files is to preserve backward
0014 %         compatibility
0015 %
0016 %   NOTE: No checks are made regarding the correctness of the model. Use
0017 %         checkModelStruct to identify problems in the model structure
0018 %
0019 % Usage: exportToTabDelimited(model,path,sortIds)
0020 
0021 if nargin<2
0022     path='./';
0023 end
0024 if nargin<3
0025     sortIds=false;
0026 end
0027 if sortIds==true
0028     model=sortIdentifiers(model);
0029 end
0030 
0031 %If the folder doesn't exist then create it
0032 if ~isfolder(path)
0033     mkdir(path);
0034 end
0035 
0036 %Remove the files if they already exist
0037 if isfile(fullfile(path,'excelRxns.txt'))
0038     delete(fullfile(path,'excelRxns.txt'));
0039 end
0040 if isfile(fullfile(path,'excelMets.txt'))
0041     delete(fullfile(path,'excelMets.txt'));
0042 end
0043 if isfile(fullfile(path,'excelGenes.txt'))
0044     delete(fullfile(path,'excelGenes.txt'));
0045 end
0046 if isfile(fullfile(path,'excelModel.txt'))
0047     delete(fullfile(path,'excelModel.txt'));
0048 end
0049 if isfile(fullfile(path,'excelComps.txt'))
0050     delete(fullfile(path,'excelComps.txt'));
0051 end
0052 
0053 %Construct equations
0054 model.equations=constructEquations(model,model.rxns,true);
0055 
0056 %Open for printing the rxn sheet
0057 rxnFile=fopen(fullfile(path,'excelRxns.txt'),'wt');
0058 
0059 %Print header
0060 fprintf(rxnFile,'#\tID\tNAME\tEQUATION\tEC-NUMBER\tGENE ASSOCIATION\tLOWER BOUND\tUPPER BOUND\tOBJECTIVE\tCOMPARTMENT\tMIRIAM\tSUBSYSTEM\tREPLACEMENT ID\tNOTE\tREFERENCE\tCONFIDENCE SCORE\n');
0061 
0062 %Loop through the reactions
0063 for i=1:numel(model.rxns)
0064     fprintf(rxnFile,['\t' model.rxns{i} '\t' model.rxnNames{i} '\t' model.equations{i} '\t']);
0065     
0066     if isfield(model,'eccodes')
0067         fprintf(rxnFile,[model.eccodes{i} '\t']);
0068     else
0069         fprintf(rxnFile,'\t');
0070     end
0071     
0072     if isfield(model,'grRules')
0073         fprintf(rxnFile,[model.grRules{i} '\t']);
0074     else
0075         fprintf(rxnFile,'\t');
0076     end
0077     
0078     %Print bounds and objectives
0079     fprintf(rxnFile,[num2str(model.lb(i)) '\t' num2str(model.ub(i)) '\t']);
0080     
0081     if model.c(i)~=0
0082         fprintf(rxnFile,[num2str(model.c(i)) '\t' ]);
0083     else
0084         fprintf(rxnFile,'\t');
0085     end
0086     
0087     if isfield(model,'rxnComps')
0088         fprintf(rxnFile,[model.comps{model.rxnComps(i)} '\t']);
0089     else
0090         fprintf(rxnFile,'\t');
0091     end
0092     
0093     if isfield(model,'rxnMiriams')
0094         if ~isempty(model.rxnMiriams{i})
0095             toPrint=[];
0096             for j=1:numel(model.rxnMiriams{i}.name)
0097                 toPrint=[toPrint strtrim(model.rxnMiriams{i}.name{j}) '/' strtrim(model.rxnMiriams{i}.value{j}) ';'];
0098             end
0099             fprintf(rxnFile,[toPrint(1:end-1) '\t']);
0100         else
0101             fprintf(rxnFile,'\t');
0102         end
0103     else
0104         fprintf(rxnFile,'\t');
0105     end
0106     
0107     if isfield(model,'subSystems')
0108         if ~isempty(model.subSystems{i})
0109             fprintf(rxnFile,[strjoin(model.subSystems{i,1},';') '\t']);
0110         else
0111             fprintf(rxnFile,'\t');
0112         end
0113     end
0114     
0115     %Print replacement IDs
0116     fprintf(rxnFile,'\t');
0117     
0118     if isfield(model,'rxnNotes')
0119         fprintf(rxnFile,[model.rxnNotes{i} '\t']);
0120     else
0121         fprintf(rxnFile,'\t');
0122     end
0123     
0124     if isfield(model,'rxnReferences')
0125         fprintf(rxnFile,[model.rxnReferences{i} '\t']);
0126     else
0127         fprintf(rxnFile,'\t');
0128     end
0129     
0130     if isfield(model,'rxnConfidenceScores')
0131         fprintf(rxnFile,[num2str(model.rxnConfidenceScores(i)) '\t' ]);
0132     else
0133         fprintf(rxnFile,'\t');
0134     end
0135     
0136     fprintf(rxnFile,'\n');
0137 end
0138 
0139 fclose(rxnFile);
0140 
0141 %Open for printing the metabolites sheet
0142 metFile=fopen(fullfile(path,'excelMets.txt'),'wt');
0143 
0144 %Print header
0145 fprintf(metFile,'#\tID\tNAME\tUNCONSTRAINED\tMIRIAM\tCOMPOSITION\tInChI\tCOMPARTMENT\tREPLACEMENT ID\tMETS FIELD\tCHARGE\n');
0146 
0147 %Loop through the metabolites
0148 for i=1:numel(model.mets)
0149     fprintf(metFile,['\t' model.metNames{i} '[' model.comps{model.metComps(i)} ']\t' model.metNames{i} '\t']);
0150     
0151     if isfield(model,'unconstrained')
0152         if model.unconstrained(i)~=0
0153             fprintf(metFile,'TRUE\t');
0154         else
0155             fprintf(metFile,'\t');
0156         end
0157     else
0158         fprintf(metFile,'\t');
0159     end
0160     
0161     if isfield(model,'metMiriams')
0162         if ~isempty(model.metMiriams{i})
0163             toPrint=[];
0164             for j=1:numel(model.metMiriams{i}.name)
0165                 toPrint=[toPrint strtrim(model.metMiriams{i}.name{j}) '/' strtrim(model.metMiriams{i}.value{j}) ';'];
0166             end
0167             fprintf(rxnFile,[toPrint(1:end-1) '\t']);
0168         else
0169             fprintf(metFile,'\t');
0170         end
0171     else
0172         fprintf(metFile,'\t');
0173     end
0174     
0175     if isfield(model,'metFormulas')
0176         fprintf(metFile,[model.metFormulas{i} '\t']);
0177     else
0178         fprintf(metFile,'\t');
0179     end
0180     
0181     if isfield(model,'inchis')
0182         fprintf(metFile,[model.inchis{i} '\t']);
0183     else
0184         fprintf(metFile,'\t');
0185     end
0186     
0187     fprintf(metFile,[model.comps{model.metComps(i)} '\t']);
0188     
0189     %There can be no replacement IDs in the structure, but it has to be
0190     %something to give working met IDs.
0191     fprintf(metFile,['m' int2str(i) '\t']);
0192     
0193     %Print the model.mets field. The reason for not putting this as
0194     %replacement ID is that it's not guaranteed to be a valid SBML id.
0195     fprintf(metFile,[model.mets{i} '\t']);
0196     
0197     if isfield(model,'metCharges')
0198         fprintf(metFile,[num2str(model.metCharges(i)) '\t']);
0199     else
0200         fprintf(metFile,'\t');
0201     end
0202     
0203     fprintf(metFile,'\n');
0204 end
0205 
0206 fclose(metFile);
0207 
0208 if isfield(model,'genes')
0209     %Open for printing the genes sheet
0210     geneFile=fopen(fullfile(path,'excelGenes.txt'),'wt');
0211     
0212     %Print header
0213     fprintf(geneFile,'#\tNAME\tMIRIAM\tSHORT NAME\tCOMPARTMENT\n');
0214     
0215     %Loop through the genes
0216     for i=1:numel(model.genes)
0217         fprintf(geneFile,['\t' model.genes{i} '\t']);
0218         
0219         if isfield(model,'geneMiriams')
0220             if ~isempty(model.geneMiriams{i})
0221                 toPrint=[];
0222                 for j=1:numel(model.geneMiriams{i}.name)
0223                     toPrint=[toPrint strtrim(model.geneMiriams{i}.name{j}) '/' strtrim(model.geneMiriams{i}.value{j}) ';'];
0224                 end
0225                 fprintf(geneFile,[toPrint(1:end-1) '\t']);
0226             else
0227                 fprintf(geneFile,'\t');
0228             end
0229         else
0230             fprintf(geneFile,'\t');
0231         end
0232         
0233         if isfield(model,'geneShortNames')
0234             fprintf(geneFile,[model.geneShortNames{i} '\t']);
0235         else
0236             fprintf(geneFile,'\t');
0237         end
0238         
0239         if isfield(model,'geneComps')
0240             fprintf(geneFile,[model.comps{model.geneComps(i)} '\t']);
0241         else
0242             fprintf(geneFile,'\t');
0243         end
0244         
0245         fprintf(geneFile,'\n');
0246     end
0247     fclose(geneFile);
0248 end
0249 
0250 if isfield(model,'id')
0251     %Open for printing the model sheet
0252     modelFile=fopen(fullfile(path,'excelModel.txt'),'wt');
0253     
0254     %Print header
0255     fprintf(geneFile,'#\tID\tNAME\tDEFAULT LOWER\tDEFAULT UPPER\tCONTACT GIVEN NAME\tCONTACT FAMILY NAME\tCONTACT EMAIL\tORGANIZATION\tTAXONOMY\tNOTES\n');
0256     
0257     %Print model ID and name. It is assumed that the default lower/upper
0258     %bound correspond to min/max of the bounds
0259     toPrint=['\t' model.id '\t' model.name '\t'];
0260     if isfield(model,'annotation')
0261         if isfield(model.annotation,'defaultLB')
0262             toPrint=[toPrint num2str(model.annotation.defaultLB) '\t'];
0263         else
0264             toPrint=[toPrint num2str(min(model.lb)) '\t'];
0265         end
0266         if isfield(model.annotation,'defaultUB')
0267             toPrint=[toPrint num2str(model.annotation.defaultUB) '\t'];
0268         else
0269             toPrint=[toPrint num2str(max(model.ub)) '\t'];
0270         end
0271         if isfield(model.annotation,'givenName')
0272             toPrint=[toPrint model.annotation.givenName '\t'];
0273         else
0274             toPrint=[toPrint '\t'];
0275         end
0276         if isfield(model.annotation,'familyName')
0277             toPrint=[toPrint model.annotation.familyName '\t'];
0278         else
0279             toPrint=[toPrint '\t'];
0280         end
0281         if isfield(model.annotation,'email')
0282             toPrint=[toPrint model.annotation.email '\t'];
0283         else
0284             toPrint=[toPrint '\t'];
0285         end
0286         if isfield(model.annotation,'organization')
0287             toPrint=[toPrint model.annotation.organization '\t'];
0288         else
0289             toPrint=[toPrint '\t'];
0290         end
0291         if isfield(model.annotation,'taxonomy')
0292             toPrint=[toPrint model.annotation.taxonomy '\t'];
0293         else
0294             toPrint=[toPrint '\t'];
0295         end
0296         if isfield(model.annotation,'note')
0297             toPrint=[toPrint model.annotation.note '\t'];
0298         else
0299             toPrint=[toPrint '\t'];
0300         end
0301     else
0302         toPrint=[toPrint num2str(min(model.lb)) '\t' num2str(max(model.ub)) '\t\t\t\t\t\t\n'];
0303     end
0304     fprintf(modelFile,toPrint);
0305     fclose(modelFile);
0306 end
0307 
0308 if isfield(model,'comps')
0309     %Open for printing the model sheet
0310     compsFile=fopen(fullfile(path,'excelComps.txt'),'wt');
0311     
0312     %Print header
0313     fprintf(compsFile,'#\tABBREVIATION\tNAME\tINSIDE\tMIRIAM\n');
0314     
0315     for i=1:numel(model.comps)
0316         toPrint=['\t' model.comps{i} '\t' model.compNames{i} '\t'];
0317         if isfield(model,'compOutside')
0318             toPrint=[toPrint model.compOutside{i} '\t'];
0319         else
0320             toPrint=[toPrint '\t'];
0321         end
0322         if isfield(model,'compMiriams')
0323             if ~isempty(model.compMiriams{i})
0324                 for j=1:numel(model.compMiriams{i}.name)
0325                     toPrint=[toPrint strtrim(model.compMiriams{i}.name{j}) '/' strtrim(model.compMiriams{i}.value{j}) ';'];
0326                 end
0327                 toPrint(end)=[];
0328                 toPrint=[toPrint '\t'];
0329             else
0330                 toPrint=[toPrint '\t'];
0331             end
0332         else
0333             toPrint=[toPrint '\t'];
0334         end
0335         toPrint=[toPrint '\n'];
0336         fprintf(compsFile,toPrint);
0337     end
0338     fclose(compsFile);
0339 end
0340 end

Generated by m2html © 2005