[Bio] / MExplorer / xduGen.cc Repository:
ViewVC logotype

Annotation of /MExplorer/xduGen.cc

Parent Directory Parent Directory | Revision Log Revision Log


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

1 : efrank 1.1 //************************************************************************
2 :     // Play with exploring the e. coli reco in biosimscratch.
3 :     //
4 :     //************************************************************************
5 :    
6 : efrank 1.2 #include <stdio.h>
7 : efrank 1.1 #include <string>
8 :     #include <vector>
9 :     #include <iterator>
10 :    
11 :     #include "RecoReadout/RecoElem.hh"
12 :     #include "RecoReadout/Reaction.hh"
13 :    
14 :     #include "RecoReadoutOracle/EFRecoElemImpl.hh"
15 :     #include "RecoReadoutOracle/OracleMgr.hh"
16 :    
17 : efrank 1.2 void usage( void );
18 : efrank 1.1 int xduGen( RecoElem& r, std::string path );
19 :     void editName( std::string& s );
20 :    
21 :     //************************************************************************
22 :     int
23 : efrank 1.2 main(int argc, char* argv[] ) {
24 : efrank 1.1 //************************************************************************
25 :    
26 : efrank 1.2 if ( 2 != argc ) {
27 :     usage();
28 :     return 1;
29 :     }
30 :    
31 :     unsigned int topNodeId = atoi( argv[1] );
32 :     cout << "going for node " << topNodeId << endl;
33 :    
34 : efrank 1.1
35 :     OracleMgr::mgr().startJob();
36 : efrank 1.2 RecoElem recoTop( new EFRecoElemImpl( "FoobieBletch", topNodeId ));
37 : efrank 1.1
38 :     // OK. Mess with it. Get its kids and print them out.
39 :    
40 :     std::string path="";
41 :     xduGen( recoTop, path );
42 :    
43 : efrank 1.2 OracleMgr::mgr().endJob();
44 : efrank 1.1 return 0;
45 :     }
46 :    
47 :     //************************************************************************
48 : efrank 1.2 void
49 :     usage( void ) {
50 :     //************************************************************************
51 :     cout << endl;
52 :     cout << "usage: xduGen TopNodeId" << endl;
53 :     cout << " TopNodeId is the ProcessId of the top of the reconstruction." << endl;
54 :     cout << " You can find the top node of a reconstruction with lsCat," << endl;
55 :     cout << " which lists the Catalog." << endl;
56 :     cout << endl;
57 :    
58 :     return;
59 :     }
60 :    
61 : efrank 1.1 int
62 :     xduGen( RecoElem& r, std::string path ) {
63 :     //************************************************************************
64 :     int result = 0;
65 :     std::string s;
66 : efrank 1.2 enum {MaxDigits = 32};
67 :     char idAsStr[32];
68 : efrank 1.1
69 :     vector<RecoElem>& kids = r.getSubElements( );
70 :     int nKid = kids.size();
71 :    
72 :     s=r.getName(); // copy so we don't mod the orig
73 :     editName( s ); // xdu has bugs. must mod the name a little
74 :     if ( 0 == nKid ) {
75 : efrank 1.2 cout << "1 " << path << "/" <<s << "[" << r.getId() << "]" << endl;
76 : efrank 1.1 return 1;
77 :     } else {
78 :     for (int i=0; i<nKid; i++ ) {
79 : efrank 1.2 snprintf(idAsStr, MaxDigits, "%d", r.getId() );
80 :     result += xduGen( kids[i], path + "/" + s + "[" + idAsStr + "]" );
81 : efrank 1.1 }
82 : efrank 1.2 cout << result << " " << path << "/" << s << "[" << r.getId() << "]"
83 :     << endl;
84 : efrank 1.1 return result;
85 :     }
86 :     }
87 :    
88 :     //************************************************************************
89 :     void
90 :     editName( std::string& s ) {
91 :     //************************************************************************
92 :     // xdu chokes on name with spaces in them. Replace them with
93 :     // underscores. hack hack hack
94 :    
95 :     int l=s.size();
96 :     for( int i=0; i<l; i++) {
97 :     if ( s[i] == ' ' ) s[i] = '_';
98 :     }
99 :    
100 :     return;
101 :     }

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3