[r27934]
by
bugman
Merged revisions 23856-23863,23878-23879,23883-23887 via svnmerge from
svn+ssh://bugman@.../svn/relax/branches/frame_order_cleanup
........
r23856 | bugman | 2014-06-12 10:42:55 +0200 (Thu, 12 Jun 2014) | 5 lines
Updated the free rotor and 2nd free rotor PDB representations using the represent_frame_order.py script.
This is for the CaM frame order test data.
........
r23857 | bugman | 2014-06-12 10:44:38 +0200 (Thu, 12 Jun 2014) | 5 lines
Removed some debugging code from the frame order system tests.
This was used to activate all tests.
........
r23858 | bugman | 2014-06-12 10:47:31 +0200 (Thu, 12 Jun 2014) | 6 lines
Reparameterisation of the double rotor frame order model.
The two axes defined by spherical angles have been replaced by a full eigenframe and the second
pivot has been replaced by a single displacement along the z-axis of the eigenframe.
........
r23859 | bugman | 2014-06-12 10:53:55 +0200 (Thu, 12 Jun 2014) | 6 lines
Removed the 2nd pivot point infrastructure from the frame order analysis.
This change is almost the same as reverting r22177 of the deleted double_rotor branch. The 2nd
pivot is now defined via the pivot_disp parameter.
........
r23860 | bugman | 2014-06-12 10:57:21 +0200 (Thu, 12 Jun 2014) | 5 lines
Added the 2nd rotor axis torsion angle to the list of frame order parameters.
This is for the double rotor model.
........
r23861 | bugman | 2014-06-12 10:58:26 +0200 (Thu, 12 Jun 2014) | 3 lines
Fix for the previous commit - the parameter name was not correct.
........
r23862 | bugman | 2014-06-12 11:23:22 +0200 (Thu, 12 Jun 2014) | 3 lines
Comment fixes for the eigenframe reconstruction in the frame order target functions.
........
r23863 | bugman | 2014-06-12 12:12:19 +0200 (Thu, 12 Jun 2014) | 3 lines
Converted the double rotor frame order model target function to use the new parameterisation.
........
r23878 | bugman | 2014-06-12 13:52:26 +0200 (Thu, 12 Jun 2014) | 3 lines
Fix for the PDB representation generated by frame_order.pdb_model for the free rotor pseudo-ellipse.
........
r23879 | bugman | 2014-06-12 13:55:35 +0200 (Thu, 12 Jun 2014) | 6 lines
Fix for the Frame_order.test_rigid_data_to_free_rotor_model system test.
As the free rotor has undergone a reparameterisation, the chi-squared value is now higher. The
value is reasonable as the free rotor can never model the rigid system.
........
r23883 | bugman | 2014-06-12 15:57:22 +0200 (Thu, 12 Jun 2014) | 7 lines
Removed the structure loading and transformation from the CaM frame order system tests.
This was mimicking the old behaviour of the auto-analysis. However as that behaviour has been
shifted into the backend of the frame_order.pdb_model user function, which is called by these system
tests as well, the code is now redundant and is wasting test suite time.
........
r23884 | bugman | 2014-06-12 16:00:22 +0200 (Thu, 12 Jun 2014) | 6 lines
Removed the setting of the second pivot point in the CaM frame order system tests.
The second pivot point has been removed from the double rotor frame order model to eliminate
parameter redundancy, so no models now have a conventional second pivot.
........
r23885 | bugman | 2014-06-12 16:40:15 +0200 (Thu, 12 Jun 2014) | 7 lines
Modified the CaM frame order system test base script to test alternative code paths.
This pivot point was fixed in all tests, so the code in the target functions behind the pivot_opt
flag was not being tested. Now for those system tests whereby the calc rather than minimise user
function is called, the pivot is no longer fixed to execute this code.
........
r23886 | bugman | 2014-06-12 18:47:36 +0200 (Thu, 12 Jun 2014) | 7 lines
Simplification and clean up of the RDC and PCS flags in the frame order target functions.
The per-alignment flags have been removed and replaced by a global flag for all data. This
accidentally fixes a bug when only RDCs are present, as the calc_vectors() method was being called
when it should not have been.
........
r23887 | bugman | 2014-06-12 19:44:47 +0200 (Thu, 12 Jun 2014) | 19 lines
Speed up and simplifications for the vector calculations used for the PCS numerical integration.
This has a minimal effect on the total speed as the target function calc_vectors() method is not the
major bottleneck - the slowest part is the quasi-random numerical integration. However the changes
may be useful for speeding up the integration later on.
The 3D pivot point, average domain rotation pivot, and paramagnetic centre position arrays are now
converted into rank-2 arrays in __init__() where the first dimension corresponds to the spin. Each
element is a copy of the 3D array.
These are then used for the calculation of the pivot to atom vectors, eliminating the looping over
spins. The numpy add() and subtract() ufuncs are used together with the out argument for speed and
to avoid temporary data structure creation and deletion. The end result is that the calculated
vector structure is transposed, so the first dimension are the spins.
The changes required minor updates to a number of system tests. The target functions themselves had
to be modified so that the pivot is converted to the larger structure when optimised, or aliased.
........
|
2015-10-02 07:29:12
|
Tree
|
[r27933]
by
bugman
Merged revisions 23807-23812 via svnmerge from
svn+ssh://bugman@.../svn/relax/branches/frame_order_cleanup
........
r23807 | bugman | 2014-06-11 08:07:03 +0200 (Wed, 11 Jun 2014) | 5 lines
Added the full optimisation results for the free rotor frame order model.
This is for the CaM test data using the new frame_order.py optimisation script.
........
r23808 | bugman | 2014-06-11 08:07:50 +0200 (Wed, 11 Jun 2014) | 5 lines
Added the full optimisation results for the 2nd free rotor frame order model.
This is for the CaM test data using the new frame_order.py optimisation script.
........
r23809 | bugman | 2014-06-11 08:08:17 +0200 (Wed, 11 Jun 2014) | 5 lines
Removed a PDB file from the free rotor CaM frame order test data directory.
This is now present as a *.gz file, so the uncompressed file can go.
........
r23810 | bugman | 2014-06-11 08:10:02 +0200 (Wed, 11 Jun 2014) | 5 lines
Added the full optimisation results for the free rotor frame order model with missing data.
This is for the CaM test data using the new frame_order.py optimisation script.
........
r23811 | bugman | 2014-06-11 08:19:22 +0200 (Wed, 11 Jun 2014) | 5 lines
Added a script for recreating the frame order PDB representation and displaying it in PyMOL.
This is for the optimised results.
........
r23812 | bugman | 2014-06-11 08:21:48 +0200 (Wed, 11 Jun 2014) | 7 lines
Fixes for the rotor object created by the frame_order.pdb_model user function.
The rotor is now also shown for the free rotor pseudo-ellipse, despite it being a useless model, and
the propeller blades are no longer staggered for all the free rotor models so that two circles are
no longer produced.
........
|
2015-10-02 07:18:46
|
Tree
|
[r27932]
by
bugman
Merged revisions 23713-23714,23717,23771-23773,23778,23783 via svnmerge from
svn+ssh://bugman@.../svn/relax/branches/frame_order_cleanup
........
r23713 | bugman | 2014-06-06 18:09:59 +0200 (Fri, 06 Jun 2014) | 6 lines
Added the full optimisation results for the small angle rotor CaM frame order test data.
This is from the new frame_order.py optimisation script and the results demonstrate the stability of
the rotor model, even when the rotor is as small as 1 degree.
........
r23714 | bugman | 2014-06-06 18:11:08 +0200 (Fri, 06 Jun 2014) | 5 lines
Removed some files from the 2nd rotor CaM frame order test data directory.
These are now present as *.gz files, so the uncompressed files can go.
........
r23717 | bugman | 2014-06-06 18:26:14 +0200 (Fri, 06 Jun 2014) | 5 lines
Removed a PDB file from the 2nd rotor CaM frame order test data directory.
This is now present as a *.gz file, so the uncompressed file can go.
........
r23771 | bugman | 2014-06-10 09:15:53 +0200 (Tue, 10 Jun 2014) | 6 lines
Fix for the free rotor PDB representation created by the frame_order.pdb_model user function.
The simulation axes were being incorrectly generated from the theta and phi angles, which no longer
exist as they have been replaced by the alpha angle.
........
r23772 | bugman | 2014-06-10 09:27:41 +0200 (Tue, 10 Jun 2014) | 5 lines
Added the full optimisation results for the free rotor pseudo-ellipse frame order model.
This is for the CaM test data using the new frame_order.py optimisation script.
........
r23773 | bugman | 2014-06-10 09:29:19 +0200 (Tue, 10 Jun 2014) | 5 lines
Added the full optimisation results for the rotor frame order model.
This is for the 2-site CaM test data using the new frame_order.py optimisation script.
........
r23778 | bugman | 2014-06-10 09:48:07 +0200 (Tue, 10 Jun 2014) | 6 lines
The CaM frame order data generation base script now uses lib.compat.norm().
This is to allow the test suite to pass on systems with old numpy versions whereby the
numpy.linalg.norm() function does not support the new axis argument.
........
r23783 | bugman | 2014-06-10 10:21:27 +0200 (Tue, 10 Jun 2014) | 7 lines
Modified the pymol.cone_pdb and pymol.frame_order user functions to use PyMOL IDs.
The PyMOL IDs are used to select individual objects in PyMOL rather than all objects so that the
subsequent PyMOL commands will only be applied to that object. This allows for multiple objects to
be handled simultaneously.
........
|
2015-10-01 19:27:37
|
Tree
|
[r27931]
by
bugman
Merged revisions 23682-23687,23690-23691,23709 via svnmerge from
svn+ssh://bugman@.../svn/relax/branches/frame_order_cleanup
........
r23682 | bugman | 2014-06-06 10:10:00 +0200 (Fri, 06 Jun 2014) | 8 lines
Fix for a number of the frame order models which do not have parameter constraints.
This change to the grid_search() API method is similar to the change for the minimise() method
(r23211). The linear_constraint() function was returning A, b = [], [] for these models, but these
empty numpy arrays were causing the dot product with A to fail in the grid_search() API method.
These values are now caught and the constraint algorithm turned off.
........
r23683 | bugman | 2014-06-06 10:26:20 +0200 (Fri, 06 Jun 2014) | 7 lines
Converted the 'free rotor' frame order model to the new axis_alpha parameter system.
The axis_theta and axis_phi spherical coordinates are converted to the new reduced parameter set
defined by a random point in space (the CoM of all atoms), the pivot point, and a single angle
alpha. The alpha parameter defines the rotor axis angle from the xy-plane.
........
r23684 | bugman | 2014-06-06 10:30:45 +0200 (Fri, 06 Jun 2014) | 6 lines
Parameter conversion for all of the CaM free rotor test data frame_order.py optimisation scripts.
The rotor axis spherical angles have been replaced by the axis alpha angle defining the rotor with
respect to the xy-plane.
........
r23685 | bugman | 2014-06-06 10:36:24 +0200 (Fri, 06 Jun 2014) | 8 lines
Modified the CaM frame order base system test script to catch a bug in the free rotor model.
The axis spherical angles are no longer set for the rotor or free rotor models, as they use the
alpha angle instead and the lack of the theta and phi parameters triggers the bug. The PDB
representation of the frame order motions is also now tested for all frame order models, as it was
turned off for the rigid, rotor and free rotor models and this is where the bug lies.
........
r23686 | bugman | 2014-06-06 10:37:29 +0200 (Fri, 06 Jun 2014) | 5 lines
Fix for the failure of the frame_order.pdb_model user function for the free rotor frame order model.
This is due to the recent parameter conversion to the axis alpha angle.
........
r23687 | bugman | 2014-06-06 10:46:02 +0200 (Fri, 06 Jun 2014) | 3 lines
Removed a debugging printout.
........
r23690 | bugman | 2014-06-06 14:08:23 +0200 (Fri, 06 Jun 2014) | 7 lines
Eliminated the average position alpha Euler angle parameter from the free-rotor pseudo-ellipse model.
As this frame order model is a free-rotor, the average domain position is therefore undefined and it
can freely rotate about the rotor axis. One of the Euler angles for rotating to the average
position can therefore be removed, just as in the free rotor and free rotor isotropic cone models.
........
r23691 | bugman | 2014-06-06 14:11:04 +0200 (Fri, 06 Jun 2014) | 6 lines
Eliminated the free rotor psuedo-ellipse model ave_pos_alpha parameter from the target function.
The average domain position alpha Euler angle has already been removed from the specific analyses
code and this change brings the target function into line with these changes.
........
r23709 | bugman | 2014-06-06 18:00:28 +0200 (Fri, 06 Jun 2014) | 6 lines
Added the full optimisation results for the 2nd rotor frame order model for the CaM test data.
This is from the new frame_order.py optimisation script and the results demonstrate the stability of
the rotor model.
........
|
2015-10-01 19:25:47
|
Tree
|
[r27930]
by
bugman
Merged revisions 23650,23668-23673 via svnmerge from
svn+ssh://bugman@.../svn/relax/branches/frame_order_cleanup
........
r23650 | bugman | 2014-06-05 13:15:07 +0200 (Thu, 05 Jun 2014) | 8 lines
Expanded the CaM isotropic cone test data frame_order.py optimisation script and added the results.
The optimisation is now implemented as in the auto-analysis, with an iterative increase in accuracy
of the quasi-random numerical integration together with an decrease of the function tolerance cutoff
for optimisation. The accuracy of the initial chi-squared calculation is now much higher. And the
accuracy of the initial grid search and the Monte Carlo simulations is now much lower.
........
r23668 | bugman | 2014-06-05 19:00:23 +0200 (Thu, 05 Jun 2014) | 6 lines
Important fix for the 2nd rotor model of the CaM frame order test data.
The tilt angle was not set, and therefore the old data matched the non-tilted 1st rotor model. All
PCS and RDC data has been regenerated to the highest quality using 20,000,000 structures.
........
r23669 | bugman | 2014-06-05 19:05:20 +0200 (Thu, 05 Jun 2014) | 3 lines
Updated the 3 Frame_order.test_cam_rotor2* system tests for the higher quality data.
........
r23670 | bugman | 2014-06-06 08:38:25 +0200 (Fri, 06 Jun 2014) | 10 lines
Expanded the 2nd CaM pseudo-ellipse test data frame_order.py optimisation script.
The optimisation is now implemented as in the auto-analysis, with an iterative increase in accuracy
of the quasi-random numerical integration together with an decrease of the function tolerance cutoff
for optimisation. The accuracy of the initial chi-squared calculation is now much higher. And the
accuracy of the initial grid search and the Monte Carlo simulations is now much lower.
The results of the new optimisation have been added to the repository.
........
r23671 | bugman | 2014-06-06 08:39:27 +0200 (Fri, 06 Jun 2014) | 10 lines
Expanded the CaM free-rotor isotropic cone test data frame_order.py optimisation script.
The optimisation is now implemented as in the auto-analysis, with an iterative increase in accuracy
of the quasi-random numerical integration together with an decrease of the function tolerance cutoff
for optimisation. The accuracy of the initial chi-squared calculation is now much higher. And the
accuracy of the initial grid search and the Monte Carlo simulations is now much lower.
The results of the new optimisation have been added to the repository.
........
r23672 | bugman | 2014-06-06 08:59:05 +0200 (Fri, 06 Jun 2014) | 8 lines
Expanded all remaining CaM test data frame_order.py optimisation scripts.
The optimisation is now implemented as in the auto-analysis, with an iterative increase in accuracy
of the quasi-random numerical integration together with an decrease of the function tolerance cutoff
for optimisation. The accuracy of the initial chi-squared calculation is now much higher. And the
accuracy of the initial grid search and the Monte Carlo simulations is now much lower.
........
r23673 | bugman | 2014-06-06 09:01:17 +0200 (Fri, 06 Jun 2014) | 5 lines
Updated the CaM 2-site to rotor model frame_order.py optimisation script for the parameter reduction.
The rotor frame order model axis spherical angles have now been converted to a single alpha angle.
........
|
2015-10-01 19:25:06
|
Tree
|
[r27929]
by
bugman
Merged revisions 23641-23646 via svnmerge from
svn+ssh://bugman@.../svn/relax/branches/frame_order_cleanup
........
r23641 | bugman | 2014-06-04 19:21:24 +0200 (Wed, 04 Jun 2014) | 6 lines
Removed a terrible hack for handling the frame order analysis without constraints.
This is no longer needed as the log-barrier method is now used to constrain the optimisation, so
that the torsion angle can no longer be negative.
........
r23642 | bugman | 2014-06-04 19:36:43 +0200 (Wed, 04 Jun 2014) | 6 lines
Constraints are now implemented in the frame order grid search.
This is useful for the pseudo-elliptic models as the cone theta_x < theta_y constraint halves the
optimisation space.
........
r23643 | bugman | 2014-06-05 08:36:47 +0200 (Thu, 05 Jun 2014) | 10 lines
Expanded the CaM rotor test data frame_order.py optimisation script.
The optimisation is now implemented as in the auto-analysis, with an iterative increase in accuracy
of the quasi-random numerical integration together with an decrease of the function tolerance cutoff
for optimisation. The accuracy of the initial chi-squared calculation is now much higher. And the
accuracy of the initial grid search and the Monte Carlo simulations is now much lower.
The results of the new optimisation are included.
........
r23644 | bugman | 2014-06-05 08:51:23 +0200 (Thu, 05 Jun 2014) | 10 lines
Expanded the CaM pseudo-ellipse test data frame_order.py optimisation script.
The optimisation is now implemented as in the auto-analysis, with an iterative increase in accuracy
of the quasi-random numerical integration together with an decrease of the function tolerance cutoff
for optimisation. The accuracy of the initial chi-squared calculation is now much higher. And the
accuracy of the initial grid search and the Monte Carlo simulations is now much lower.
The results of the new optimisation are included.
........
r23645 | bugman | 2014-06-05 10:28:34 +0200 (Thu, 05 Jun 2014) | 9 lines
Added one more iteration for the zooming optimisation of the frame order auto-analysis.
This is to improve the speed of optimisation when all RDC and PCS data is being used. The previous
iterations where with [100, 1000, 200000] Sobol' integration points and [1e-2, 1e-3, 1e-4] function
tolerances. This has been increased to [100, 1000, 10000, 100000] and [1e-2, 1e-3, 5e-3, 1e-4].
The final number of points has been decreased as that level of accuracy does not appear to be
necessary. These are also only default values that the user can change for themselves.
........
r23646 | bugman | 2014-06-05 10:50:12 +0200 (Thu, 05 Jun 2014) | 6 lines
Updated the CaM frame order data generation base script to print out more information.
This is for the first axis system so that the same amount of information as the second system is
printed.
........
|
2015-10-01 19:23:53
|
Tree
|
[r27928]
by
bugman
Merged revisions 23632-23635 via svnmerge from
svn+ssh://bugman@.../svn/relax/branches/frame_order_cleanup
........
r23632 | bugman | 2014-06-04 10:56:18 +0200 (Wed, 04 Jun 2014) | 8 lines
Expanded the capabilities of the pymol.frame_order user function.
The isotropic and pseudo-elliptic cones are now represented as they used to be under the
pymol.cone_pdb user function. To avoid code duplication, the new represent_cone_axis(),
represent_cone_object() and represent_rotor_object() functions have been created to send the
commands into PyMOL.
........
r23633 | bugman | 2014-06-04 11:24:12 +0200 (Wed, 04 Jun 2014) | 7 lines
Increased the precision of all of the CaM frame order system tests by 40 times.
The number of Sobol' integration points have been significantly increased while only increasing the
frame order system test timings by ~10%. This allows for checking for chi-squared values at the
minima much closer to zero, and is much better for demonstrating bugs.
........
r23634 | bugman | 2014-06-04 13:54:40 +0200 (Wed, 04 Jun 2014) | 6 lines
Optimisation constraints are no longer turned off in the frame order auto-analysis.
Constraints are now supported by all frame order models, or automatically turned off for those which
do not have parameter constraints.
........
r23635 | bugman | 2014-06-04 13:56:59 +0200 (Wed, 04 Jun 2014) | 5 lines
Fix for the frame order visualisation script created by the auto-analysis.
The call to pymol.frame_order is now correct for the current version of this user function.
........
|
2015-10-01 19:19:08
|
Tree
|
[r27927]
by
bugman
Merged revisions 23624-23627 via svnmerge from
svn+ssh://bugman@.../svn/relax/branches/frame_order_cleanup
........
r23624 | bugman | 2014-06-03 18:09:00 +0200 (Tue, 03 Jun 2014) | 3 lines
The frame_order.num_int_pts user function now throws a RelaxWarning if not enough points are used.
........
r23625 | bugman | 2014-06-03 18:12:00 +0200 (Tue, 03 Jun 2014) | 6 lines
Changed the creation of Sobol' points for numerical integration in the frame order target functions.
The points are now all created at once using the i4_sobol_generate() rather than i4_sobol() function
from the extern.sobol.sobol_lib module.
........
r23626 | bugman | 2014-06-03 18:29:44 +0200 (Tue, 03 Jun 2014) | 6 lines
Increased the number of integration points from 50 or 100 to 5000.
This is for all CaM frame_order.py test data optimisation scripts. The higher number of points are
essential for optimising the frame order models and hence for checking the relax implementation.
........
r23627 | bugman | 2014-06-04 09:04:34 +0200 (Wed, 04 Jun 2014) | 6 lines
Updated the frame_order.py optimisation script for the small angle CaM rotor frame order test data.
This now has the correct rotor torsion angle of 1 degree, and the spherical coordinates are now
converted to the axis alpha parameter.
........
|
2015-10-01 19:17:49
|
Tree
|
[r27926]
by
bugman
Merged revisions 23616-23622 via svnmerge from
svn+ssh://bugman@.../svn/relax/branches/frame_order_cleanup
........
r23616 | bugman | 2014-06-03 11:16:38 +0200 (Tue, 03 Jun 2014) | 6 lines
Created a new CaM frame order test data set.
This is for the rotor model with a very small torsion angle of 1 degree, and will be used as a
comparison to the rigid model and for testing the performance of the rotor model for an edge case.
........
r23617 | bugman | 2014-06-03 11:18:44 +0200 (Tue, 03 Jun 2014) | 7 lines
Updated the frame order representations in all of the frame_order.py scripts for the CaM test data.
All PDB files are now gzipped to save space, the old pymol.cone_pdb user function calls replaced
with pymol.frame_order, and an average domain PDB file for the exact solution is now created in all
cases.
........
r23618 | bugman | 2014-06-03 11:20:51 +0200 (Tue, 03 Jun 2014) | 3 lines
The minimisation constraints are now turned on for all CaM test data frame_order.py optimisation scripts.
........
r23619 | bugman | 2014-06-03 11:24:59 +0200 (Tue, 03 Jun 2014) | 6 lines
Updated the rotor CaM test data frame_order.py script for the parameter reduction.
The rotor axis {theta, phi} polar angles have been replaced by the single axis alpha angle. This
now matches the script for the 2nd rotor model.
........
r23620 | bugman | 2014-06-03 11:26:59 +0200 (Tue, 03 Jun 2014) | 3 lines
Fix for a fatal typo in r23618.
........
r23621 | bugman | 2014-06-03 11:47:09 +0200 (Tue, 03 Jun 2014) | 7 lines
Updated the parameters in all of the frame_order.py scripts for the CaM test data.
The parameters are now specified at the top of the script as variables. All scripts now handle the
change to the translation + CoM rotation for the average domain position rather than having a pure
rotation about a fixed pivot, which is no longer supported.
........
r23622 | bugman | 2014-06-03 11:49:00 +0200 (Tue, 03 Jun 2014) | 3 lines
Fix for a missing import in the isotropic cone CaM test data frame_order.py scripts.
........
|
2015-10-01 19:15:16
|
Tree
|
[r27925]
by
bugman
Merged revisions 23613-23615 via svnmerge from
svn+ssh://bugman@.../svn/relax/branches/frame_order_cleanup
........
r23613 | bugman | 2014-06-03 08:53:25 +0200 (Tue, 03 Jun 2014) | 5 lines
Optimisation of the rotor model to the rigid CaM frame order test data.
The optimisation script and all results files have been added to the repository.
........
r23614 | bugman | 2014-06-03 09:00:25 +0200 (Tue, 03 Jun 2014) | 4 lines
Increased the grid search bounds for the frame order average domain translation.
Instead of being a 10 Angstrom box centred at {0, 0, 0}, now the translation search has been
increased to a 100 Angstrom box.
........
r23615 | bugman | 2014-06-03 09:16:09 +0200 (Tue, 03 Jun 2014) | 8 lines
Proper edge case handling and slight speed up of the frame order PCS integration functions.
The case whereby no Sobol' points in the numerical integration lie within the motional distribution
is now caught and the rotation matrix set to the motional eigenframe to simulate the rigid state.
As the code for averaging the PCS was changed, it was also simplified by removing an unnecessary
loop over all spins. This should speed up the PCS integration by a tiny amount.
........
|
2015-10-01 19:08:55
|
Tree
|