In [1]:
from pymongo import MongoClient
import datetime

In [2]:
client = MongoClient()

In [3]:
db = client['saa-2_samples_raw']

In [4]:
coll = db['axelrod_stats_treestructured']

In [5]:
db.collection_names()


Out[5]:
[u'system.indexes', u'axelrod_stats_treestructured']

In [6]:
coll.count()


Out[6]:
2582

In [7]:
ids = coll.find({"run_finalized": 1},{"_id": 1})

In [8]:
ids


Out[8]:
<pymongo.cursor.Cursor at 0x106950c90>

In [9]:
id_list = []
for id in ids:
    id_list.append(id)

In [10]:
len(id_list)


Out[10]:
2298

In [11]:
import random

In [12]:
selected_ids = random.sample(id_list, 20)

In [13]:
selected_ids


Out[13]:
[{u'_id': ObjectId('531d7a78a61fac0f6360acd5')},
 {u'_id': ObjectId('531e6592a61fac19f367c393')},
 {u'_id': ObjectId('531e6d2aa61fac1a4bad608e')},
 {u'_id': ObjectId('5320f170a61fac42c4ae82e4')},
 {u'_id': ObjectId('531e7461a61fac1a895a64a9')},
 {u'_id': ObjectId('531f70b1a61fac258420d7ac')},
 {u'_id': ObjectId('531f489fa61fac2339a01261')},
 {u'_id': ObjectId('5320f134a61fac42a4b0186c')},
 {u'_id': ObjectId('531f4e5aa61fac23b369e0d3')},
 {u'_id': ObjectId('5320bba0a61fac3d836a24ac')},
 {u'_id': ObjectId('531f044ca61fac1f1bd60b1b')},
 {u'_id': ObjectId('531f9e3aa61fac2a8fee1370')},
 {u'_id': ObjectId('53209f55a61fac3ab05be374')},
 {u'_id': ObjectId('5320b415a61fac3cb68bb7aa')},
 {u'_id': ObjectId('531e1675a61fac15d0ae8ac8')},
 {u'_id': ObjectId('532084a4a61fac3797272e82')},
 {u'_id': ObjectId('531d89c9a61fac10339bf6ae')},
 {u'_id': ObjectId('531fc692a61fac2ce5676770')},
 {u'_id': ObjectId('5320799ca61fac371a18a89a')},
 {u'_id': ObjectId('531d716ca61fac0ecdf00eea')}]

In [14]:
test_id = selected_ids[0]

In [15]:
res = coll.find_one(test_id, fields={'culture_graphml_repr'})

In [16]:
graph_list = res['culture_graphml_repr']

In [17]:
len(graph_list)


Out[17]:
1

In [18]:
import networkx as nx


Couldn't import dot_parser, loading of dot files will not be possible.

In [19]:
graphs = []
for g in graph_list:
    g_c = g['content']
    graph = nx.parse_graphml(g_c)
    graphs.append(graph)

In [20]:
for i in range(0, len(graphs)):
    fname = "random-trait-graph-"
    fname += str(i)
    fname += ".dot"
    nx.write_dot(graphs[i], fname)

In [21]:
import madsenlab.axelrod.utils as utils


/Users/mark/anaconda/lib/python2.7/site-packages/pytz/__init__.py:31: UserWarning: Module argparse was already imported from /Users/mark/anaconda/python.app/Contents/lib/python2.7/argparse.pyc, but /Users/mark/anaconda/lib/python2.7/site-packages is being added to sys.path
  from pkg_resources import resource_stream
/Users/mark/anaconda/lib/python2.7/site-packages/pytz/__init__.py:31: UserWarning: Module logging was already imported from /Users/mark/anaconda/python.app/Contents/lib/python2.7/logging/__init__.pyc, but /Users/mark/anaconda/lib/python2.7/site-packages is being added to sys.path
  from pkg_resources import resource_stream
/Users/mark/anaconda/lib/python2.7/site-packages/pytz/__init__.py:31: UserWarning: Module multiprocessing was already imported from /Users/mark/anaconda/python.app/Contents/lib/python2.7/multiprocessing/__init__.pyc, but /Users/mark/anaconda/lib/python2.7/site-packages is being added to sys.path
  from pkg_resources import resource_stream
/Users/mark/anaconda/lib/python2.7/site-packages/pytz/__init__.py:31: UserWarning: Module uuid was already imported from /Users/mark/anaconda/python.app/Contents/lib/python2.7/uuid.pyc, but /Users/mark/anaconda/lib/python2.7/site-packages is being added to sys.path
  from pkg_resources import resource_stream

In [22]:
rec = 0
selected_ids = random.sample(id_list, 1)
for id in selected_ids:
    res = coll.find_one(id, fields={'culture_graphml_repr'})
    graph_list = res['culture_graphml_repr']
    graphs = []
    for g in graph_list:
        g_c = g['content']
        graph = nx.parse_graphml(g_c)
        graphs.append(graph)
    for i in range(0, len(graphs)):
        fname = "tmp/random-trait-graph-"
        fname += "%03d" % rec
        fname += ".dot"
        utils.write_ordered_dot(graphs[i], fname, str(id))   
        rec += 1


strict graph "{u'_id': ObjectId('531df451a61fac1472bb0a02')}" {
0;
1;
2;
85;
88;
89;
170;
171;
172;
174;
177;
255;
256;
258;
259;
340;
341;
342;
343;
344;
348;
355;
359;
425;
426;
427;
428;
429;
432;
443;
510;
511;
512;
514;
527;
530;
595;
596;
597;
598;
599;
605;
680;
681;
682;
683;
684;
686;
765;
766;
767;
768;
850;
851;
852;
935;
936;
937;
938;
939;
943;
946;
971;
1020;
1022;
1023;
1024;
1033;
1105;
1106;
1190;
1191;
1192;
1194;
1197;
1275;
1276;
1279;
0 -- 2;
0 -- 1;
85 -- 88;
85 -- 89;
170 -- 171;
170 -- 172;
170 -- 174;
171 -- 177;
255 -- 256;
255 -- 258;
255 -- 259;
340 -- 341;
340 -- 342;
340 -- 343;
341 -- 348;
343 -- 355;
340 -- 344;
344 -- 359;
426 -- 432;
425 -- 426;
425 -- 427;
425 -- 428;
425 -- 429;
429 -- 443;
510 -- 511;
510 -- 512;
510 -- 514;
514 -- 530;
514 -- 527;
595 -- 599;
595 -- 598;
595 -- 597;
595 -- 596;
597 -- 605;
680 -- 682;
680 -- 681;
680 -- 683;
680 -- 684;
681 -- 686;
765 -- 766;
765 -- 767;
765 -- 768;
850 -- 851;
850 -- 852;
936 -- 943;
935 -- 936;
937 -- 946;
935 -- 937;
935 -- 938;
935 -- 939;
943 -- 971;
1020 -- 1024;
1020 -- 1023;
1020 -- 1022;
1023 -- 1033;
1105 -- 1106;
1190 -- 1192;
1190 -- 1194;
1190 -- 1191;
1191 -- 1197;
1275 -- 1276;
1275 -- 1279;
labelloc="t";
label="{u'_id': ObjectId('531df451a61fac1472bb0a02')}";
}


In [23]:
p = utils.generate_ordered_dot(graph, "foo")

In [24]:
import re

In [1]:
n = 5124
import math
l = math.log10(n)
o = int(math.ceil(l))
print o


4

In [ ]: