[Bio] / RecoElemSBW / SBMLtoRecoElem.cc Repository:
ViewVC logotype

Annotation of /RecoElemSBW/SBMLtoRecoElem.cc

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.2 - (view) (download) (as text)

1 : hwang 1.1 #include <stdio.h>
2 :     #include <string>
3 :     #include <vector>
4 :     #include <set>
5 :     #include <iterator>
6 :     #include <fstream>
7 :     #include <iostream>
8 :     #include <sys/timeb.h>
9 :    
10 :     #include "RecoReadout/RecoElem.hh"
11 :     #include "RecoReadout/RecoElemImplSimple.hh"
12 :     #include "RecoReadout/Reaction.hh"
13 :     #include "MExplorer/xduGen.hh"
14 :    
15 :     #include "sbml/SBMLReader.h"
16 :     #include "sbml/SBMLTypes.h"
17 :    
18 :    
19 :     using namespace std;
20 :    
21 :     //************************************************************************
22 :    
23 :    
24 :     RecoElem* SBMLtoRecoElem(Model_t* m);
25 :     void inreaction(Reaction_t* r, vector<Reaction>& rxns);
26 :     void printList (RecoElem& elem);
27 :     //************************************************************************
28 :    
29 :    
30 :    
31 :    
32 :     //************************************************************************
33 :     int
34 :     main(int argc, char* argv[] ) {
35 :     //************************************************************************
36 :    
37 :    
38 :     SBMLDocument_t *d;
39 :     Model_t *m;
40 :    
41 :     if (argc != 2)
42 :     {
43 :     printf("usage: readSBML <filename>\n");
44 :     return 1;
45 :     }
46 :    
47 :    
48 :     d = readSBML(argv[1]);
49 :    
50 :     m = d->model;
51 :     if (0==m) {
52 :     cout << "Did not read model " << argv[1] << endl;
53 :     exit( 1 );
54 :     }
55 :    
56 :     RecoElem* elem = SBMLtoRecoElem (m);
57 :    
58 :     cout << "************************" << endl;
59 :     printList(*elem);
60 :     cout << "************************" << endl;
61 :    
62 :     std::string path="";
63 :     xduGen( *elem, path );
64 :    
65 :     return 0;
66 :     }
67 :    
68 :    
69 :    
70 :    
71 :     //************************************************************************
72 :     void printList (RecoElem& elem)
73 :     //************************************************************************
74 :     {
75 :    
76 :     // I don't think there's any subelements. Model w/ one subelement, and 1 kid
77 :    
78 :     vector<RecoElem>& subElem = elem.getSubElements();
79 :     vector<Reaction>& rxns = elem.getReactions();
80 :    
81 :     int nrxns= rxns.size ();
82 :     int nkids= subElem.size ();
83 :    
84 :     cout << "MY NAME: " << elem.getName() << endl;
85 :     cout << " No. of reactions " << nrxns << endl;
86 :     cout << " No. of kids: " << nkids << endl;
87 :    
88 :    
89 :     for (int l=0; l< nrxns ; l++) {
90 : efrank 1.2 cout << rxns[l].asString( ) << endl;
91 : hwang 1.1 }
92 :    
93 :    
94 :     for (int i=0; i<nkids; i++){
95 :     cout << "in deeper **** " << endl;
96 :     printList(subElem[i]);
97 :     cout << "back up *** " << endl;
98 :     }
99 :    
100 :     return;
101 :     }
102 :    
103 :    
104 :    
105 :    
106 :    
107 :     //**********************************************************************
108 :     RecoElem*
109 :     SBMLtoRecoElem(Model_t* m) {
110 :     //************************************************************************
111 :    
112 :     string name;
113 :     int id, numreactant, numproduct;
114 :    
115 :     Reaction_t* r;
116 :     Species_t* s;
117 :     List_t* rlist = m->reaction;
118 :    
119 :    
120 :     //not sure what to put as an id, 0 for now
121 :     name=m->name;
122 :     id=0;
123 :    
124 :     RecoElem* elem= new RecoElem( new RecoElemImplSimple(name,id));
125 :    
126 :     vector<Reaction>& rxns = elem->getReactions();
127 :    
128 :    
129 :     //put in reactions
130 :     int reactionsize= List_size(rlist);
131 :     //cout << "number of reactions " << reactionsize << endl;
132 :    
133 :    
134 :    
135 :     for (int j=0; j< reactionsize ; j++)
136 :     {
137 :    
138 :     // cout << "Reaction : " << j <<endl;
139 :     r=Model_getReaction(m,j);
140 :     //cout << r->name << endl;
141 :     inreaction(r,rxns);
142 :    
143 :     // cout << endl;
144 :     }
145 :    
146 :    
147 :     return elem;
148 :    
149 :    
150 :     }
151 :     //************************************************************************
152 :     void
153 :     inreaction(Reaction_t* r, vector<Reaction>& rxns) {
154 :     //************************************************************************
155 :    
156 :     int id;
157 :     int dir;
158 :    
159 :     int numreactant=Reaction_getNumReactants(r);
160 :     int numproduct=Reaction_getNumProducts(r);
161 :     SpeciesReference_t* sr, *pr;
162 :    
163 :     //id not sure what to put here
164 :     //direction is reversible or not. false, true
165 : efrank 1.2
166 :     Reaction::Direction reDir;
167 : hwang 1.1 id=0;
168 :     dir=r->reversible;
169 : efrank 1.2 Reaction rxn( id, Reaction::forward );
170 :     if ( dir ) {
171 :     rxn.setDirection( Reaction::both );
172 :     }
173 : hwang 1.1
174 :     vector<string>& reactant = rxn.getInputMetaboliteNames();
175 :     vector<string>& product = rxn.getOutputMetaboliteNames();
176 :    
177 :     vector<int>& inMetabN = rxn.getInputStoich();
178 :     vector<int>& outMetabN = rxn.getOutputStoich();
179 :    
180 :     //add reactants
181 :     //add products
182 :    
183 :    
184 :    
185 :     //figuring out the common denominator
186 :     int rdem = 1;
187 :     int pdem = 1;
188 :     int demstoich;
189 :    
190 :     for (int j=0; j< numreactant ; j++ )
191 :     {
192 :     sr=Reaction_getReactant(r,j);
193 :     rdem= rdem * sr->denominator;
194 :    
195 :     }
196 :    
197 :    
198 :     for (int m=0; m<numproduct; m++)
199 :     {
200 :     pr=Reaction_getProduct(r,m);
201 :     pdem= pdem * pr->denominator;
202 :    
203 :     }
204 :    
205 :    
206 :     demstoich = rdem * pdem;
207 :     // cout << "common denominator: " << demstoich;
208 :    
209 :     for (int k=0; k < numreactant ; k++ )
210 :     {
211 :     sr=Reaction_getReactant(r,k);
212 :     // cout << "test reactant: " << sr->species << endl;
213 :    
214 :    
215 :     reactant.push_back (sr->species);
216 :     inMetabN.push_back( demstoich * sr->stoichiometry/sr->denominator);
217 :     }
218 :    
219 :     //cout << rxn.asString()[0];
220 :    
221 :     for (int l=0; l<numproduct; l++)
222 :     {
223 :    
224 :     pr=Reaction_getProduct(r,l);
225 :     // cout << "product: " << pr->species << endl;
226 :    
227 :     product.push_back(pr->species);
228 :     outMetabN.push_back(demstoich * pr->stoichiometry/ pr->denominator );
229 :     }
230 :    
231 :     rxns.push_back(rxn);
232 :    
233 :     return;
234 :     }

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3