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

Annotation of /RecoElemSBW/RecoElemSBWSampleClient.cc

Parent Directory Parent Directory | Revision Log Revision Log


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

1 : hwang 1.1 //************************************************************************
2 :     // Play with exploring the e. coli reco in biosimscratch.
3 :     //
4 :     //
5 :     // look at enscript | ps2pnm | ppmtopcx to get faux fluxmap.
6 :     //
7 :     //************************************************************************
8 :    
9 :     #include <stdio.h>
10 :     #include <string>
11 :     #include <vector>
12 :     #include <set>
13 :     #include <iterator>
14 :     #include <fstream>
15 :    
16 :     #include "SBW.h"
17 :    
18 :     #include "RecoReadout/RecoElem.hh"
19 :     #include "RecoReadout/Reaction.hh"
20 :    
21 :     #include "MExplorer/xduGen.hh"
22 :    
23 :     using namespace std;
24 :     using namespace SystemsBiologyWorkbench ;
25 :    
26 :    
27 :     //************************************************************************
28 :     void usage( void );
29 :     RecoElem* sbwToRecoElem( DataBlockReader& r );
30 :     void unpackRx( DataBlockReader& r, vector<Reaction>& rxns );
31 : hwang 1.2 void printList (RecoElem& elem);
32 : hwang 1.1
33 :    
34 :     //************************************************************************
35 :     int
36 :     main(int argc, char* argv[] ) {
37 :     //************************************************************************
38 :    
39 :     DataBlockWriter args;
40 :     DataBlockReader result;
41 :    
42 :     if ( 2 != argc ) {
43 :     usage();
44 :     return 1;
45 :     }
46 :    
47 :     int topNodeId = atoi( argv[1] );
48 :     cout << "going for node " << topNodeId << endl;
49 :    
50 :     // connect to broker, find RecoElemRead service
51 :    
52 :     SBW::connect();
53 :    
54 :     Module recoElemReadModule = SBW::getModuleInstance("gov.mcs.anl.compbio");
55 :     Service recoElemReadService = recoElemReadModule.findServiceByName("RecoElemRead");
56 :     ServiceMethod RecoMethod = recoElemReadService.getMethod("{}getTree(int)");
57 :    
58 :     // build arg list to call service: pass it the node Id we want to get back
59 :     // then actually do the call
60 :    
61 :     args << topNodeId;
62 :     result=RecoMethod.call( args );
63 : hwang 1.2
64 :    
65 : hwang 1.1 RecoElem* elem = sbwToRecoElem( result );
66 :    
67 :     // now we actually have the recoElem, transfered from the server. do
68 :     // something with it..
69 :    
70 :     std::string path="";
71 :     xduGen( *elem, path );
72 :    
73 : hwang 1.2 cout << "************************" << endl;
74 :     printList(*elem);
75 :     cout << "************************" << endl;
76 : hwang 1.1
77 : hwang 1.2
78 : hwang 1.1 recoElemReadModule.shutdown();
79 : hwang 1.2 SBW::disconnect();
80 : hwang 1.1
81 :     return 0;
82 :     }
83 :    
84 : hwang 1.2 void printList (RecoElem& elem)
85 :    
86 :     {
87 :    
88 :     vector<RecoElem>& subElem = elem.getSubElements();
89 :     vector<Reaction>& rxns = elem.getReactions();
90 :    
91 :     int nrxns= rxns.size ();
92 : hwang 1.3 int nkids= subElem.size ();
93 : hwang 1.2
94 : hwang 1.3 cout << "MY NAME: " << elem.getName() << endl;
95 :     cout << " No. of reactions " << nrxns << endl;
96 :     cout << " No. of kids: " << nkids << endl;
97 : hwang 1.2 cout << " &&&&&&&&&&" <<endl;
98 :    
99 : hwang 1.3 for (int l=0; l< nrxns ; l++) {
100 :     cout << rxns[l].asString() << endl;
101 :     }
102 : hwang 1.2
103 :    
104 : hwang 1.3 for (int i=0; i<nkids; i++){
105 :     cout << "in deeper **** " << endl;
106 :     printList(subElem[i]);
107 :     cout << "back up *** " << endl;
108 : hwang 1.2 }
109 :    
110 : hwang 1.3 return;
111 : hwang 1.2 }
112 :    
113 :    
114 : hwang 1.1 //************************************************************************
115 :     void
116 :     usage( void ) {
117 :     //************************************************************************
118 :     cout << endl;
119 :     cout << "usage: RecoElemSBWClient TopNodeId" << endl;
120 :     cout << " TopNodeId is the ProcessId of the top of the reconstruction." << endl;
121 :     cout << " You can find the top node of a reconstruction with lsCat," << endl;
122 :     cout << " which lists the Catalog." << endl;
123 :     cout << endl;
124 :    
125 :     return;
126 :     }
127 :    
128 :    
129 :    
130 :     //************************************************************************
131 :     RecoElem*
132 :     sbwToRecoElem( DataBlockReader& r ) {
133 :     //************************************************************************
134 :    
135 :     string n;
136 :     int id;
137 :    
138 :     r >> n;
139 :     r >> id;
140 : efrank 1.4 RecoElem* elem = new RecoElem( n, id );
141 : hwang 1.1
142 :     vector<Reaction>& rxns = elem->getReactions();
143 :     vector<RecoElem>& subElems = elem->getSubElements();
144 :    
145 :     int nrx;
146 :     r >> nrx;
147 :     for( int i=0; i<nrx; i++ ) {
148 :     unpackRx( r, rxns);
149 : hwang 1.2
150 : hwang 1.1 }
151 :    
152 : hwang 1.2
153 : hwang 1.1 int nKid;
154 :     r >> nKid;
155 :     RecoElem* aKid;
156 :     for ( int i=0; i<nKid; i++ ) {
157 :     aKid = sbwToRecoElem( r );
158 :     subElems.push_back( *aKid );
159 :     }
160 :    
161 : hwang 1.2
162 : hwang 1.1 return elem;
163 :     }
164 :    
165 :    
166 :     //************************************************************************
167 :     void
168 : hwang 1.2 unpackRx( DataBlockReader& rIn, vector <Reaction>& rxns ) {
169 :    
170 : hwang 1.1 int id;
171 :     int dir;
172 :     DataBlockReader inMetabL, outMetabL, enzymeL;
173 :     DataBlockReader r;
174 :    
175 : hwang 1.2
176 : hwang 1.1 // The passed in DataBlockReader, rIn, begins with a List...shove it
177 :     // into r and pull the rx info out of it.
178 :    
179 :     rIn >> r;
180 :    
181 :     r >> id;
182 :     r >> dir;
183 : hwang 1.2
184 :    
185 : hwang 1.1 Reaction rxn( id, (Reaction::Direction) dir );
186 :    
187 :     vector<string>& inMetab = rxn.getInputMetaboliteNames();
188 :     vector<int>& inMetabN = rxn.getInputStoich();
189 :     vector<string>& outMetab = rxn.getOutputMetaboliteNames();
190 :     vector<int>& outMetabN = rxn.getOutputStoich();
191 :     vector<string>& enzymes = rxn.getEnzymeNames();
192 :     int nIn;
193 :     int nOut;
194 :     int nEnz;
195 :     string name;
196 :     int stoich;
197 :    
198 : hwang 1.2
199 : hwang 1.1 r >> inMetabL;
200 :     inMetabL >> nIn;
201 :     for ( int i=0; i<nIn; i++ ) {
202 :     inMetabL >> name;
203 :     inMetabL >> stoich;
204 : hwang 1.2
205 :    
206 : hwang 1.1 inMetab.push_back( name);
207 :     inMetabN.push_back( stoich );
208 : hwang 1.2
209 :    
210 : hwang 1.1 }
211 : hwang 1.2
212 : hwang 1.1
213 :     r >> outMetabL;
214 :     outMetabL >> nOut;
215 :     for ( int i=0; i<nOut; i++ ) {
216 :     outMetabL >> name;
217 :     outMetabL >> stoich;
218 :     outMetab.push_back( name);
219 :     outMetabN.push_back( stoich );
220 :     }
221 :    
222 :     r >> enzymeL;
223 :     enzymeL >> nEnz;
224 :     for ( int i=0; i<nEnz; i++ ) {
225 :     enzymeL >> name;
226 :     enzymes.push_back( name );
227 :     }
228 : hwang 1.2
229 :    
230 :    
231 :     rxns.push_back( rxn );
232 :    
233 : hwang 1.1
234 :     return;
235 :     }

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3