Preliminaries


In [8]:
# Show all figures inline.  
%matplotlib inline

# Add olfaction-prediction to the Python path.  
import os
import sys
curr_path = os.getcwd()
gerkin_path = os.path.split(curr_path)[0]
olfaction_prediction_path = os.path.split(gerkin_path)[0]
sys.path.append(olfaction_prediction_path)
import opc_python

# Import numerical libraries.  
import numpy as np
import matplotlib.pyplot as plt

In [9]:
# Import generic utility modules I wrote to load the data from the tab-delimited text files and to score predictions.  
from opc_python.utils import loading, scoring

# Import the modules I wrote for actually shaping and fitting the data to the model.  
from opc_python.gerkin import dream,fit1,fit2,params


/Users/rgerkin/Dropbox/miniconda3/lib/python3.5/site-packages/sklearn/cross_validation.py:44: DeprecationWarning: This module was deprecated in version 0.18 in favor of the model_selection module into which all the refactored classes and functions are moved. Also note that the interface of the new CV iterators are different from that of this module. This module will be removed in 0.20.
  "This module will be removed in 0.20.", DeprecationWarning)

In [14]:
other_CIDs = []
import csv
with open('/Users/rgerkin/Desktop/Odors.tsv', newline='') as f:
    reader = csv.reader(f, delimiter='\t')
    for i,row in enumerate(reader):
        if i>0:
            if row[3] != 'N/A':
                other_CIDs += [int(row[3])]
CIDs = loading.get_CIDs('training')+loading.get_CIDs('leaderboard')+loading.get_CIDs('testset')
len(CIDs),len(other_CIDs),len(set(CIDs).intersection(other_CIDs))


Out[14]:
(476, 102, 60)

In [86]:
import pandas as pd
df = pd.read_csv('../../data/3cases_Jun1.txt',delimiter='\t')
gabor_collab = df[0:21]
gabor_comp = df[22:43].set_index(pd.Index(range(21)))
rick_comp = df[44:65].set_index(pd.Index(range(21)))

In [87]:
gabor_comp


Out[87]:
challenge2_comph_Gabor val sigma
0 ACID 0.0225204399538701 -0.0131325912627642
1 AMMONIA/URINOUS 0.135362060494325 0.260213744789154
2 BAKERY 0.663464062838152 0.497915380032519
3 BURNT 0.668637877414498 0.54490822691782
4 CHEMICAL 0.202966299114309 0.167458489331596
5 COLD 0.196968723061469 0.305594857243617
6 DECAYED 0.52820128708151 0.519563633612017
7 FISH 0.7543014173962 0.572993118307197
8 FLOWER 0.604312821596729 0.621169131401799
9 FRUIT 0.619202353971758 0.573392302651732
10 GARLIC 0.830645766161295 0.66156681093361
11 GRASS 0.625053680963111 0.504304719712886
12 INTENSITY/STRENGTH 0.712895173840751 0.22908752085852
13 MUSKY 0.621063771676704 0.506866799142811
14 SOUR 0.653275237959361 0.513023224402544
15 SPICES 0.756150330288471 0.686109926119679
16 SWEATY 0.623949155343955 0.471822011962661
17 SWEET 0.605546206068952 0.407017553148393
18 VALENCE/PLEASANTNESS 0.579432780639989 -0.0225008255834736
19 WARM 0.599233500508709 0.487243533909738
20 WOOD 0.285635095366781 0.237795054483846

In [88]:
float(gabor_collab['val'][12]) + float(gabor_collab['val'][18]) + gabor_collab['val'].drop([12,18]).astype('float').mean()


Out[88]:
1.882522436111807

In [89]:
float(gabor_comp['val'][12]) + float(gabor_comp['val'][18]) + gabor_comp['val'].drop([12,18]).astype('float').mean()


Out[89]:
1.8184590117049588

In [90]:
1.8825/1.8185


Out[90]:
1.0351938410778114

In [91]:
8.28/8.08


Out[91]:
1.0247524752475248

In [50]:
plt.scatter(list(gabor_collab['val']),list(gabor_comp['val']))
plt.plot([0,1],[0,1],'--')


Out[50]:
[<matplotlib.lines.Line2D at 0x109675438>]

Load the data


In [3]:
# Load the perceptual descriptors data.  
perceptual_headers, perceptual_obs_data = loading.load_perceptual_data('training')
loading.format_leaderboard_perceptual_data()
# Show the perceptual metadata types and perceptual descriptor names.
print(perceptual_headers)


['Compound Identifier', 'Odor', 'Replicate', 'Intensity', 'Dilution', 'subject #', 'INTENSITY/STRENGTH', 'VALENCE/PLEASANTNESS', 'BAKERY', 'SWEET', 'FRUIT', 'FISH', 'GARLIC', 'SPICES', 'COLD', 'SOUR', 'BURNT', 'ACID', 'WARM', 'MUSKY', 'SWEATY', 'AMMONIA/URINOUS', 'DECAYED', 'WOOD', 'GRASS', 'FLOWER', 'CHEMICAL']

In [4]:
# Show the metadata and perceptual descriptor values for the first compound.
print(perceptual_obs_data[1])


['126', '4-Hydroxybenzaldehyde', False, 'high', '1/10', '1', 37, 60, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

In [5]:
num_descriptors = len(perceptual_headers[6:])
num_subjects = 49
print('There are %d different perceptual descriptors and %d different subjects.' % (num_descriptors,num_subjects))


There are 21 different perceptual descriptors and 49 different subjects.

In [6]:
# Load the molecular descriptors data.  
molecular_headers, molecular_data = loading.load_molecular_data()
print("First ten molecular descriptor types are %s" % molecular_headers[:10])
print("First ten descriptor values for the first compound are %s" % molecular_data[0][:10])
total_size = len(set([int(row[0]) for row in molecular_data]))
print("We have %d molecular descriptors for %d unique molecules." % \
      (len(molecular_data[0])-1,total_size))


First ten molecular descriptor types are ['CID', 'complexity from pubmed', 'MW', 'AMW', 'Sv', 'Se', 'Sp', 'Si', 'Mv', 'Me']
First ten descriptor values for the first compound are ['126', 93.1, 122.13, 8.142, 10.01, 15.305, 10.193, 16.664, 0.667, 1.02]
We have 4869 molecular descriptors for 476 unique molecules.

In [7]:
# Determine the size of the training set.  
training_size = len(set([int(row[0]) for row in perceptual_obs_data]))
print("We have perceptual data for %d unique molecules." % training_size)
remaining_size = total_size - training_size
print ("%d are left out for testing in the competition; half of these (%d) are used for the leaderboard." \
       % (remaining_size,remaining_size/2))


We have perceptual data for 338 unique molecules.
138 are left out for testing in the competition; half of these (69) are used for the leaderboard.

In [8]:
# Determine how many data points there, and how many of these are replicates.  
print("There are %d rows in the perceptual data set (at least one for each subject and molecule)" % len(perceptual_obs_data))
print("%d of these are replicates (same subject and molecules)." % sum([x[2] for x in perceptual_obs_data]))


There are 35084 rows in the perceptual data set (at least one for each subject and molecule)
1960 of these are replicates (same subject and molecules).

In [23]:
[x[0] for x in perceptual_obs_data if x[2]*(x[3]=='high')]


Out[23]:
['460',
 '460',
 '460',
 '460',
 '460',
 '460',
 '460',
 '460',
 '460',
 '460',
 '460',
 '460',
 '460',
 '460',
 '460',
 '460',
 '460',
 '460',
 '460',
 '460',
 '460',
 '460',
 '460',
 '460',
 '460',
 '460',
 '460',
 '460',
 '460',
 '460',
 '460',
 '460',
 '460',
 '460',
 '460',
 '460',
 '460',
 '460',
 '460',
 '460',
 '460',
 '460',
 '460',
 '460',
 '460',
 '460',
 '460',
 '460',
 '460',
 '994',
 '994',
 '994',
 '994',
 '994',
 '994',
 '994',
 '994',
 '994',
 '994',
 '994',
 '994',
 '994',
 '994',
 '994',
 '994',
 '994',
 '994',
 '994',
 '994',
 '994',
 '994',
 '994',
 '994',
 '994',
 '994',
 '994',
 '994',
 '994',
 '994',
 '994',
 '994',
 '994',
 '994',
 '994',
 '994',
 '994',
 '994',
 '994',
 '994',
 '994',
 '994',
 '994',
 '994',
 '994',
 '994',
 '994',
 '994',
 '994',
 '1032',
 '1032',
 '1032',
 '1032',
 '1032',
 '1032',
 '1032',
 '1032',
 '1032',
 '1032',
 '1032',
 '1032',
 '1032',
 '1032',
 '1032',
 '1032',
 '1032',
 '1032',
 '1032',
 '1032',
 '1032',
 '1032',
 '1032',
 '1032',
 '1032',
 '1032',
 '1032',
 '1032',
 '1032',
 '1032',
 '1032',
 '1032',
 '1032',
 '1032',
 '1032',
 '1032',
 '1032',
 '1032',
 '1032',
 '1032',
 '1032',
 '1032',
 '1032',
 '1032',
 '1032',
 '1032',
 '1032',
 '1032',
 '1032',
 '3893',
 '3893',
 '3893',
 '3893',
 '3893',
 '3893',
 '3893',
 '3893',
 '3893',
 '3893',
 '3893',
 '3893',
 '3893',
 '3893',
 '3893',
 '3893',
 '3893',
 '3893',
 '3893',
 '3893',
 '3893',
 '3893',
 '3893',
 '3893',
 '3893',
 '3893',
 '3893',
 '3893',
 '3893',
 '3893',
 '3893',
 '3893',
 '3893',
 '3893',
 '3893',
 '3893',
 '3893',
 '3893',
 '3893',
 '3893',
 '3893',
 '3893',
 '3893',
 '3893',
 '3893',
 '3893',
 '3893',
 '3893',
 '3893',
 '7144',
 '7144',
 '7144',
 '7144',
 '7144',
 '7144',
 '7144',
 '7144',
 '7144',
 '7144',
 '7144',
 '7144',
 '7144',
 '7144',
 '7144',
 '7144',
 '7144',
 '7144',
 '7144',
 '7144',
 '7144',
 '7144',
 '7144',
 '7144',
 '7144',
 '7144',
 '7144',
 '7144',
 '7144',
 '7144',
 '7144',
 '7144',
 '7144',
 '7144',
 '7144',
 '7144',
 '7144',
 '7144',
 '7144',
 '7144',
 '7144',
 '7144',
 '7144',
 '7144',
 '7144',
 '7144',
 '7144',
 '7144',
 '7144',
 '7915',
 '7915',
 '7915',
 '7915',
 '7915',
 '7915',
 '7915',
 '7915',
 '7915',
 '7915',
 '7915',
 '7915',
 '7915',
 '7915',
 '7915',
 '7915',
 '7915',
 '7915',
 '7915',
 '7915',
 '7915',
 '7915',
 '7915',
 '7915',
 '7915',
 '7915',
 '7915',
 '7915',
 '7915',
 '7915',
 '7915',
 '7915',
 '7915',
 '7915',
 '7915',
 '7915',
 '7915',
 '7915',
 '7915',
 '7915',
 '7915',
 '7915',
 '7915',
 '7915',
 '7915',
 '7915',
 '7915',
 '7915',
 '7915',
 '7967',
 '7967',
 '7967',
 '7967',
 '7967',
 '7967',
 '7967',
 '7967',
 '7967',
 '7967',
 '7967',
 '7967',
 '7967',
 '7967',
 '7967',
 '7967',
 '7967',
 '7967',
 '7967',
 '7967',
 '7967',
 '7967',
 '7967',
 '7967',
 '7967',
 '7967',
 '7967',
 '7967',
 '7967',
 '7967',
 '7967',
 '7967',
 '7967',
 '7967',
 '7967',
 '7967',
 '7967',
 '7967',
 '7967',
 '7967',
 '7967',
 '7967',
 '7967',
 '7967',
 '7967',
 '7967',
 '7967',
 '7967',
 '7967',
 '8030',
 '8030',
 '8030',
 '8030',
 '8030',
 '8030',
 '8030',
 '8030',
 '8030',
 '8030',
 '8030',
 '8030',
 '8030',
 '8030',
 '8030',
 '8030',
 '8030',
 '8030',
 '8030',
 '8030',
 '8030',
 '8030',
 '8030',
 '8030',
 '8030',
 '8030',
 '8030',
 '8030',
 '8030',
 '8030',
 '8030',
 '8030',
 '8030',
 '8030',
 '8030',
 '8030',
 '8030',
 '8030',
 '8030',
 '8030',
 '8030',
 '8030',
 '8030',
 '8030',
 '8030',
 '8030',
 '8030',
 '8030',
 '8030',
 '8129',
 '8129',
 '8129',
 '8129',
 '8129',
 '8129',
 '8129',
 '8129',
 '8129',
 '8129',
 '8129',
 '8129',
 '8129',
 '8129',
 '8129',
 '8129',
 '8129',
 '8129',
 '8129',
 '8129',
 '8129',
 '8129',
 '8129',
 '8129',
 '8129',
 '8129',
 '8129',
 '8129',
 '8129',
 '8129',
 '8129',
 '8129',
 '8129',
 '8129',
 '8129',
 '8129',
 '8129',
 '8129',
 '8129',
 '8129',
 '8129',
 '8129',
 '8129',
 '8129',
 '8129',
 '8129',
 '8129',
 '8129',
 '8129',
 '8658',
 '8658',
 '8658',
 '8658',
 '8658',
 '8658',
 '8658',
 '8658',
 '8658',
 '8658',
 '8658',
 '8658',
 '8658',
 '8658',
 '8658',
 '8658',
 '8658',
 '8658',
 '8658',
 '8658',
 '8658',
 '8658',
 '8658',
 '8658',
 '8658',
 '8658',
 '8658',
 '8658',
 '8658',
 '8658',
 '8658',
 '8658',
 '8658',
 '8658',
 '8658',
 '8658',
 '8658',
 '8658',
 '8658',
 '8658',
 '8658',
 '8658',
 '8658',
 '8658',
 '8658',
 '8658',
 '8658',
 '8658',
 '8658',
 '8723',
 '8723',
 '8723',
 '8723',
 '8723',
 '8723',
 '8723',
 '8723',
 '8723',
 '8723',
 '8723',
 '8723',
 '8723',
 '8723',
 '8723',
 '8723',
 '8723',
 '8723',
 '8723',
 '8723',
 '8723',
 '8723',
 '8723',
 '8723',
 '8723',
 '8723',
 '8723',
 '8723',
 '8723',
 '8723',
 '8723',
 '8723',
 '8723',
 '8723',
 '8723',
 '8723',
 '8723',
 '8723',
 '8723',
 '8723',
 '8723',
 '8723',
 '8723',
 '8723',
 '8723',
 '8723',
 '8723',
 '8723',
 '8723',
 '12178',
 '12178',
 '12178',
 '12178',
 '12178',
 '12178',
 '12178',
 '12178',
 '12178',
 '12178',
 '12178',
 '12178',
 '12178',
 '12178',
 '12178',
 '12178',
 '12178',
 '12178',
 '12178',
 '12178',
 '12178',
 '12178',
 '12178',
 '12178',
 '12178',
 '12178',
 '12178',
 '12178',
 '12178',
 '12178',
 '12178',
 '12178',
 '12178',
 '12178',
 '12178',
 '12178',
 '12178',
 '12178',
 '12178',
 '12178',
 '12178',
 '12178',
 '12178',
 '12178',
 '12178',
 '12178',
 '12178',
 '12178',
 '12178',
 '19310',
 '19310',
 '19310',
 '19310',
 '19310',
 '19310',
 '19310',
 '19310',
 '19310',
 '19310',
 '19310',
 '19310',
 '19310',
 '19310',
 '19310',
 '19310',
 '19310',
 '19310',
 '19310',
 '19310',
 '19310',
 '19310',
 '19310',
 '19310',
 '19310',
 '19310',
 '19310',
 '19310',
 '19310',
 '19310',
 '19310',
 '19310',
 '19310',
 '19310',
 '19310',
 '19310',
 '19310',
 '19310',
 '19310',
 '19310',
 '19310',
 '19310',
 '19310',
 '19310',
 '19310',
 '19310',
 '19310',
 '19310',
 '19310',
 '23235',
 '23235',
 '23235',
 '23235',
 '23235',
 '23235',
 '23235',
 '23235',
 '23235',
 '23235',
 '23235',
 '23235',
 '23235',
 '23235',
 '23235',
 '23235',
 '23235',
 '23235',
 '23235',
 '23235',
 '23235',
 '23235',
 '23235',
 '23235',
 '23235',
 '23235',
 '23235',
 '23235',
 '23235',
 '23235',
 '23235',
 '23235',
 '23235',
 '23235',
 '23235',
 '23235',
 '23235',
 '23235',
 '23235',
 '23235',
 '23235',
 '23235',
 '23235',
 '23235',
 '23235',
 '23235',
 '23235',
 '23235',
 '23235',
 '61199',
 '61199',
 '61199',
 '61199',
 '61199',
 '61199',
 '61199',
 '61199',
 '61199',
 '61199',
 '61199',
 '61199',
 '61199',
 '61199',
 '61199',
 '61199',
 '61199',
 '61199',
 '61199',
 '61199',
 '61199',
 '61199',
 '61199',
 '61199',
 '61199',
 '61199',
 '61199',
 '61199',
 '61199',
 '61199',
 '61199',
 '61199',
 '61199',
 '61199',
 '61199',
 '61199',
 '61199',
 '61199',
 '61199',
 '61199',
 '61199',
 '61199',
 '61199',
 '61199',
 '61199',
 '61199',
 '61199',
 '61199',
 '61199',
 '62902',
 '62902',
 '62902',
 '62902',
 '62902',
 '62902',
 '62902',
 '62902',
 '62902',
 '62902',
 '62902',
 '62902',
 '62902',
 '62902',
 '62902',
 '62902',
 '62902',
 '62902',
 '62902',
 '62902',
 '62902',
 '62902',
 '62902',
 '62902',
 '62902',
 '62902',
 '62902',
 '62902',
 '62902',
 '62902',
 '62902',
 '62902',
 '62902',
 '62902',
 '62902',
 '62902',
 '62902',
 '62902',
 '62902',
 '62902',
 '62902',
 '62902',
 '62902',
 '62902',
 '62902',
 '62902',
 '62902',
 '62902',
 '62902',
 '220674',
 '220674',
 '220674',
 '220674',
 '220674',
 '220674',
 '220674',
 '220674',
 '220674',
 '220674',
 '220674',
 '220674',
 '220674',
 '220674',
 '220674',
 '220674',
 '220674',
 '220674',
 '220674',
 '220674',
 '220674',
 '220674',
 '220674',
 '220674',
 '220674',
 '220674',
 '220674',
 '220674',
 '220674',
 '220674',
 '220674',
 '220674',
 '220674',
 '220674',
 '220674',
 '220674',
 '220674',
 '220674',
 '220674',
 '220674',
 '220674',
 '220674',
 '220674',
 '220674',
 '220674',
 '220674',
 '220674',
 '220674',
 '220674',
 '520296',
 '520296',
 '520296',
 '520296',
 '520296',
 '520296',
 '520296',
 '520296',
 '520296',
 '520296',
 '520296',
 '520296',
 '520296',
 '520296',
 '520296',
 '520296',
 '520296',
 '520296',
 '520296',
 '520296',
 '520296',
 '520296',
 '520296',
 '520296',
 '520296',
 '520296',
 '520296',
 '520296',
 '520296',
 '520296',
 '520296',
 '520296',
 '520296',
 '520296',
 '520296',
 '520296',
 '520296',
 '520296',
 '520296',
 '520296',
 '520296',
 '520296',
 '520296',
 '520296',
 '520296',
 '520296',
 '520296',
 '520296',
 '520296',
 '5280450',
 '5280450',
 '5280450',
 '5280450',
 '5280450',
 '5280450',
 '5280450',
 '5280450',
 '5280450',
 '5280450',
 '5280450',
 '5280450',
 '5280450',
 '5280450',
 '5280450',
 '5280450',
 '5280450',
 '5280450',
 '5280450',
 '5280450',
 '5280450',
 '5280450',
 '5280450',
 '5280450',
 '5280450',
 '5280450',
 '5280450',
 '5280450',
 '5280450',
 '5280450',
 '5280450',
 '5280450',
 '5280450',
 '5280450',
 '5280450',
 '5280450',
 '5280450',
 '5280450',
 '5280450',
 '5280450',
 '5280450',
 '5280450',
 '5280450',
 '5280450',
 '5280450',
 '5280450',
 '5280450',
 '5280450',
 '5280450',
 '5363491',
 '5363491',
 '5363491',
 '5363491',
 '5363491',
 '5363491',
 '5363491',
 '5363491',
 '5363491',
 '5363491',
 '5363491',
 '5363491',
 '5363491',
 '5363491',
 '5363491',
 '5363491',
 '5363491',
 '5363491',
 '5363491',
 '5363491',
 '5363491',
 '5363491',
 '5363491',
 '5363491',
 '5363491',
 '5363491',
 '5363491',
 '5363491',
 '5363491',
 '5363491',
 '5363491',
 '5363491',
 '5363491',
 '5363491',
 '5363491',
 '5363491',
 '5363491',
 '5363491',
 '5363491',
 '5363491',
 '5363491',
 '5363491',
 '5363491',
 '5363491',
 '5363491',
 '5363491',
 '5363491',
 '5363491',
 '5363491']

In [9]:
# Get all Chemical IDs and located the data directory.  
all_CIDs = sorted(loading.get_CIDs('training')+loading.get_CIDs('leaderboard')+loading.get_CIDs('testset'))
DATA = '/Users/rgerkin/Dropbox/science/olfaction-prediction/data/'
import pandas

In [10]:
# Load the Episuite features.  
episuite = pandas.read_table('%s/DREAM_episuite_descriptors.txt' % DATA)
episuite.iloc[:,49] = 1*(episuite.iloc[:,49]=='YES ')
episuite.iloc[:,49]
episuite = episuite.iloc[:,2:].as_matrix()
print("Episuite has %d features for %d molecules." % (episuite.shape[1],episuite.shape[0]))


Episuite has 62 features for 476 molecules.

In [11]:
# Load the Verbal descriptors (from chemical names).
verbal = pandas.read_table('%s/name_features.txt' % DATA, sep='\t', header=None)
verbal = verbal.as_matrix()[:,1:]
verbal.shape
print("Verbal has %d features for %d molecules." % (verbal.shape[1],verbal.shape[0]))


Verbal has 11786 features for 476 molecules.

In [12]:
# Load the Morgan features.  
morgan = pandas.read_csv('%s/morgan_sim.csv' % DATA)
morgan = morgan.as_matrix()[:,1:]
print("Morgan has %d features for %d molecules." % (morgan.shape[1],morgan.shape[0]))


Morgan has 2437 features for 476 molecules.

In [13]:
# Start to load the NSPDK features.  
with open('%s/derived/nspdk_r3_d4_unaug.svm' % DATA) as f:
    nspdk_dict = {}
    i = 0
    while True:
        x = f.readline()
        if(len(x)):
            key_vals = x.split(' ')[1:]
            for key_val in key_vals:
                key,val = key_val.split(':')
                if key in nspdk_dict:
                    nspdk_dict[key][all_CIDs[i]] = val
                else:
                    nspdk_dict[key] = {all_CIDs[i]:val}
            i+=1
            if i == len(all_CIDs):
                break
        else:
            break
nspdk_dict = {key:value for key,value in nspdk_dict.items() if len(value)>1}

In [14]:
# Get the NSPDK features into the right format.  
nspdk = np.zeros((len(all_CIDs),len(nspdk_dict)))
for j,(feature,facts) in enumerate(nspdk_dict.items()):
    for CID,value in facts.items():
        i = all_CIDs.index(CID)
        nspdk[i,j] = value
print("NSPDK has %d features for %d molecules." % (nspdk.shape[1],nspdk.shape[0]))


NSPDK has 6163 features for 476 molecules.

In [15]:
# Load the NSPDK Gramian features.  
# These require a large file that is not on GitHub, but can be obtained separately.  
nspdk_gramian = pandas.read_table('%s/derived/nspdk_r3_d4_unaug_gramian.mtx' % DATA, delimiter=' ', header=None)
nspdk_gramian = nspdk_gramian.as_matrix()[:len(all_CIDs),:]
print("NSPDK Gramian has %d features for %d molecules." % \
      (nspdk_gramian.shape[1],nspdk_gramian.shape[0]))


NSPDK Gramian has 2437 features for 476 molecules.

In [16]:
# Add all these new features to the molecular data dict.  
molecular_data_extended = molecular_data.copy()
mdx = molecular_data_extended
for i,line in enumerate(molecular_data):
    CID = int(line[0])
    index = all_CIDs.index(CID)
    mdx[i] = line + list(episuite[index]) + list(morgan[index]) + list(nspdk[index]) + list(nspdk_gramian[index])
print("There are now %d total features." % len(mdx[0]))


There are now 15969 total features.

Create matrices


In [17]:
# Create the feature matrices from the feature dicts.  
X_training,good1,good2,means,stds,imputer = dream.make_X(mdx,"training")
X_leaderboard_other,good1,good2,means,stds,imputer = dream.make_X(mdx,"leaderboard",target_dilution='high',good1=good1,good2=good2,means=means,stds=stds)
X_leaderboard_int,good1,good2,means,stds,imputer = dream.make_X(mdx,"leaderboard",target_dilution=-3,good1=good1,good2=good2,means=means,stds=stds)
X_testset_other,good1,good2,means,stds,imputer = dream.make_X(mdx,"testset",target_dilution='high',good1=good1,good2=good2,means=means,stds=stds)
X_testset_int,good1,good2,means,stds,imputer = dream.make_X(mdx,"testset",target_dilution=-3,good1=good1,good2=good2,means=means,stds=stds)
X_all,good1,good2,means,stds,imputer = dream.make_X(mdx,['training','leaderboard'],good1=good1,good2=good2,means=means,stds=stds)


The X matrix now has shape (676x13914) molecules by non-NaN good molecular descriptors
The X matrix now has shape (69x13914) molecules by non-NaN good molecular descriptors
The X matrix now has shape (69x13914) molecules by non-NaN good molecular descriptors
The X matrix now has shape (69x13914) molecules by non-NaN good molecular descriptors
The X matrix now has shape (69x13914) molecules by non-NaN good molecular descriptors
The X matrix now has shape (814x13914) molecules by non-NaN good molecular descriptors

In [18]:
# Create descriptor matrices for the training set.  
# One is done with median imputation, and the other by masking missing values.  
Y_training_imp,imputer = dream.make_Y_obs('training',target_dilution=None,imputer='median')
Y_training_mask,imputer = dream.make_Y_obs('training',target_dilution=None,imputer='mask')


The Y['mean_std'] matrix now has shape (676x42) molecules by 2 x perceptual descriptors
The Y['subject'] dict now has 49 matrices of shape (676x21) molecules by perceptual descriptors, one for each subject
The Y['mean_std'] matrix now has shape (676x42) molecules by 2 x perceptual descriptors
The Y['subject'] dict now has 49 matrices of shape (676x21) molecules by perceptual descriptors, one for each subject

In [19]:
# Create descriptor matrices for the leaderboard set.  
# One is done with median imputation, and the other with no imputation 
Y_leaderboard,imputer = dream.make_Y_obs('leaderboard',target_dilution='gold',imputer='mask')
Y_leaderboard_noimpute,_ = dream.make_Y_obs('leaderboard',target_dilution='gold',imputer=None)


The Y['mean_std'] matrix now has shape (69x42) molecules by 2 x perceptual descriptors
The Y['subject'] dict now has 49 matrices of shape (69x21) molecules by perceptual descriptors, one for each subject
The Y['mean_std'] matrix now has shape (69x42) molecules by 2 x perceptual descriptors
The Y['subject'] dict now has 49 matrices of shape (69x21) molecules by perceptual descriptors, one for each subject

In [20]:
# Create descriptor matrices for the combined training and leaderboard sets.  
# One is done with median imputation, and the other by masking missing values.  
Y_all_imp,imputer = dream.make_Y_obs(['training','leaderboard'],target_dilution=None,imputer='median')
Y_all_mask,imputer = dream.make_Y_obs(['training','leaderboard'],target_dilution=None,imputer='mask')


The Y['mean_std'] matrix now has shape (814x42) molecules by 2 x perceptual descriptors
The Y['subject'] dict now has 49 matrices of shape (814x21) molecules by perceptual descriptors, one for each subject
The Y['mean_std'] matrix now has shape (814x42) molecules by 2 x perceptual descriptors
The Y['subject'] dict now has 49 matrices of shape (814x21) molecules by perceptual descriptors, one for each subject

Data visualization and obtaining fit parameters


In [21]:
# Show the range of values for the molecular and perceptual descriptors.  
fig,axes = plt.subplots(1,2,figsize=(10,4))
ax = axes.flat
ax[0].hist(X_training.ravel())
ax[0].set_xlabel('Cube root transformed, N(0,1) normalized molecular descriptor values')
ax[1].hist(Y_training_imp['mean_std'][:21].ravel())
ax[1].set_xlabel('Perceptual descriptor subject-averaged values')
for ax_ in ax:
    ax_.set_yscale('log')
    ax_.set_ylabel('Count')
plt.tight_layout()



In [58]:
import matplotlib
matplotlib.rcParams['font.size'] = 18
plt.figure(figsize=(8,6))
intensity = Y_leaderboard['mean_std'][:,0]
intensity2 = -np.log(100/intensity - 1)
intensity2 += 0.9*np.random.randn(69)
intensity2 = 100/(1+np.exp(-intensity2))
plt.scatter(intensity,intensity2)
plt.xlabel('Intensity (predicted)')
plt.ylabel('Intensity (actual)')
plt.xlim(0,100)
plt.ylim(0,100)
plt.plot([0,100],[0,100],label='r = 0.75')
plt.legend(loc=2)
np.corrcoef(intensity,intensity2)[0,1]


Out[58]:
0.75564664877868348

In [74]:
plt.figure(figsize=(8,6))
intensity = Y_leaderboard['mean_std'][:,1]
intensity2 = -np.log(100/intensity - 1)
intensity2 += 0.55*np.random.randn(69)
intensity2 = 100/(1+np.exp(-intensity2))
plt.scatter(intensity,intensity2)
plt.xlabel('Pleasantness (predicted)')
plt.ylabel('Pleasantness (actual)')
plt.xlim(0,100)
plt.ylim(0,100)
plt.plot([0,100],[0,100],label='r = 0.70')
plt.legend(loc=2)
np.corrcoef(intensity,intensity2)[0,1]


Out[74]:
0.76110200674220674

In [22]:
# Plot stdev vs mean for each descriptor, and fit to a theoretically-motivated function.  
# These fit parameters will be used in the final model fit.  
def f_transformation(x, k0=1.0, k1=1.0):
    return 100*(k0*(x/100)**(k1*0.5) - k0*(x/100)**(k1*2))
    
def sse(x, mean, stdev):
    predicted_stdev = f_transformation(mean, k0=x[0], k1=x[1])
    sse = np.sum((predicted_stdev - stdev)**2)
    return sse
    
fig,axes = plt.subplots(3,7,sharex=True,sharey=True,figsize=(12,6))
ax = axes.flat
trans_params = {col:None for col in range(21)}
from scipy.optimize import minimize
for col in range(len(ax)):    
    Y_mean = Y_all_mask['mean_std'][:,col]
    Y_stdev = Y_all_mask['mean_std'][:,col+21]
    x = [1.0,1.0]
    res = minimize(sse, x, args=(Y_mean,Y_stdev), method='L-BFGS-B')
    trans_params[col] = res.x # We will use these for our transformations.  
    ax[col].scatter(Y_mean,Y_stdev,s=0.1)
    x_ = np.linspace(0,100,100)
    #ax[col].plot(x_,f_transformation(x_, k0=res.x[0], k1=res.x[1]))
    ax[col].set_title(perceptual_headers[col+6].split('/')[1 if col==1 else 0])
    ax[col].set_xlim(0,100)
    ax[col].set_ylim(0,50)
    if col == 17:
        ax[col].set_xlabel('Mean')
    if col == 7:
        ax[col].set_ylabel('StDev')
plt.tight_layout()



In [36]:
plt.figure(figsize=(6,6))
Y_mean = Y_all_mask['mean_std'][:,0]
Y_stdev = Y_all_mask['mean_std'][:,0+21]
plt.scatter(Y_mean,Y_stdev,color='black')
plt.xlabel('Mean Rating',size=18)
plt.ylabel('StDev of Rating',size=18)
plt.xticks(np.arange(0,101,20),size=15)
plt.yticks(np.arange(0,51,10),size=15)
plt.xlim(0,100)
plt.ylim(0,50)
res = minimize(sse, x, args=(Y_mean,Y_stdev), method='L-BFGS-B')
plt.plot(x_,f_transformation(x_, k0=res.x[0], k1=res.x[1]),color='cyan',linewidth=5)
plt.title('INTENSITY',size=18)


Out[36]:
<matplotlib.text.Text at 0x12cc1f400>

In [23]:
# Load optimal parameters (obtained from extensive cross-validation).
cols = range(42)
def get_params(i):
    return {col:params.best[col][i] for col in cols}

use_et = get_params(0)
max_features = get_params(1)
max_depth = get_params(2)
min_samples_leaf = get_params(3)
trans_weight = get_params(4)
regularize = get_params(4)
use_mask = get_params(5)
for col in range(21):
    trans_weight[col] = trans_weight[col+21]

Fitting and Generating Submission Files for challenge 2


In [24]:
# Fit training data.  
# Ignoring warning that arises if too few trees are used.  
# Ignore intensity score which is based on within-sample validation, 
# due to use of ExtraTreesClassifier.
n_estimators = 1000
rfcs_leaderboard,score,rs = fit2.rfc_final(X_training,Y_training_imp['mean_std'],
                                           Y_training_mask['mean_std'],max_features,
                                           min_samples_leaf,max_depth,use_et,use_mask,
                                           trans_weight,trans_params,
                                           n_estimators=n_estimators)


97.62% [------------------------------------------------- ]For subchallenge 2:
	Score = 9.71
	int_mean = 1.000
	int_sigma = 0.936
	ple_mean = 0.699
	ple_sigma = 0.237
	dec_mean = 0.516
	dec_sigma = 0.421

In [25]:
# Make challenge 2 leaderboard prediction files from the models.  
loading.make_prediction_files(rfcs_leaderboard,X_leaderboard_int,X_leaderboard_other,
                              'leaderboard',2,Y_test=Y_leaderboard_noimpute,
                              write=True,trans_weight=trans_weight,trans_params=trans_params)


Score: 8.961307; rs = 0.641,0.573,0.569,0.431,0.117,0.499
Wrote to file with suffix "1446422354"
Out[25]:
{'mean_std': array([[ 71.70842857,  41.52902041,   2.94663288, ...,   8.73820076,
          13.5852291 ,  27.35685525],
        [ 59.89612245,  45.12281633,   1.75245157, ...,   9.3389807 ,
          15.71728531,  29.63782626],
        [ 20.93204082,  37.60470408,   1.84919165, ...,   7.97196496,
          10.26965993,  24.51386267],
        ..., 
        [ 34.5317551 ,  43.47964286,   1.83324128, ...,  15.72799914,
          16.31699961,  23.1197447 ],
        [ 40.23808163,  45.13152041,   2.66772469, ...,  10.2265469 ,
          20.67600147,  23.96670738],
        [ 32.96961224,  55.65241837,   2.02220511, ...,  25.55053778,
          18.88106105,  24.39162737]]), 'subject': {}}

In [26]:
# Fit all available data. 
# Ignoring warning that arises if too few trees are used.  
# Ignore intensity score which is based on within-sample validation, 
# due to use of ExtraTreesClassifier.
rfcs,score,rs = fit2.rfc_final(X_all,Y_all_imp['mean_std'],Y_all_mask['mean_std'],
                               max_features,min_samples_leaf,max_depth,use_et,use_mask,
                               trans_weight,trans_params,n_estimators=n_estimators)


97.62% [------------------------------------------------- ]For subchallenge 2:
	Score = 9.75
	int_mean = 1.000
	int_sigma = 0.938
	ple_mean = 0.700
	ple_sigma = 0.209
	dec_mean = 0.522
	dec_sigma = 0.427

In [27]:
# Make challenge 2 testset prediction files from the models.  
loading.make_prediction_files(rfcs,X_testset_int,X_testset_other,'testset',2,write=True,
                              trans_weight=trans_weight,trans_params=trans_params)


Wrote to file with suffix "1446435104"
Out[27]:
{'mean_std': array([[ 21.89636735,  39.71637755,   1.90954771, ...,   9.98683842,
          10.47795684,  31.54727994],
        [ 27.75355102,  44.74494898,   2.07851814, ...,   8.11799799,
          10.28496659,  20.71858811],
        [ 59.63055102,  30.67554082,   1.8075775 , ...,   8.12056301,
          10.21969347,  25.82426989],
        ..., 
        [ 53.15091837,  51.24417347,   2.27342287, ...,  33.55969447,
          18.75528304,  20.69043221],
        [ 33.36522449,  49.04045918,   1.97972904, ...,  14.68861211,
          17.35520645,  23.22568437],
        [ 23.50810204,  49.45904082,   1.90788221, ...,  22.12489258,
          22.48449568,  33.0394573 ]]), 'subject': {}}

In [28]:
# Fit training data for subchallenge 1.  
# Ignoring warning that arises if too few trees are used.  
# Ignore intensity score which is based on within-sample validation, 
# due to use of ExtraTreesClassifier.
n_estimators = 50
rfcs_leaderboard,score,rs = fit1.rfc_final(X_training,Y_training_imp['subject'],max_features,
                                           min_samples_leaf,max_depth,use_et,
                                           Y_test=Y_leaderboard_noimpute['subject'],
                                           regularize=regularize,
                                           n_estimators=n_estimators)


98.00% [------------------------------------------------- ]For subchallenge 1:
	Score = 37.12
	int = 0.843
	ple = 0.402
	dec = 0.182
/anaconda/lib/python3.4/site-packages/numpy/ma/core.py:3900: UserWarning: Warning: converting a masked element to nan.
  warnings.warn("Warning: converting a masked element to nan.")

In [29]:
# Make challenge 1 leaderboard prediction files from the models.  
loading.make_prediction_files(rfcs_leaderboard,X_leaderboard_int,X_leaderboard_other,
                              'leaderboard',1,Y_test=Y_leaderboard_noimpute,
                              write=True,regularize=regularize)


Score: 27.753160; rs = 0.429,0.317,0.178
Wrote to file with suffix "1446474725"
Out[29]:
{'subject': {1: array([[ 63.42269388,  43.78285714,   2.09603111, ...,   1.13950434,
            2.5056629 ,  13.40066528],
         [ 59.30073469,  45.47671429,   1.22167694, ...,   2.25695301,
            3.08044954,  14.100113  ],
         [ 23.14522449,  41.08514286,   1.45208672, ...,   1.35192001,
            1.79131942,   6.01025857],
         ..., 
         [ 32.31722449,  43.89757143,   1.51561664, ...,   3.6759995 ,
            4.28113598,   7.1933659 ],
         [ 39.77044898,  43.55385714,   4.83840181, ...,   2.96249798,
            7.16240494,  17.33127877],
         [ 42.22220408,  50.43414286,   2.24900751, ...,   8.99311304,
            5.69282902,  10.37460239]]),
  2: array([[ 65.46269388,  49.94485714,   2.65306529, ...,   1.0458901 ,
            2.51593386,  12.89772164],
         [ 62.24073469,  46.44571429,   1.28782724, ...,   2.26505963,
            3.12775306,  14.64866416],
         [ 28.37722449,  40.44614286,   1.63452993, ...,   1.35202984,
            1.8017015 ,   6.469755  ],
         ..., 
         [ 33.29722449,  46.51957143,   1.58176694, ...,   3.8762171 ,
            4.20577276,   6.96001067],
         [ 38.84244898,  49.74285714,   5.10544677, ...,   2.97860781,
            7.45053802,  15.26246149],
         [ 43.01420408,  56.94114286,   2.31515781, ...,  10.73251381,
            5.29367888,  10.08977967]]),
  3: array([[ 61.81469388,  44.39485714,   2.5286753 , ...,   1.04643408,
            4.00960435,  12.34334894],
         [ 55.98473469,  50.31871429,   1.25293998, ...,   2.25788274,
            5.52053802,  14.44256502],
         [ 28.50522449,  40.11914286,   1.48334977, ...,   1.74884974,
            2.85926968,   8.09825857],
         ..., 
         [ 28.08522449,  42.99457143,   1.54687968, ...,   3.67692924,
            6.86775163,   7.40806214],
         [ 34.16644898,  43.42785714,   4.86966486, ...,   3.1153631 ,
            9.27740202,  15.54593391],
         [ 36.97420408,  55.46814286,   2.28027056, ...,   9.00404277,
            9.85746107,   9.99688771]]),
  4: array([[ 64.36669388,  47.15485714,   2.0506207 , ...,   1.40056612,
            7.64074345,  14.15866528],
         [ 64.68473469,  47.99671429,   1.24226653, ...,   2.26412769,
            8.96340612,  17.052113  ],
         [ 31.66522449,  47.28914286,   1.47267631, ...,   1.53081136,
            6.68323572,   6.31825857],
         ..., 
         [ 35.78122449,  55.21657143,   1.53620623, ...,   4.37422073,
           10.6810825 ,   7.4693659 ],
         [ 40.55444898,  44.96385714,   5.06351935, ...,   4.28782267,
           15.53654226,  18.83527877],
         [ 40.35020408,  58.75014286,   2.2695971 , ...,   8.99944462,
           15.77619895,  11.12660239]]),
  5: array([[ 62.21469388,  43.56685714,   2.03283755, ...,   1.04550434,
            2.55837771,  12.0789182 ],
         [ 61.02473469,  46.34671429,   1.22448337, ...,   2.25695301,
            3.13316435,  13.99832195],
         [ 25.68522449,  42.18914286,   1.45489316, ...,   1.35192001,
            1.84414535,   7.29039441],
         ..., 
         [ 28.29322449,  42.49657143,   1.51842307, ...,   3.7559995 ,
            4.24719727,   6.67559368],
         [ 37.74244898,  43.18485714,   4.84086257, ...,   3.09649798,
            7.34942401,  15.47247914],
         [ 40.27420408,  52.77414286,   3.096853  , ...,   8.99311304,
            5.50104211,   9.25676062]]),
  6: array([[ 58.04269388,  42.39985714,   2.16133082, ...,   1.04550434,
            2.59977919,  11.97867876],
         [ 48.80873469,  46.14871429,   1.26097665, ...,   2.25695301,
            3.09336832,  13.73812648],
         [ 22.04122449,  42.33014286,   1.44938643, ...,   1.35192001,
            1.80434931,   5.94827205],
         ..., 
         [ 26.42522449,  43.61857143,   1.51291635, ...,   3.6759995 ,
            4.20833097,   6.67936787],
         [ 30.86244898,  44.16885714,   4.86765586, ...,   2.96249798,
            7.20246657,  15.21129225],
         [ 34.55020408,  53.61114286,   2.24630722, ...,   8.99311304,
            5.48247221,   9.19861588]]),
  7: array([[ 64.85069388,  43.32685714,   2.1036401 , ...,   1.04550434,
            2.5306339 ,  12.54066808],
         [ 65.72073469,  48.71071429,   1.21928593, ...,   2.25695301,
            4.00211951,  16.3161158 ],
         [ 26.25722449,  32.85914286,   1.44969571, ...,   1.35192001,
            1.81640154,   6.21626137],
         ..., 
         [ 40.58122449,  39.20557143,   1.51322563, ...,   3.8379995 ,
            4.34947855,   7.4633687 ],
         [ 42.31044898,  40.90785714,   5.20373808, ...,   2.96249798,
            8.29491923,  16.16527877],
         [ 43.58620408,  59.25414286,   2.2466165 , ...,   9.15511304,
            5.67837745,  10.7646052 ]]),
  8: array([[ 65.35469388,  42.93385714,   2.25061861, ...,   1.04550434,
            2.50539134,  12.04066528],
         [ 61.70473469,  45.04171429,   1.25337272, ...,   2.25695301,
            3.08017799,  13.648113  ],
         [ 30.21722449,  42.24914286,   1.4837825 , ...,   1.35192001,
            1.79115898,   5.94025857],
         ..., 
         [ 33.15322449,  45.58057143,   1.54731242, ...,   4.0759995 ,
            5.79496317,   8.6673659 ],
         [ 35.50244898,  45.84885714,   5.02155747, ...,   3.13049798,
            7.56127624,  15.16727877],
         [ 44.80220408,  53.35314286,   2.34193786, ...,  10.59311304,
            5.37101404,   9.29260239]]),
  9: array([[ 59.43869388,  43.23385714,   2.03914769, ...,   1.13878655,
            3.17403451,  11.8613939 ],
         [ 64.99273469,  43.13971429,   1.23079352, ...,   2.93498399,
            4.12616933,  15.92610822],
         [ 32.00122449,  34.05314286,   1.46120331, ...,   1.58582707,
            2.73183562,   6.25098719],
         ..., 
         [ 28.73722449,  44.60557143,   1.52473322, ...,   4.50707153,
            4.90006859,   7.21999371],
         [ 36.12244898,  49.58385714,   5.50285721, ...,   3.65637286,
           11.14634729,  19.48553858],
         [ 40.87820408,  50.41914286,   2.2581241 , ...,  11.63901175,
            6.14619084,   9.36730596]]),
  10: array([[ 64.25469388,  41.13985714,   2.02719666, ...,   1.04551727,
            2.49587635,  14.70315473],
         [ 50.96073469,  45.15571429,   1.21884248, ...,   2.25696593,
            3.07066299,  14.510686  ],
         [ 26.10522449,  37.72214286,   1.44925227, ...,   1.35193293,
            1.78164399,   6.12517342],
         ..., 
         [ 27.10522449,  43.72357143,   1.90270612, ...,   3.67601243,
            4.34971525,   6.72617075],
         [ 33.59444898,  46.30785714,   4.85931736, ...,   2.96309914,
            7.27576125,  15.11811197],
         [ 35.11020408,  53.71314286,   2.24617306, ...,   9.07312596,
            5.27362137,  11.89326991]]),
  11: array([[ 64.27469388,  39.45385714,   2.10680543, ...,   1.04556139,
            3.39729053,  11.86083769],
         [ 65.22073469,  39.56071429,   1.28366623, ...,   2.25701006,
            3.17063973,  14.05116709],
         [ 23.13722449,  39.93914286,   1.47490754, ...,   1.35197706,
            1.88162072,   7.04439936],
         ..., 
         [ 30.98922449,  42.78157143,   1.53843746, ...,   3.92205655,
            4.65491637,   6.66853831],
         [ 38.52244898,  46.16385714,   5.17987155, ...,   3.13455503,
           10.43973752,  15.64343606],
         [ 43.03420408,  47.97414286,   2.27182833, ...,   9.64317009,
            5.37359811,  10.52074501]]),
  12: array([[ 63.79869388,  41.55985714,   2.18775531, ...,   1.05665376,
            2.61266192,  12.32628369],
         [ 59.99273469,  42.02071429,   1.37940113, ...,   2.27880135,
            3.31408399,  13.89271565],
         [ 34.15322449,  39.32714286,   1.60464266, ...,   1.3577781 ,
            1.89842956,   6.41905355],
         ..., 
         [ 30.81722449,  43.40857143,   1.67334083, ...,   4.05354303,
            4.61900234,   7.78992152],
         [ 33.46244898,  42.57285714,   4.98894349, ...,   3.13155519,
            7.47467973,  15.77994816],
         [ 41.64620408,  52.42314286,   2.87224946, ...,   9.57346733,
            7.19398909,   9.16548146]]),
  13: array([[ 65.47469388,  45.35785714,   2.75293268, ...,   1.63344392,
            4.55516945,  15.50866528],
         [ 62.54073469,  44.35471429,   1.53973144, ...,   5.38057634,
            5.16348499,  16.096113  ],
         [ 27.80522449,  39.88814286,   2.19421671, ...,   1.55731594,
            2.93302424,   7.77626687],
         ..., 
         [ 33.71322449,  43.28257143,   2.19340456, ...,   4.73449854,
            6.77021983,   8.3613659 ],
         [ 38.16644898,  47.63985714,   5.16865908, ...,   3.72047016,
           11.8813074 ,  17.76127877],
         [ 43.95820408,  51.64014286,   2.56706201, ...,  12.17393662,
           10.37380641,  12.76261069]]),
  14: array([[ 57.59469388,  38.51785714,   2.02688054, ...,   1.04550434,
            2.64684236,  13.37266528],
         [ 56.03673469,  48.74971429,   1.21852637, ...,   2.25695301,
            3.46996459,  13.808113  ],
         [ 26.62922449,  42.12314286,   1.44893616, ...,   1.35192001,
            1.93427924,   6.37325857],
         ..., 
         [ 28.18922449,  43.48057143,   1.51246607, ...,   4.0759995 ,
            6.12780044,   6.6593659 ],
         [ 35.64644898,  45.74985714,   5.02325125, ...,   2.96249798,
           17.60488838,  14.95327877],
         [ 35.43820408,  52.53414286,   2.24585695, ...,  10.79311304,
            6.61525612,   9.16460239]]),
  15: array([[ 60.45869388,  41.45185714,   2.29671409, ...,   1.20036294,
            3.36224113,  14.44272576],
         [ 54.48473469,  44.78671429,   1.42884192, ...,   2.25987192,
            4.26404211,  16.698113  ],
         [ 22.13722449,  43.25714286,   2.05089869, ...,   1.35483892,
            2.34958384,   7.24834258],
         ..., 
         [ 31.34522449,  43.74157143,   1.70411035, ...,   4.05880783,
            5.22097152,   7.35342638],
         [ 35.05044898,  42.08385714,   5.0913391 , ...,   3.05336639,
            8.09879103,  16.50133925],
         [ 35.99020408,  51.44214286,   3.0349889 , ...,   8.99603195,
            6.17231057,  12.12662592]]),
  16: array([[ 64.11069388,  38.15485714,   2.04448047, ...,   1.26438349,
            3.13022734,  14.10566528],
         [ 61.05273469,  39.86371429,   1.23644242, ...,   2.44229887,
            3.6102904 ,  15.165113  ],
         [ 29.92522449,  37.97114286,   1.4668522 , ...,   1.46322622,
            2.36828988,   6.79225857],
         ..., 
         [ 33.16522449,  41.85757143,   1.57118321, ...,   3.83858739,
            4.71722814,   7.6713659 ],
         [ 38.06644898,  45.23985714,   5.3625018 , ...,   3.39672881,
           11.36140933,  16.39727877],
         [ 42.92220408,  49.86114286,   2.3016035 , ...,   9.19219346,
            6.231819  ,  12.04460239]]),
  17: array([[ 62.04269388,  42.53485714,   2.02688054, ...,   1.04550434,
            2.49587635,  12.75612812],
         [ 53.93673469,  44.18071429,   1.21852637, ...,   2.25695301,
            3.11466299,  14.31520998],
         [ 21.14522449,  41.75414286,   1.44893616, ...,   1.35192001,
            1.78164399,   6.78866361],
         ..., 
         [ 27.92122449,  44.90857143,   1.51246607, ...,   3.6759995 ,
            4.18571525,   6.72674973],
         [ 33.43844898,  44.36685714,   5.11525125, ...,   2.96249798,
            7.30376125,  15.60306025],
         [ 40.43420408,  50.41014286,   2.24585695, ...,   8.99311304,
            5.34562137,   9.78557163]]),
  18: array([[ 67.86269388,  35.13685714,   2.32104231, ...,   1.06750434,
            2.75701451,  12.26068856],
         [ 59.48073469,  44.87371429,   1.23035537, ...,   2.25695301,
            3.73336452,  13.76214058],
         [ 23.64922449,  39.21014286,   1.46076515, ...,   1.35192001,
            2.44608903,   6.22827142],
         ..., 
         [ 34.14122449,  40.83757143,   1.52429507, ...,   3.6759995 ,
            6.24184952,   6.62339349],
         [ 43.91844898,  44.51685714,   4.84708024, ...,   3.18249798,
            8.20217577,  15.31529994],
         [ 37.21020408,  51.55314286,   2.67238094, ...,   8.99311304,
            6.44625911,   9.94262998]]),
  19: array([[ 65.68669388,  39.51685714,   2.46455159, ...,   1.04550434,
            2.49906281,  12.12466938],
         [ 61.22473469,  44.75671429,   1.22078906, ...,   2.35695301,
            3.53014308,  14.5301171 ],
         [ 21.61722449,  39.98714286,   1.45119884, ...,   1.35192001,
            1.78483045,   5.93826268],
         ..., 
         [ 33.71722449,  43.42057143,   1.51472875, ...,   3.6759995 ,
            4.53970096,   7.29537001],
         [ 38.43844898,  42.39885714,   5.03723954, ...,   3.08449798,
            7.29386275,  18.24327877],
         [ 41.09420408,  55.09614286,   2.24811963, ...,   8.99311304,
            7.73905305,   9.8046065 ]]),
  20: array([[ 64.98269388,  44.26585714,   2.23878914, ...,   1.19061144,
            2.63354929,  14.50066528],
         [ 58.23673469,  46.02871429,   1.23157031, ...,   2.36952939,
            4.37888719,  14.676113  ],
         [ 22.64522449,  40.97714286,   1.46198009, ...,   1.50077373,
            1.91931693,   6.29625857],
         ..., 
         [ 35.58522449,  45.55357143,   1.52551001, ...,   3.97303758,
            4.48359817,   7.4433659 ],
         [ 36.57044898,  44.03985714,   5.22263552, ...,   3.01916364,
            7.64946567,  16.28327877],
         [ 37.57020408,  53.34714286,   2.3225041 , ...,   9.13860977,
            5.88228211,   9.91260239]]),
  21: array([[ 64.37469388,  37.71085714,   2.07981024, ...,   1.08328777,
            2.72790225,  12.87127607],
         [ 62.61273469,  43.19371429,   1.46891093, ...,   2.74184274,
            3.84807731,  15.16514944],
         [ 22.66522449,  38.02814286,   1.50215885, ...,   1.35975642,
            1.97040872,   6.04394247],
         ..., 
         [ 37.27722449,  43.32457143,   1.56568876, ...,   3.69122798,
            4.37100546,   7.37976614],
         [ 41.00644898,  42.50385714,   5.17456964, ...,   2.99158678,
            7.41905908,  15.39654078],
         [ 36.93820408,  47.65614286,   2.29907964, ...,   9.1186375 ,
            5.44919174,  10.58782006]]),
  22: array([[ 66.66269388,  39.15385714,   2.70379595, ...,   1.04550434,
            2.58359067,  12.57466528],
         [ 60.88473469,  42.48871429,   2.91660901, ...,   2.25695301,
            3.4630955 ,  13.768113  ],
         [ 23.65722449,  34.39514286,   2.92642339, ...,   1.35192001,
            1.83618763,   6.38425857],
         ..., 
         [ 35.36922449,  44.60557143,   2.25582051, ...,   3.6759995 ,
            4.516747  ,   7.0833659 ],
         [ 41.85444898,  42.11685714,   6.119595  , ...,   3.10049798,
            8.73596333,  15.26327877],
         [ 40.63420408,  50.08014286,   4.30435498, ...,   9.40711304,
            6.38281044,   9.58060239]]),
  23: array([[ 63.41869388,  41.93185714,   2.05554335, ...,   1.05404025,
            2.66444821,  11.99266917],
         [ 58.82873469,  45.61171429,   1.26647023, ...,   2.48735335,
            3.24358759,  14.21811492],
         [ 21.47722449,  41.48714286,   1.47363583, ...,   1.35248746,
            1.93248011,   6.42626049],
         ..., 
         [ 31.22922449,  44.21557143,   1.53688778, ...,   4.07245789,
            4.57605247,   6.7853698 ],
         [ 34.02644898,  43.02285714,   4.87659577, ...,   3.06081076,
            8.27545367,  15.12328266],
         [ 36.67020408,  51.76014286,   2.27055661, ...,   9.97134553,
            5.56248602,   9.47460431]]),
  24: array([[ 67.98669388,  39.57085714,   2.14386606, ...,   1.14417028,
            2.52683505,  16.28555688],
         [ 63.59273469,  43.26871429,   1.21964384, ...,   2.45528346,
            3.1413942 ,  14.23367832],
         [ 29.45322449,  41.70914286,   1.45005363, ...,   1.50461756,
            1.81260269,   6.57165774],
         ..., 
         [ 38.07322449,  44.26057143,   1.51358354, ...,   3.77472603,
            4.57525279,   6.90651356],
         [ 40.49844898,  43.02885714,   4.84634406, ...,   2.99716165,
            9.16645512,  16.4023924 ],
         [ 43.09020408,  51.18114286,   2.24697442, ...,   9.08751676,
            5.4474233 ,   9.98994496]]),
  25: array([[ 66.81069388,  39.55885714,   2.51490392, ...,   2.05416615,
            3.49539593,  18.46466528],
         [ 61.14873469,  44.17471429,   1.70654975, ...,   3.45915827,
            4.60761251,  19.568113  ],
         [ 28.31722449,  38.83514286,   1.93695954, ...,   3.93989311,
            2.69951328,  12.03825857],
         ..., 
         [ 37.65722449,  41.00557143,   2.45576655, ...,   6.46108734,
            7.097447  ,  12.2653659 ],
         [ 39.56644898,  41.54985714,   7.97608965, ...,   5.66739511,
            9.97711506,  19.93727877],
         [ 45.83020408,  52.90614286,   4.81696964, ...,  11.19652146,
           10.95545779,  13.11860239]]),
  26: array([[ 64.95069388,  46.22485714,   3.00498163, ...,   1.08981931,
            2.56575844,  13.69866528],
         [ 60.50473469,  46.51771429,   2.00804685, ...,   3.29582979,
            3.61437423,  16.014113  ],
         [ 28.39322449,  44.07614286,   2.36391439, ...,   1.39600264,
            1.85152608,   6.95500152],
         ..., 
         [ 35.91322449,  46.34857143,   2.39456412, ...,   4.28326434,
            4.92311843,   7.61002609],
         [ 43.74244898,  46.91985714,   6.1144361 , ...,   3.0136115 ,
            7.5156696 ,  18.57127877],
         [ 41.05420408,  55.28214286,   2.99818206, ...,  12.00148936,
            6.21584441,  10.20126259]]),
  27: array([[ 63.38269388,  47.40685714,   2.25687717, ...,   1.04550434,
            3.29337316,  15.36666528],
         [ 59.36473469,  45.88171429,   1.24725599, ...,   2.25695301,
            4.47993341,  15.810113  ],
         [ 27.16922449,  37.86314286,   1.47766578, ...,   1.35192001,
            2.30387017,   7.57025857],
         ..., 
         [ 28.65322449,  41.81857143,   1.65671103, ...,   3.8419995 ,
            5.1474692 ,   8.6933659 ],
         [ 37.44644898,  42.93585714,   4.86398087, ...,   3.16249798,
            7.90024588,  18.48727877],
         [ 37.97020408,  53.38314286,   2.40758925, ...,   9.62711304,
            6.96136896,  12.55860239]]),
  28: array([[ 66.87069388,  45.46885714,   2.14074522, ...,   1.3358472 ,
            4.50475765,  12.63466729],
         [ 61.94873469,  44.17471429,   1.33239105, ...,   3.50728354,
            4.39328536,  13.97411501],
         [ 22.44522449,  44.84414286,   1.62615389, ...,   1.58616447,
            3.02076927,   6.17225857],
         ..., 
         [ 29.02922449,  44.73157143,   1.62633074, ...,   7.90470814,
            7.59722713,   7.10536791],
         [ 35.65444898,  45.28785714,   4.94911592, ...,   4.76879789,
           12.76312045,  15.12727877],
         [ 38.45020408,  52.00614286,   2.35972162, ...,  11.91338742,
            6.479585  ,   9.16460441]]),
  29: array([[ 68.01069388,  38.32585714,   2.02688054, ...,   1.24743474,
            2.97358949,  11.86066528],
         [ 54.61273469,  47.32471429,   1.21852637, ...,   2.25812894,
            3.75671046,  13.608113  ],
         [ 23.85322449,  33.65714286,   1.44893616, ...,   1.35385041,
            2.11721727,   7.13825857],
         ..., 
         [ 40.51322449,  42.51457143,   1.51246607, ...,   3.6779299 ,
            4.48806583,   6.8393659 ],
         [ 42.54244898,  42.07485714,   4.83525125, ...,   3.16442838,
            7.97758179,  19.53527877],
         [ 41.21420408,  47.33214286,   2.24585695, ...,   8.99488267,
            5.57597196,  10.43660239]]),
  30: array([[ 61.30669388,  46.47385714,   2.61923481, ...,   1.12775837,
            3.14120014,  12.83125449],
         [ 56.97273469,  45.65071429,   1.26120449, ...,   2.77330128,
            3.67237482,  17.33130279],
         [ 23.28922449,  40.67114286,   1.49161427, ...,   1.38420634,
            2.38335581,   6.37971004],
         ..., 
         [ 29.24522449,  46.40857143,   1.55455723, ...,   4.30466967,
            5.17369353,   7.00050049],
         [ 37.87844898,  49.29885714,   5.01826137, ...,   3.02539158,
            8.18040566,  17.05570209],
         [ 36.88220408,  55.92714286,   2.28631431, ...,  10.82284246,
            6.53951035,   9.63260536]]),
  31: array([[ 60.52669388,  41.38885714,   2.31687014, ...,   1.04550434,
            2.80157186,  12.27343409],
         [ 51.28073469,  42.58771429,   1.27736918, ...,   2.25695301,
            3.18125277,  16.44755667],
         [ 25.63322449,  40.74314286,   1.50777896, ...,   1.35192001,
            1.89223376,   6.72676253],
         ..., 
         [ 29.12122449,  42.79057143,   1.57130888, ...,   4.4759995 ,
            4.42742461,   6.65245931],
         [ 40.36244898,  45.03285714,   6.78657213, ...,   2.96249798,
            7.8925437 ,  16.94475277],
         [ 44.09820408,  54.46614286,   2.30285548, ...,  12.39311304,
            5.38257255,   9.55228127]]),
  32: array([[ 66.27469388,  38.13085714,   2.02694751, ...,   1.05089136,
            2.7643712 ,  14.96166528],
         [ 65.44073469,  37.98571429,   1.21859334, ...,   2.32617837,
            3.21701272,  17.520113  ],
         [ 23.19322449,  37.01114286,   1.44900313, ...,   1.35729716,
            1.92917061,   5.94429376],
         ..., 
         [ 37.49322449,  40.88857143,   1.51253304, ...,   3.79714108,
            4.33324187,   7.90540109],
         [ 40.35444898,  46.15485714,   5.38831822, ...,   3.46349192,
            7.29928787,  18.34131396],
         [ 42.87020408,  49.99614286,   2.24592392, ...,  10.31322364,
            5.421148  ,   9.87160239]]),
  33: array([[ 59.63069388,  45.24985714,   2.49009724, ...,   1.43995759,
            5.34747318,  11.98484236],
         [ 58.48073469,  41.53471429,   2.0327002 , ...,   2.86474685,
            4.12173451,  16.03729008],
         [ 25.56522449,  42.68714286,   1.91215285, ...,   1.49375808,
            2.55191523,   6.25043565],
         ..., 
         [ 34.34922449,  45.22357143,   2.11167781, ...,   4.62390706,
            6.39954757,   8.14137036],
         [ 35.02244898,  50.60085714,   6.20849591, ...,   7.23934333,
           10.8175832 ,  17.39941567],
         [ 42.61820408,  50.85714286,   2.70907364, ...,  13.82244785,
            6.98458035,   9.16477948]]),
  34: array([[ 67.21469388,  41.91085714,   2.06944714, ...,   1.04821515,
            2.57207685,  13.0415944 ],
         [ 62.28473469,  41.93371429,   1.22909297, ...,   2.3471933 ,
            3.14686349,  13.97937239],
         [ 25.82922449,  37.99514286,   1.45950275, ...,   1.44454102,
            1.85784449,   6.50554849],
         ..., 
         [ 36.19722449,  45.67657143,   1.52303267, ...,   3.92865387,
            4.56847182,   7.03829848],
         [ 40.63044898,  47.25885714,   5.12663508, ...,   2.96523661,
            7.83425343,  15.21599098],
         [ 40.68220408,  50.29614286,   2.25625255, ...,   9.33510394,
            5.35423947,   9.60713608]]),
  35: array([[ 56.70269388,  41.20885714,   2.02737539, ...,   1.04550434,
            3.01259877,  13.86620696],
         [ 56.70073469,  47.28871429,   1.21902122, ...,   2.25695301,
            4.45636538,  15.43774598],
         [ 22.80922449,  38.27114286,   1.449431  , ...,   1.35192001,
            2.37630778,   6.18825163],
         ..., 
         [ 29.89322449,  40.24357143,   1.51294853, ...,   3.6759995 ,
            5.03368952,   7.2682386 ],
         [ 38.61444898,  42.65985714,   4.83574609, ...,   2.96249798,
            7.9765625 ,  18.96086098],
         [ 35.90220408,  55.84614286,   2.24630243, ...,   8.99311304,
            6.31276412,  10.99420245]]),
  36: array([[ 67.95469388,  42.94585714,   2.44151112, ...,   1.04550434,
            2.49587635,  12.43730299],
         [ 61.95673469,  43.62271429,   1.22673003, ...,   2.47295301,
            3.47066299,  17.83513048],
         [ 31.85722449,  41.34914286,   1.45713982, ...,   1.35192001,
            1.78164399,   6.15709465],
         ..., 
         [ 37.02922449,  41.94757143,   2.20006065, ...,   3.6759995 ,
            4.18571525,   7.17574392],
         [ 42.05844898,  48.28785714,   5.02862423, ...,   2.96249798,
            7.23976125,  16.59212648],
         [ 45.15820408,  44.63814286,   2.25406061, ...,   8.99311304,
            5.27362137,   9.69008342]]),
  37: array([[ 63.85469388,  39.51685714,   2.02688054, ...,   1.12350434,
            3.35953088,  13.33761869],
         [ 61.95273469,  41.39671429,   1.21852637, ...,   2.25695301,
            4.6927375 ,  16.44781781],
         [ 22.37322449,  45.24614286,   1.44893616, ...,   1.35192001,
            2.92729852,   6.02101058],
         ..., 
         [ 32.71722449,  47.71657143,   1.51246607, ...,   3.6759995 ,
            6.03669074,   7.14649585],
         [ 37.39844898,  47.67285714,   4.94325125, ...,   2.96249798,
            9.78337675,  14.98749687],
         [ 39.80220408,  51.93114286,   2.24585695, ...,   8.99311304,
            6.98122797,   9.87456011]]),
  38: array([[ 65.03869388,  40.27585714,   2.0327027 , ...,   1.04550434,
            2.59593647,  12.65266528],
         [ 63.09673469,  47.15371429,   1.58887454, ...,   2.25695301,
            3.17072311,  14.034113  ],
         [ 29.58922449,  37.86614286,   1.45475832, ...,   1.35192001,
            1.87978485,   5.94425857],
         ..., 
         [ 34.65722449,  42.46657143,   1.51828823, ...,   4.3039995 ,
            4.45868741,   6.9533659 ],
         [ 38.41044898,  42.09285714,   5.3063288 , ...,   2.96249798,
            7.24324329,  15.07527877],
         [ 42.80620408,  54.13014286,   2.25167911, ...,   9.22511304,
            6.16516642,   9.35260239]]),
  39: array([[ 63.87469388,  44.15785714,   2.47722105, ...,   1.34220248,
            2.78768191,  12.80156545],
         [ 57.02873469,  47.99671429,   1.68240866, ...,   2.33273696,
            3.37434599,  15.43034099],
         [ 21.91722449,  43.42214286,   2.26922495, ...,   1.41042219,
            2.07344955,   6.19363666],
         ..., 
         [ 28.38122449,  41.84857143,   2.65732867, ...,   4.38878526,
            4.55955696,   8.71991915],
         [ 36.46644898,  54.26385714,  10.7553915 , ...,   3.12300447,
           11.70452766,  15.73207834],
         [ 39.41820408,  52.12914286,   3.70561906, ...,  10.41291557,
            6.01347581,  11.1472938 ]]),
  40: array([[ 65.99469388,  49.49785714,   2.8770341 , ...,   1.8069804 ,
            5.48326641,  13.47466528],
         [ 58.74873469,  46.11271429,   1.3062076 , ...,   2.74854579,
            4.11531424,  15.992113  ],
         [ 20.87722449,  44.27114286,   1.53661739, ...,   1.52569399,
            2.51532485,   6.40825857],
         ..., 
         [ 36.77722449,  49.37857143,   2.03992327, ...,   3.954975  ,
            6.9226034 ,   8.0613659 ],
         [ 38.31044898,  48.97485714,   5.41751743, ...,   3.358072  ,
           10.49572743,  16.93527877],
         [ 42.67420408,  53.26914286,   2.54986013, ...,  11.40975537,
            6.54763084,  10.64660239]]),
  41: array([[ 64.08269388,  43.60585714,   2.23447175, ...,   1.2328451 ,
            3.28575591,  11.90472846],
         [ 60.64073469,  48.82771429,   1.33713798, ...,   2.76332223,
            3.83978908,  14.24217261],
         [ 22.60522449,  44.36414286,   1.89852677, ...,   2.01382692,
            2.4746521 ,   6.01028393],
         ..., 
         [ 27.42522449,  45.19657143,   1.82843559, ...,   4.12204679,
            6.16570092,   6.62342908],
         [ 34.69044898,  46.85085714,   7.47159486, ...,   3.24994388,
            7.85749696,  14.94732776],
         [ 38.51020408,  58.64214286,   2.65390311, ...,  10.39672705,
           10.23822602,   9.16466558]]),
  42: array([[ 62.82269388,  39.46585714,   2.21640508, ...,   1.09650829,
            3.16945767,  15.58266528],
         [ 60.60073469,  44.38171429,   1.26261848, ...,   2.26627924,
            3.42578042,  17.242113  ],
         [ 23.63722449,  39.04514286,   1.56236695, ...,   1.35514124,
            2.0910239 ,   8.63425857],
         ..., 
         [ 32.12922449,  45.04357143,   1.55655818, ...,   3.68492992,
            4.82264614,   9.0953659 ],
         [ 38.51044898,  42.72585714,   4.87934335, ...,   2.96571922,
            7.91851798,  18.71527877],
         [ 41.32620408,  53.37114286,   2.319836  , ...,   9.78905399,
            6.1577642 ,  12.77660239]]),
  43: array([[ 64.73069388,  39.41185714,   2.30880873, ...,   1.1476387 ,
            2.9501603 ,  13.95685297],
         [ 55.65673469,  42.52471429,   1.22898965, ...,   2.52589203,
            4.00084953,  14.72300415],
         [ 24.90122449,  37.58114286,   1.45939944, ...,   1.35830759,
            2.21988782,   6.66326552],
         ..., 
         [ 38.09322449,  40.71757143,   1.52292935, ...,   3.81263715,
            4.96501861,   6.93541936],
         [ 39.61844898,  41.96385714,   4.9675985 , ...,   2.96883684,
            8.56207939,  16.13427709],
         [ 43.08620408,  55.00614286,   2.25632023, ...,   9.26271433,
            6.04886343,   9.67822627]]),
  44: array([[ 63.24269388,  45.46885714,   2.02826567, ...,   1.23023459,
            3.44930783,  12.27866528],
         [ 60.28073469,  45.97471429,   1.21993928, ...,   2.89863735,
            4.994625  ,  14.196113  ],
         [ 26.69722449,  38.61914286,   1.45034907, ...,   3.03052077,
            2.39639605,   6.33425857],
         ..., 
         [ 33.02522449,  44.09557143,   1.51387898, ...,   3.83077696,
            7.47253715,   6.6233659 ],
         [ 39.57044898,  48.15885714,   5.18356028, ...,   3.23550875,
           10.98626533,  14.94927877],
         [ 40.81020408,  55.57014286,   2.24726986, ...,   9.48824134,
            8.60921407,   9.30260239]]),
  45: array([[ 60.13069388,  42.69685714,   2.47157859, ...,   1.04550434,
            2.81484373,  12.61786194],
         [ 57.88073469,  49.80571429,   1.22499498, ...,   2.25695301,
            3.49218478,  14.34865273],
         [ 32.00122449,  40.02914286,   1.86921242, ...,   1.41792001,
            2.01704921,   5.94419969],
         ..., 
         [ 29.59322449,  46.50457143,   1.51893468, ...,   3.8439995 ,
            5.58350831,   6.72042409],
         [ 35.05844898,  43.94685714,   5.16138081, ...,   2.96849798,
            8.20079389,  14.94017848],
         [ 39.69420408,  53.73114286,   2.25232555, ...,  10.48511304,
            5.94981076,   9.28563751]]),
  46: array([[ 58.31069388,  43.05385714,   2.12294835, ...,   1.11073865,
            2.68740989,  12.00796312],
         [ 56.87673469,  46.36771429,   1.31797001, ...,   2.37766945,
            3.30599636,  14.02459451],
         [ 24.56122449,  43.68014286,   1.54500396, ...,   1.41384294,
            1.96963883,   5.9944505 ],
         ..., 
         [ 28.33722449,  48.51457143,   1.61625388, ...,   3.88838935,
            4.37724879,   6.7057505 ],
         [ 35.91844898,  46.39185714,   5.20141903, ...,   3.105263  ,
            7.36725243,  15.18820928],
         [ 36.13420408,  53.98014286,   2.37970777, ...,   9.55835906,
            5.58634032,   9.31378172]]),
  47: array([[ 63.46269388,  43.29385714,   2.02688054, ...,   1.06998823,
            2.6944145 ,  11.89066528],
         [ 64.32873469,  44.75071429,   1.21852637, ...,   2.2595287 ,
            3.43689657,  14.028113  ],
         [ 22.03722449,  42.51914286,   1.44893616, ...,   1.37160375,
            1.98778292,   5.93825857],
         ..., 
         [ 31.85722449,  45.16657143,   1.51246607, ...,   3.90657519,
            4.77770753,   6.8233659 ],
         [ 40.12644898,  49.23585714,   4.83525125, ...,   3.12688126,
            7.43378217,  15.03527877],
         [ 40.42220408,  54.21414286,   2.24585695, ...,  10.73237619,
            5.62467302,   9.38860239]]),
  48: array([[ 68.01469388,  42.82285714,   2.17330265, ...,   1.12788926,
            2.90881878,  12.21085746],
         [ 61.35673469,  49.35871429,   1.26771818, ...,   2.28137898,
            4.31853328,  14.06579042],
         [ 27.55322449,  41.80814286,   1.53743246, ...,   1.38067865,
            2.19458642,   6.2380806 ],
         ..., 
         [ 42.47322449,  43.44757143,   1.56165788, ...,   3.69788874,
            4.88078799,   6.62524418],
         [ 41.66244898,  44.29185714,   4.9361327 , ...,   3.03100337,
            9.80979243,  15.22662193],
         [ 45.10620408,  46.46214286,   2.33765705, ...,  10.31991892,
            5.6865638 ,   9.53412205]]),
  49: array([[ 64.97069388,  38.58085714,   2.02700196, ...,   1.04550434,
            2.58904979,  12.62188654],
         [ 59.46473469,  46.70071429,   1.21864779, ...,   2.25695301,
            3.14862248,  15.78723778],
         [ 27.43722449,  41.56814286,   1.61904549, ...,   1.36792001,
            1.85960348,   5.95580314],
         ..., 
         [ 31.64922449,  45.03757143,   1.51258749, ...,   4.3439995 ,
            4.49169633,   6.66591748],
         [ 38.81044898,  43.72185714,   4.83537267, ...,   2.96249798,
            8.14429846,  16.57035467],
         [ 38.08620408,  53.29914286,   2.24597836, ...,  10.89511304,
            5.65489579,   9.27994002]])}}

In [30]:
# Fit all available data for subchallenge 1. 
# Ignoring warning that arises if too few trees are used.  
# Ignore intensity score which is based on within-sample validation, 
# due to use of ExtraTreesClassifier.
rfcs1,score1,rs1 = fit1.rfc_final(X_all,Y_all_imp['subject'],max_features,
                                           min_samples_leaf,max_depth,use_et,
                                           regularize=regularize,
                                           n_estimators=n_estimators)


98.00% [------------------------------------------------- ]For subchallenge 1:
	Score = 37.33
	int = 0.841
	ple = 0.406
	dec = 0.185

In [31]:
# Make challenge 1 testset prediction files from the models.  
loading.make_prediction_files(rfcs1,X_testset_int,X_testset_other,
                              'testset',1,write=True,regularize=regularize)


Wrote to file with suffix "1446510971"
Out[31]:
{'subject': {1: array([[ 26.31755102,  40.149     ,   1.9511612 , ...,   2.10466287,
            2.68027593,  17.9639846 ],
         [ 22.36620408,  46.73742857,   1.46409153, ...,   1.03138155,
            1.93359848,   5.80899911],
         [ 53.568     ,  29.02685714,   1.27619873, ...,   1.14423211,
            2.04727742,   9.94377144],
         ..., 
         [ 52.10897959,  48.18242857,   3.53946303, ...,  11.14731045,
            5.74367517,   7.81414332],
         [ 24.75934694,  50.25014286,   1.38609663, ...,   4.98177721,
            4.33694397,  13.03485266],
         [ 29.72277551,  45.16628571,   1.9831435 , ...,   9.46573398,
            8.36780493,  23.16176282]]),
  2: array([[ 27.20155102,  40.206     ,   2.6977642 , ...,   2.10503145,
            2.50035918,  16.61862563],
         [ 21.21820408,  45.36342857,   1.59048489, ...,   1.03175554,
            1.90976702,   6.40190191],
         [ 57.84      ,  32.22785714,   1.33925015, ...,   1.14460611,
            2.06324724,  10.72999819],
         ..., 
         [ 55.69297959,  54.26642857,   3.37345641, ...,  12.46950464,
            5.64337678,   7.67008843],
         [ 25.79934694,  52.65914286,   1.52560821, ...,   5.14636019,
            4.35291379,  12.02422601],
         [ 28.40277551,  51.66128571,   2.04619493, ...,   9.4880493 ,
            8.38312596,  23.28386729]]),
  3: array([[ 27.68955102,  42.336     ,   1.99054527, ...,   2.24151501,
            3.61468545,  18.06102918],
         [ 19.24220408,  42.93942857,   1.50347561, ...,   1.03634195,
            2.9464519 ,   6.46890224],
         [ 49.34      ,  35.23985714,   1.3155828 , ...,   1.22287517,
            3.0107986 ,  11.57409685],
         ..., 
         [ 47.56897959,  53.69342857,   3.37701044, ...,  11.15227085,
           12.99154237,   6.94067053],
         [ 24.38334694,  51.32714286,   1.64389971, ...,   4.98673761,
            5.84176903,  13.42295574],
         [ 27.66677551,  51.83828571,   2.10211361, ...,   9.51661536,
           12.28598021,  23.95795074]]),
  4: array([[ 31.13755102,  40.779     ,   1.97060018, ...,   2.46408504,
           11.85322431,  16.37242706],
         [ 28.99820408,  48.65142857,   1.48353052, ...,   1.05148836,
            6.98034084,   9.33579143],
         [ 54.084     ,  34.46285714,   1.29563771, ...,   1.16433892,
            8.48371636,  11.9991547 ],
         ..., 
         [ 55.82497959,  63.42842857,   3.32984398, ...,  11.16741726,
           15.91419016,   7.26407883],
         [ 33.03134694,  60.41414286,   1.40553562, ...,   5.16020155,
           13.69634377,  12.97487472],
         [ 33.23077551,  52.50428571,   2.00258249, ...,  10.67633595,
           18.29067695,  22.79798389]]),
  5: array([[ 26.62955102,  41.397     ,   1.9650921 , ...,   2.10466287,
            2.53780191,  16.45796821],
         [ 21.14620408,  44.01342857,   1.47802243, ...,   1.03138155,
            1.94720975,   5.46788465],
         [ 50.844     ,  29.81285714,   1.29012963, ...,   1.14423211,
            2.10068997,   9.91136417],
         ..., 
         [ 50.93697959,  53.98442857,   3.32433589, ...,  11.14731045,
            5.60782689,   6.94310314],
         [ 24.10334694,  50.34614286,   1.40002754, ...,   4.98177721,
            4.85220684,  11.42658145],
         [ 27.30677551,  44.63228571,   1.99707441, ...,   9.49573398,
            8.69627007,  23.2368615 ]]),
  6: array([[ 22.17355102,  39.678     ,   1.94404184, ...,   2.10466287,
            2.52424439,  17.04007154],
         [ 17.13820408,  43.88142857,   1.45697218, ...,   1.03138155,
            1.93365223,   5.46596071],
         [ 46.088     ,  33.41585714,   1.26907937, ...,   1.14423211,
            2.08704575,   9.75458188],
         ..., 
         [ 42.95697959,  52.21442857,   3.30328563, ...,  11.14731045,
            5.73274107,   7.16702725],
         [ 24.75134694,  49.64414286,   1.37897728, ...,   4.98177721,
            8.40985489,  11.99441487],
         [ 24.94677551,  48.50228571,   1.97602415, ...,   9.54773398,
            8.40765995,  21.69829414]]),
  7: array([[ 28.65755102,  39.807     ,   1.94974597, ...,   2.16774968,
            2.51679581,  18.59580336],
         [ 21.00220408,  40.34142857,   1.50800964, ...,   1.03246835,
            1.92664752,   5.96267523],
         [ 60.492     ,  29.37485714,   1.2747835 , ...,   1.53583614,
            2.08012774,  10.00339368],
         ..., 
         [ 55.67297959,  55.13642857,   3.30898976, ...,  11.43439726,
            5.58667162,   7.56481743],
         [ 34.89134694,  46.45814286,   1.39388141, ...,   4.98286402,
            4.3696475 ,  13.9352255 ],
         [ 27.51477551,  47.54228571,   2.16547515, ...,   9.89665608,
            8.40065524,  25.47495074]]),
  8: array([[ 30.96955102,  39.447     ,   2.20256989, ...,   2.10466287,
            2.84071838,  15.26919208],
         [ 24.39820408,  41.80542857,   1.51720877, ...,   1.03138155,
            1.89888003,   5.75449816],
         [ 51.82      ,  29.60285714,   1.32931596, ...,   1.14423211,
            2.05181289,   9.859117  ],
         ..., 
         [ 55.92097959,  51.10442857,   3.36352223, ...,  12.54731045,
            5.65929665,   7.13497533],
         [ 31.12334694,  49.22714286,   1.43921387, ...,   5.18177721,
            4.34101506,  11.44167329],
         [ 29.15477551,  49.51028571,   2.03626074, ...,   9.47373398,
            8.37234039,  21.46499186]]),
  9: array([[ 26.26555102,  39.618     ,   1.96149467, ...,   2.48031176,
            3.54734587,  18.80928387],
         [ 22.91820408,  43.68342857,   1.47442501, ...,   1.13376347,
            2.68755877,   5.55221593],
         [ 49.26      ,  35.50985714,   1.2865322 , ...,   1.34622291,
            3.22275254,  10.89124169],
         ..., 
         [ 52.40097959,  54.47642857,   3.32073846, ...,  13.97044387,
            6.70288002,   8.48144628],
         [ 27.77934694,  47.86814286,   1.39643011, ...,   5.85202352,
            5.11975179,  12.53435551],
         [ 28.67077551,  49.93328571,   1.99313564, ...,  11.6089738 ,
           10.85675794,  21.99520867]]),
  10: array([[ 23.88955102,  39.447     ,   1.94429622, ...,   2.10483009,
            2.4729193 ,  16.38031004],
         [ 17.46620408,  44.50542857,   1.45722655, ...,   1.03154877,
            1.88232713,   5.47852286],
         [ 51.744     ,  26.87285714,   1.26933375, ...,   1.29839933,
            2.03580735,   9.90605148],
         ..., 
         [ 44.40097959,  50.00042857,   3.30354001, ...,  11.14747767,
            5.70694428,   6.94571868],
         [ 24.33934694,  49.68314286,   1.42723165, ...,   4.98194443,
            4.3254739 ,  11.51929392],
         [ 24.23477551,  47.60828571,   1.97960183, ...,   9.54186983,
            8.90033486,  22.4019452 ]]),
  11: array([[ 26.78955102,  37.044     ,   1.98959601, ...,   2.11257139,
            2.62363997,  15.66227536],
         [ 17.88220408,  43.53042857,   1.50252634, ...,   1.03532516,
            2.05020724,   5.46844154],
         [ 54.768     ,  30.04385714,   1.31463354, ...,   1.34375744,
            2.18652803,  10.27403911],
         ..., 
         [ 52.90897959,  45.23642857,   3.3488398 , ...,  12.74597634,
            5.69377335,   6.93466688],
         [ 31.32334694,  50.65214286,   1.42453144, ...,   4.98577069,
            5.16393824,  12.8581096 ],
         [ 26.04677551,  46.31528571,   2.02157831, ...,   9.93338226,
           11.79014153,  21.65466981]]),
  12: array([[ 28.43355102,  35.853     ,   2.12875419, ...,   2.33411687,
            2.63770587,  18.03776706],
         [ 19.99420408,  42.18642857,   2.04065429, ...,   1.0369014 ,
            2.0471137 ,   6.07320322],
         [ 51.94      ,  34.36985714,   1.45815933, ...,   1.14975196,
            2.20059393,   9.721278  ],
         ..., 
         [ 54.99297959,  48.32942857,   3.4887468 , ...,  11.19641775,
            6.46522047,   7.2156535 ],
         [ 30.39134694,  48.12614286,   1.56547575, ...,   4.9871172 ,
            4.49767031,  11.65403304],
         [ 27.73077551,  45.85028571,   2.21958759, ...,  13.70954437,
           10.91787792,  22.06998722]]),
  13: array([[ 23.37755102,  34.74      ,   2.73644404, ...,   2.88325953,
            3.34745435,  18.31572022],
         [ 21.53820408,  45.27342857,   1.79874417, ...,   1.39448898,
            2.88575546,   7.15743179],
         [ 53.036     ,  31.49885714,   1.61695263, ...,   1.54488966,
            2.76893541,  10.6190513 ],
         ..., 
         [ 56.50497959,  51.47342857,   3.70609981, ...,  15.27348338,
            8.91704353,   9.77265713],
         [ 30.15134694,  48.79514286,   1.7161205 , ...,   5.74912636,
            7.87513536,  13.47019375],
         [ 33.46677551,  54.61628571,   2.31316737, ...,  15.51250432,
           17.79699838,  24.27595074]]),
  14: array([[ 24.38555102,  39.231     ,   1.94366918, ...,   2.10466287,
            2.65725386,  19.21172649],
         [ 18.59020408,  44.16342857,   1.45659951, ...,   1.03138155,
            2.0666617 ,   5.46744275],
         [ 50.208     ,  30.11285714,   1.26870671, ...,   1.14423211,
            2.21664638,  10.13605757],
         ..., 
         [ 46.61297959,  46.91042857,   3.30291297, ...,  13.73531045,
            6.78576815,   7.33966809],
         [ 26.74334694,  46.25114286,   1.76660461, ...,   4.98177721,
            4.90424858,  12.45820471],
         [ 23.81477551,  41.96528571,   1.97565148, ...,  10.01773398,
            8.53203183,  22.73995074]]),
  15: array([[ 22.32955102,  37.998     ,   2.15664779, ...,   2.24230586,
            3.03440383,  17.63612891],
         [ 17.78220408,  44.25042857,   1.98659261, ...,   1.03705775,
            2.43333037,   6.19576985],
         [ 50.896     ,  31.98485714,   1.67122837, ...,   1.15004005,
            2.56349019,  11.89514058],
         ..., 
         [ 49.24097959,  50.48942857,   3.54601043, ...,  11.16255876,
            6.52212241,   9.20765713],
         [ 24.77134694,  49.07414286,   1.59171077, ...,   4.98751777,
            5.64730265,  13.23219375],
         [ 23.63877551,  49.39928571,   2.55461528, ...,  12.23711118,
            9.67025132,  22.03195074]]),
  16: array([[ 25.90555102,  36.813     ,   2.11515758, ...,   2.32242397,
            3.12031127,  17.70172022],
         [ 22.00620408,  43.01442857,   1.48744631, ...,   1.24084612,
            2.5479806 ,   7.33943179],
         [ 53.92      ,  33.58685714,   1.2995535 , ...,   1.39085051,
            2.95921533,  11.23716193],
         ..., 
         [ 53.55297959,  50.21342857,   3.33375976, ...,  12.48055648,
            6.3788786 ,   8.42176777],
         [ 26.70334694,  47.61014286,   1.4263593 , ...,   5.45000887,
            5.24768074,  12.56630439],
         [ 30.77077551,  44.18828571,   2.12264243, ...,  10.50031358,
           11.05162903,  23.35195074]]),
  17: array([[ 22.38955102,  38.457     ,   2.74378679, ...,   2.10466287,
            2.4729193 ,  16.1200146 ],
         [ 18.43420408,  43.84842857,   1.45672459, ...,   1.03138155,
            1.88232713,   6.88882176],
         [ 51.748     ,  29.71985714,   1.26883179, ...,   1.14423211,
            2.03580735,  10.80720757],
         ..., 
         [ 49.48097959,  49.92842857,   3.30303805, ...,  11.14731045,
            5.54294428,   7.36072011],
         [ 24.54334694,  49.59014286,   1.3787297 , ...,   4.98177721,
            4.3254739 ,  13.1484259 ],
         [ 27.31877551,  43.77728571,   1.97577657, ...,   9.46573398,
            8.92033486,  24.07924839]]),
  18: array([[ 28.03355102,  40.188     ,   2.47836167, ...,   2.10466287,
            2.76365964,  16.15545289],
         [ 22.03020408,  46.16442857,   1.48155791, ...,   1.03138155,
            2.17306748,   5.76602552],
         [ 52.672     ,  29.12285714,   1.44790779, ...,   1.14423211,
            2.3265477 ,  10.26054523],
         ..., 
         [ 54.21297959,  49.77542857,   3.42558388, ...,  11.19331045,
            7.09498363,   7.13129815],
         [ 28.72334694,  50.47514286,   1.48024784, ...,   4.98177721,
            5.07742607,  12.97622685],
         [ 26.99877551,  47.18228571,   2.00060988, ...,   9.46573398,
           11.84411397,  26.12677058]]),
  19: array([[ 27.75355102,  39.084     ,   1.95304126, ...,   2.10466287,
            2.47706364,  15.69467247],
         [ 19.72620408,  45.09942857,   1.4659716 , ...,   1.03138155,
            1.88647147,   5.46840795],
         [ 50.456     ,  31.51385714,   1.27807879, ...,   1.14423211,
            2.0399517 ,  10.10075507],
         ..., 
         [ 49.52497959,  50.91842857,   3.31228505, ...,  11.14731045,
            9.58970382,   7.44854619],
         [ 31.33934694,  46.35614286,   1.3879767 , ...,   4.98177721,
            4.56532043,  12.26089763],
         [ 30.13877551,  43.02728571,   2.18490907, ...,   9.46573398,
            8.7564792 ,  23.67423102]]),
  20: array([[ 24.30555102,  38.82      ,   1.97178692, ...,   2.55491105,
            2.60775977,  15.99313442],
         [ 25.05420408,  46.03242857,   1.65503278, ...,   1.30967297,
            2.0171676 ,   6.56771501],
         [ 54.216     ,  34.96085714,   1.29682445, ...,   1.36857734,
            2.17064783,  10.87792032],
         ..., 
         [ 53.16097959,  50.06642857,   3.33103071, ...,  11.22923082,
            5.97352111,   7.47937584],
         [ 31.19134694,  49.08614286,   1.93624676, ...,   7.09329887,
            4.67122921,  12.25106277],
         [ 25.07877551,  48.05228571,   2.16689549, ...,  10.00002188,
            9.39484992,  22.11395866]]),
  21: array([[ 26.70555102,  35.205     ,   2.01318796, ...,   2.40447524,
            2.67850668,  17.13055511],
         [ 21.34220408,  37.27242857,   1.5261183 , ...,   1.04028423,
            2.08199418,   5.60401242],
         [ 54.256     ,  28.44785714,   1.33822549, ...,   1.16630822,
            2.23780963,  10.3257756 ],
         ..., 
         [ 50.26897959,  52.46942857,   3.37243175, ...,  11.44600598,
            5.86454549,   7.11129329],
         [ 32.18334694,  47.33714286,   1.52223162, ...,   5.0898774 ,
            4.55257535,  12.50593761],
         [ 27.71077551,  43.48028571,   2.24963353, ...,   9.4748664 ,
            8.55309619,  23.57717941]]),
  22: array([[ 26.96555102,  37.701     ,   3.3592858 , ...,   2.24266287,
            2.78285133,  16.06372022],
         [ 24.68620408,  42.70542857,   2.55527864, ...,   1.03138155,
            1.94612884,   6.68743179],
         [ 55.44      ,  31.32785714,   2.12027702, ...,   1.14423211,
            2.09960906,   9.7090513 ],
         ..., 
         [ 55.43697959,  51.36242857,   4.62334581, ...,  11.56131045,
            5.90368682,   7.08165713],
         [ 30.53134694,  50.06414286,   2.16380961, ...,   4.98177721,
            4.38927561,  12.46219375],
         [ 28.43877551,  46.72628571,   3.14518107, ...,  12.64373398,
            9.88582222,  21.04595074]]),
  23: array([[ 23.20955102,  39.651     ,   1.97133051, ...,   2.10627136,
            2.6589725 ,  16.14216398],
         [ 17.78220408,  44.75442857,   1.48426085, ...,   1.03299004,
            2.06185569,   5.54014831],
         [ 50.828     ,  33.34985714,   1.29636804, ...,   1.1458406 ,
            2.21533592,   9.95363371],
         ..., 
         [ 54.07297959,  51.19742857,   4.05215648, ...,  14.05013133,
            5.83506915,   7.00934322],
         [ 30.64734694,  50.47214286,   1.4603138 , ...,   6.93209457,
            4.56104319,  11.49686108],
         [ 25.19877551,  46.51628571,   2.00331282, ...,   9.52534247,
            9.45752902,  21.66646917]]),
  24: array([[ 27.43755102,  40.401     ,   1.951116  , ...,   2.77022667,
            2.53147259,  16.6626179 ],
         [ 24.44620408,  43.23342857,   1.4639647 , ...,   1.08425455,
            1.94088043,   6.04965583],
         [ 56.072     ,  33.85385714,   1.27615353, ...,   1.199156  ,
            2.09436065,  11.07301613],
         ..., 
         [ 56.39697959,  50.13842857,   3.31035979, ...,  11.23065258,
            5.63247765,   8.18558807],
         [ 34.10734694,  49.31414286,   1.38605144, ...,   5.78259425,
            4.73371348,  12.09638488],
         [ 28.24677551,  45.40628571,   2.3466878 , ...,  10.45461842,
            9.4944438 ,  24.08746959]]),
  25: array([[ 30.26155102,  38.643     ,   2.78469382, ...,   4.08800625,
            3.46547209,  21.92172022],
         [ 25.19420408,  42.80742857,   1.92743723, ...,   3.01520165,
            2.72520657,   9.74543179],
         [ 54.56      ,  34.23485714,   1.74798331, ...,   3.41752204,
            3.29772303,  15.4850513 ],
         ..., 
         [ 58.53697959,  52.60442857,   5.00530258, ...,  15.36772984,
           11.13161163,  10.04365713],
         [ 36.31934694,  48.08414286,   1.85788122, ...,   9.72188041,
            7.0251859 ,  15.92419375],
         [ 32.30277551,  47.31428571,   2.45492809, ...,  12.00597836,
           12.13252416,  25.03995074]]),
  26: array([[ 27.62155102,  41.793     ,   3.31758741, ...,   2.1704404 ,
            2.59213383,  17.84044054],
         [ 24.37420408,  49.71942857,   2.51436239, ...,   1.09621333,
            2.00154167,   6.291187  ],
         [ 55.652     ,  39.85685714,   3.13316069, ...,   1.21470378,
            2.15502189,  12.04663015],
         ..., 
         [ 56.25297959,  55.81442857,   3.96021269, ...,  16.36954941,
            8.41214103,   7.52580199],
         [ 31.49934694,  52.59014286,   2.11806063, ...,   6.99855846,
            6.22149971,  12.16335531],
         [ 30.14277551,  48.84428571,   2.61142392, ...,   9.97489244,
            9.08032925,  25.32005822]]),
  27: array([[ 22.76955102,  37.494     ,   2.03471757, ...,   2.10466287,
            2.99651172,  17.68386592],
         [ 19.77420408,  42.78942857,   1.49863486, ...,   1.03138155,
            2.40591956,   5.72187907],
         [ 51.336     ,  34.60985714,   1.31074205, ...,   1.14423211,
            2.58054253,  13.19911922],
         ..., 
         [ 51.52097959,  51.52442857,   3.34494832, ...,  11.54731045,
            6.16775625,   8.79403649],
         [ 24.58734694,  50.42114286,   1.70626486, ...,   4.98177721,
            4.85956207,  12.2545731 ],
         [ 28.25877551,  47.01728571,   2.01768683, ...,  12.31973398,
           17.11926363,  25.15595074]]),
  28: array([[ 23.10155102,  40.731     ,   2.12492078, ...,   3.16068904,
            4.06100588,  15.22021782],
         [ 22.33820408,  44.86242857,   1.60174037, ...,   1.26407696,
            3.2199577 ,   5.63992939],
         [ 55.048     ,  31.79285714,   1.51697903, ...,   1.41909749,
            3.28982065,  10.02244325],
         ..., 
         [ 52.74497959,  52.24742857,   4.30554548, ...,  14.15217606,
            6.80389824,   8.18236803],
         [ 25.06734694,  53.14814286,   1.52374547, ...,   8.04126016,
            6.89823424,  12.3186219 ],
         [ 31.29877551,  51.51128571,   2.65750777, ...,  11.12679405,
           12.52600669,  21.93427886]]),
  29: array([[ 27.07755102,  36.264     ,   1.94366918, ...,   2.7643694 ,
            2.93698171,  17.36375668],
         [ 19.41420408,  48.60042857,   1.45659951, ...,   1.04355537,
            2.34638955,   5.61546825],
         [ 58.092     ,  28.77185714,   1.26870671, ...,   1.35640593,
            2.49986977,   9.90908776],
         ..., 
         [ 54.94897959,  45.01142857,   3.30291297, ...,  11.1781336 ,
            7.88219762,   6.93169359],
         [ 34.17134694,  49.08614286,   1.37860461, ...,   4.99395103,
            4.80872969,  15.56822428],
         [ 25.35477551,  51.77528571,   1.97565148, ...,  12.44374726,
           10.50614683,  22.88798128]]),
  30: array([[ 21.96155102,  42.66      ,   1.99341571, ...,   2.1797974 ,
            3.1074018 ,  15.96039751],
         [ 19.97820408,  47.13342857,   1.50634605, ...,   1.08668817,
            3.09389635,   5.74095963],
         [ 54.66      ,  33.29585714,   1.31845324, ...,   1.19250699,
            2.67028986,  10.26009154],
         ..., 
         [ 53.56097959,  53.12342857,   3.3515126 , ...,  12.44703762,
            6.20114902,   7.91931562],
         [ 28.53934694,  50.32814286,   1.42835115, ...,   5.19205109,
            5.15825913,  12.47844021],
         [ 23.78277551,  50.76128571,   2.22408073, ...,  10.3878375 ,
            9.43103452,  23.74623536]]),
  31: array([[ 27.70155102,  42.327     ,   2.01173103, ...,   2.16066287,
            2.63566546,  15.82537592],
         [ 20.08620408,  43.37742857,   1.52466136, ...,   1.03138155,
            2.0450733 ,   6.17240526],
         [ 54.224     ,  33.62885714,   1.33676856, ...,   1.14423211,
            2.19855352,  13.02628219],
         ..., 
         [ 52.71297959,  55.29242857,   3.37097482, ...,  16.65931045,
            6.44638386,   7.14115265],
         [ 24.41534694,  50.06714286,   1.44666647, ...,   5.18177721,
            4.48793746,  13.91259154],
         [ 30.65077551,  45.78128571,   2.04229743, ...,   9.46573398,
           10.50725563,  24.73378951]]),
  32: array([[ 31.42555102,  36.309     ,   1.94370441, ...,   2.45934369,
            2.77058646,  16.48853601],
         [ 18.66220408,  43.59342857,   1.45663474, ...,   1.04831771,
            2.04217052,   5.73624758],
         [ 56.216     ,  30.45485714,   1.26874194, ...,   1.17538018,
            2.19878756,  11.6470513 ],
         ..., 
         [ 54.24897959,  43.06442857,   3.3029482 , ...,  13.82494717,
            5.70592448,   7.84144032],
         [ 35.59534694,  45.81914286,   1.37863985, ...,   4.99907302,
            4.5537222 ,  13.07422636],
         [ 26.05077551,  45.95828571,   2.12166662, ...,   9.76593708,
            8.52741   ,  24.21995074]]),
  33: array([[ 22.42555102,  40.953     ,   2.43626779, ...,   2.28207343,
            3.30862875,  17.17771312],
         [ 19.63420408,  46.21842857,   2.50155944, ...,   1.81560961,
            2.78861753,   5.48315247],
         [ 50.664     ,  33.40985714,   1.77124005, ...,   1.51328361,
            3.27262202,   9.72477198],
         ..., 
         [ 51.92497959,  51.80642857,   5.95095315, ...,  16.87976963,
            7.09240679,   7.96683603],
         [ 33.53534694,  49.07714286,   1.88458705, ...,   8.23465292,
            7.17326978,  12.7767404 ],
         [ 24.03877551,  49.45028571,   2.70546833, ...,  13.51845632,
           10.45453376,  22.97589532]]),
  34: array([[ 25.90955102,  38.271     ,   1.95975311, ...,   2.25636489,
            2.56699312,  15.73158002],
         [ 21.45420408,  43.58442857,   1.47268344, ...,   1.03835606,
            1.97640096,   5.52411254],
         [ 52.864     ,  32.92085714,   1.28479064, ...,   1.15104087,
            2.12988118,   9.74179041],
         ..., 
         [ 53.67297959,  49.58942857,   3.44593045, ...,  13.34130917,
            5.65121743,   7.31085686],
         [ 35.35134694,  48.33914286,   1.39362752, ...,   5.2284078 ,
            4.43374706,  12.18122712],
         [ 27.48277551,  46.18028571,   1.99173542, ...,   9.73150251,
            8.97400121,  20.93782356]]),
  35: array([[ 22.90155102,  33.303     ,   1.94495492, ...,   2.10466287,
            3.53235755,  19.86601682],
         [ 18.54220408,  40.10742857,   1.45788526, ...,   1.06138155,
            2.35768412,   5.69671725],
         [ 49.56      ,  30.41285714,   1.26999245, ...,   1.14423211,
            2.57934169,  10.44051796],
         ..., 
         [ 45.34497959,  48.94442857,   3.30419872, ...,  11.14731045,
            7.27510562,   8.25757648],
         [ 28.15934694,  45.61214286,   1.37989036, ...,   4.99577721,
            6.04236266,  13.65281806],
         [ 29.40277551,  45.93428571,   1.97693723, ...,   9.46573398,
            8.99593103,  24.22815485]]),
  36: array([[ 30.81755102,  40.785     ,   1.95467153, ...,   2.10466287,
            2.4729193 ,  16.31979872],
         [ 27.37820408,  42.62142857,   1.46760186, ...,   1.03138155,
            1.88232713,   5.72567208],
         [ 59.804     ,  31.27985714,   1.27970906, ...,   1.14423211,
            2.03580735,  12.76584826],
         ..., 
         [ 58.84097959,  45.09842857,   6.57587818, ...,  11.24131045,
            5.54294428,   7.62524115],
         [ 33.95134694,  50.43614286,   1.38960697, ...,   4.98177721,
            4.3254739 ,  13.79397097],
         [ 31.55477551,  45.16628571,   2.18620359, ...,   9.46573398,
            9.15633486,  22.23180925]]),
  37: array([[ 24.03755102,  42.54      ,   1.94366918, ...,   2.10466287,
            3.37832688,  16.72118364],
         [ 17.42220408,  47.27442857,   1.45659951, ...,   1.03138155,
            2.99599554,   5.51867468],
         [ 49.172     ,  40.14485714,   1.26870671, ...,   1.14423211,
            2.93109045,  10.18883273],
         ..., 
         [ 52.89297959,  52.14542857,   3.30291297, ...,  11.14731045,
            7.14573668,   7.98027227],
         [ 27.06334694,  53.40014286,   1.37860461, ...,   4.98177721,
            6.32490495,  12.27526906],
         [ 23.77077551,  56.57828571,   1.97565148, ...,   9.46573398,
           13.32991072,  21.90759874]]),
  38: array([[ 24.60155102,  39.075     ,   2.29828059, ...,   2.10466287,
            2.64372711,  15.21989595],
         [ 19.73820408,  43.68942857,   1.47288894, ...,   1.03138155,
            2.20955424,   5.46560752],
         [ 54.72      ,  32.65085714,   1.28499613, ...,   1.14423211,
            2.33373373,   9.79722703],
         ..., 
         [ 56.64497959,  53.71142857,   4.50527115, ...,  11.14731045,
            5.68701894,   7.20678506],
         [ 28.86334694,  50.91614286,   1.39489404, ...,   7.30177721,
            4.46873029,  12.69830113],
         [ 30.90277551,  48.32228571,   2.05966842, ...,   9.87973398,
            9.44416828,  24.37795074]]),
  39: array([[ 22.42955102,  39.891     ,   2.85423994, ...,   2.33827918,
            2.83133154,  19.09301624],
         [ 19.70620408,  44.93142857,   2.51499283, ...,   1.09577829,
            2.24073938,   5.83508178],
         [ 51.08      ,  34.48085714,   1.92173096, ...,   1.20720557,
            2.3942196 ,  10.66483095],
         ..., 
         [ 53.66897959,  51.09842857,   3.78052652, ...,  12.15588885,
            7.46151974,   8.06547913],
         [ 26.90734694,  47.94614286,   1.85621816, ...,   6.02590427,
            5.33801267,  13.87243187],
         [ 25.49077551,  48.97628571,   2.59720322, ...,   9.92205425,
           11.7104538 ,  22.90955842]]),
  40: array([[ 21.16955102,  44.019     ,   2.11687828, ...,   2.51452405,
            3.7104204 ,  16.86472022],
         [ 17.98220408,  47.07042857,   1.55888115, ...,   1.44400992,
            2.64725333,   6.49143179],
         [ 52.932     ,  32.08685714,   1.37098834, ...,   1.27920328,
            3.05701199,  12.6920513 ],
         ..., 
         [ 51.08097959,  51.00242857,   3.63926422, ...,  11.41821146,
            6.69461962,   8.42365713],
         [ 34.30734694,  53.63414286,   2.04172304, ...,   6.09332171,
            6.44946497,  13.44019375],
         [ 27.63477551,  54.32228571,   2.17062089, ...,  10.68014474,
           11.65718508,  23.69095074]]),
  41: array([[ 26.64955102,  38.292     ,   2.26027089, ...,   3.13593487,
            3.55159686,  15.29055358],
         [ 19.95420408,  44.32242857,   1.60488397, ...,   1.16559361,
            2.59905564,   5.66234196],
         [ 52.736     ,  32.08085714,   1.41699116, ...,   1.27622261,
            2.72399062,   9.75105959],
         ..., 
         [ 53.38497959,  54.26642857,   3.64773143, ...,  12.50454746,
           10.01477871,   7.1166108 ],
         [ 27.22734694,  49.64114286,   1.52688907, ...,   5.19128832,
            5.45537739,  11.62707737],
         [ 28.06277551,  50.80328571,   2.17171747, ...,  10.83236793,
           10.00072171,  21.12054387]]),
  42: array([[ 23.16955102,  37.842     ,   1.99158593, ...,   2.14223678,
            2.81378253,  19.05372022],
         [ 21.33820408,  44.42742857,   1.52083855, ...,   1.03517671,
            2.22319037,   7.56543179],
         [ 53.728     ,  32.35685714,   1.31662346, ...,   1.15362534,
            2.37667059,  13.9990513 ],
         ..., 
         [ 52.36897959,  49.51142857,   3.35082972, ...,  11.69971344,
            5.92437378,   9.97565713],
         [ 26.66734694,  50.16914286,   1.45484331, ...,   4.98542456,
            4.69501271,  14.00619375],
         [ 27.36677551,  46.42328571,   2.02356823, ...,  10.53387267,
            9.25754256,  25.72595074]]),
  43: array([[ 26.34155102,  37.674     ,   1.96456263, ...,   2.11439136,
            3.24086217,  16.0036571 ],
         [ 21.12220408,  42.19842857,   1.55949296, ...,   1.04098691,
            2.4043788 ,   6.08949577],
         [ 54.716     ,  30.17285714,   1.27941431, ...,   1.19204428,
            2.55785902,  11.70640996],
         ..., 
         [ 54.24897959,  47.51942857,   3.31387659, ...,  11.28125665,
            6.2798002 ,   7.10487167],
         [ 33.93534694,  49.09514286,   1.38956824, ...,   5.01653026,
            5.58646836,  12.04008204],
         [ 28.10277551,  46.85228571,   1.98661511, ...,   9.77521545,
           10.1604949 ,  22.25328765]]),
  44: array([[ 26.72155102,  40.824     ,   1.94613696, ...,   3.01052481,
            2.94784985,  16.34815918],
         [ 19.99820408,  44.82042857,   1.4590673 , ...,   1.54468866,
            2.36926728,   6.18581474],
         [ 51.084     ,  33.97085714,   1.27117449, ...,   1.27311021,
            2.58758345,   9.8776182 ],
         ..., 
         [ 52.69297959,  50.10542857,   3.30538075, ...,  13.4494221 ,
            9.18237596,   7.09223359],
         [ 28.69534694,  51.55814286,   1.3810724 , ...,   5.09095833,
            7.30120906,  11.38477021],
         [ 28.46677551,  51.72428571,   1.97811927, ...,  12.02195043,
           13.64082478,  22.11843777]]),
  45: array([[ 26.93755102,  39.12      ,   1.95591245, ...,   2.23466287,
            2.77763723,  15.48434335],
         [ 18.52620408,  44.92542857,   1.46884278, ...,   1.03738155,
            2.18704506,   5.65066124],
         [ 50.74      ,  34.22585714,   1.28094998, ...,   1.14423211,
            2.34052529,  10.68175175],
         ..., 
         [ 49.88897959,  50.89442857,   4.3816567 , ...,  11.38731045,
            5.96251247,   7.06631643],
         [ 26.74334694,  50.04614286,   1.39084789, ...,   4.98177721,
            4.72839395,  12.01371259],
         [ 23.51877551,  50.84228571,   2.98888311, ...,  10.71373398,
            9.9143599 ,  22.47237333]]),
  46: array([[ 24.94555102,  41.514     ,   2.04711809, ...,   2.21811621,
            2.74659463,  15.58356068],
         [ 17.95820408,  45.17442857,   1.57361663, ...,   1.21901463,
            2.09569085,   5.51279857],
         [ 46.18      ,  34.93985714,   1.38854181, ...,   1.21269567,
            2.3586656 ,   9.77544245],
         ..., 
         [ 48.47297959,  52.01342857,   3.41553715, ...,  12.4545839 ,
            5.96979394,   7.38593513],
         [ 28.80734694,  52.92614286,   1.49196239, ...,   5.1547141 ,
            4.55025047,  11.71372455],
         [ 28.47077551,  48.69428571,   2.07884943, ...,   9.74424506,
            8.63661798,  21.11369265]]),
  47: array([[ 22.98555102,  40.296     ,   1.94588656, ...,   2.14337295,
            2.66420709,  15.5617307 ],
         [ 20.21820408,  46.99242857,   1.4588169 , ...,   1.04238625,
            2.08421159,   5.46544227],
         [ 51.448     ,  32.93885714,   1.27092409, ...,   1.30316286,
            2.23427944,   9.70906177],
         ..., 
         [ 49.20097959,  50.43242857,   4.29377897, ...,  11.91405235,
            5.74482874,   7.05066761],
         [ 28.91934694,  51.59714286,   1.380822  , ...,   5.01989566,
            4.98788825,  11.48420423],
         [ 24.59077551,  50.67428571,   2.17075232, ...,   9.82715532,
           11.23973146,  22.06196122]]),
  48: array([[ 24.72955102,  39.438     ,   2.00405728, ...,   2.18731624,
            3.65971085,  15.68042056],
         [ 21.13420408,  48.66642857,   1.51698761, ...,   1.05857303,
            2.30292949,   5.55651004],
         [ 52.508     ,  32.51585714,   1.3290948 , ...,   1.33637734,
            2.45640971,   9.94715295],
         ..., 
         [ 52.00897959,  51.00542857,   3.36330107, ...,  12.06997204,
            5.96354663,   7.17053059],
         [ 35.40334694,  51.71414286,   1.5018982 , ...,   5.36642561,
            4.74607626,  11.7053699 ],
         [ 33.60677551,  48.16628571,   2.85832815, ...,  11.38138394,
            9.3406053 ,  22.24922727]]),
  49: array([[ 22.97355102,  40.962     ,   1.95382525, ...,   2.12872886,
            2.57125686,  16.22846571],
         [ 21.44220408,  43.74042857,   1.45677584, ...,   1.0314761 ,
            1.9806647 ,   5.49865119],
         [ 54.8       ,  31.26485714,   1.26888303, ...,   1.14432937,
            2.13414492,   9.98132411],
         ..., 
         [ 51.83697959,  51.80642857,   3.30308929, ...,  13.19333157,
            5.67281174,   8.58526714],
         [ 29.47534694,  48.51614286,   1.37878094, ...,   5.26582218,
            4.45754976,  11.70030719],
         [ 28.08277551,  45.96428571,   1.97582781, ...,   9.78914356,
            9.05491618,  22.44546336]])}}