c0c7cc2128681d975c5b95a87e68f568e687ada9
[libdai.git] / utils / fg2dot.cpp
1 /* Copyright (C) 2006-2008 Joris Mooij [j dot mooij at science dot ru dot nl]
2 Radboud University Nijmegen, The Netherlands
3
4 This file is part of libDAI.
5
6 libDAI is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
10
11 libDAI is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with libDAI; if not, write to the Free Software
18 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
19 */
20
21
22 #include <iostream>
23 #include <fstream>
24 #include <cstdlib>
25 #include <string>
26 #include <dai/factorgraph.h>
27
28
29 using namespace dai;
30 using namespace std;
31
32
33 int main( int argc, char *argv[] ) {
34 if( argc != 3 ) {
35 cout << "Usage: " << argv[0] << " <in.fg> <out.dot>" << endl << endl;
36 cout << "Converts a .fg (FactorGraph) file to a .dot (GraphViz) file for visualization." << endl;
37 cout << "The .dot file can be converted to .ps (PostScript by 'neato -T ps out.dot > out.ps'" << endl;
38 return 1;
39 } else {
40 // Read factorgraph
41 FactorGraph fg;
42 char *infile = argv[1];
43
44 fg.ReadFromFile( infile );
45
46 ostream *os = &cout;
47 ofstream outfile;
48 if( string( argv[2] ) != "-" ) {
49 outfile.open( argv[2] );
50 if( !outfile.is_open() ) {
51 cerr << "Cannot open " << argv[2] << " for writing" << endl;
52 return 1;
53 }
54 os = &outfile;
55 }
56
57 fg.printDot( *os );
58
59 return 0;
60 }
61 }
62