In [1]:
from message import Message

with open('test.txt','r') as source:
    sample = source.read()
    
my_message = Message(sample)
my_message = my_message.filter()

In [2]:
counts = my_message.triplet_frequencies()

In [3]:
np.sum(counts)


---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-3-00841a469aef> in <module>()
----> 1 np.sum(counts)

NameError: name 'np' is not defined

In [4]:
import numpy as np

In [5]:
my_message.text


Out[5]:
'     '

In [6]:
a = [1,62,3,5,7,4,5,8,3,92]
b = np.argsort(a)
b[0:5]


Out[6]:
array([0, 2, 8, 5, 3], dtype=int64)

In [7]:
len('   ')


Out[7]:
3

In [74]:
import numpy as np

def best_keys(key_list, encrypted_message, natural_sample, number_returned = 10):
    metric_list = []
    for key in key_list:
        decryption_attempt = encrypted_message.substitute(key)
        metric = metric_function(decryption_attempt, natural_sample)
        metric.append(metric)
    ranking = np.argsort(metric_list)
    return key_list[ranking[0]:ranking[number_returned]]
    
def metric_function(decryption_attempt, natural_sample):
    decryption_attempt.triplet_frequencies()
    difference = abs(natural_sample.rates - decryption_attempt.rates)
    difference = np.absolute(difference) + 1e-10
    metric = -np.sum(1/difference)
    return metric

def metric_function2(decryption_attempt, natural_sample):
    decryption_attempt.triplet_frequencies()
    difference = abs(natural_sample.rates - decryption_attempt.rates)
    difference = np.absolute(difference)
    metric = -np.sum(difference)
    return metric

In [63]:
from message import Message

with open('sample.txt','r') as source:
    message1 = source.read()
with open('sample2.txt','r') as source:
    message2 = source.read()

message1 = Message(message1)
message2 = Message(message2)
    
message1 = message1.filter()
message2 = message2.filter()

message1.triplet_frequencies()
message2.triplet_frequencies()

In [71]:
metric_function(message1,message2)


Out[71]:
142123910345989.09

In [72]:
with open('test.txt','r') as source:
    message = source.read()

random_message = Message(message)

In [73]:
metric_function(random_message, message1)


Out[73]:
148620541785872.06

In [75]:
print metric_function(message1,message2)
print metric_function(random_message, message1)
print metric_function2(message1,message2)
print metric_function2(random_message, message1)


1.42123910346e+14
1.48620541786e+14
0.213559561829
1.98049264461

In [26]:
1 + 1e-3


Out[26]:
1.001

In [34]:
a = np.array([[1,2],[3,4]],dtype=np.float64)

In [35]:
1/a


Out[35]:
array([[ 1.        ,  0.5       ],
       [ 0.33333333,  0.25      ]])

In [33]:
type(a[0])


Out[33]:
numpy.float64

In [36]:
np.sum(a)


Out[36]:
10.0

In [ ]:
a = np.argsort(np.arange(5))

In [ ]:
a.size

In [ ]: