Repository: PMEAL/OpenPNM
Pull request #571 (2016-05-13 09:54:10)

Op site percolation
These changes allow OrdinaryPercolation to run in "bond" or "site" mode with a new "percolation_type" parameter. Pore entry pressure is also added as a parameter and some capillary pressure models have been changed to be more generic allowing the calculation for pores or throats.


Patch:
diff --git a/OpenPNM/Algorithms/__OrdinaryPercolation__.py b/OpenPNM/Algorithms/__OrdinaryPercolation__.py
index 146d41d62..1e0e5f8e4 100644
--- a/OpenPNM/Algorithms/__OrdinaryPercolation__.py
+++ b/OpenPNM/Algorithms/__OrdinaryPercolation__.py
@@ -38,6 +38,8 @@ class OrdinaryPercolation(GenericAlgorithm):
               invading_phase,
               defending_phase=None,
               t_entry='throat.capillary_pressure',
+              p_entry='pore.capillary_pressure',
+              percolation_type='bond',
               **kwargs):
         r"""
         invading_phase : OpenPNM Phase Object
@@ -49,6 +51,10 @@ class OrdinaryPercolation(GenericAlgorithm):
             no access limitations apply to the invading phase, which is
             equivalent to performaing a standard bond ordinary percolation.
 
+        percolation_type : string
+            Accepted values are 'bond' which must be accompanied by a throat
+            entry pressure argument and 'site' which must be accompanied by a
+            pore entry pressure argument.
 
         Notes
         -----
@@ -58,6 +64,17 @@ class OrdinaryPercolation(GenericAlgorithm):
         pores that have zero-volume, and set these as the inlets.
         """
         self['throat.entry_pressure'] = invading_phase[t_entry]
+        self._percolation_type = percolation_type
+        try:
+            self['pore.entry_pressure'] = invading_phase[p_entry]
+        except:
+            # Pore entry pressures have not been defined so we must perform
+            # bond percolation
+            if percolation_type == 'site':
+                logger.warn('Percolation type defaults to "bond" when pore entry' +
+                            ' pressure is not defined')
+                self._percolation_type = 'bond'
+
         self['pore.inv_Pc'] = sp.inf
         self['throat.inv_Pc'] = sp.inf
         self['pore.inv_sat'] = sp.inf
@@ -140,8 +157,12 @@ class OrdinaryPercolation(GenericAlgorithm):
         self._AL = access_limited
         if inv_points is None:
             logger.info('Generating list of invasion pressures')
-            min_p = sp.amin(self['throat.entry_pressure']) * 0.98  # nudge down
-            max_p = sp.amax(self['throat.entry_pressure']) * 1.02  # bump up
+            if self._percolation_type == 'bond':
+                min_p = sp.amin(self['throat.entry_pressure']) * 0.98  # nudge down
+                max_p = sp.amax(self['throat.entry_pressure']) * 1.02  # bump up
+            else:
+                min_p = sp.amin(self['pore.entry_pressure']) * 0.98  # nudge down
+                max_p = sp.amax(self['pore.entry_pressure']) * 1.02  # bump up
             inv_points = sp.logspace(sp.log10(min_p),
                                      sp.log10(max_p),
                                      npts)
@@ -172,10 +193,13 @@ class OrdinaryPercolation(GenericAlgorithm):
         pressure.
 
         """
-        # Generate a tlist containing boolean values for throat state
-        Tinvaded = self['throat.entry_pressure'] <= inv_val
+        # Generate a list containing boolean values for bond or site state
+        if self._percolation_type == 'bond':
+            invaded = self['throat.entry_pressure'] <= inv_val
+        else:
+            invaded = self['pore.entry_pressure'] <= inv_val
         # Find all pores that can be invaded at specified pressure
-        [pclusters, tclusters] = self._net.find_clusters2(mask=Tinvaded,
+        [pclusters, tclusters] = self._net.find_clusters2(mask=invaded,
                                                           t_labels=True)
         if self._AL:
             # Identify clusters connected to invasion sites
@@ -253,8 +277,6 @@ class OrdinaryPercolation(GenericAlgorithm):
                 self['throat.trapped'][inds] = inv_val
                 inds = (self['throat.trapped'] == 0) * (Cstate == 2)
                 self['throat.trapped'][inds] = inv_val
-        self['pore.trapped'][self['pore.trapped'] > 0] = sp.inf
-        self['throat.trapped'][self['throat.trapped'] > 0] = sp.inf
         self['pore.inv_Pc'][self['pore.trapped'] > 0] = sp.inf
         self['throat.inv_Pc'][self['throat.trapped'] > 0] = sp.inf
 
@@ -338,7 +360,7 @@ class OrdinaryPercolation(GenericAlgorithm):
                 self._def_phase['throat.' + occupancy] = temp
 
     def plot_drainage_curve(self, pore_volume='volume', throat_volume='volume',
-                            pore_label='all', throat_label='all'):
+                            pore_label='all', throat_label='all', fig=None):
         r"""
         Plot drainage capillary pressure curve
         """
@@ -368,7 +390,8 @@ class OrdinaryPercolation(GenericAlgorithm):
             Snwp_t = 1 - Snwp_t
             Snwp_all = 1 - Snwp_all
             PcPoints *= -1
-        fig = plt.figure()
+        if fig is None:
+            fig = plt.figure()
         plt.plot(PcPoints, Snwp_all, 'g.-')
         plt.plot(PcPoints, Snwp_p, 'r.-')
         plt.plot(PcPoints, Snwp_t, 'b.-')
diff --git a/OpenPNM/Base/__Core__.py b/OpenPNM/Base/__Core__.py
index 7ec4eacdb..2535af207 100644
--- a/OpenPNM/Base/__Core__.py
+++ b/OpenPNM/Base/__Core__.py
@@ -7,6 +7,7 @@ from OpenPNM.Base import Workspace
 import string
 import random
 import scipy as sp
+import numpy as np
 import scipy.constants
 from OpenPNM.Base import logging, Tools
 from OpenPNM.Base import ModelsDict
@@ -752,7 +753,7 @@ class Core(dict):
         indices = self._parse_locations(mask)
         return indices
 
-    def interpolate_data(self, data):
+    def interpolate_data(self, data, operator='mean'):
         r"""
         Determines a pore (or throat) property as the average of it's
         neighboring throats (or pores)
@@ -763,6 +764,9 @@ class Core(dict):
             A list of specific values to be interpolated.  List MUST be either
             Np or Nt long
 
+        operator : string
+            options are mean, min or max, and will determine which function to
+            apply when interpolating data from neighbors, default is mean.
         Returns
         -------
         An array containing interpolated pore (or throat) data
@@ -775,6 +779,12 @@ class Core(dict):
 
         """
         mro = [module.__name__ for module in self.__class__.__mro__]
+        functions = {'min': np.min,
+                     'max': np.max,
+                     'mean': np.mean}
+        if operator not in functions.keys():
+            operator = 'mean'
+        func = functions[operator]
         if 'GenericNetwork' in mro:
             net = self
             Ts = net.throats()
@@ -800,7 +810,7 @@ class Core(dict):
                 neighborTs = net.find_neighbor_throats(pore)
                 neighborTs = net.filter_by_label(throats=neighborTs,
                                                  labels=label)
-                temp[pore] = sp.mean(data[neighborTs])
+                temp[pore] = func(data[neighborTs])
             values = temp[Ps]
         elif sp.shape(data)[0] == self.Np:
             # Upcast data to full network size
@@ -808,7 +818,7 @@ class Core(dict):
             temp[Ps] = data
             data = temp
             Ps12 = net.find_connected_pores(throats=Ts, flatten=False)
-            values = sp.mean(data[Ps12], axis=1)
+            values = func(data[Ps12], axis=1)
         else:
             logger.error('Received data was an ambiguous length')
             raise Exception()
diff --git a/OpenPNM/Base/__Workspace__.py b/OpenPNM/Base/__Workspace__.py
index 074ddb6c0..266d9d59e 100644
--- a/OpenPNM/Base/__Workspace__.py
+++ b/OpenPNM/Base/__Workspace__.py
@@ -86,6 +86,12 @@ class Workspace(dict):
 
     loglevel = property(fget=_getloglevel, fset=_setloglevel)
 
+#    def clear(self):
+#        for item in self.values():
+#            del item.network, item.geometries, item.phases, item.physics
+#            del item.workspace
+#        super().clear()
+
     def networks(self):
         r"""
         Returns a list of all Network objects
diff --git a/OpenPNM/Geometry/models/pore_volume.py b/OpenPNM/Geometry/models/pore_volume.py
index e4f9b16e1..e0e870a12 100644
--- a/OpenPNM/Geometry/models/pore_volume.py
+++ b/OpenPNM/Geometry/models/pore_volume.py
@@ -132,10 +132,14 @@ def _get_fibre_image(network, cpores, vox_len, fibre_rad):
     # Below method copied from geometry model throat.vertices
     # Needed now as network may not have all throats assigned to geometry
     # i.e network['throat.vertices'] could return garbage
-    verts = _sp.ndarray(network.num_throats(), dtype=object)
-    for i in range(len(verts)):
-        verts[i] = _sp.asarray(list(network["throat.vert_index"][i].values()))
-    cverts = verts[cthroats]
+    cverts = []
+    for i in cthroats:
+        try:
+            cv = list(network["throat.vert_index"][i].values())
+            cverts.append(_sp.asarray(cv))
+        except:
+            # Throat was not part of the original Delaunay network
+            pass
     [vxmin, vxmax, vymin, vymax, vzmin, vzmax] = _get_vertex_range(cverts)
     # Translate vertices so that minimum occurs at the origin
     for index in range(len(cverts)):
@@ -434,10 +438,12 @@ def in_hull_volume(network, geometry, fibre_rad, vox_len=1e-6, **kwargs):
     geometry._hull_image = hull_image
     for pore in nbps:
         logger.info("Processing Pore: "+str(pore+1)+" of "+str(len(nbps)))
-        verts = np.asarray([i for i in network["pore.vert_index"][pore].values()])
-        verts = np.asarray(misc.unique_list(np.around(verts, 6)))
-        verts /= vox_len
-        pore_vox[pore], fibre_vox[pore] = inhull(geometry, verts, pore)
+        if network["pore.vert_index"][pore] is not None:
+            vi = [i for i in network["pore.vert_index"][pore].values()]
+            verts = np.asarray(vi)
+            verts = np.asarray(misc.unique_list(np.around(verts, 6)))
+            verts /= vox_len
+            pore_vox[pore], fibre_vox[pore] = inhull(geometry, verts, pore)
 
     volume = pore_vox*voxel
     geometry["pore.fibre_voxels"] = fibre_vox[geom_pores]
diff --git a/OpenPNM/Geometry/models/throat_diameter.py b/OpenPNM/Geometry/models/throat_diameter.py
index 9d50d695a..ed0e23702 100644
--- a/OpenPNM/Geometry/models/throat_diameter.py
+++ b/OpenPNM/Geometry/models/throat_diameter.py
@@ -131,5 +131,23 @@ def minpore(network, geometry, factor=1, **kwargs):
         pDs[_sp.isnan(pDs)] = 0.0
     value = _sp.amin(pDs, axis=1)*factor
     value[value == 0.0] = _sp.amax(pDs, axis=1)[value == 0.0]
+    if factor is not None:
+        value *= factor
+    return value
+
 
+def meanpore(network, geometry, factor=None, **kwargs):
+    r"""
+    Assign the throat diameter to be equal to the mean of the connecting pore
+    diameters. If zero (in case of boundaries) take it to be the maximum of
+    the connecting pore diameters
+    """
+    import numpy as np
+    gTs = geometry.throats()
+    nTs = geometry.map_throats(network, gTs)
+    pDs = network["pore.diameter"][network["throat.conns"][nTs]]
+    value = np.mean(pDs, axis=1)
+    value[value == 0.0] = np.max(pDs, axis=1)[value == 0.0]
+    if factor is not None:
+        value *= factor
     return value
diff --git a/OpenPNM/Network/__GenericNetwork__.py b/OpenPNM/Network/__GenericNetwork__.py
index 0c92315ae..6c224bdb5 100644
--- a/OpenPNM/Network/__GenericNetwork__.py
+++ b/OpenPNM/Network/__GenericNetwork__.py
@@ -786,8 +786,8 @@ class GenericNetwork(Core):
         csr = self.create_adjacency_matrix(data=tmask,
                                            sprsfmt='csr',
                                            dropzeros=True)
-        clusters = sprs.csgraph.connected_components(csgraph=csr,
-                                                     directed=False)[1]
+        clusters = csgraph.connected_components(csgraph=csr,
+                                                directed=False)[1]
 
         # Convert clusters to a more usable output:
         # Find pores attached to each invaded throats
diff --git a/OpenPNM/Physics/models/capillary_pressure.py b/OpenPNM/Physics/models/capillary_pressure.py
index 3e5708750..477d7dba9 100644
--- a/OpenPNM/Physics/models/capillary_pressure.py
+++ b/OpenPNM/Physics/models/capillary_pressure.py
@@ -6,10 +6,60 @@ Submodule -- capillary_pressure
 """
 
 import scipy as _sp
+import numpy as np
+from OpenPNM.Base import logging
+logger = logging.getLogger(__name__)
+
+
+def _get_key_props(phase=None, diameter='throat.diameter',
+                   surface_tension='pore.surface_tension',
+                   contact_angle='pore.contact_angle'):
+    r"""
+    Many of the methods are generic to pores and throats. Some information may
+    be stored on either the pore or throat and needs to be interpolated.
+    This is a helper method to return the properties in the correct format.
+    To do:
+        Check for method to convert throat to pore data
+    """
+    element = diameter.split('.')[0]
+    if (surface_tension.split('.')[0] == 'pore' and
+       diameter.split('.')[0] == 'throat'):
+        sigma = phase[surface_tension]
+        sigma = phase.interpolate_data(data=sigma)
+    else:
+        sigma = phase[surface_tension]
+    if (contact_angle.split('.')[0] == 'pore' and
+       diameter.split('.')[0] == 'throat'):
+        theta = phase[contact_angle]
+        theta = phase.interpolate_data(data=theta)
+    else:
+        theta = phase[contact_angle]
+    return element, sigma, theta
+
+
+def _handle_zeros(array, mode='max', value=None):
+    r"""
+    Convert zeros in an array to either the max, min or specified value
+    Useful for handling pores or throats with zero diameter i.e. boundaries
+
+    Parameters
+    ----------
+    mode : Determines what value to replace zeros with, uses non-zero values.
+    options are max, min , mean
+    """
+    if value is None:
+        if mode == 'max':
+            value = array.max()
+        elif mode == 'min':
+            value = array[~array == 0.0].min()
+        elif mode == 'mean':
+            value = array[~array == 0.0].mean()
+    array[array == 0.0] = value
+    return array
 
 
 def washburn(physics, phase, network, surface_tension='pore.surface_tension',
-             contact_angle='pore.contact_angle', throat_diameter='throat.diameter',
+             contact_angle='pore.contact_angle', diameter='throat.diameter',
              **kwargs):
     r"""
     Computes the capillary entry pressure assuming the throat in a cylindrical tube.
@@ -27,8 +77,8 @@ def washburn(physics, phase, network, surface_tension='pore.surface_tension',
     theta : dict key (string)
         The dictionary key containing the contact angle values to be used. If
         a pore property is given, it is interpolated to a throat list.
-    throat_diameter : dict key (string)
-        The dictionary key containing the throat diameter values to be used.
+    diameter : dict key (string)
+        The dictionary key containing the element diameter values to be used.
 
     Notes
     -----
@@ -41,19 +91,15 @@ def washburn(physics, phase, network, surface_tension='pore.surface_tension',
     suitable for highly non-wetting invading phases in most materials.
 
     """
-    if surface_tension.split('.')[0] == 'pore':
-        sigma = phase[surface_tension]
-        sigma = phase.interpolate_data(data=sigma)
-    else:
-        sigma = phase[surface_tension]
-    if contact_angle.split('.')[0] == 'pore':
-        theta = phase[contact_angle]
-        theta = phase.interpolate_data(data=theta)
-    else:
-        theta = phase[contact_angle]
-    r = network[throat_diameter]/2
+    element, sigma, theta = _get_key_props(phase=phase,
+                                           diameter=diameter,
+                                           surface_tension=surface_tension,
+                                           contact_angle=contact_angle)
+    r = network[diameter]/2
+    # Take care of any zeros - Boundary pores should be invaded with ease
+    r = _handle_zeros(r, mode='max')
     value = -2*sigma*_sp.cos(_sp.radians(theta))/r
-    if throat_diameter.split('.')[0] == 'throat':
+    if element == 'throat':
         value = value[phase.throats(physics.name)]
     else:
         value = value[phase.pores(physics.name)]
@@ -64,7 +110,8 @@ def washburn(physics, phase, network, surface_tension='pore.surface_tension',
 def purcell(physics, phase, network, r_toroid,
             surface_tension='pore.surface_tension',
             contact_angle='pore.contact_angle',
-            throat_diameter='throat.diameter', **kwargs):
+            diameter='throat.diameter',
+            **kwargs):
     r"""
     Computes the throat capillary entry pressure assuming the throat is a toroid.
 
@@ -78,8 +125,8 @@ def purcell(physics, phase, network, r_toroid,
     theta : dict key (string)
         The dictionary key containing the contact angle values to be used. If
         a pore property is given, it is interpolated to a throat list.
-    throat_diameter : dict key (string)
-        The dictionary key containing the throat diameter values to be used.
+    diameter : dict key (string)
+        The dictionary key containing the element diameter values to be used.
     r_toroid : float or array_like
         The radius of the toroid surrounding the pore
 
@@ -105,23 +152,19 @@ def purcell(physics, phase, network, r_toroid,
     TODO: Triple check the accuracy of this equation
     """
 
-    if surface_tension.split('.')[0] == 'pore':
-        sigma = phase[surface_tension]
-        sigma = phase.interpolate_data(data=sigma)
-    else:
-        sigma = phase[surface_tension]
-    if contact_angle.split('.')[0] == 'pore':
-        theta = phase[contact_angle]
-        theta = phase.interpolate_data(data=theta)
-    else:
-        theta = phase[contact_angle]
-    r = network[throat_diameter]/2
+    element, sigma, theta = _get_key_props(phase=phase,
+                                           diameter=diameter,
+                                           surface_tension=surface_tension,
+                                           contact_angle=contact_angle)
+    r = network[diameter]/2
+    # Take care of any zeros - Boundary pores should be invaded with ease
+    r = _handle_zeros(r, mode='max')
     R = r_toroid
     alpha = theta - 180 + _sp.arcsin(_sp.sin(_sp.radians(theta)/(1+r/R)))
     value = (-2*sigma/r) * \
         (_sp.cos(_sp.radians(theta - alpha)) /
             (1 + R/r*(1 - _sp.cos(_sp.radians(alpha)))))
-    if throat_diameter.split('.')[0] == 'throat':
+    if element == 'throat':
         value = value[phase.throats(physics.name)]
     else:
         value = value[phase.pores(physics.name)]
@@ -227,3 +270,112 @@ def static_pressure(network,
         P_temp = _sp.reshape(P_temp[:, _sp.where(g > 0)[0]], -1)
         static_pressure[Ps] = P_temp*rho[Ps]
     return static_pressure
+
+
+def cuboid(physics, phase, network,
+           surface_tension='pore.surface_tension',
+           contact_angle='pore.contact_angle',
+           diameter='throat.diameter', **kwargs):
+    r"""
+    Computes the capillary entry pressure assuming the throat in a cube tube.
+
+    Parameters
+    ----------
+    network : OpenPNM Network Object
+        The Network object is
+    phase : OpenPNM Phase Object
+        Phase object for the invading phases containing the surface tension and
+        contact angle values.
+    sigma : dict key (string)
+        The dictionary key containing the surface tension values to be used. If
+        a pore property is given, it is interpolated to a throat list.
+    theta : dict key (string)
+        The dictionary key containing the contact angle values to be used. If
+        a pore property is given, it is interpolated to a throat list.
+    diameter : dict key (string)
+        The dictionary key containing the element diameter values to be used.
+
+    Notes
+    -----
+    The equation is taken from Non-equilibrium effects in capillarity and
+    interfacial area in two-phase flow: dynamic pore-network modelling
+
+    """
+    element, sigma, theta = _get_key_props(phase=phase,
+                                           diameter=diameter,
+                                           surface_tension=surface_tension,
+                                           contact_angle=contact_angle)
+    # Convert theta to rad
+    theta *= 2*_sp.pi/360
+    rad = network[diameter]/2
+    # Take care of any zeros - Boundary pores should be invaded with ease
+    rad = _handle_zeros(rad, mode='max')
+    Theta = ((theta+_sp.cos(theta)**2-_sp.pi/4-_sp.sin(theta)*_sp.cos(theta)) /
+             (_sp.cos(theta)-_sp.sqrt(_sp.pi/4-theta+_sp.sin(theta) *
+              _sp.cos(theta))))
+    value = (sigma/rad)*Theta
+    if element == 'throat':
+        value = value[phase.throats(physics.name)]
+    else:
+        value = value[phase.pores(physics.name)]
+    value[_sp.absolute(value) == _sp.inf] = 0
+    return value
+
+
+def from_throat(physics, phase, network,
+                capillary_pressure='throat.capillary_pressure',
+                operator='min',
+                **kwargs):
+    r"""
+    The capillary pressure for a pore is calculated from the adjoining throats
+
+    Parameters
+    ----------
+    network : OpenPNM Network Object
+        The Network object is
+    phase : OpenPNM Phase Object
+        Phase object for the invading phases containing the surface tension and
+        contact angle values.
+    capillary_pressure : string
+        label for throat data to use
+    operator : string
+        Operator for throat values to convert to pore value
+        Accepted values are min, max, mean
+    """
+    value = np.zeros(network.Np)
+    functions = {'min': np.min,
+                 'max': np.max,
+                 'mean': np.mean}
+    if operator not in functions.keys():
+        operator = 'mean'
+
+    for i in range(network.Np):
+        ts = network.find_neighbor_throats(pores=i)
+        value[i] = functions[operator](physics[capillary_pressure][ts])
+
+    return value
+
+
+def kelvin(physics, phase, network, diameter='pore.diameter',
+           temperature='pore.temperature',
+           vapor_pressure='pore.vapor_pressure',
+           molecular_weight='pore.molecular_weight',
+           density='pore.density',
+           surface_tension='pore.surface_tension',
+           **kwargs):
+    r"""
+    Calculate the critical vapor pressure that causes droplets to condense or
+    evaporate inside a pore. Only works with site percolation
+    """
+
+    T = phase[temperature]
+    P0 = phase[vapor_pressure]
+    M = phase[molecular_weight]
+    rho = phase[density]
+    gamma = phase[surface_tension]
+    r = network[diameter]/2
+    # Take care of any zeros - Boundary pores should be invaded with ease
+    r = _handle_zeros(r, mode='max')
+    R = 8.314
+    value = P0*np.exp((M*2*gamma)/(rho*R*T*r))
+    return value
diff --git a/OpenPNM/Utilities/vertexops.py b/OpenPNM/Utilities/vertexops.py
index 0604ed236..86e61f188 100644
--- a/OpenPNM/Utilities/vertexops.py
+++ b/OpenPNM/Utilities/vertexops.py
@@ -264,10 +264,12 @@ def porosity(network):
     domain_vol = vertex_dimension(network, network.pores(), parm='volume')
     try:
         pore_vol = np.sum(network['pore.volume'])
+        throat_vol = np.sum(network['throat.volume'])
     except KeyError:
         logger.error('Geometries must be assigned first')
         pore_vol = 0
-    porosity = np.around(pore_vol/domain_vol, 3)
+        throat_vol = 0
+    porosity = np.around((pore_vol+throat_vol)/domain_vol, 3)
     return porosity
 
 
diff --git a/docs/userguide/reference/data_storage.rst b/docs/userguide/reference/data_storage.rst
index df2283bca..b84cb99a3 100644
--- a/docs/userguide/reference/data_storage.rst
+++ b/docs/userguide/reference/data_storage.rst
@@ -97,8 +97,8 @@ A complication arises if you have a list of pore numbers you wish to label, such
 
     >>> pn['pore.dummy_2'] = False  # Automatically assigns False to every pore
     >>> pn['pore.dummy_2'][[3, 4, 5]] = True
-    >>> pn.pores('dummy_2')
-    array([3, 4, 5])
+    >>> list(pn.pores('dummy_2'))
+    [3, 4, 5]
 
 The *label* functionality uses Scipy's ``where`` method to return a list of locations where the array is ``True``:
 
diff --git a/example_script.py b/example_script.py
index c3b62be3a..5d284b9b6 100644
--- a/example_script.py
+++ b/example_script.py
@@ -1,4 +1,7 @@
 import OpenPNM as op
+# Initialize workspace, and clear it just to be safe
+ws = op.Base.Workspace()
+ws.clear()
 
 # Create Topological Network object
 pn = op.Network.Cubic(shape=[15, 5, 5], spacing=1)


Test patch:
diff --git a/test/unit/Algorithms/OrdinaryPercolationTest.py b/test/unit/Algorithms/OrdinaryPercolationTest.py
index ff3960c13..3ad42ccc9 100644
--- a/test/unit/Algorithms/OrdinaryPercolationTest.py
+++ b/test/unit/Algorithms/OrdinaryPercolationTest.py
@@ -1,15 +1,35 @@
-import OpenPNM
-mgr = OpenPNM.Base.Workspace()
+import OpenPNM as op
+import scipy as sp
+mgr = op.Base.Workspace()
 mgr.loglevel = 60
 
 
 class OrdinaryPercolationTest:
-    def setup_test(self):
-        self.net = OpenPNM.Network.Cubic(shape=[5, 5, 5])
-        self.geo = OpenPNM.Geometry.Toray090(network=self.net,
-                                             pores=self.net.Ps,
-                                             throats=self.net.Ts)
-        self.phase = OpenPNM.Phases.Water(network=self.net)
-        self.phys = OpenPNM.Physics.Standard(network=self.net,
-                                             pores=self.net.Ps,
-                                             throats=self.net.Ts)
+
+    def setup_class(self):
+        self.net = op.Network.Cubic(shape=[5, 5, 5])
+        self.geo = op.Geometry.Toray090(network=self.net,
+                                        pores=self.net.Ps,
+                                        throats=self.net.Ts)
+        self.phase = op.Phases.Water(network=self.net)
+        self.phys = op.Physics.Standard(network=self.net,
+                                        phase=self.phase,
+                                        pores=self.net.Ps,
+                                        throats=self.net.Ts)
+        self.OP1 = op.Algorithms.OrdinaryPercolation(network=self.net,
+                                                     invading_phase=self.phase)
+        Ps = self.net.pores(labels=['bottom'])
+        self.OP1.run(inlets=Ps)
+        self.OP1.return_results(Pc=7000)
+        lpf = self.OP1.evaluate_late_pore_filling(Pc=8000)
+        assert sp.size(lpf) == self.net.Np
+
+    def test_site_percolation(self):
+        self.OP2 = op.Algorithms.OrdinaryPercolation(network=self.net,
+                                                     invading_phase=self.phase,
+                                                     percolation_type='site')
+        Ps = self.net.pores(labels=['bottom'])
+        self.OP2.run(inlets=Ps)
+        self.OP2.return_results(Pc=7000)
+        lpf = self.OP2.evaluate_late_pore_filling(Pc=8000)
+        assert sp.size(lpf) == self.net.Np
diff --git a/test/unit/Base/CoreTest.py b/test/unit/Base/CoreTest.py
index 258c592f9..16e56e7ce 100644
--- a/test/unit/Base/CoreTest.py
+++ b/test/unit/Base/CoreTest.py
@@ -997,3 +997,15 @@ class CoreTest:
         geom = OpenPNM.Geometry.GenericGeometry(network=net, pores=[0, 1, 2])
         geom['pore.blah'] = True
         assert sp.sum(net['pore.blah']) == geom.Np
+
+    def test_interpolate(self):
+        net = OpenPNM.Network.Cubic(shape=[3, 1, 1])
+        net['pore.blah'] = [1, 2, 3]
+        interp_mean = net.interpolate_data(data=net['pore.blah'])
+        interp_min = net.interpolate_data(data=net['pore.blah'],
+                                          operator='min')
+        interp_max = net.interpolate_data(data=net['pore.blah'],
+                                          operator='max')
+        assert (1.5 in interp_mean) and (2.5 in interp_mean)
+        assert (1 in interp_min) and (3 not in interp_min)
+        assert (3 in interp_max) and (1 not in interp_max)
diff --git a/test/unit/Geometry/models/ThroatDiameterTest.py b/test/unit/Geometry/models/ThroatDiameterTest.py
index b6d3d8611..7543cf5e6 100644
--- a/test/unit/Geometry/models/ThroatDiameterTest.py
+++ b/test/unit/Geometry/models/ThroatDiameterTest.py
@@ -59,3 +59,15 @@ class ThroatDiameterTest:
                             seeds='throat.seed')
         assert sp.amin(self.geo['throat.diameter']) > 0.001
         del self.geo['throat.diameter']
+
+    def test_mean_pore(self):
+        self.geo['pore.diameter'] = 2.0
+        self.boun['pore.diameter'] = 1.0
+        self.geo.models.add(propname='throat.diameter',
+                            model=gm.throat_diameter.meanpore)
+        self.boun.models.add(propname='throat.diameter',
+                             model=gm.throat_diameter.meanpore)
+        BTs = self.net.throats('boundary')
+        NBTs = self.net.throats('boundary', mode='not')
+        assert sp.all(self.net['throat.diameter'][BTs] == 1.5)
+        assert sp.all(self.net['throat.diameter'][NBTs] == 2.0)
diff --git a/test/unit/Physics/models/CapillaryPressureTest.py b/test/unit/Physics/models/CapillaryPressureTest.py
index 24025d387..8cfd8c9f0 100644
--- a/test/unit/Physics/models/CapillaryPressureTest.py
+++ b/test/unit/Physics/models/CapillaryPressureTest.py
@@ -10,6 +10,7 @@ class CapillaryPressureTest:
                                                     pores=self.net.Ps,
                                                     throats=self.net.Ts)
         self.geo['throat.diameter'] = 1
+        self.geo['pore.diameter'] = 1
         self.water = OpenPNM.Phases.GenericPhase(network=self.net)
         self.phys = OpenPNM.Physics.GenericPhysics(network=self.net,
                                                    geometry=self.geo,
@@ -19,16 +20,19 @@ class CapillaryPressureTest:
         self.water['pore.surface_tension'] = 0.072
         self.water['pore.contact_angle'] = 120
         f = OpenPNM.Physics.models.capillary_pressure.washburn
+        self.phys.models.add(propname='pore.capillary_pressure',
+                             model=f,
+                             surface_tension='pore.surface_tension',
+                             contact_angle='pore.contact_angle',
+                             diameter='pore.diameter')
         self.phys.models.add(propname='throat.capillary_pressure',
                              model=f,
                              surface_tension='pore.surface_tension',
                              contact_angle='pore.contact_angle',
-                             throat_diameter='throat.diameter')
+                             diameter='throat.diameter')
         a = 0.14399999999999993
-        assert sp.allclose(self.water['throat.capillary_pressure'][0], a)
-        self.phys.models.remove('throat.capillary_pressure')
-        del self.water['pore.surface_tension']
-        del self.water['pore.contact_angle']
+        assert sp.allclose(self.water['pore.capillary_pressure'][0], a)
+        self.phys.models.remove('pore.capillary_pressure')
 
     def test_washburn_throat_values(self):
         self.water['throat.surface_tension'] = 0.072
@@ -38,28 +42,30 @@ class CapillaryPressureTest:
                              model=f,
                              surface_tension='throat.surface_tension',
                              contact_angle='throat.contact_angle',
-                             throat_diameter='throat.diameter')
+                             diameter='throat.diameter')
         a = 0.14399999999999993
         assert sp.allclose(self.water['throat.capillary_pressure'][0], a)
         self.phys.models.remove('throat.capillary_pressure')
-        del self.water['throat.surface_tension']
-        del self.water['throat.contact_angle']
 
     def test_purcell_pore_values(self):
         self.water['pore.surface_tension'] = 0.072
         self.water['pore.contact_angle'] = 120
         f = OpenPNM.Physics.models.capillary_pressure.purcell
+        self.phys.models.add(propname='pore.capillary_pressure',
+                             model=f,
+                             r_toroid=0.1,
+                             surface_tension='pore.surface_tension',
+                             contact_angle='pore.contact_angle',
+                             diameter='pore.diameter')
         self.phys.models.add(propname='throat.capillary_pressure',
                              model=f,
                              r_toroid=0.1,
                              surface_tension='pore.surface_tension',
                              contact_angle='pore.contact_angle',
-                             throat_diameter='throat.diameter')
+                             diameter='throat.diameter')
         a = 0.26206427646507374
-        assert sp.allclose(self.water['throat.capillary_pressure'][0], a)
-        self.phys.models.remove('throat.capillary_pressure')
-        del self.water['pore.surface_tension']
-        del self.water['pore.contact_angle']
+        assert sp.allclose(self.water['pore.capillary_pressure'][0], a)
+        self.phys.models.remove('pore.capillary_pressure')
 
     def test_purcell_throat_values(self):
         self.water['throat.surface_tension'] = 0.072
@@ -70,12 +76,10 @@ class CapillaryPressureTest:
                              r_toroid=0.1,
                              surface_tension='throat.surface_tension',
                              contact_angle='throat.contact_angle',
-                             throat_diameter='throat.diameter')
+                             diameter='throat.diameter')
         a = 0.26206427646507374
         assert sp.allclose(self.water['throat.capillary_pressure'][0], a)
         self.phys.models.remove('throat.capillary_pressure')
-        del self.water['throat.surface_tension']
-        del self.water['throat.contact_angle']
 
     def test_static_pressure(self):
         self.water['pore.density'] = 1000
@@ -88,3 +92,43 @@ class CapillaryPressureTest:
                              pore_occupancy='pore.occupancy')
         a = [0., 9810., 19620.]
         assert sp.all(sp.unique(self.water['pore.static_pressure']) == a)
+
+    def test_cuboid(self):
+        self.water['pore.surface_tension'] = 0.072
+        self.water['pore.contact_angle'] = 120
+        f = OpenPNM.Physics.models.capillary_pressure.cuboid
+        self.phys.models.add(propname='throat.cuboid_pressure',
+                             model=f)
+        assert sp.sum(sp.isnan(self.phys['throat.cuboid_pressure'])) == 0
+
+    def test_from_throat(self):
+        f1 = OpenPNM.Physics.models.capillary_pressure.from_throat
+        f2 = OpenPNM.Physics.models.capillary_pressure.washburn
+        self.water['throat.surface_tension'] = 0.072
+        self.water['throat.contact_angle'] = 120
+        self.phys.models.add(propname='throat.capillary_pressure',
+                             model=f2,
+                             surface_tension='throat.surface_tension',
+                             contact_angle='throat.contact_angle',
+                             diameter='throat.diameter')
+        self.phys.models.add(propname='pore.pc_min',
+                             model=f1, operator='min')
+        self.phys.models.add(propname='pore.pc_max',
+                             model=f1, operator='max')
+        self.phys.models.add(propname='pore.pc_mean',
+                             model=f1, operator='mean')
+        assert sp.all(self.phys['pore.pc_min'] <= self.phys['pore.pc_max'])
+        assert sp.all((self.phys['pore.pc_mean'] <=
+                      (self.phys['pore.pc_max']) *
+                      (self.phys['pore.pc_mean'] >=
+                       self.phys['pore.pc_min'])))
+
+    def test_kelvin(self):
+        f = OpenPNM.Physics.models.capillary_pressure.kelvin
+        self.water['pore.temperature'] = 1.0
+        self.water['pore.vapor_pressure'] = 1.0
+        self.water['pore.molecular_weight'] = 1.0
+        self.water['pore.density'] = 1.0
+        self.water['pore.surface_tension'] = 1.0
+        self.phys.models.add(propname='pore.pc_kelvin', model=f)
+        assert sp.sum(sp.isnan(self.phys['pore.pc_kelvin'])) == 0
diff --git a/test_file.csv b/test_file.csv
deleted file mode 100644
index fe712e053..000000000
--- a/test_file.csv
+++ /dev/null
@@ -1,301 +0,0 @@
-throat.Stick_and_Ball_xzv8N,throat.all,throat.area,throat.conns,throat.diameter,throat.length,throat.surface_area,throat.volume,pore.Stick_and_Ball_xzv8N,pore.all,pore.area,pore.back,pore.bottom,pore.coords,pore.diameter,pore.front,pore.index,pore.internal,pore.left,pore.right,pore.seed,pore.top,pore.volume
-True,True,0.021331905398747693,0 1,0.16480481036133343,0.5689863328076663,0.2945924356946132,0.01213756262463351,True,True,0.22263573495907577,False,True, 0.5  0.5  0.5,0.5324177136620005,True,0.0,True,True,False,0.6270980347254416,False,0.07902347265758015
-True,True,0.021331905398747693,1 2,0.16480481036133343,0.5838416539727845,0.30228377201101153,0.012454454930395825,True,True,0.08532762159499077,False,False, 0.5  0.5  1.5,0.32960962072266686,True,1.0,True,True,False,0.04419953116690312,False,0.018749869994061433
-True,True,0.049620356320994694,2 3,0.25135353566588203,0.44907769801930697,0.35461439334835254,0.022283395391530066,True,True,0.19848142528397877,False,False, 0.5  0.5  2.5,0.5027070713317641,True,2.0,True,True,False,0.5107983332081698,False,0.06651867734550886
-True,True,0.061645437618962004,3 4,0.28015961330814093,0.4202716203770481,0.36990096682462215,0.0259078279569734,True,True,0.28193106669505547,False,False, 0.5  0.5  3.5,0.5991375326296219,True,3.0,True,True,False,0.8392488281397129,False,0.11261032244754192
-True,True,0.041084448603731644,5 6,0.2287145483696008,0.44818071157926354,0.32203036564698906,0.01841325741006213,True,True,0.24658175047584802,False,False, 0.5  0.5  4.5,0.5603192266162819,True,4.0,True,True,False,0.7268096039964431,True,0.09210966381621076
-True,True,0.041084448603731644,6 7,0.2287145483696008,0.5290357653977311,0.3801269813041382,0.021735142713018917,True,True,0.32797182109271283,False,True, 0.5  1.5  0.5,0.6462094801022714,True,5.0,True,False,False,0.9281423833821612,False,0.14129233333101143
-True,True,0.046091020909999086,7 8,0.24224968623266802,0.479978656669386,0.3652876772711978,0.02212270630090194,True,True,0.16433779441492657,False,False, 0.5  1.5  1.5,0.4574290967392016,True,6.0,True,False,False,0.3351599397054622,False,0.05011525923955498
-True,True,0.02869059663211075,8 9,0.19112823494724396,0.53110010795481,0.3188974977518705,0.01523757896860193,True,True,0.18436408363999635,False,False, 0.5  1.5  2.5,0.48449937246533603,True,7.0,True,False,False,0.4384081850462578,False,0.059549521885816636
-True,True,0.04802300188143824,10 11,0.2472747157562582,0.4674057260635185,0.363097795801636,0.022446226062143356,True,True,0.24239615807090817,False,False, 0.5  1.5  3.5,0.5555433141958921,True,8.0,True,False,False,0.7107007855575745,False,0.08977437666870912
-True,True,0.04802300188143824,11 12,0.2472747157562582,0.5025966244376898,0.39043536767854653,0.024136198640975687,True,True,0.114762386528443,False,False, 0.5  1.5  4.5,0.3822564698944879,True,9.0,True,False,False,0.11951090346066806,True,0.029245776500686237
-True,True,0.04913792280099595,12 13,0.2501286598060519,0.49276449759100915,0.38721550517999,0.02421342384169856,True,True,0.2557484194290894,False,True, 0.5  2.5  0.5,0.5706391163604465,True,10.0,True,False,False,0.7600275427407134,False,0.09729336804906427
-True,True,0.05191790404766465,13 14,0.2571068426029389,0.3821334510728325,0.308658729504782,0.019839567846202274,True,True,0.19209200752575295,False,False, 0.5  2.5  1.5,0.4945494315125164,True,11.0,True,False,False,0.47826613972472254,False,0.06333266207997276
-True,True,0.034483578660608326,15 16,0.20953724250040162,0.5369932246938927,0.35349225527600564,0.018517448103945566,True,True,0.1965516912039838,False,False, 0.5  2.5  2.5,0.5002573196121038,True,12.0,True,False,False,0.5010265555955851,False,0.06555094813795391
-True,True,0.03392018441306511,16 17,0.20781847886899707,0.5826442786306013,0.3803973830609275,0.019763401378367285,True,True,0.2076716161906586,False,False, 0.5  2.5  3.5,0.5142136852058778,True,13.0,True,False,False,0.5565140450317196,False,0.07119172471603948
-True,True,0.03392018441306511,17 18,0.20781847886899707,0.48833972901611145,0.31882773379155727,0.016564573664452742,True,True,0.40887063630815745,False,False, 0.5  2.5  4.5,0.7215194126484572,True,14.0,True,False,False,0.9866266285677749,True,0.19667206757217512
-True,True,0.04077646850108258,18 19,0.2278556828131045,0.468302525072004,0.3352248743910243,0.019095723162576007,True,True,0.20183728765385217,False,True, 0.5  3.5  0.5,0.5069390656114113,True,15.0,True,False,False,0.5276606668332618,False,0.06821280400585697
-True,True,0.06564288093419109,20 21,0.28910052202608344,0.41663660968846383,0.37840439956227206,0.027349227362604877,True,True,0.1379343146424333,False,False, 0.5  3.5  1.5,0.41907448500080324,True,16.0,True,False,False,0.20918419916026798,False,0.038536501248477656
-True,True,0.02293123662144633,21 22,0.17087117157702353,0.540028306396893,0.2898913084512669,0.01238351687626607,True,True,0.13568073765226044,False,False, 0.5  3.5  2.5,0.41563695773799414,True,17.0,True,False,False,0.19943797926993978,False,0.03759595268095496
-True,True,0.02293123662144633,22 23,0.17087117157702353,0.5825146661368564,0.3126983099925848,0.013357781644647064,True,True,0.29003131427179074,False,False, 0.5  3.5  3.5,0.607683584229783,True,18.0,True,False,False,0.8592231951755277,False,0.11749817906370426
-True,True,0.04266821948380991,23 24,0.23308123980755321,0.5203045979063268,0.3809911222410305,0.022200470781902612,True,True,0.16310587400433033,False,False, 0.5  3.5  4.5,0.455711365626209,True,19.0,True,False,False,0.32892397280598784,True,0.049552800389446504
-True,True,0.02538630852687685,25 26,0.17978557203309464,0.5798457291907091,0.32750442458235884,0.014720142579227224,True,True,0.2720325048326795,False,True, 0.5  4.5  0.5,0.5885257365709055,True,20.0,True,False,True,0.8119910805907073,False,0.10673208685192073
-True,True,0.02538630852687685,26 27,0.17978557203309464,0.530463261077553,0.29961256302389144,0.013466504007887986,True,True,0.26257152373676435,False,False, 0.5  4.5  1.5,0.5782010440521669,True,21.0,True,False,True,0.7828957810944054,False,0.10121275277531032
-True,True,0.05028666886360587,27 28,0.2530355219532337,0.4572133111574139,0.36345465175367786,0.022991734378205668,True,True,0.09172494648578532,False,False, 0.5  4.5  2.5,0.34174234315404706,True,22.0,True,False,True,0.05675900382153498,False,0.02089753209182123
-True,True,0.05028666886360587,28 29,0.2530355219532337,0.4923080167559517,0.3913526452950839,0.024756530217505072,True,True,0.19106709429995025,False,False, 0.5  4.5  3.5,0.49322832457224014,True,23.0,True,False,True,0.4730055559703843,False,0.06282646853496711
-True,True,0.03470737700795825,30 31,0.2102160909649031,0.48557515768051585,0.3206803054125892,0.016853040063316435,True,True,0.17067287793523964,False,False, 0.5  4.5  4.5,0.46616247961510643,True,24.0,True,False,True,0.3675402288445555,True,0.053040861320891794
-True,True,0.03263112512948307,31 32,0.20383139822917162,0.5859525108059253,0.3752177508696793,0.019120289700042925,True,True,0.1815121485670775,False,True, 1.5  0.5  0.5,0.4807373975523924,False,25.0,True,True,False,0.4236259310145175,False,0.05817311861752004
-True,True,0.03263112512948307,32 33,0.20383139822917162,0.5172355050148223,0.33121445728540394,0.016877976485550034,True,True,0.1015452341075074,False,False, 1.5  0.5  1.5,0.3595711440661893,False,26.0,True,True,False,0.08011646984440424,False,0.024341824001670308
-True,True,0.022300029455355773,33 34,0.1685030544272652,0.5525638488167286,0.2925095962553416,0.012322190104577802,True,True,0.2637547319697939,False,False, 1.5  0.5  2.5,0.5795023337787046,False,27.0,True,True,False,0.7867000366333495,False,0.1018976551477815
-True,True,0.008278516256626822,35 36,0.1026671041262496,0.6901694894009165,0.22260603867066667,0.00571357933783332,True,True,0.20114667545442347,False,False, 1.5  0.5  3.5,0.5060710439064674,False,28.0,True,True,False,0.5242050910764837,False,0.06786300535035698
-True,True,0.03370667928033555,36 37,0.20716340647283385,0.5484452535987996,0.3569408049543964,0.018486268265877032,True,True,0.20373201113746142,False,False, 1.5  0.5  4.5,0.5093129225816291,False,29.0,True,True,False,0.5370995502590773,True,0.06917556401056899
-True,True,0.031721389577463975,37 38,0.20096996697013453,0.5546386931014988,0.35017988655434656,0.017593910058608126,True,True,0.29073229710270265,False,True, 1.5  1.5  0.5,0.6084175027091621,False,30.0,True,False,False,0.86085639899391,False,0.11792441210674966
-True,True,0.031721389577463975,38 39,0.20096996697013453,0.5408584807063234,0.3414795321195465,0.017156782572760567,True,True,0.138829508031833,False,False, 1.5  1.5  1.5,0.4204321819298062,False,31.0,True,False,False,0.21310955607323157,False,0.03891226198537673
-True,True,0.03997647731917295,40 41,0.22560946740325266,0.4807307877390039,0.340729024430991,0.019217923432676434,True,True,0.13052450051793227,False,False, 1.5  1.5  2.5,0.40766279645834325,False,32.0,True,False,False,0.17790667986084885,False,0.03547332192497916
-True,True,0.05625165031831281,41 42,0.2676225432243894,0.43871771191786724,0.36885674909026295,0.024678595319254162,True,True,0.2444274458411637,False,False, 1.5  1.5  3.5,0.5578661935120123,False,33.0,True,False,False,0.7185913474788732,False,0.09090520586751569
-True,True,0.033415978563819886,42 43,0.20626813940470298,0.5261093173709076,0.34092434676979144,0.01758045767149216,True,True,0.08920011782142309,False,False, 1.5  1.5  4.5,0.3370061088545304,False,34.0,True,False,False,0.05155720433319,True,0.020040656410908964
-True,True,0.033415978563819886,43 44,0.20626813940470298,0.5507737874004842,0.35690718162106694,0.01840464507328847,True,True,0.03311406502650729,False,True, 1.5  2.5  0.5,0.2053342082524992,False,35.0,True,False,False,0.0016061417498121067,False,0.004532966882826432
-True,True,0.026805608411387318,45 46,0.18474295832335216,0.5540656657851027,0.3215725764277254,0.014852067271230064,True,True,0.1348267171213422,False,False, 1.5  2.5  1.5,0.4143268129456677,False,36.0,True,False,False,0.19579654277270442,False,0.03724154933654187
-True,True,0.026805608411387318,46 47,0.18474295832335216,0.5411925450773347,0.3141011829660925,0.014506995438505114,True,True,0.1876383035037004,False,False, 1.5  2.5  2.5,0.48878267985673324,False,37.0,True,False,False,0.45534303860005476,False,0.06114290188687315
-True,True,0.017036874104472428,47 48,0.14728211645847827,0.5786533869422086,0.2677431623204645,0.009858444903460975,True,True,0.1268855583098559,False,False, 1.5  2.5  3.5,0.40193993394026906,False,38.0,True,False,False,0.16339485422513256,False,0.03400024861669176
-True,True,0.017036874104472428,48 49,0.14728211645847827,0.6390734429339876,0.29569954730648046,0.01088781379077809,True,True,0.20939516277123282,False,False, 1.5  2.5  4.5,0.5163431046470842,False,39.0,True,False,False,0.5649104700289199,True,0.0720798322955866
-True,True,0.06351505007714686,50 51,0.28437628847014923,0.4009226579590113,0.35818208099304916,0.025464622697329423,True,True,0.1599059092766918,False,True, 1.5  3.5  0.5,0.4512189348065053,False,40.0,True,False,False,0.3128419828732234,False,0.04810171603539637
-True,True,0.034455245992451734,51 52,0.20945114399584283,0.506172567534008,0.3330666998765361,0.017440300329015133,True,True,0.27091852780256603,False,False, 1.5  3.5  1.5,0.5873194897154868,False,41.0,True,False,False,0.808721572131065,False,0.10607715433564933
-True,True,0.031124511111025602,52 53,0.1990702347341429,0.5914786212700143,0.3699093024979534,0.018409482919652664,True,True,0.22500660127325123,False,False, 1.5  3.5  2.5,0.5352450864487788,False,42.0,True,False,False,0.637749919164175,False,0.0802891185000315
-True,True,0.031124511111025602,53 54,0.1990702347341429,0.5439554268585926,0.34018841138703265,0.01693034672716294,True,True,0.13366391425527954,False,False, 1.5  3.5  3.5,0.41253627880940597,False,43.0,True,False,False,0.1908856668317198,False,0.03676080919864835
-True,True,0.051624216904048954,55 56,0.25637861538790746,0.44770905533967276,0.36060151659360695,0.023112629382762123,True,True,0.1854438956899163,False,False, 1.5  3.5  4.5,0.48591614638962555,False,44.0,True,False,False,0.4439987495290584,True,0.06007345544341587
-True,True,0.03562892699812036,56 57,0.21298863535524407,0.4910990353723361,0.3286059211740471,0.017497331680128295,True,True,0.2143223877147439,False,True, 1.5  4.5  0.5,0.5223827517830901,False,45.0,True,False,True,0.5885542414982561,False,0.07463887910876685
-True,True,0.03562892699812036,57 58,0.21298863535524407,0.5019822672642138,0.33588814773853176,0.01788508955470762,True,True,0.10722243364554927,False,False, 1.5  4.5  1.5,0.3694859166467043,False,46.0,True,False,True,0.0959224483179617,False,0.026411452787077468
-True,True,0.03692810867156179,58 59,0.216837100775928,0.49813380184352984,0.3393356413940436,0.0183951391674561,True,True,0.23596926000867577,False,False, 1.5  4.5  2.5,0.5481289931986262,False,47.0,True,False,True,0.6848447741875976,False,0.08622772860958686
-True,True,0.035448761190528345,60 61,0.2124494400078612,0.4696804897374809,0.3134786613876371,0.01664959151655436,True,True,0.06814749641788971,False,False, 1.5  4.5  3.5,0.29456423291695655,False,48.0,True,False,True,0.01997054338556936,False,0.013382543338364484
-True,True,0.07813092015335975,61 62,0.31540351489132634,0.3667264148540158,0.3633779699247726,0.028652672237086993,True,True,0.14339468858391524,False,False, 1.5  4.5  4.5,0.42728888121506825,False,49.0,True,False,True,0.23357892284583326,True,0.04084730403813618
-True,True,0.06377491814400568,62 63,0.2849574490045769,0.3996390361040967,0.3577649491700598,0.025486946814688098,True,True,0.3111331360327686,False,True, 2.5  0.5  0.5,0.6294021071416791,False,50.0,True,True,False,0.9021709287357369,False,0.13055190094708213
-True,True,0.025006327441709834,63 64,0.17843498806955163,0.5366075629258714,0.3008061271255134,0.013418584426222254,True,True,0.25406020030858745,False,False, 2.5  0.5  1.5,0.5687525769402985,False,51.0,True,True,False,0.7541242662278025,False,0.096331595748985
-True,True,0.02530740358677828,65 66,0.1795059526067551,0.5639164173146927,0.31801196907285095,0.01427126036219301,True,True,0.13782098396980694,False,False, 2.5  0.5  2.5,0.41890228799168566,False,52.0,True,True,False,0.20868940508602185,False,0.03848901701214504
-True,True,0.02919086992366627,66 67,0.19278736974198335,0.5506350001794644,0.3334972552853159,0.016073514665656697,True,True,0.12449804444410241,False,False, 2.5  0.5  3.5,0.3981404694682858,False,53.0,True,True,False,0.15419756699871978,False,0.033045139908572295
-True,True,0.02919086992366627,67 68,0.19278736974198335,0.6011723554207353,0.3641056787543102,0.017548744028790753,True,True,0.20745761745433985,False,False, 2.5  0.5  4.5,0.513948676814529,False,54.0,True,True,False,0.555467244392823,True,0.0710817119905018
-True,True,0.033342190030590586,68 69,0.20604027483728135,0.5505241332600918,0.35635130621099015,0.018355680267584155,True,True,0.20649686761619582,False,True, 2.5  1.5  0.5,0.5127572307758149,False,55.0,True,False,False,0.5507562763802768,False,0.07058850800184041
-True,True,0.040462026312894736,70 71,0.22697544352130314,0.5177677994223817,0.36920177794003034,0.020949934324198016,True,True,0.2750907540611851,False,False, 2.5  1.5  1.5,0.5918246585448396,False,56.0,True,False,False,0.8207551076942642,False,0.10853699439406887
-True,True,0.05117341217709298,71 72,0.2552567570563152,0.48930826106957914,0.3923825345762882,0.025039573325370195,True,True,0.14251570799248145,False,False, 2.5  1.5  2.5,0.42597727071048813,False,57.0,True,False,False,0.22958104473568097,False,0.040472301549340096
-True,True,0.05124489750166869,72 73,0.25543498187410574,0.46677537898745114,0.3745744811774244,0.02391985645251449,True,True,0.25522797085434556,False,False, 2.5  1.5  3.5,0.5700581947610843,False,58.0,True,False,False,0.7582180261900967,False,0.0969965308785086
-True,True,0.03465909364146369,73 74,0.2100698184151893,0.5121405424463676,0.3379890962376385,0.017750327018238664,True,True,0.14771243468624717,False,False, 2.5  1.5  4.5,0.433674201551856,False,59.0,True,False,False,0.2535826703321993,True,0.042706048114559275
-True,True,0.04159911421091917,75 76,0.23014264541648244,0.5184047901982727,0.37481415121338607,0.021565180074945536,True,True,0.14179504476211338,False,True, 2.5  2.5  0.5,0.4248988800157224,False,60.0,True,False,False,0.22632295774572042,False,0.040165703807467465
-True,True,0.04159911421091917,76 77,0.23014264541648244,0.5009118372452024,0.36216649355803715,0.02083748872716453,True,True,0.3174308620290866,False,False, 2.5  2.5  1.5,0.6357401405093157,False,61.0,True,False,False,0.9126731489840443,False,0.13453569388557649
-True,True,0.03588623138827298,77 78,0.21375633070172542,0.5172981519599593,0.3473839790759704,0.018563881177961098,True,True,0.312523680613439,False,False, 2.5  2.5  2.5,0.6308070297826527,False,62.0,True,False,False,0.9045752666291971,False,0.13142808980300388
-True,True,0.018242877899298224,78 79,0.15240588424060808,0.6338377850576665,0.3034797607292832,0.011563025320768642,True,True,0.25509967257602273,False,False, 2.5  2.5  3.5,0.5699148980091538,False,63.0,True,False,False,0.7577705343286901,False,0.09692340258555501
-True,True,0.03686360151620742,80 81,0.21664762913956476,0.542125631167212,0.368980788175556,0.01998470323907054,True,True,0.10002530976683933,False,False, 2.5  2.5  4.5,0.35686997613910326,False,64.0,True,False,False,0.07617209279198933,True,0.023797353273198908
-True,True,0.045702586118722716,81 82,0.24122673969322322,0.4603980001977308,0.3489062494428867,0.02104137925292451,True,True,0.10122961434711313,False,True, 2.5  3.5  0.5,0.3590119052135102,False,65.0,True,False,False,0.07928741960780683,False,0.02422842447385731
-True,True,0.06922906160675622,82 83,0.2968925376001034,0.4047322022908506,0.37749996403576375,0.028019230566631418,True,True,0.20681757970506537,False,False, 2.5  3.5  1.5,0.5131552601571046,False,66.0,True,False,False,0.5523309109747325,False,0.07075301927907701
-True,True,0.06922906160675622,83 84,0.2968925376001034,0.37549710962417415,0.3502319424457207,0.025995312535330845,True,True,0.11676347969466508,False,False, 2.5  3.5  2.5,0.3855747394839667,False,67.0,True,False,False,0.12625944626342223,False,0.03001403217634128
-True,True,0.043996118627092164,85 86,0.23668037107219736,0.48113927668893064,0.3577527041632415,0.021168260693359513,True,True,0.13336876012236235,False,False, 2.5  3.5  3.5,0.4120805496745627,False,68.0,True,False,False,0.18964791214623145,False,0.036639114653758645
-True,True,0.030248260179089912,86 87,0.1962480089566648,0.5215716388044631,0.3215652421946452,0.015776634632591706,True,True,0.1861735685167043,False,False, 2.5  3.5  4.5,0.4868711838052538,False,69.0,True,False,False,0.44777367806511625,True,0.06042836379798423
-True,True,0.02271258347664325,87 88,0.17005457784358713,0.633697413199748,0.3385479080597403,0.014392905396232168,True,True,0.16184810525157894,False,True, 2.5  4.5  0.5,0.4539508870426063,False,70.0,True,False,True,0.32258186853068715,False,0.04898072729674624
-True,True,0.02271258347664325,88 89,0.17005457784358713,0.616581217807113,0.32940371396423457,0.014004152379574407,True,True,0.20469364870837192,False,False, 2.5  4.5  1.5,0.5105135141126304,False,71.0,True,False,True,0.5418657123876685,False,0.06966591594576482
-True,True,0.043212572838702626,90 91,0.23456333167821605,0.5213125845498494,0.38415651534991907,0.02252725803159269,True,True,0.20497959000667476,False,False, 2.5  4.5  2.5,0.5108699637482115,False,72.0,True,False,True,0.5432796353000771,False,0.06981194381055547
-True,True,0.043212572838702626,91 92,0.23456333167821605,0.44365641779832743,0.32693149662059606,0.019171535269468108,True,True,0.24242754297650213,False,False, 2.5  4.5  3.5,0.5555792782768861,False,73.0,True,False,True,0.7108237400570904,False,0.08979181290754924
-True,True,0.04454199580551395,92 93,0.23814413799421583,0.44007561148232766,0.32924339361619603,0.019601846040754822,True,True,0.13863637456585476,False,False, 2.5  4.5  4.5,0.4201396368303786,False,74.0,True,False,True,0.21226014057952136,True,0.038831090707719035
-True,True,0.04454199580551395,93 94,0.23814413799421583,0.4807164067379357,0.3596488807645215,0.02141206817256287,True,True,0.19863785223248748,False,True, 3.5  0.5  0.5,0.5029051287704898,False,75.0,True,True,False,0.5115881569190684,False,0.06659732977044841
-True,True,0.04236323406088322,95 96,0.23224673269862828,0.5094216983138595,0.3716866177724296,0.021580750641362674,True,True,0.16639645684367668,False,False, 3.5  0.5  1.5,0.4602852908329649,False,76.0,True,True,False,0.3456294976186426,False,0.051059894354577744
-True,True,0.04236323406088322,96 97,0.23224673269862828,0.4592730287163522,0.33509691330915303,0.019456290813361574,True,True,0.2272367099984134,False,False, 3.5  0.5  2.5,0.5378910346766305,False,77.0,True,True,False,0.6476227797372147,False,0.08148572603837333
-True,True,0.04170938977222357,97 98,0.23044748739087478,0.46107227402410567,0.3338034778885318,0.019231043190436895,True,True,0.14354492555309192,False,False, 3.5  0.5  3.5,0.42751266140345084,False,78.0,True,True,False,0.23426485473027803,False,0.04091151543610836
-True,True,0.04170938977222357,98 99,0.23044748739087478,0.495132669527629,0.35846225508653046,0.020651681502289444,True,True,0.0729715115971929,False,False, 3.5  0.5  4.5,0.30481176848121616,False,79.0,True,True,False,0.025476089187557283,True,0.014828383665791959
-True,True,0.039921783022062535,100 101,0.22545507942831283,0.50362242742437,0.35670973257576155,0.020105505272680135,True,True,0.14745440606482968,False,True, 3.5  1.5  0.5,0.4332952582791295,False,80.0,True,False,False,0.2523709229841957,False,0.042594196640170674
-True,True,0.039921783022062535,101 102,0.22545507942831283,0.520678489772296,0.36879033722643084,0.02078641369294481,True,True,0.18281034447489086,False,False, 3.5  1.5  1.5,0.48245347938644645,False,81.0,True,False,False,0.430357054047551,False,0.05879832450649729
-True,True,0.05061747017936634,102 103,0.2538664307993912,0.4104182891385826,0.3273270191119507,0.020774335511538757,True,True,0.2796890693923863,False,False, 3.5  1.5  2.5,0.5967505202180918,False,82.0,True,False,False,0.8333542290410092,False,0.11126973177281364
-True,True,0.08851810308056966,103 104,0.3357152800620263,0.3194934230765055,0.33696353353025843,0.02828095175745017,True,True,0.2769162464270249,False,False, 3.5  1.5  3.5,0.5937850752002068,False,83.0,True,False,False,0.8258394424817485,False,0.10961915613921998
-True,True,0.06556892744118263,105 106,0.2889376253172721,0.38965462098692427,0.3536989762763982,0.025549235570613157,True,True,0.33718256298160443,False,False, 3.5  1.5  4.5,0.655220705551445,False,84.0,True,False,False,0.9396936557806798,True,0.14728599787763424
-True,True,0.03131262463237836,106 107,0.19967090907639118,0.47892133722780517,0.30042000871170665,0.014996284061050958,True,True,0.17598447450836865,False,True, 3.5  2.5  0.5,0.4733607421443947,False,85.0,True,False,False,0.39496844012607846,False,0.05553609430611513
-True,True,0.03131262463237836,107 108,0.19967090907639118,0.5386975431441816,0.3379167057812061,0.01686803395885821,True,True,0.25015167497398544,False,False, 3.5  2.5  1.5,0.5643607044777441,False,86.0,True,False,False,0.7400848595723013,False,0.09411718367640405
-True,True,0.05376134214217851,108 109,0.26163154777942715,0.4579237207315173,0.3763857078278896,0.024618593825266506,True,True,0.12099304071635965,False,False, 3.5  2.5  2.5,0.3924960179133296,False,87.0,True,False,False,0.1411784502047756,False,0.031659524450931
-True,True,0.030339811122276756,110 111,0.19654477174597773,0.5921683783967683,0.3656424252559247,0.01796627675314286,True,True,0.090850333906573,False,False, 3.5  2.5  3.5,0.34010915568717426,False,88.0,True,False,False,0.054920473865795905,False,0.020599353572574936
-True,True,0.024981586536190665,111 112,0.1783466957027841,0.6103664544399618,0.34198384983348484,0.015247922400379784,True,True,0.14301875522434854,False,False, 3.5  2.5  4.5,0.4267284086985998,False,89.0,True,False,False,0.23186585815877003,True,0.040686777220627204
-True,True,0.024981586536190665,112 113,0.1783466957027841,0.4795811392425191,0.26870579651394955,0.011980697731111895,True,True,0.18722814107971417,False,True, 3.5  3.5  0.5,0.4882481675438691,False,90.0,True,False,False,0.4532246618787986,False,0.06094253119654363
-True,True,0.07274310043052086,113 114,0.3043343425819383,0.3535934923633648,0.3380688056214577,0.025721486926566853,True,True,0.1728502913548105,False,False, 3.5  3.5  1.5,0.4691266633564321,False,91.0,True,False,False,0.37876218007763596,False,0.05405912029564626
-True,True,0.07101102613850505,115 116,0.3006892857947667,0.381876000703391,0.36073658688490895,0.02711740666761627,True,True,0.32528845041009324,False,False, 3.5  3.5  2.5,0.643560501046913,False,92.0,True,False,False,0.9244426159031354,False,0.13956186542046234
-True,True,0.04768545347834736,116 117,0.24640414987832646,0.43616113661983125,0.33763297573711026,0.02079854158934807,True,True,0.1781679832220558,False,False, 3.5  3.5  3.5,0.47628827598843165,False,93.0,True,False,False,0.4062829190169315,False,0.05657288104344584
-True,True,0.03730639109154559,117 118,0.217944883879185,0.5356509662424885,0.36675702736447807,0.019983204435206563,True,True,0.2483095773615576,False,False, 3.5  3.5  4.5,0.5622789105356969,False,94.0,True,False,False,0.733288440713064,True,0.0930794924229573
-True,True,0.03730639109154559,118 119,0.217944883879185,0.5471235186446639,0.37461221568761505,0.020411203961940367,True,True,0.20965481259673213,False,True, 3.5  4.5  0.5,0.5166631379750244,False,95.0,True,False,True,0.566169949295702,False,0.07221394224519552
-True,True,0.03597325283867999,120 121,0.21401534540066003,0.47739798981019976,0.3209780786507457,0.01717355859211989,True,True,0.1694529362435329,False,False, 3.5  4.5  1.5,0.46449346539725656,False,96.0,True,False,True,0.36127031861349235,False,0.05247318771833264
-True,True,0.023071029118487883,121 122,0.1713912092593876,0.5200221259514721,0.280001422755053,0.011997445610084386,True,True,0.29895413786339514,False,False, 3.5  4.5  2.5,0.6169604771700391,False,97.0,True,False,True,0.8789199719049382,False,0.12296192503210529
-True,True,0.023071029118487883,122 123,0.1713912092593876,0.5762928922704986,0.31029993091952074,0.013295670098350273,True,True,0.16683755908889428,False,False, 3.5  4.5  3.5,0.46089497478174957,False,98.0,True,False,True,0.34788004574237075,False,0.051263061725949716
-True,True,0.04050630029096398,123 124,0.22709958903831765,0.5205845124915686,0.37141331129843025,0.021086952589808566,True,True,0.23658156263921865,False,False, 3.5  4.5  4.5,0.5488396861629925,False,99.0,True,False,True,0.6873656177978927,True,0.08656356706057272
-True,True,0.05565893373976894,0 5,0.26620885683100026,0.4106864031178641,0.34346516597639143,0.02285836729896123,True,True,0.2305897506770426,True,True, 4.5  0.5  0.5,0.5418449862946343,False,100.0,True,True,False,0.6621908818187231,False,0.08329593353019019
-True,True,0.021331905398747693,1 6,0.16480481036133343,0.6064806412690658,0.314005098209413,0.012937387665723547,True,True,0.15968713208825014,True,False, 4.5  0.5  1.5,0.45091015885662566,False,101.0,True,True,False,0.31174915033723427,False,0.04800303339818122
-True,True,0.046091020909999086,2 7,0.24224968623266802,0.50639677810145,0.3853931842175916,0.0233403444882301,True,True,0.20246988071746536,True,False, 4.5  0.5  2.5,0.5077328615987824,False,102.0,True,True,False,0.5308189366040242,False,0.06853374128282855
-True,True,0.06059903951772704,3 8,0.27777165709794605,0.42265957658724296,0.3688319341396982,0.025612764384156116,True,True,0.35407241232227865,True,False, 4.5  0.5  3.5,0.6714305601240526,False,103.0,True,True,False,0.9567636925098867,False,0.1584900254200147
-True,True,0.02869059663211075,4 9,0.19112823494724396,0.5287121517446152,0.3174636564689066,0.015169067080200086,True,True,0.37347579686158955,True,False, 4.5  0.5  4.5,0.6895825937229364,False,104.0,True,True,False,0.9710084675270183,True,0.17169493912837028
-True,True,0.06393710485727234, 5 10,0.28531955818022325,0.391575701768641,0.3509919454975095,0.0250362167035416,True,True,0.2622757097647305,True,True, 4.5  1.5  0.5,0.5778752506345441,False,105.0,True,False,False,0.7819372401707883,False,0.10104176101043108
-True,True,0.041084448603731644, 6 11,0.2287145483696008,0.524010735874141,0.3765163571673553,0.021528692145824743,True,True,0.32453577039117076,True,False, 4.5  1.5  1.5,0.6428155073916073,False,106.0,True,False,False,0.9233763857733995,False,0.13907775060715105
-True,True,0.046091020909999086, 7 12,0.24224968623266802,0.5076216539612801,0.38632537578812454,0.023396800267097683,True,True,0.12525049852951345,True,False, 4.5  1.5  2.5,0.39934181815278236,False,107.0,True,False,False,0.1570678876356505,False,0.033345174538212195
-True,True,0.05191790404766465, 8 13,0.2571068426029389,0.46512150029911503,0.3756902489029166,0.024148133423035283,True,True,0.21504536856871403,True,False, 4.5  1.5  3.5,0.5232630955588543,False,108.0,True,False,False,0.5919760062013322,False,0.07501687016190668
-True,True,0.02869059663211075, 9 14,0.19112823494724396,0.44811205872852744,0.2690675676780804,0.012856602322964903,True,True,0.2470838979049389,True,False, 4.5  1.5  4.5,0.560889462978111,False,109.0,True,False,False,0.728702857989103,True,0.09239116987095972
-True,True,0.05045932191346304,10 15,0.25346953280570567,0.461210909014071,0.3672613346517054,0.023272389727941923,True,True,0.12135924448910702,True,True, 4.5  2.5  0.5,0.39308954349195546,False,110.0,True,False,False,0.14251127742770653,False,0.031803366676501126
-True,True,0.034483578660608326,11 16,0.20953724250040162,0.5431880417433401,0.3575701835423813,0.018731067564958268,True,True,0.14024739683022486,True,False, 4.5  2.5  1.5,0.42257369971450803,False,111.0,True,False,False,0.21938763878526646,False,0.039509907569251254
-True,True,0.03392018441306511,12 17,0.20781847886899707,0.542052861324951,0.35389601767535406,0.018386533017771944,True,True,0.09992634614476266,True,False, 4.5  2.5  2.5,0.3566933914055682,False,112.0,True,False,False,0.07591947611500183,False,0.02376204486476141
-True,True,0.05191790404766465,13 18,0.2571068426029389,0.4390513652821696,0.35463274993296945,0.022794626654715846,True,True,0.3676083313279336,True,False, 4.5  2.5  3.5,0.6841443301093937,False,113.0,True,False,False,0.9672216888796279,False,0.16766477038598745
-True,True,0.04077646850108258,14 19,0.2278556828131045,0.41138461086266687,0.2944813387064998,0.01677481162667165,True,True,0.29097240172208344,True,False, 4.5  2.5  4.5,0.6086686851638766,False,114.0,True,False,False,0.8614123866155873,True,0.11807052611677053
-True,True,0.05045932191346304,15 20,0.25346953280570567,0.4522675989088416,0.3601397945032471,0.022821116364370227,True,True,0.2840441045540202,True,True, 4.5  3.5  0.5,0.6013785715895335,False,115.0,True,False,False,0.8446574936783623,False,0.11387869191008315
-True,True,0.034483578660608326,16 21,0.20953724250040162,0.501362235473515,0.3300370641152491,0.017288764084409387,True,True,0.31656194705123153,True,False, 4.5  3.5  1.5,0.6348694270036845,False,116.0,True,False,False,0.9112824066239201,False,0.13398366795705738
-True,True,0.02293123662144633,17 22,0.17087117157702353,0.6213103495539793,0.33352412837067785,0.01424741464097583,True,True,0.19074181391338943,True,False, 4.5  3.5  2.5,0.4928082997566529,False,117.0,True,False,False,0.47133397955026923,False,0.06266609933810488
-True,True,0.04776677357498756,18 23,0.24661416228612007,0.4495440455989884,0.34828930243183076,0.021473268638110762,True,True,0.14922556436618237,True,False, 4.5  3.5  3.5,0.43588976775837,False,118.0,True,False,False,0.26072810271141955,False,0.04336393106345795
-True,True,0.04077646850108258,19 24,0.2278556828131045,0.5390630773793423,0.385877382095141,0.021981088594855393,True,True,0.17339346934649777,True,False, 4.5  3.5  4.5,0.4698631949523023,False,119.0,True,False,False,0.38156692724489505,True,0.05431413966067302
-True,True,0.04537803714176938,25 30,0.2403686987761962,0.4554225498692228,0.34390802942952053,0.020666181383164912,True,True,0.14389301135471996,True,True, 4.5  4.5  0.5,0.42803069080132006,False,120.0,True,False,True,0.2358569902362727,False,0.041060416701095316
-True,True,0.02538630852687685,26 31,0.17978557203309464,0.6099983370020022,0.3445350104326294,0.015485605984014628,True,True,0.2991604528132761,True,False, 4.5  4.5  1.5,0.6171733295782804,False,121.0,True,False,True,0.8793479245910137,False,0.1230892351606104
-True,True,0.03263112512948307,27 32,0.20383139822917162,0.5064174348814761,0.3242870495700557,0.016524970685369286,True,True,0.09228411647395153,True,False, 4.5  4.5  2.5,0.3427824185187752,False,122.0,True,False,True,0.0579548913588811,False,0.02108891509053963
-True,True,0.05028666886360587,28 33,0.2530355219532337,0.46803138129076016,0.3720543093249084,0.023535739088744515,True,True,0.20000419523263527,True,False, 4.5  4.5  3.5,0.5046317969402276,False,123.0,True,False,True,0.5184715914162374,False,0.06728565095721922
-True,True,0.022300029455355773,29 34,0.1685030544272652,0.5768404842819203,0.3053608691961391,0.012863559790528509,True,True,0.1620252011638559,True,False, 4.5  4.5  4.5,0.4541991780766353,False,124.0,True,False,True,0.3234732681271494,True,0.04906114213088322
-True,True,0.008278516256626822,30 35,0.1026671041262496,0.5931241445191694,0.19130520586464653,0.00491018787259982,,,,,,,,,,,,,,,
-True,True,0.03370667928033555,31 36,0.20716340647283385,0.582620502562263,0.37918284423633186,0.01963820242201412,,,,,,,,,,,,,,,
-True,True,0.03263112512948307,32 37,0.20383139822917162,0.5517772618424618,0.35333345169013486,0.018005112874784915,,,,,,,,,,,,,,,
-True,True,0.031721389577463975,33 38,0.20096996697013453,0.5200969362738593,0.3283714035946532,0.016498197533588548,,,,,,,,,,,,,,,
-True,True,0.022300029455355773,34 39,0.1685030544272652,0.5733253932491926,0.30350009263432504,0.012785173156960428,,,,,,,,,,,,,,,
-True,True,0.008278516256626822,35 40,0.1026671041262496,0.6717234284704977,0.21665647901052787,0.005560873322550119,,,,,,,,,,,,,,,
-True,True,0.03370667928033555,36 41,0.20716340647283385,0.4991768486694228,0.3248757920859007,0.01682559394226883,,,,,,,,,,,,,,,
-True,True,0.0469095758759251,37 42,0.24439133992836662,0.487986116847244,0.3746650234227362,0.022891221774643842,,,,,,,,,,,,,,,
-True,True,0.031721389577463975,38 43,0.20096996697013453,0.5927618936251625,0.37424957047743,0.01880323095435904,,,,,,,,,,,,,,,
-True,True,0.04636097392247907,39 44,0.24295807319481277,0.4988703744816452,0.3807754336855633,0.02312811642204092,,,,,,,,,,,,,,,
-True,True,0.03997647731917295,40 45,0.22560946740325266,0.5131991567052023,0.36374172918150194,0.020515894448244202,,,,,,,,,,,,,,,
-True,True,0.026805608411387318,41 46,0.18474295832335216,0.5215972968189044,0.30272835325054703,0.013981732886965713,,,,,,,,,,,,,,,
-True,True,0.05625165031831281,42 47,0.2676225432243894,0.4583129601762975,0.385331669919478,0.02578086037218791,,,,,,,,,,,,,,,
-True,True,0.017036874104472428,43 48,0.14728211645847827,0.6464497441368188,0.29911256493472,0.011013482905727394,,,,,,,,,,,,,,,
-True,True,0.03584867214597881,44 49,0.21364444060753413,0.5433974861976532,0.3647195924640738,0.019480078327648715,,,,,,,,,,,,,,,
-True,True,0.051624216904048954,50 55,0.25637861538790746,0.42892033104125304,0.34546837957959464,0.02214267620423013,,,,,,,,,,,,,,,
-True,True,0.06351505007714686,51 56,0.28437628847014923,0.419711382257431,0.37496782316754274,0.02665798946202926,,,,,,,,,,,,,,,
-True,True,0.034455245992451734,52 57,0.20945114399584283,0.5775602206489131,0.3800405020143118,0.019899979477913006,,,,,,,,,,,,,,,
-True,True,0.031124511111025602,53 58,0.1990702347341429,0.515900667885315,0.3226430328215818,0.016057156069782016,,,,,,,,,,,,,,,
-True,True,0.03692810867156179,54 59,0.216837100775928,0.5261885608168075,0.3584469315637134,0.01943114835557577,,,,,,,,,,,,,,,
-True,True,0.035448761190528345,55 60,0.2124494400078612,0.5311719446042313,0.35451987851203015,0.01882938741538395,,,,,,,,,,,,,,,
-True,True,0.06877268851529628,56 61,0.2959123292724198,0.3862176004729223,0.35904178513625784,0.026561222736449428,,,,,,,,,,,,,,,
-True,True,0.03562892699812036,57 62,0.21298863535524407,0.4716078497534296,0.31556391020731994,0.01680288165060546,,,,,,,,,,,,,,,
-True,True,0.06377491814400568,58 63,0.2849574490045769,0.43001345361488097,0.384956742150927,0.02742407280511022,,,,,,,,,,,,,,,
-True,True,0.025006327441709834,59 64,0.17843498806955163,0.6047279111545204,0.3389923539788459,0.015122024159471148,,,,,,,,,,,,,,,
-True,True,0.02530740358677828,60 65,0.1795059526067551,0.6080446073853837,0.3428973814941215,0.015388030277866052,,,,,,,,,,,,,,,
-True,True,0.05170439492626634,61 66,0.2565776300785523,0.42555229966678987,0.3430217070290385,0.022002924163752543,,,,,,,,,,,,,,,
-True,True,0.02919086992366627,62 67,0.19278736974198335,0.49180911536669036,0.2978688060977483,0.014356335913942437,,,,,,,,,,,,,,,
-True,True,0.033342190030590586,63 68,0.20604027483728135,0.5090022761581418,0.3294744317550696,0.01697125061766791,,,,,,,,,,,,,,,
-True,True,0.025006327441709834,64 69,0.17843498806955163,0.5781294200278215,0.3240820365401968,0.014456893580901504,,,,,,,,,,,,,,,
-True,True,0.02530740358677828,65 70,0.1795059526067551,0.5935186038719418,0.3347056657748558,0.015020414844448417,,,,,,,,,,,,,,,
-True,True,0.05117341217709298,66 71,0.2552567570563152,0.4881656128651326,0.3914662304092387,0.024981100117830637,,,,,,,,,,,,,,,
-True,True,0.02919086992366627,67 72,0.19278736974198335,0.551777648383911,0.33418931089350534,0.01610686956076121,,,,,,,,,,,,,,,
-True,True,0.033342190030590586,68 73,0.20604027483728135,0.5161700860242756,0.3341141164739629,0.017210241096327687,,,,,,,,,,,,,,,
-True,True,0.03465909364146369,69 74,0.2100698184151893,0.5464945896821838,0.3606611801970032,0.018941007158348084,,,,,,,,,,,,,,,
-True,True,0.03686360151620742,75 80,0.21664762913956476,0.5318998064751903,0.3620209016885741,0.019607742512449258,,,,,,,,,,,,,,,
-True,True,0.04159911421091917,76 81,0.23014264541648244,0.5286306148902944,0.38220757016873774,0.021990565324209784,,,,,,,,,,,,,,,
-True,True,0.05680917749960335,77 82,0.26894551733831523,0.4326792225526388,0.3655781438210487,0.024580150754383235,,,,,,,,,,,,,,,
-True,True,0.03588623138827298,78 83,0.21375633070172542,0.4893511316981711,0.32861656793198435,0.017560967942233812,,,,,,,,,,,,,,,
-True,True,0.018242877899298224,79 84,0.15240588424060808,0.5199837629836694,0.24896677303490078,0.00948600029772871,,,,,,,,,,,,,,,
-True,True,0.03686360151620742,80 85,0.21664762913956476,0.5466719997882379,0.3720751312220395,0.020152298760261828,,,,,,,,,,,,,,,
-True,True,0.045702586118722716,81 86,0.24122673969322322,0.4765929080679048,0.36117933612577563,0.021781528424545914,,,,,,,,,,,,,,,
-True,True,0.030248260179089912,82 87,0.1962480089566648,0.5053767309342893,0.311580574539921,0.015286766845758297,,,,,,,,,,,,,,,
-True,True,0.02271258347664325,83 88,0.17005457784358713,0.5330528845563094,0.2847793524050013,0.012107008137950655,,,,,,,,,,,,,,,
-True,True,0.035754688806087134,84 89,0.2133642043492999,0.4590254428749776,0.3076863228135953,0.01641231186407115,,,,,,,,,,,,,,,
-True,True,0.043996118627092164,85 90,0.23668037107219736,0.5191955451558681,0.38604956873871754,0.022842588795335357,,,,,,,,,,,,,,,
-True,True,0.043212572838702626,86 91,0.23456333167821605,0.48325631608291186,0.3561127582744906,0.02088274875849593,,,,,,,,,,,,,,,
-True,True,0.030248260179089912,87 92,0.1962480089566648,0.4819717405198787,0.29715066529787565,0.014578806606214101,,,,,,,,,,,,,,,
-True,True,0.02271258347664325,88 93,0.17005457784358713,0.591801284162197,0.31616522738909514,0.013441336068118573,,,,,,,,,,,,,,,
-True,True,0.035754688806087134,89 94,0.2133642043492999,0.5054963403828516,0.33883592420059216,0.01807386434300476,,,,,,,,,,,,,,,
-True,True,0.04680703526992854,90 95,0.24412408377193456,0.4975443472405532,0.38158587960373114,0.023288575809642147,,,,,,,,,,,,,,,
-True,True,0.04236323406088322,91 96,0.23224673269862828,0.5331899356231556,0.3890285091075369,0.022587650041710997,,,,,,,,,,,,,,,
-True,True,0.07473853446584879,92 97,0.30848023858501955,0.369739510891524,0.3583216779772576,0.027633789178152242,,,,,,,,,,,,,,,
-True,True,0.04170938977222357,93 98,0.23044748739087478,0.5314083746149094,0.38472485469007944,0.022164719025037055,,,,,,,,,,,,,,,
-True,True,0.05914539065980466,94 99,0.27441984308149625,0.4444407016506553,0.383159156846237,0.0262866189242457,,,,,,,,,,,,,,,
-True,True,0.05764743766926065,100 105,0.27092249314731714,0.4401398815354107,0.37461542733953124,0.02537293638656836,,,,,,,,,,,,,,,
-True,True,0.039921783022062535,101 106,0.22545507942831283,0.45313716687588346,0.32095162727976045,0.018090043655251162,,,,,,,,,,,,,,,
-True,True,0.03131262463237836,102 107,0.19967090907639118,0.5464626601242176,0.34278764455435207,0.01711118015208058,,,,,,,,,,,,,,,
-True,True,0.05376134214217851,103 108,0.26163154777942715,0.40265317215854657,0.33095664703706357,0.021647174953049127,,,,,,,,,,,,,,,
-True,True,0.061770974476234725,104 109,0.2804447314890555,0.3747639716494763,0.33018321441742715,0.02314953572737215,,,,,,,,,,,,,,,
-True,True,0.030339811122276756,105 110,0.19654477174597773,0.5145176029367502,0.31769589704198387,0.015610366892187588,,,,,,,,,,,,,,,
-True,True,0.035061849207556214,106 111,0.21128684985725402,0.46730539644694236,0.3101866747536715,0.016384591344099968,,,,,,,,,,,,,,,
-True,True,0.024981586536190665,107 112,0.1783466957027841,0.6219823952208248,0.34849217629667845,0.015538107030196176,,,,,,,,,,,,,,,
-True,True,0.05376134214217851,108 113,0.26163154777942715,0.39629628716587595,0.3257316705852548,0.021305420283999683,,,,,,,,,,,,,,,
-True,True,0.061770974476234725,109 114,0.2804447314890555,0.41522092592900617,0.3658275351635213,0.02564860121755919,,,,,,,,,,,,,,,
-True,True,0.030339811122276756,110 115,0.19654477174597773,0.5027659424592555,0.3104396743280849,0.015253823732927278,,,,,,,,,,,,,,,
-True,True,0.035061849207556214,111 116,0.21128684985725402,0.47127843664090374,0.31282388830994057,0.016523893480276202,,,,,,,,,,,,,,,
-True,True,0.024981586536190665,112 117,0.1783466957027841,0.5752491544188895,0.3223078840761872,0.014370636530985994,,,,,,,,,,,,,,,
-True,True,0.03730639109154559,113 118,0.217944883879185,0.4399829510661182,0.3012537069727035,0.01641417604608497,,,,,,,,,,,,,,,
-True,True,0.04334836733662444,114 119,0.23493159747615114,0.4607340599419105,0.3400490949606509,0.019972069274856282,,,,,,,,,,,,,,,
-True,True,0.03597325283867999,115 120,0.21401534540066003,0.48529536880457325,0.32628787381138,0.017457653003447367,,,,,,,,,,,,,,,
-True,True,0.07479011320331902,116 121,0.3085866647891402,0.3739786217090175,0.3625549208012693,0.02796990345323864,,,,,,,,,,,,,,,
-True,True,0.023071029118487883,117 122,0.1713912092593876,0.582204640862286,0.31348306089431166,0.013432060222252578,,,,,,,,,,,,,,,
-True,True,0.03730639109154559,118 123,0.217944883879185,0.5297392176507012,0.3627092883017457,0.01976265843020645,,,,,,,,,,,,,,,
-True,True,0.04050630029096398,119 124,0.22709958903831765,0.5379688134855312,0.3838162173431636,0.021791126306218517,,,,,,,,,,,,,,,
-True,True,0.04537803714176938, 0 25,0.2403686987761962,0.49342244439280347,0.3726032902326734,0.022390542008239273,,,,,,,,,,,,,,,
-True,True,0.021331905398747693, 1 26,0.16480481036133343,0.6554096176055719,0.33933805523122573,0.013981135960191463,,,,,,,,,,,,,,,
-True,True,0.049620356320994694, 2 27,0.25135353566588203,0.45889529744476565,0.36236686486887437,0.02277054817323812,,,,,,,,,,,,,,,
-True,True,0.05028666886360587, 3 28,0.2530355219532337,0.44739571173195536,0.3556503029012696,0.022498040006862105,,,,,,,,,,,,,,,
-True,True,0.050933002784365355, 4 29,0.25465646129081454,0.4651839254010446,0.37215963887342407,0.02369321416769341,,,,,,,,,,,,,,,
-True,True,0.07268307427567566, 5 30,0.30420875135458103,0.3726865085942832,0.3561764882184756,0.027088001185700525,,,,,,,,,,,,,,,
-True,True,0.03470737700795825, 6 31,0.2102160909649031,0.5610693606654961,0.37053768317826163,0.019473245828231473,,,,,,,,,,,,,,,
-True,True,0.03263112512948307, 7 32,0.20383139822917162,0.5539189155381603,0.3547048708205631,0.018074997444513272,,,,,,,,,,,,,,,
-True,True,0.06059903951772704, 8 33,0.27777165709794605,0.44329524614604776,0.3868395562006895,0.026863266139224885,,,,,,,,,,,,,,,
-True,True,0.022300029455355773, 9 34,0.1685030544272652,0.6403687106254908,0.33899067664439864,0.014280241109236643,,,,,,,,,,,,,,,
-True,True,0.008278516256626822,10 35,0.1026671041262496,0.6120133376935272,0.19739769261000917,0.005066562365368305,,,,,,,,,,,,,,,
-True,True,0.03370667928033555,11 36,0.20716340647283385,0.5455618777709079,0.3550642375445404,0.018389079241601616,,,,,,,,,,,,,,,
-True,True,0.0469095758759251,12 37,0.24439133992836662,0.5054800002655815,0.388096442912766,0.023711852426220932,,,,,,,,,,,,,,,
-True,True,0.031721389577463975,13 38,0.20096996697013453,0.5419231904269266,0.34215175339406534,0.017190556644594734,,,,,,,,,,,,,,,
-True,True,0.052348790692808206,14 39,0.2581715523235421,0.38106874135222935,0.30907336770582927,0.019948487780619722,,,,,,,,,,,,,,,
-True,True,0.03997647731917295,15 40,0.22560946740325266,0.5209209997910417,0.3692147634213553,0.02082458653322747,,,,,,,,,,,,,,,
-True,True,0.034483578660608326,16 41,0.20953724250040162,0.496803012641855,0.3270358158928194,0.017131545765262598,,,,,,,,,,,,,,,
-True,True,0.03392018441306511,17 42,0.20781847886899707,0.5245589779066135,0.3424745934616829,0.01779313726612128,,,,,,,,,,,,,,,
-True,True,0.033415978563819886,18 43,0.20626813940470298,0.4898900684804055,0.3174538942216539,0.016370156026969486,,,,,,,,,,,,,,,
-True,True,0.04077646850108258,19 44,0.2278556828131045,0.5291862439920827,0.3788072510273743,0.021578346209349362,,,,,,,,,,,,,,,
-True,True,0.053580596928685977,20 45,0.26119137589154506,0.44454575582300215,0.3647750907212304,0.023819026959110333,,,,,,,,,,,,,,,
-True,True,0.026805608411387318,21 46,0.18474295832335216,0.5261565196505644,0.30537446746231206,0.014103945628851446,,,,,,,,,,,,,,,
-True,True,0.02293123662144633,22 47,0.17087117157702353,0.5550643318236634,0.297962761434825,0.012728311533173428,,,,,,,,,,,,,,,
-True,True,0.017036874104472428,23 48,0.14728211645847827,0.6061037212554017,0.28044444340101976,0.010326112793280526,,,,,,,,,,,,,,,
-True,True,0.03584867214597881,24 49,0.21364444060753413,0.5532743195849127,0.37134876307920356,0.01983414968958904,,,,,,,,,,,,,,,
-True,True,0.04537803714176938,25 50,0.2403686987761962,0.4449302476529642,0.33598486668668165,0.020190061303492858,,,,,,,,,,,,,,,
-True,True,0.02538630852687685,26 51,0.17978557203309464,0.5358381394967562,0.30264836440219617,0.013602952329732328,,,,,,,,,,,,,,,
-True,True,0.034455245992451734,27 52,0.20945114399584283,0.5007976891148048,0.3295299751858972,0.01725510757090197,,,,,,,,,,,,,,,
-True,True,0.031124511111025602,28 53,0.1990702347341429,0.5478942433126234,0.3426517376929768,0.01705294046365071,,,,,,,,,,,,,,,
-True,True,0.050933002784365355,29 54,0.25465646129081454,0.4883692003019209,0.39070848173563666,0.024874109838776016,,,,,,,,,,,,,,,
-True,True,0.051624216904048954,30 55,0.25637861538790746,0.43941263325751145,0.3539192698321286,0.022684333089665085,,,,,,,,,,,,,,,
-True,True,0.03470737700795825,31 56,0.2102160909649031,0.49387157976267715,0.32615937312241156,0.01714098711233916,,,,,,,,,,,,,,,
-True,True,0.03263112512948307,32 57,0.20383139822917162,0.5831799664155843,0.37344233758763834,0.019029818457114666,,,,,,,,,,,,,,,
-True,True,0.06110686146029092,33 58,0.27893309675600614,0.43603780586345176,0.38209738613635413,0.026644901794347177,,,,,,,,,,,,,,,
-True,True,0.022300029455355773,34 59,0.1685030544272652,0.6146598447968068,0.3253812268408424,0.013706932643993199,,,,,,,,,,,,,,,
-True,True,0.008278516256626822,35 60,0.1026671041262496,0.6848834558658892,0.22090109082295153,0.005669818823280521,,,,,,,,,,,,,,,
-True,True,0.03370667928033555,36 61,0.20716340647283385,0.4749665232725083,0.30911915461173617,0.01600954426884247,,,,,,,,,,,,,,,
-True,True,0.0469095758759251,37 62,0.24439133992836662,0.44020514518030707,0.3379798427368318,0.02064983665880824,,,,,,,,,,,,,,,
-True,True,0.031721389577463975,38 63,0.20096996697013453,0.5140725840252885,0.3245678337874853,0.01630709670895976,,,,,,,,,,,,,,,
-True,True,0.025006327441709834,39 64,0.17843498806955163,0.5633934596069062,0.3158214985046889,0.01408840132944802,,,,,,,,,,,,,,,
-True,True,0.02530740358677828,40 65,0.1795059526067551,0.5948845799899922,0.33547598694599007,0.015054984153357822,,,,,,,,,,,,,,,
-True,True,0.05170439492626634,41 66,0.2565776300785523,0.44976262506370435,0.36253673996830516,0.02325470438936803,,,,,,,,,,,,,,,
-True,True,0.02919086992366627,42 67,0.19278736974198335,0.5395900870336272,0.3268077999877033,0.01575110404269837,,,,,,,,,,,,,,,
-True,True,0.033342190030590586,43 68,0.20604027483728135,0.5876915857580156,0.3804095980205387,0.01959492453172288,,,,,,,,,,,,,,,
-True,True,0.04636097392247907,44 69,0.24295807319481277,0.5136063349025604,0.39202302826537283,0.02381128989883765,,,,,,,,,,,,,,,
-True,True,0.040462026312894736,45 70,0.22697544352130314,0.5118331805871518,0.36497001260466644,0.02070980762072994,,,,,,,,,,,,,,,
-True,True,0.026805608411387318,46 71,0.18474295832335216,0.5600002846203327,0.3250169527657849,0.015011148339798082,,,,,,,,,,,,,,,
-True,True,0.05124489750166869,47 72,0.25543498187410574,0.4705005215265812,0.3775638062290872,0.024110751000111313,,,,,,,,,,,,,,,
-True,True,0.017036874104472428,48 73,0.14728211645847827,0.5749282444030787,0.26601953732141004,0.009794980119000605,,,,,,,,,,,,,,,
-True,True,0.03465909364146369,49 74,0.2100698184151893,0.5762857409772766,0.3803219636491581,0.01997354146077172,,,,,,,,,,,,,,,
-True,True,0.04965946305812187,50 75,0.2514525643852449,0.43384638204391557,0.34272195131009575,0.02154457838200965,,,,,,,,,,,,,,,
-True,True,0.04159911421091917,51 76,0.23014264541648244,0.4854810661133684,0.35100982314583995,0.02019558231648881,,,,,,,,,,,,,,,
-True,True,0.034455245992451734,52 77,0.20945114399584283,0.521603338665842,0.34322030429344236,0.017971971344215697,,,,,,,,,,,,,,,
-True,True,0.031124511111025602,53 78,0.1990702347341429,0.5871734345641317,0.3672168491205566,0.018275486088190383,,,,,,,,,,,,,,,
-True,True,0.018242877899298224,54 79,0.15240588424060808,0.5906197773521273,0.2827870993782719,0.01077460448314556,,,,,,,,,,,,,,,
-True,True,0.03686360151620742,55 80,0.21664762913956476,0.5269737554725278,0.35866813975100986,0.019426150531238594,,,,,,,,,,,,,,,
-True,True,0.045702586118722716,56 81,0.24122673969322322,0.462860931034357,0.35077274747388465,0.021153941561589878,,,,,,,,,,,,,,,
-True,True,0.03562892699812036,57 82,0.21298863535524407,0.48863610453571005,0.32695791619325154,0.017409580097148724,,,,,,,,,,,,,,,
-True,True,0.06380699271358639,58 83,0.28502909738054216,0.41807836501935447,0.37436631467674364,0.02667632319049806,,,,,,,,,,,,,,,
-True,True,0.03692810867156179,59 84,0.216837100775928,0.4555525464483495,0.31032870077404967,0.01682269394085135,,,,,,,,,,,,,,,
-True,True,0.035448761190528345,60 85,0.2124494400078612,0.5508701889199414,0.36766706983612973,0.01952766577400424,,,,,,,,,,,,,,,
-True,True,0.06253791874349636,61 86,0.28218035223887206,0.3999495775064701,0.35455358930762254,0.02501201417959533,,,,,,,,,,,,,,,
-True,True,0.030248260179089912,62 87,0.1962480089566648,0.4883484761520088,0.3010821224274415,0.014771691764708047,,,,,,,,,,,,,,,
-True,True,0.02271258347664325,63 88,0.17005457784358713,0.5449879731518359,0.291155580542214,0.012378084833977685,,,,,,,,,,,,,,,
-True,True,0.025006327441709834,64 89,0.17843498806955163,0.6082008075811485,0.3409391556942484,0.015208868544686555,,,,,,,,,,,,,,,
-True,True,0.02530740358677828,65 90,0.1795059526067551,0.5763699636213103,0.32503495450350445,0.014586427284661217,,,,,,,,,,,,,,,
-True,True,0.043212572838702626,66 91,0.23456333167821605,0.5088590382432316,0.3749794666948781,0.021989108254717813,,,,,,,,,,,,,,,
-True,True,0.02919086992366627,67 92,0.19278736974198335,0.4854323797345601,0.29400667631976035,0.014170193453567313,,,,,,,,,,,,,,,
-True,True,0.033342190030590586,68 93,0.20604027483728135,0.5558155871685029,0.3597764358249297,0.01853210892933651,,,,,,,,,,,,,,,
-True,True,0.046543392129176075,69 94,0.2434355919026269,0.4754249528295247,0.3635933403919121,0.02212789000753961,,,,,,,,,,,,,,,
-True,True,0.040462026312894736,70 95,0.22697544352130314,0.5146929874911846,0.367009239058517,0.020825521202930714,,,,,,,,,,,,,,,
-True,True,0.04236323406088322,71 96,0.23224673269862828,0.5124965102450565,0.3739300762877926,0.021711009618897166,,,,,,,,,,,,,,,
-True,True,0.05124489750166869,72 97,0.25543498187410574,0.43608477954087466,0.3499461141250256,0.02234711982960991,,,,,,,,,,,,,,,
-True,True,0.04170938977222357,73 98,0.23044748739087478,0.49176287347068215,0.3560226166459741,0.020511129365097344,,,,,,,,,,,,,,,
-True,True,0.03465909364146369,74 99,0.2100698184151893,0.5155103385033144,0.3402130059448296,0.01786712109532902,,,,,,,,,,,,,,,
-True,True,0.04965946305812187, 75 100,0.2514525643852449,0.4776249424674379,0.37730532983963655,0.023718598186099314,,,,,,,,,,,,,,,
-True,True,0.039921783022062535, 76 101,0.22545507942831283,0.5444022751552047,0.3855936102317676,0.021733509505463267,,,,,,,,,,,,,,,
-True,True,0.05061747017936634, 77 102,0.2538664307993912,0.4771880518622935,0.3805789037807276,0.02415405198508956,,,,,,,,,,,,,,,
-True,True,0.03588623138827298, 78 103,0.21375633070172542,0.4505283892362483,0.3025457252197755,0.01616776602311792,,,,,,,,,,,,,,,
-True,True,0.018242877899298224, 79 104,0.15240588424060808,0.5028028188979237,0.2407405850051497,0.009172570432577779,,,,,,,,,,,,,,,
-True,True,0.03686360151620742, 80 105,0.21664762913956476,0.4944147455431631,0.33650787199151105,0.018225908163440253,,,,,,,,,,,,,,,
-True,True,0.045702586118722716, 81 106,0.24122673969322322,0.4373655066109732,0.33145139310289046,0.01998873473124679,,,,,,,,,,,,,,,
-True,True,0.03131262463237836, 82 107,0.19967090907639118,0.5019538308145629,0.3148679386453333,0.015717491887080767,,,,,,,,,,,,,,,
-True,True,0.05376134214217851, 83 108,0.26163154777942715,0.4414759146204694,0.3628666022104012,0.023734337693442242,,,,,,,,,,,,,,,
-True,True,0.061770974476234725, 84 109,0.2804447314890555,0.39194491573522194,0.34532036679626765,0.024210819385970365,,,,,,,,,,,,,,,
-True,True,0.030339811122276756, 85 110,0.19654477174597773,0.566774857181825,0.3499628499500672,0.017195842115751953,,,,,,,,,,,,,,,
-True,True,0.035061849207556214, 86 111,0.21128684985725402,0.506532797903874,0.33622493005666687,0.017759976578787175,,,,,,,,,,,,,,,
-True,True,0.024981586536190665, 87 112,0.1783466957027841,0.6254052953405511,0.35041000214052104,0.015623616505741858,,,,,,,,,,,,,,,
-True,True,0.02271258347664325, 88 113,0.17005457784358713,0.48787325710171603,0.2606424882754176,0.011080862077944561,,,,,,,,,,,,,,,
-True,True,0.035754688806087134, 89 114,0.2133642043492999,0.4823014530687618,0.32328831197881863,0.01724453836519722,,,,,,,,,,,,,,,
-True,True,0.04680703526992854, 90 115,0.24412408377193456,0.45518663043329877,0.3491001188558809,0.021305936665091344,,,,,,,,,,,,,,,
-True,True,0.043212572838702626, 91 116,0.23456333167821605,0.44800195481994165,0.3301337334532036,0.019359317104537893,,,,,,,,,,,,,,,
-True,True,0.04768545347834736, 92 117,0.24640414987832646,0.431815599598217,0.3342690891534639,0.02059132268586545,,,,,,,,,,,,,,,
-True,True,0.03730639109154559, 93 118,0.217944883879185,0.5439109781265992,0.3724126083220979,0.02029135566897601,,,,,,,,,,,,,,,
-True,True,0.04334836733662444, 94 119,0.23493159747615114,0.48392894725600044,0.3571682991277251,0.020977529770479064,,,,,,,,,,,,,,,
-True,True,0.03597325283867999, 95 120,0.21401534540066003,0.5276530856118278,0.35476704391058866,0.01898139785982394,,,,,,,,,,,,,,,
-True,True,0.04236323406088322, 96 121,0.23224673269862828,0.4591666025122315,0.33501926212942723,0.019451782255166195,,,,,,,,,,,,,,,
-True,True,0.023071029118487883, 97 122,0.1713912092593876,0.5201285521555928,0.2800587270255544,0.011999900972138626,,,,,,,,,,,,,,,
-True,True,0.04170938977222357, 98 123,0.23044748739087478,0.5172366141390115,0.37446489502394986,0.021573623543589236,,,,,,,,,,,,,,,
-True,True,0.04050630029096398, 99 124,0.22709958903831765,0.49848056788018613,0.3556431547457925,0.02019160357176507,,,,,,,,,,,,,,,