diff --git a/docs/conf.py b/docs/conf.py index 31234a7..2d4aae8 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -17,14 +17,15 @@ import os import sys import sphinx +import sphinx_rtd_theme sys.path.insert(0, os.path.abspath('..')) # -- Project information ----------------------------------------------------- -project = 'HPS-Urry' -copyright = '2021, Quyen Vu' -author = 'Quyen Vu' +project = u'HPS-Urry' +copyright = u'2021, Quyen Vu' +author = u'Quyen Vu' # The short X.Y version version = '2021.0' @@ -46,18 +47,25 @@ 'sphinx.ext.ifconfig', 'sphinx.ext.viewcode', 'sphinx.ext.githubpages', - 'numpydoc' + 'numpydoc', + 'sphinx.ext.viewcode', + 'sphinx.ext.doctest', + 'sphinx.ext.coverage' ] +autosummary_generate = True +#numpydoc_show_class_members = False +autodoc_default_flags = ['members', 'inherited-members'] + + # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] # If true, the current module name will be prepended to all description unit titles. add_module_names = False -# html_sidebars = { -# '**': ['localtoc.html', 'searchbox.html'], -# } - +html_sidebars = { + '**': ['localtoc.html', 'sourcelink.html', 'searchbox.html'], +} # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. diff --git a/hps/analysis/cal_rg.py b/hps/analysis/cal_rg.py deleted file mode 100644 index c0735fc..0000000 --- a/hps/analysis/cal_rg.py +++ /dev/null @@ -1,54 +0,0 @@ -#!/usr/bin/env python -# coding: utf-8 - -import mdtraj as md -import numpy as np -from matplotlib import pyplot as plt -import matplotlib.colors as mcolors - -traj=md.load('asyn_equil.dcd', top='asyn.psf') - - -aa_masses = {'ALA': 71.08, 'ARG': 156.20, 'ASN': 114.10, - 'ASP': 115.10, 'CYS': 103.10, 'GLU': 129.10, - 'GLN': 128.10, 'GLY': 57.05, 'HIS': 137.10, - 'ILE': 113.20, 'LEU': 113.20, 'LYS': 128.20, - 'MET': 131.20, 'PHE': 147.20, 'PRO': 97.12, - 'SER': 87.08, 'THR': 101.10, 'TRP': 186.20, - 'TYR': 163.20, 'VAL': 99.07} - - -masses = np.zeros(len(list(traj.topology.residues))) - - -for i,r in enumerate(traj.topology.residues): -# print(i,r.name) - masses[i] = aa_masses[r.name] - - -# unit in nm -Rg=md.compute_rg(traj, masses) - - -plt.hist(Rg, bins=50, density=True) - - - -def compute_Ree(traj): - n_frames=traj.xyz.shape[0] - Ree=np.zeros(n_frames) - for f in range(n_frames): - coord1 = traj.xyz[f,0] - coord2 = traj.xyz[f,-1] - Ree[f] = np.linalg.norm(coord2-coord1) - - return Ree - - -Ree = compute_Ree(traj) - - -plt.hist2d(Rg,Ree, bins=40, density=True) -plt.xlabel('Rg(nm)') -plt.ylabel('Ree(nm)') -plt.colorbar(norm=mcolors.Colormap('gray')) diff --git a/hps/analysis/compute_rg.py b/hps/analysis/compute_rg.py deleted file mode 100644 index 5f575f9..0000000 --- a/hps/analysis/compute_rg.py +++ /dev/null @@ -1,23 +0,0 @@ -import mdtraj as md -import numpy as np -from matplotlib import pyplot as plt - -traj = md.load('asyn_equil.dcd', top='asyn.psf') - -aa_masses = {'ALA': 71.08, 'ARG': 156.20, 'ASN': 114.10, - 'ASP': 115.10, 'CYS': 103.10, 'GLU': 129.10, - 'GLN': 128.10, 'GLY': 57.05, 'HIS': 137.10, - 'ILE': 113.20, 'LEU': 113.20, 'LYS': 128.20, - 'MET': 131.20, 'PHE': 147.20, 'PRO': 97.12, - 'SER': 87.08, 'THR': 101.10, 'TRP': 186.20, - 'TYR': 163.20, 'VAL': 99.07} - -masses = np.zeros(len(list(traj.topology.residues))) -for i, r in enumerate(traj.topology.residues): - # print(i,r.name) - masses[i] = aa_masses[r.name] - -# unit in nm -Rg = md.compute_rg(traj, masses) -plt.hist(Rg, bins=50, density=True) -Rg.mean() diff --git a/hps/analysis/saxs profile.py b/hps/analysis/saxs profile.py deleted file mode 100644 index 83d4f67..0000000 --- a/hps/analysis/saxs profile.py +++ /dev/null @@ -1,93 +0,0 @@ -#!/usr/bin/env python -# coding: utf-8 - -# In[1]: - - -import MDAnalysis as mda -import numpy as np -import pandas as pd -import itertools -from math import sin -import matplotlib.pyplot as plt -from numba import njit -import time - -u=mda.Universe('asyn.psf', 'asyn_equil.dcd') -# u=mda.Universe('asyn.psf', 'asyn_equil_final.pdb') -protein = u.select_atoms('protein') -n_atoms = len(protein) -resnames = protein.resnames - -n_frames = u.trajectory.n_frames -print(n_frames) -print(n_atoms) - -aa_order = ['q', 'ALA', 'CYS', 'ASP', 'GLU', 'PHE', 'GLY', 'HIS', 'ILE', 'LYS', 'LEU', 'MET', 'ASN', 'PRO', 'GLN', 'ARG', 'SER', 'THR', 'VAL', 'TRP', 'TYR'] -form_factor_data = np.loadtxt('table_edm_CA_1bead.dat') -# form_factor_data = np.loadtxt('table_edm_COE_1bead.dat') -form_factor = pd.DataFrame(form_factor_data, columns=aa_order) -# Note that the form-factor are given with the wawelength in unit of A^-1 -# convert form_factor from pandas to numpy array -form_factor_np = np.zeros((51, n_atoms), dtype=float) -for i in range(form_factor_np.shape[0]): - for j, r in enumerate(resnames): - form_factor_np[i,j] = form_factor.loc[i,r] - - -@njit(fastmath=True) -def get_I(idx, qs, distance_pair): - I = 0.0 - if idx == 0: - for i in range(n_atoms): - for j in range(n_atoms): - if i != j: - I += form_factor_np[idx,i]*form_factor_np[idx,j] - #Iq, otherwise - else: - for i in range(n_atoms): - for j in range(n_atoms): - if i != j: - I += form_factor_np[idx,i]*form_factor_np[idx,j] * sin(qs[idx]*distance_pair[i,j])/(qs[idx]*distance_pair[i,j]) - return I - -def numba_saxs_single_frame(positions): - n_atoms = len(positions) - pair_array = np.asarray(list(itertools.product(positions,positions))) - distance_diff=pair_array[:,0,:] - pair_array[:,1,:] - distance_pair = np.linalg.norm(distance_diff, axis=1).reshape(n_atoms, n_atoms) - - qs=np.arange(0, 0.501, 0.01) - Iq=np.zeros(len(qs)) - for idx in range(len(qs)): - Iq[idx]=get_I(idx, qs, distance_pair) - - return Iq/Iq[0] - - -# calculate SAXS along trajectory -saxs_total = np.empty((51, 0), dtype=float) -begin_time = time.time() -for ts in u.trajectory: - positions = protein.positions -# res=saxs_single_frame(positions) - res = numba_saxs_single_frame(positions) - saxs_total= np.append(saxs_total, np.array([res]).transpose(),axis=1) - -# get mean value -saxs_mean=np.mean(saxs_total,axis=1) -end_time = time.time() -total_run_time = end_time - begin_time -print(f'#REPORT: Total execution time: {total_run_time / 60.0:.3f} mins\n') - -# # Load experiment data and plot -# Lindorff Data -lindof_dat = np.loadtxt('async.dat') - -qs=np.arange(0, 0.501, 0.01) -plt.figure(figsize=(8,6), dpi=80) -plt.plot(qs,saxs_mean,'-') -plt.plot(lindof_dat[:,0], lindof_dat[:,1]/lindof_dat[0,1]) -# plt.yscale('log') -plt.xlabel('q(A^-1)') -plt.ylabel('Iq/I0') diff --git a/hps/core/system.py b/hps/core/system.py index 82b0a4f..a164b68 100644 --- a/hps/core/system.py +++ b/hps/core/system.py @@ -53,7 +53,7 @@ class system: yukawaForce : :code:`openmm.CustomNonbondedForce` Stores the OpenMM :code:`CustomNonbondedForce` initialized-class. Implements the Debye-Huckle potential. - pairWiseForce : :code:`openmm.CustomNonbondedForce` + ashbaughHatchForces : :code:`openmm.CustomNonbondedForce` Stores the OpenMM :code:`CustomNonbondedForce` initialized-class. Implements the pairwise short-range potential. forceGroups : :code:`collections.OrderedDict` @@ -92,7 +92,7 @@ class system: class using their defined forcefield parameters. addYukawaForces() Creates a nonbonded force term for electrostatic interaction DH potential. - addPairWiseForces() + addAshbaughHatchForces() Creates a nonbonded force term for pairwise interaction (customize LJ 12-6 potential). createSystemObject() Creates OpenMM system object adding particles, masses and forces. @@ -171,7 +171,7 @@ def __init__(self, structure_path, particles_mass=1.0): # self.exclusions = [] # PairWise potential - self.pairWiseForce = None + self.ashbaugh_HatchForce = None # self.muy = 1 # self.delta = 0.08 self.epsilon = 0.8368 @@ -552,7 +552,7 @@ def addAshbaughHatchForces(self): \\epsilon = 0.8368 kj/mol` The - The force object is stored at the :code:`pairWiseForce` attribute. + The force object is stored at the :code:`ashbaugh_HatchForce` attribute. Parameters ---------- @@ -573,26 +573,26 @@ def addAshbaughHatchForces(self): energy_function += '+(1-step(2^(1/6)*sigma-r)) * (hps*4*epsilon*((sigma/r)^12-(sigma/r)^6));' energy_function += 'sigma=0.5*(sigma1+sigma2);' energy_function += 'hps=0.5*(hps1+hps2)' - self.pairWiseForce = CustomNonbondedForce(energy_function) - self.pairWiseForce.addGlobalParameter('epsilon', self.epsilon) - self.pairWiseForce.addPerParticleParameter('sigma') - self.pairWiseForce.addPerParticleParameter('hps') - self.pairWiseForce.setNonbondedMethod(NonbondedForce.CutoffNonPeriodic) - self.pairWiseForce.setCutoffDistance(self.cutoff_Ashbaugh_Hatch) + self.ashbaugh_HatchForce = CustomNonbondedForce(energy_function) + self.ashbaugh_HatchForce.addGlobalParameter('epsilon', self.epsilon) + self.ashbaugh_HatchForce.addPerParticleParameter('sigma') + self.ashbaugh_HatchForce.addPerParticleParameter('hps') + self.ashbaugh_HatchForce.setNonbondedMethod(NonbondedForce.CutoffNonPeriodic) + self.ashbaugh_HatchForce.setCutoffDistance(self.cutoff_Ashbaugh_Hatch) if isinstance(self.rf_sigma, float): for atom in self.atoms: - self.pairWiseForce.addParticle((self.rf_sigma,)) + self.ashbaugh_HatchForce.addParticle((self.rf_sigma,)) # in the case each atoms have different sigma para. elif isinstance(self.rf_sigma, list): assert self.n_atoms == len(self.rf_sigma) and self.n_atoms == len(self.particles_hps) for i, atom in enumerate(self.atoms): - self.pairWiseForce.addParticle((self.rf_sigma[i], self.particles_hps[i],)) + self.ashbaugh_HatchForce.addParticle((self.rf_sigma[i], self.particles_hps[i],)) # set exclusions rule bonded_exclusions = [(b[0].index, b[1].index) for b in list(self.topology.bonds())] - self.pairWiseForce.createExclusionsFromBonds(bonded_exclusions, self.bonded_exclusions_index) + self.ashbaugh_HatchForce.createExclusionsFromBonds(bonded_exclusions, self.bonded_exclusions_index) """ Functions for creating OpenMM system object """ def createSystemObject(self, check_bond_distances=True, minimize=False, check_large_forces=True, @@ -809,9 +809,9 @@ def addSystemForces(self): self.system.addForce(self.yukawaForce) self.forceGroups['Yukawa Energy'] = self.yukawaForce - if self.pairWiseForce is not None: - self.system.addForce(self.pairWiseForce) - self.forceGroups['PairWise Energy'] = self.pairWiseForce + if self.ashbaugh_HatchForce is not None: + self.system.addForce(self.ashbaugh_HatchForce) + self.forceGroups['PairWise Energy'] = self.ashbaugh_HatchForce def dumpStructure(self, output_file): """ diff --git a/hps/parameters/ca_parameters.py b/hps/parameters/ca_parameters.py index 7989ad9..026bd5f 100644 --- a/hps/parameters/ca_parameters.py +++ b/hps/parameters/ca_parameters.py @@ -43,8 +43,10 @@ 'SER': 0.595, 'THR': 0.676, 'TRP': 0.946, 'TYR': 0.865, 'VAL': 0.892} """ -Hydropathy scale (Urry scale) -Here we use muy=1 and delta = 0.08. Directly scale the hps. +Hydropathy scale. +There are two options to select when running simulation by specify hps_scale='kr'/'urry' +In the case of Urry, we implicitly use muy=1 and delta = 0.08 to move equation in two scales to be the same. + Regy, R. M., Thompson, J., Kim, Y. C., & Mittal, J. (2021). Improved coarse-grained model for studying sequence dependent phase separation of disordered proteins. Protein Science, 30(7), 1371–1379. https://doi.org/10.1002/pro.4094 @@ -58,6 +60,8 @@ 'SER': 0.0, 'THR': 0.0, 'TRP': 0.0, 'TYR': 0.0, 'VAL': 0.0} """ +* Kapcha-Rossy and Urry model different in charge of HIS, in Urry, HIS has charge of 0, while in KR, HIS=0.5 +We switch in set CA Charge function. Charge of the coarse-grain beads, assigns to it alpha-carbon atoms. Charges are determined at neutral pH (pH=7). Setting to the values from, where ARG, LYS =1 and ASP, GLU = -1, diff --git a/hps/parameters/fq_saxs.py b/hps/parameters/fq_saxs.py deleted file mode 100644 index 5e8f470..0000000 --- a/hps/parameters/fq_saxs.py +++ /dev/null @@ -1,30 +0,0 @@ -""" -Form factor for CG beads -Ref: Table S5 -Tong, D., Yang, S., & Lu, L. (2016). -Accurate optimization of amino acid form factors for computing -small-angle X-ray scattering intensity of atomistic protein structures. -Journal of Applied Crystallography, 49(4), 1148–1161. https://doi.org/10.1107/S1600576716007962 -""" -aa_order = [ - 'ALA', - 'CYS', - 'ASP', - 'GLU', - 'PHE', - 'GLY', - 'HIS', - 'ILE', - 'LYS', - 'LEU', - 'MET', - 'ASN', - 'PRO', - 'GLN', - 'ARG', - 'SER', - 'THR', - 'VAL', - 'TRP', - 'TYR' -] diff --git a/hps/parameters/table_edm_CA_1bead.dat b/hps/parameters/table_edm_CA_1bead.dat deleted file mode 100644 index 82ff0e6..0000000 --- a/hps/parameters/table_edm_CA_1bead.dat +++ /dev/null @@ -1,51 +0,0 @@ -0.000000 9.031605 18.753885 20.176972 19.219688 9.168000 9.985664 21.371629 6.211923 10.985094 6.228658 16.526707 19.968169 8.641675 19.033278 23.318231 14.012906 13.084412 7.142596 15.696784 14.149632 -0.010000 9.032873 18.758167 20.175863 19.209075 9.169585 9.986057 21.366358 6.210098 10.985704 6.226842 16.528920 19.970212 8.637247 19.030661 23.315152 14.008752 13.087470 7.141364 15.703052 14.143818 -0.020000 9.036791 18.770413 20.172925 19.178863 9.173406 9.987564 21.351259 6.203720 10.987850 6.220754 16.534341 19.975624 8.625259 19.022988 23.305440 13.997234 13.096045 7.136393 15.720590 14.126724 -0.030000 9.043628 18.788663 20.169295 19.133694 9.176551 9.991123 21.328385 6.190200 10.992488 6.208426 16.539560 19.982470 8.609469 19.010785 23.287901 13.981071 13.108469 7.124318 15.745601 14.099197 -0.040000 9.053617 18.809334 20.166787 19.080542 9.174037 9.998078 21.300848 6.165751 11.001047 6.186607 16.539751 19.988326 8.595518 18.994908 23.261208 13.964275 13.122416 7.100916 15.772021 14.062074 -0.050000 9.066604 18.827417 20.167832 19.027618 9.159260 10.009681 21.272284 6.126404 11.014686 6.151336 16.530061 19.991420 8.589561 18.976488 23.224462 13.951202 13.135587 7.062673 15.792488 14.015666 -0.060000 9.081629 18.837550 20.175379 18.982981 9.125331 10.026386 21.246200 6.069420 11.033075 6.099216 16.507321 19.991600 8.596348 18.956761 23.177281 13.945345 13.146403 7.008124 15.799933 13.959579 -0.070000 9.096634 18.835728 20.192525 18.953043 9.066979 10.047400 21.225457 5.994376 11.053622 6.028911 16.471323 19.990231 8.617691 18.936712 23.119444 13.948425 13.154309 6.938438 15.789061 13.893043 -0.080000 9.108509 18.820755 20.221683 18.941213 8.982089 10.070983 21.212014 5.903093 11.072202 5.941821 16.424712 19.988847 8.652353 18.916545 23.050680 13.960260 13.159564 6.857019 15.756924 13.815514 -0.090000 9.113570 18.794529 20.263615 18.947024 8.872014 10.095418 21.206769 5.798346 11.085185 5.841437 16.371257 19.987582 8.697436 18.895243 22.970991 13.979364 13.162761 6.768438 15.702477 13.727142 -0.100000 9.108373 18.760947 20.316985 18.966103 8.740612 10.119848 21.209284 5.682322 11.091325 5.731820 16.313191 19.984761 8.750126 18.870692 22.881113 14.003767 13.164397 6.677192 15.625672 13.628906 -0.110000 9.090638 18.723944 20.378738 18.991204 8.592730 10.144288 21.217502 5.555909 11.092329 5.616192 16.248797 19.978045 8.808436 18.840554 22.782469 14.031546 13.164665 6.586648 15.526801 13.522499 -0.120000 9.059841 18.685575 20.445062 19.014121 8.432989 10.168777 21.227744 5.419112 11.092055 5.496327 16.171382 19.966156 8.870744 18.803492 22.676463 14.060880 13.163519 6.498245 15.406436 13.410109 -0.130000 9.017147 18.644909 20.512468 19.027868 8.265263 10.192343 21.235179 5.272021 11.095108 5.372836 16.070381 19.949818 8.935084 18.760098 22.563624 14.089763 13.160856 6.411049 15.265770 13.293968 -0.140000 8.964777 18.598131 20.578605 19.028336 8.092754 10.212608 21.234772 5.115494 11.105690 5.245884 15.934559 19.931360 8.999217 18.713027 22.443197 14.115742 13.156509 6.321892 15.106835 13.175580 -0.150000 8.905241 18.539726 20.642402 19.014933 7.918461 10.226525 21.222462 4.951128 11.127044 5.115745 15.756075 19.913541 9.061529 18.666225 22.313365 14.136103 13.149919 6.226260 14.932343 13.054953 -0.160000 8.840775 18.464214 20.703389 18.990164 7.745807 10.231940 21.196137 4.780725 11.161265 4.982932 15.533623 19.898612 9.121961 18.623480 22.171839 14.148718 13.139763 6.119805 14.745376 12.930423 -0.170000 8.773065 18.367817 20.760564 18.958463 7.579082 10.229001 21.155995 4.605769 11.209030 4.848110 15.273475 19.888143 9.182212 18.586720 22.016365 14.153202 13.124045 5.999953 14.549280 12.799355 -0.180000 8.703146 18.249608 20.811623 18.924719 7.423303 10.220526 21.104129 4.427360 11.269185 4.712162 14.988272 19.883362 9.244970 18.554663 21.844993 14.151583 13.100816 5.866883 14.347721 12.659368 -0.190000 8.631502 18.111941 20.853118 18.892815 7.283308 10.211240 21.043636 4.246674 11.338590 4.576403 14.694112 19.885413 9.312394 18.522584 21.656269 14.147774 13.069285 5.723455 14.144479 12.509341 -0.200000 8.558451 17.960073 20.881486 18.864519 7.162439 10.206461 20.977759 4.065633 11.412582 4.442691 14.406807 19.895154 9.384450 18.483673 21.449581 14.145878 13.030827 5.574248 13.942857 12.349671 -0.210000 8.484819 17.801153 20.894242 18.839063 7.061673 10.210934 20.909473 3.887450 11.485834 4.313319 14.138496 19.912561 9.458028 18.431523 21.225554 14.148261 12.989365 5.424329 13.745102 12.181789 -0.220000 8.412586 17.643036 20.890731 18.813527 6.979860 10.228041 20.841475 3.716802 11.553196 4.190806 13.896001 19.935950 9.527511 18.362370 20.986135 14.154653 12.950790 5.278393 13.552368 12.007422 -0.230000 8.345044 17.493458 20.872237 18.783741 6.914905 10.259209 20.776157 3.559520 11.610445 4.077836 13.681752 19.961417 9.586643 18.275878 20.734111 14.162871 12.921549 5.140554 13.365325 11.828268 -0.240000 8.286158 17.359654 20.841605 18.745174 6.865001 10.303321 20.715065 3.421808 11.655041 3.977385 13.496626 19.982939 9.630701 18.174467 20.472210 14.170535 12.906959 5.014649 13.185093 11.646429 -0.250000 8.239396 17.247965 20.802525 18.693549 6.829244 10.356417 20.657864 3.309372 11.686641 3.892916 13.342622 19.993432 9.657807 18.062238 20.202351 14.176544 12.909904 4.904576 13.014102 11.465417 -0.260000 8.206731 17.162930 20.758625 18.625383 6.807737 10.412247 20.601548 3.227001 11.706870 3.828429 13.223400 19.986486 9.668988 17.944139 19.925529 14.181473 12.930266 4.814344 12.856477 11.290967 -0.270000 8.188461 17.105947 20.712587 18.538680 6.801812 10.463809 20.540629 3.178724 11.718396 3.788319 13.142377 19.958059 9.667418 17.825054 19.642357 14.187007 12.965178 4.747861 12.717663 11.130658 -0.280000 8.183869 17.074256 20.665539 18.433519 6.814505 10.505249 20.468465 3.168110 11.723965 3.777139 13.099953 19.907443 9.657571 17.708479 19.353807 14.195094 13.009986 4.708709 12.603263 10.991937 -0.290000 8.192058 17.061181 20.616817 18.312023 6.850747 10.533222 20.379145 3.198159 11.725940 3.799323 13.091956 19.837210 9.644531 17.595495 19.061611 14.207319 13.059712 4.700017 12.517394 10.879351 -0.300000 8.212318 17.057996 20.564082 18.177463 6.916602 10.547263 20.269114 3.270779 11.726183 3.858742 13.110306 19.752331 9.633143 17.485161 18.768095 14.224540 13.110615 4.724289 12.461229 10.792655 -0.310000 8.243895 17.056755 20.503724 18.032974 7.017557 10.549280 20.137911 3.386343 11.725840 3.958113 13.145268 19.658781 9.626794 17.376250 18.475658 14.246625 13.161261 4.783161 12.432428 10.727172 -0.320000 8.285626 17.052722 20.431583 17.880719 7.156573 10.542560 19.987814 3.543739 11.725022 4.098439 13.187995 19.561986 9.626278 17.268603 18.186178 14.272364 13.212479 4.877204 12.425751 10.676296 -0.330000 8.335937 17.045098 20.343851 17.721904 7.332764 10.530643 19.822657 3.740664 11.722743 4.278644 13.232428 19.465376 9.629594 17.162565 17.900496 14.299776 13.266116 5.005851 12.434448 10.634446 -0.340000 8.393207 17.035801 20.237814 17.557224 7.541132 10.516429 19.646439 3.973579 11.717316 4.495354 13.276293 19.369527 9.633090 17.057080 17.618040 14.326851 13.323310 5.167339 12.451614 10.598569 -0.350000 8.456170 17.027228 20.112093 17.387081 7.773345 10.501753 19.462302 4.237204 11.706876 4.742771 13.321097 19.272375 9.633450 16.948700 17.336813 14.352276 13.383471 5.358530 12.470974 10.567571 -0.360000 8.524049 17.020484 19.966466 17.211377 8.019225 10.487490 19.272171 4.524226 11.689606 5.012893 13.370888 19.170609 9.629425 16.832917 17.053963 14.375568 13.444530 5.574724 12.487316 10.540748 -0.370000 8.596422 17.015049 19.801707 17.029362 8.268432 10.473946 19.077046 4.826000 11.663698 5.296431 13.429804 19.061524 9.622359 16.706811 16.766756 14.396414 13.503873 5.809707 12.497093 10.516773 -0.380000 8.672926 17.009873 19.619732 16.839993 8.511914 10.461130 18.877646 5.134104 11.627504 5.584328 13.499230 18.944199 9.615388 16.570749 16.473304 14.413794 13.558998 6.056054 12.499180 10.493835 -0.390000 8.752860 17.004966 19.423815 16.642665 8.742964 10.448747 18.674982 5.441768 11.580177 5.869275 13.575982 18.819337 9.612001 16.427979 16.172582 14.425767 13.607593 6.305638 12.495174 10.470388 -0.400000 8.834757 17.002378 19.218398 16.437826 8.957937 10.436077 18.470443 5.744296 11.522532 6.146599 13.652610 18.688178 9.614948 16.282818 15.863951 14.430311 13.647553 6.550370 12.488715 10.445622 -0.410000 8.916219 17.005802 19.008305 16.227183 9.156500 10.422082 18.265374 6.038543 11.457456 6.414272 13.719731 18.551571 9.625965 16.138928 15.546844 14.426636 13.677462 6.783262 12.484048 10.419318 -0.420000 8.994340 17.018868 18.797717 16.013563 9.341111 10.405891 18.060523 6.322200 11.389445 6.672324 13.769167 18.410033 9.646118 15.998539 15.220999 14.415834 13.697299 6.999548 12.484591 10.391434 -0.430000 9.066667 17.042944 18.589552 15.800596 9.515619 10.387457 17.855869 6.593423 11.323480 6.921987 13.796387 18.264621 9.676180 15.862491 14.887018 14.400220 13.708667 7.197349 12.492118 10.361877 -0.440000 9.132242 17.075664 18.385563 15.592158 9.683553 10.367975 17.651002 6.850827 11.263859 7.164828 13.801407 18.117729 9.716628 15.730635 14.546745 14.381811 13.714088 7.377520 12.506583 10.330718 -0.450000 9.192113 17.111059 18.186906 15.391553 9.847041 10.349771 17.445816 7.093587 11.213469 7.401998 13.788236 17.972993 9.767263 15.602371 14.203245 14.361146 13.715798 7.542887 12.526225 10.298690 -0.460000 9.249012 17.141346 17.994597 15.200660 10.006879 10.335640 17.241021 7.321621 11.173612 7.633771 13.763415 17.834172 9.826713 15.477267 13.860517 14.337359 13.714967 7.697400 12.547752 10.267650 -0.470000 9.306410 17.159499 17.809550 15.019543 10.163316 10.327960 17.038214 7.535875 11.144103 7.859642 13.734161 17.703637 9.892132 15.355556 13.523146 14.309396 13.711944 7.845503 12.566731 10.240593 -0.480000 9.367420 17.161381 17.632368 14.846822 10.316617 10.328033 16.839534 7.738545 11.123457 8.078941 13.706533 17.581341 9.959350 15.238137 13.195885 14.277300 13.707166 7.991540 12.578402 10.221008 -0.490000 9.434072 17.146594 17.463217 14.680573 10.466856 10.335932 16.647114 7.932805 11.109120 8.291632 13.684143 17.464926 10.023606 15.126013 12.883081 14.242510 13.701850 8.138959 12.578789 10.211690 -0.500000 9.507167 17.117942 17.301927 14.519166 10.613276 10.350773 16.462505 8.121897 11.097896 8.498707 13.667817 17.351017 10.080735 15.019529 12.588045 14.207045 13.697879 8.289462 12.565615 10.213577