From 18205331813ea7eb274bf9581d4eae3e63e5ff91 Mon Sep 17 00:00:00 2001 From: Gareth Tribello <gareth.tribello@gmail.com> Date: Fri, 3 Jul 2015 22:48:05 +0100 Subject: [PATCH] Changed the way data is passed to reference configurations in analysis The data is now passed via a pdb object. This means we can now use the same infractructure for setting up the ReferenceConfiguration as we use in setting up the ReferenceConfigurations in paths and so on. Projections meanwhile are attached to the ReferenceConfigurations when they are required for printing. So now a reference configuration can be the pair of objects - i.e. the projections and the high dimensional configuration. --- .../dimred/rt-mds/analysis.0.embed.reference | 204 ++++++++-------- .../rt-mds/analysis.0.list_embed.reference | 2 +- regtest/dimred/rt-mds/embed.reference | 220 +++++++++--------- regtest/dimred/rt-mds/list_embed.reference | 4 +- regtest/dimred/rt-mds/plumed.dat | 2 +- src/analysis/AnalysisBase.h | 6 +- src/analysis/AnalysisWithDataCollection.cpp | 81 ++++--- src/analysis/AnalysisWithDataCollection.h | 8 +- src/analysis/EuclideanDissimilarityMatrix.cpp | 3 +- src/analysis/LandmarkSelectionBase.h | 6 +- src/analysis/OutputColvarFile.cpp | 22 +- src/analysis/OutputPDBFile.cpp | 12 +- src/analysis/ReadDissimilarityMatrix.cpp | 4 +- src/dimred/DimensionalityReductionBase.cpp | 21 +- src/dimred/DimensionalityReductionBase.h | 6 +- src/dimred/ProjectNonLandmarkPoints.cpp | 45 ++-- src/mapping/Mapping.cpp | 42 ++-- src/mapping/Mapping.h | 2 +- src/mapping/PCAVars.cpp | 2 - src/reference/MultiDomainRMSD.cpp | 3 +- src/reference/MultiReferenceBase.cpp | 28 +-- src/reference/MultiReferenceBase.h | 2 +- src/reference/ReferenceArguments.cpp | 20 +- src/reference/ReferenceArguments.h | 4 +- src/reference/ReferenceAtoms.cpp | 12 +- src/reference/ReferenceAtoms.h | 31 +-- src/reference/ReferenceConfiguration.cpp | 105 +++------ src/reference/ReferenceConfiguration.h | 67 +++--- src/tools/PDB.cpp | 32 +++ src/tools/PDB.h | 10 + 30 files changed, 470 insertions(+), 536 deletions(-) diff --git a/regtest/dimred/rt-mds/analysis.0.embed.reference b/regtest/dimred/rt-mds/analysis.0.embed.reference index bfcd2c1e8..3ebfef2be 100644 --- a/regtest/dimred/rt-mds/analysis.0.embed.reference +++ b/regtest/dimred/rt-mds/analysis.0.embed.reference @@ -1,698 +1,698 @@ DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=650626174834469268094976.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0873 mds.2=0.0013 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7551 c1.moment-3=1.3322 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=3443064697932843889721344.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0535 mds.2=0.0044 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7434 c1.moment-3=1.3003 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=4334990767809816147525632.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0150 mds.2=0.0044 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7333 c1.moment-3=1.2632 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=1642551053927491148185600.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=-0.0136 mds.2=0.0019 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7283 c1.moment-3=1.2349 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=565077236443374117978112.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=-0.0308 mds.2=-0.0012 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7268 c1.moment-3=1.2175 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=506902826865531421720576.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=-0.0355 mds.2=-0.0018 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7262 c1.moment-3=1.2128 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=3497441683667193365004288.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=-0.0090 mds.2=-0.0015 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7327 c1.moment-3=1.2385 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=5816989471131786348068864.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0145 mds.2=0.0004 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7371 c1.moment-3=1.2616 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=5197629206541778607407104.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0191 mds.2=0.0022 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7366 c1.moment-3=1.2666 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=22568578815140474208124928.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0278 mds.2=0.0015 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7394 c1.moment-3=1.2748 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=8891751619370481308663808.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0091 mds.2=-0.0004 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7365 c1.moment-3=1.2562 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=145469732262582499147776.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=-0.0359 mds.2=-0.0012 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7255 c1.moment-3=1.2126 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=67243488566443176361984.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=-0.0540 mds.2=0.0004 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7193 c1.moment-3=1.1955 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=991674944473569693794304.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=-0.0322 mds.2=-0.0034 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7286 c1.moment-3=1.2156 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=433704577708501378269184.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=-0.0205 mds.2=-0.0150 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7429 c1.moment-3=1.2239 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=58924815689464923815936.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=-0.0282 mds.2=-0.0289 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7542 c1.moment-3=1.2128 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=28876419368888716754944.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=-0.0530 mds.2=-0.0358 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7544 c1.moment-3=1.1871 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=29493206461009996283904.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=-0.0769 mds.2=-0.0312 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7438 c1.moment-3=1.1652 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=15523379316519734345728.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=-0.0893 mds.2=-0.0259 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7355 c1.moment-3=1.1546 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=6036949107489532542976.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=-0.0697 mds.2=-0.0246 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7393 c1.moment-3=1.1739 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=6805982676529049501696.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 -REMARK mds.1=-0.0301 mds.2=-0.0196 +REMARK mds.1=-0.0302 mds.2=-0.0196 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7448 c1.moment-3=1.2133 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=224283114659648425164800.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0093 mds.2=-0.0072 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7430 c1.moment-3=1.2547 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=1937631236154971427700736.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0274 mds.2=0.0009 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7400 c1.moment-3=1.2742 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=8943884514170369755578368.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0301 mds.2=0.0016 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7400 c1.moment-3=1.2770 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=1818542782073875176882176.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0265 mds.2=-0.0033 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7438 c1.moment-3=1.2723 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=356284804122361993363456.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0433 mds.2=-0.0053 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7501 c1.moment-3=1.2879 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=740928158795493248335872.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0514 mds.2=-0.0019 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7489 c1.moment-3=1.2967 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=3971376819483128291655680.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0222 mds.2=0.0031 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7365 c1.moment-3=1.2698 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=3616045831357711704391680.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=-0.0129 mds.2=0.0061 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7245 c1.moment-3=1.2366 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=866118050097568367509504.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=-0.0322 mds.2=0.0084 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7172 c1.moment-3=1.2186 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=473876430918082860417024.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=-0.0355 mds.2=0.0080 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7168 c1.moment-3=1.2153 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=549108949631639043964928.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=-0.0337 mds.2=0.0067 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7185 c1.moment-3=1.2168 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=714866179522068016529408.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=-0.0308 mds.2=0.0047 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7211 c1.moment-3=1.2191 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=1514315762407424940572672.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=-0.0253 mds.2=0.0016 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7255 c1.moment-3=1.2235 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=1741401785128748918505472.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=-0.0132 mds.2=-0.0021 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7323 c1.moment-3=1.2343 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=3707685932716769910194176.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0040 mds.2=-0.0031 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7377 c1.moment-3=1.2506 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=5279612145243834875379712.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0107 mds.2=0.0011 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7354 c1.moment-3=1.2582 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=14648991633879816569094144.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0299 mds.2=0.0060 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7357 c1.moment-3=1.2780 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=101745406227893881592086528.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0540 mds.2=0.0070 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7410 c1.moment-3=1.3015 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=77977698769596315733065728.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0650 mds.2=0.0039 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7468 c1.moment-3=1.3114 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=5438198764112726743580672.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0415 mds.2=0.0025 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7421 c1.moment-3=1.2882 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=1122421932113435130068992.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0074 mds.2=0.0033 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7325 c1.moment-3=1.2555 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=1623375579255821794541568.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=-0.0185 mds.2=0.0059 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7232 c1.moment-3=1.2312 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=824284132438079344476160.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=-0.0413 mds.2=0.0073 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7158 c1.moment-3=1.2096 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=418023780265421327826944.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=-0.0548 mds.2=0.0074 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7123 c1.moment-3=1.1966 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=524201540254286764572672.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=-0.0385 mds.2=0.0041 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7197 c1.moment-3=1.2114 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=255645304728742904463360.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=-0.0383 mds.2=-0.0006 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7243 c1.moment-3=1.2104 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=80831060875928311693312.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=-0.0584 mds.2=-0.0008 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7192 c1.moment-3=1.1910 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=410072896508362208837632.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=-0.0584 mds.2=0.0023 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7162 c1.moment-3=1.1918 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=473315368593257205334016.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=-0.0553 mds.2=0.0090 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7105 c1.moment-3=1.1965 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=49342818148888732499968.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=-0.0772 mds.2=0.0146 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.6995 c1.moment-3=1.1768 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=71439214621479799881728.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=-0.0757 mds.2=0.0157 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.6988 c1.moment-3=1.1785 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=372382770456105985245184.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=-0.0644 mds.2=0.0144 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7030 c1.moment-3=1.1891 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=396750501333421147553792.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=-0.0816 mds.2=0.0141 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.6988 c1.moment-3=1.1724 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=194367523462455551328256.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=-0.1045 mds.2=0.0148 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.6922 c1.moment-3=1.1504 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=265390023546441746612224.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=-0.0867 mds.2=0.0111 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7004 c1.moment-3=1.1667 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=417842650383208029356032.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=-0.0365 mds.2=0.0014 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7228 c1.moment-3=1.2126 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=130034479906962406375424.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0113 mds.2=-0.0067 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7431 c1.moment-3=1.2567 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=453748863537616517070848.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0272 mds.2=-0.0074 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7479 c1.moment-3=1.2718 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=2549987501327281773608960.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0381 mds.2=-0.0012 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7448 c1.moment-3=1.2840 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=3357671899518696282914816.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0548 mds.2=0.0021 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7459 c1.moment-3=1.3010 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=2973694890310422329556992.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0470 mds.2=0.0012 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7447 c1.moment-3=1.2933 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=288602953154320790454272.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0227 mds.2=-0.0019 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7414 c1.moment-3=1.2690 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=1760887739729704734687232.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0132 mds.2=-0.0022 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7392 c1.moment-3=1.2597 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=1526973208100442807992320.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0040 mds.2=0.0004 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7343 c1.moment-3=1.2515 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=375263178685270183641088.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=-0.0045 mds.2=0.0008 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7317 c1.moment-3=1.2434 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=232661556808622295482368.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=-0.0145 mds.2=0.0006 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7293 c1.moment-3=1.2337 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=507064184978749788258304.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=-0.0116 mds.2=0.0025 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7282 c1.moment-3=1.2370 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=1128952088522002253479936.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=-0.0031 mds.2=0.0044 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7286 c1.moment-3=1.2457 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=1197960641606570746052608.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=-0.0148 mds.2=0.0086 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7216 c1.moment-3=1.2355 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=625774095016588059082752.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=-0.0318 mds.2=0.0109 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7149 c1.moment-3=1.2196 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=364912544013506169536512.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=-0.0166 mds.2=0.0078 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7218 c1.moment-3=1.2336 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=1649391353916835862937600.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0154 mds.2=0.0036 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7342 c1.moment-3=1.2633 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=11346816644974575838298112.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0451 mds.2=0.0018 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7437 c1.moment-3=1.2915 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=20791509453694539808112640.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0364 mds.2=0.0021 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7411 c1.moment-3=1.2832 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=1867515982473692874539008.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0125 mds.2=0.0036 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7335 c1.moment-3=1.2606 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=11344083134102028704284672.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0330 mds.2=0.0045 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7379 c1.moment-3=1.2806 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=120911330589421810499977216.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0605 mds.2=0.0048 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7448 c1.moment-3=1.3072 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=40351160276202809800523776.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0417 mds.2=0.0041 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7406 c1.moment-3=1.2889 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=9235968903630373689229312.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0115 mds.2=0.0011 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7356 c1.moment-3=1.2590 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=15198595282354971818852352.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0257 mds.2=-0.0018 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7421 c1.moment-3=1.2719 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=14695620601365390340128768.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0451 mds.2=-0.0029 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7483 c1.moment-3=1.2904 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=3504618985646781185916928.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0387 mds.2=-0.0032 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7469 c1.moment-3=1.2841 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=1958037545372794977517568.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0254 mds.2=-0.0017 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7420 c1.moment-3=1.2716 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=7729740074168141073088512.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0311 mds.2=-0.0001 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7418 c1.moment-3=1.2775 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=26429041345273132897796096.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0448 mds.2=0.0006 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7448 c1.moment-3=1.2909 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=37403428414373558822633472.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0499 mds.2=0.0020 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7448 c1.moment-3=1.2962 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=69071824065210548899282944.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0543 mds.2=0.0037 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7443 c1.moment-3=1.3009 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=28746486049325375245254656.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0486 mds.2=0.0054 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7412 c1.moment-3=1.2959 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=5138199027537960106983424.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0459 mds.2=0.0051 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7407 c1.moment-3=1.2932 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=20730130763570579884736512.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0715 mds.2=-0.0001 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7524 c1.moment-3=1.3166 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=10053248420830524810985472.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0764 mds.2=-0.0063 REMARK ARG=c1.moment-2,c1.moment-3 -REMARK c1.moment-2=0.7596 c1.moment-3=1.3196 +REMARK c1.moment-2=0.7597 c1.moment-3=1.3196 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=2341097486254890020765696.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0603 mds.2=-0.0119 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7609 c1.moment-3=1.3027 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=1801241546807460694589440.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0378 mds.2=-0.0153 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7583 c1.moment-3=1.2800 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=2623886374903733202976768.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0214 mds.2=-0.0124 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7512 c1.moment-3=1.2649 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=1540127025264497029808128.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0063 mds.2=-0.0091 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7441 c1.moment-3=1.2513 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=761250478060893041065984.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=-0.0095 mds.2=-0.0016 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7327 c1.moment-3=1.2380 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=815550859201229044580352.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=-0.0259 mds.2=0.0036 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7234 c1.moment-3=1.2235 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=1031052805964853080489984.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=-0.0234 mds.2=0.0061 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7217 c1.moment-3=1.2265 END DESCRIPTION: analysis data from calculation done at time 5.000000 -REMARK WEIGHT=828970472636431535702016.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0012 mds.2=0.0060 REMARK ARG=c1.moment-2,c1.moment-3 diff --git a/regtest/dimred/rt-mds/analysis.0.list_embed.reference b/regtest/dimred/rt-mds/analysis.0.list_embed.reference index ce29c25f6..185b19ed5 100644 --- a/regtest/dimred/rt-mds/analysis.0.list_embed.reference +++ b/regtest/dimred/rt-mds/analysis.0.list_embed.reference @@ -19,7 +19,7 @@ -0.0769 -0.0312 -0.0893 -0.0259 -0.0697 -0.0246 - -0.0301 -0.0196 + -0.0302 -0.0196 0.0093 -0.0072 0.0274 0.0009 0.0301 0.0016 diff --git a/regtest/dimred/rt-mds/embed.reference b/regtest/dimred/rt-mds/embed.reference index 8ecbcfdae..336cec6f8 100644 --- a/regtest/dimred/rt-mds/embed.reference +++ b/regtest/dimred/rt-mds/embed.reference @@ -1,698 +1,698 @@ DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0008 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0594 mds.2=0.0053 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7340 c1.moment-3=1.2672 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0012 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0683 mds.2=0.0034 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7371 c1.moment-3=1.2758 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0004 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0705 mds.2=0.0006 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7401 c1.moment-3=1.2777 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0010 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0729 mds.2=-0.0019 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7428 c1.moment-3=1.2796 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0022 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0874 mds.2=-0.0069 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7497 c1.moment-3=1.2934 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0019 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0961 mds.2=-0.0095 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7533 c1.moment-3=1.3018 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0023 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0867 mds.2=-0.0062 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7489 c1.moment-3=1.2928 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0030 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0719 mds.2=-0.0008 REMARK ARG=c1.moment-2,c1.moment-3 -REMARK c1.moment-2=0.7417 c1.moment-3=1.2788 +REMARK c1.moment-2=0.7417 c1.moment-3=1.2789 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0118 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0575 mds.2=0.0031 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7360 c1.moment-3=1.2651 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0063 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0552 mds.2=0.0034 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7354 c1.moment-3=1.2628 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0022 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0682 mds.2=-0.0002 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7405 c1.moment-3=1.2753 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0029 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0781 mds.2=-0.0024 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7440 c1.moment-3=1.2847 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0010 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0785 mds.2=-0.0025 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7441 c1.moment-3=1.2852 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0004 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0763 mds.2=-0.0027 REMARK ARG=c1.moment-2,c1.moment-3 -REMARK c1.moment-2=0.7441 c1.moment-3=1.2829 +REMARK c1.moment-2=0.7441 c1.moment-3=1.2830 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0013 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0755 mds.2=-0.0041 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7454 c1.moment-3=1.2820 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0069 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0792 mds.2=-0.0069 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7486 c1.moment-3=1.2853 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0096 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0778 mds.2=-0.0062 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7477 c1.moment-3=1.2840 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0076 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0727 mds.2=-0.0025 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7434 c1.moment-3=1.2795 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0143 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0726 mds.2=0.0014 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7396 c1.moment-3=1.2798 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0302 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0756 mds.2=0.0030 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7384 c1.moment-3=1.2830 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0171 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0821 mds.2=0.0017 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7405 c1.moment-3=1.2893 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0013 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0816 mds.2=0.0001 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7420 c1.moment-3=1.2886 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0167 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0774 mds.2=0.0008 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7407 c1.moment-3=1.2845 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0234 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0766 mds.2=0.0008 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7407 c1.moment-3=1.2837 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0171 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0838 mds.2=-0.0005 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7429 c1.moment-3=1.2906 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0265 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0931 mds.2=-0.0016 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7452 c1.moment-3=1.2997 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0521 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0936 mds.2=-0.0010 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7446 c1.moment-3=1.3004 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0504 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0923 mds.2=-0.0009 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7443 c1.moment-3=1.2990 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0443 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0906 mds.2=-0.0008 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7440 c1.moment-3=1.2974 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0270 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0706 mds.2=0.0025 REMARK ARG=c1.moment-2,c1.moment-3 -REMARK c1.moment-2=0.7382 c1.moment-3=1.2780 +REMARK c1.moment-2=0.7382 c1.moment-3=1.2779 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0120 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0664 mds.2=0.0050 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7352 c1.moment-3=1.2741 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0517 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0901 mds.2=0.0019 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7412 c1.moment-3=1.2972 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0821 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.1059 mds.2=-0.0015 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7467 c1.moment-3=1.3125 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0206 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0917 mds.2=0.0006 REMARK ARG=c1.moment-2,c1.moment-3 -REMARK c1.moment-2=0.7428 c1.moment-3=1.2986 +REMARK c1.moment-2=0.7428 c1.moment-3=1.2987 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0206 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0876 mds.2=0.0021 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7407 c1.moment-3=1.2948 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0207 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.1008 mds.2=-0.0001 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7446 c1.moment-3=1.3076 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0270 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0955 mds.2=-0.0014 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7452 c1.moment-3=1.3022 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0171 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0858 mds.2=-0.0018 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7444 c1.moment-3=1.2925 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0345 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0894 mds.2=-0.0005 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7436 c1.moment-3=1.2963 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0819 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0922 mds.2=0.0014 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7420 c1.moment-3=1.2992 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.1159 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0917 mds.2=0.0010 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7423 c1.moment-3=1.2987 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0266 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0925 mds.2=-0.0043 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7477 c1.moment-3=1.2989 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0072 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0967 mds.2=-0.0102 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7541 c1.moment-3=1.3023 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0358 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.1073 mds.2=-0.0096 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7548 c1.moment-3=1.3129 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0264 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.1065 mds.2=-0.0047 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7499 c1.moment-3=1.3126 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0087 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0935 mds.2=-0.0003 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7439 c1.moment-3=1.3003 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0055 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0668 mds.2=0.0049 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7353 c1.moment-3=1.2745 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0047 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 -REMARK mds.1=0.0411 mds.2=0.0087 +REMARK mds.1=0.0410 mds.2=0.0086 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7284 c1.moment-3=1.2494 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0049 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0264 mds.2=0.0110 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7242 c1.moment-3=1.2352 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0014 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0254 mds.2=0.0125 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7226 c1.moment-3=1.2344 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0015 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0503 mds.2=0.0085 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7297 c1.moment-3=1.2586 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0025 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0855 mds.2=0.0007 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7419 c1.moment-3=1.2925 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0045 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0975 mds.2=-0.0028 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7469 c1.moment-3=1.3039 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0336 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0983 mds.2=-0.0035 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7477 c1.moment-3=1.3047 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0570 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0997 mds.2=-0.0044 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7487 c1.moment-3=1.3059 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0021 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0877 mds.2=-0.0021 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7449 c1.moment-3=1.2944 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0002 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0501 mds.2=0.0053 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7328 c1.moment-3=1.2580 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0004 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0104 mds.2=0.0140 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7192 c1.moment-3=1.2197 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0009 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=-0.0199 mds.2=0.0221 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7074 c1.moment-3=1.1907 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0004 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=-0.0416 mds.2=0.0277 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.6990 c1.moment-3=1.1698 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=-0.0688 mds.2=0.0338 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.6895 c1.moment-3=1.1436 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=-0.0858 mds.2=0.0354 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.6858 c1.moment-3=1.1269 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=-0.0897 mds.2=0.0313 REMARK ARG=c1.moment-2,c1.moment-3 -REMARK c1.moment-2=0.6894 c1.moment-3=1.1226 +REMARK c1.moment-2=0.6894 c1.moment-3=1.1225 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=-0.0920 mds.2=0.0254 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.6950 c1.moment-3=1.1195 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=-0.1168 mds.2=0.0227 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.6945 c1.moment-3=1.0946 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0001 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=-0.1447 mds.2=0.0227 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.6910 c1.moment-3=1.0669 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0004 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=-0.1636 mds.2=0.0221 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.6892 c1.moment-3=1.0481 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0011 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=-0.1461 mds.2=0.0182 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.6953 c1.moment-3=1.0650 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0004 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=-0.1212 mds.2=0.0139 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7027 c1.moment-3=1.0891 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0005 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=-0.0775 mds.2=0.0056 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7164 c1.moment-3=1.1314 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0004 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=-0.0008 mds.2=-0.0041 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7358 c1.moment-3=1.2063 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0007 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0469 mds.2=-0.0038 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7415 c1.moment-3=1.2537 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0074 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0771 mds.2=-0.0004 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7419 c1.moment-3=1.2840 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0384 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0917 mds.2=0.0005 REMARK ARG=c1.moment-2,c1.moment-3 -REMARK c1.moment-2=0.7428 c1.moment-3=1.2986 +REMARK c1.moment-2=0.7428 c1.moment-3=1.2987 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0153 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0656 mds.2=0.0042 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7359 c1.moment-3=1.2732 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0016 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=-0.0034 mds.2=0.0115 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7200 c1.moment-3=1.2057 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0006 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=-0.0901 mds.2=0.0141 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7064 c1.moment-3=1.1200 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0005 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=-0.1784 mds.2=0.0069 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7024 c1.moment-3=1.0315 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0002 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=-0.2253 mds.2=-0.0077 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7109 c1.moment-3=0.9832 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0001 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=-0.2372 mds.2=-0.0248 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7264 c1.moment-3=0.9692 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=-0.2415 mds.2=-0.0448 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7456 c1.moment-3=0.9624 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=-0.2562 mds.2=-0.0539 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7529 c1.moment-3=0.9466 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=-0.2901 mds.2=-0.0433 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7381 c1.moment-3=0.9144 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=-0.3173 mds.2=-0.0215 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7130 c1.moment-3=0.8902 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=-0.3117 mds.2=0.0096 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.6829 c1.moment-3=0.8996 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=-0.2787 mds.2=0.0317 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.6651 c1.moment-3=0.9352 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=-0.2319 mds.2=0.0372 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.6656 c1.moment-3=0.9823 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=-0.1897 mds.2=0.0305 REMARK ARG=c1.moment-2,c1.moment-3 -REMARK c1.moment-2=0.6776 c1.moment-3=1.0233 +REMARK c1.moment-2=0.6775 c1.moment-3=1.0233 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0001 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=-0.1592 mds.2=0.0142 REMARK ARG=c1.moment-2,c1.moment-3 -REMARK c1.moment-2=0.6975 c1.moment-3=1.0515 +REMARK c1.moment-2=0.6975 c1.moment-3=1.0514 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 -REMARK mds.1=-0.1211 mds.2=-0.0049 +REMARK mds.1=-0.1212 mds.2=-0.0049 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7213 c1.moment-3=1.0868 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=-0.0960 mds.2=-0.0150 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7345 c1.moment-3=1.1105 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0001 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=-0.0842 mds.2=-0.0162 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7372 c1.moment-3=1.1221 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0001 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=-0.0813 mds.2=-0.0187 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7401 c1.moment-3=1.1246 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=-0.0823 mds.2=-0.0193 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7406 c1.moment-3=1.1235 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=-0.0773 mds.2=-0.0179 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7398 c1.moment-3=1.1287 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=-0.0621 mds.2=-0.0202 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7440 c1.moment-3=1.1435 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=-0.0449 mds.2=-0.0215 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7475 c1.moment-3=1.1604 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=-0.0269 mds.2=-0.0307 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7589 c1.moment-3=1.1770 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0000 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=-0.0075 mds.2=-0.0368 REMARK ARG=c1.moment-2,c1.moment-3 REMARK c1.moment-2=0.7673 c1.moment-3=1.1955 END DESCRIPTION: analysis data from calculation done at time 10.000000 -REMARK WEIGHT=0.0002 +REMARK WEIGHT=1.0000 REMARK PROPERTIES=mds.1,mds.2 REMARK mds.1=0.0266 mds.2=-0.0342 REMARK ARG=c1.moment-2,c1.moment-3 diff --git a/regtest/dimred/rt-mds/list_embed.reference b/regtest/dimred/rt-mds/list_embed.reference index 2f4fb6096..b24c465df 100644 --- a/regtest/dimred/rt-mds/list_embed.reference +++ b/regtest/dimred/rt-mds/list_embed.reference @@ -46,7 +46,7 @@ 0.1065 -0.0047 0.0935 -0.0003 0.0668 0.0049 - 0.0411 0.0087 + 0.0410 0.0086 0.0264 0.0110 0.0254 0.0125 0.0503 0.0085 @@ -88,7 +88,7 @@ -0.2319 0.0372 -0.1897 0.0305 -0.1592 0.0142 - -0.1211 -0.0049 + -0.1212 -0.0049 -0.0960 -0.0150 -0.0842 -0.0162 -0.0813 -0.0187 diff --git a/regtest/dimred/rt-mds/plumed.dat b/regtest/dimred/rt-mds/plumed.dat index 1c63ced77..e74a95494 100755 --- a/regtest/dimred/rt-mds/plumed.dat +++ b/regtest/dimred/rt-mds/plumed.dat @@ -17,7 +17,7 @@ UPPER_WALLS ARG=d7 AT=2.0 KAPPA=100. COORDINATIONNUMBER SPECIES=1-7 MOMENTS=2-3 SWITCH={RATIONAL R_0=1.5 NN=8 MM=16} LABEL=c1 -oo: EUCLIDEAN_DISSIMILARITIES ARG=c1.moment-2,c1.moment-3 STRIDE=10 RUN=1000 REWEIGHT_TEMP=0.1 TEMP=0.2 +oo: EUCLIDEAN_DISSIMILARITIES ARG=c1.moment-2,c1.moment-3 STRIDE=10 RUN=1000 CLASSICAL_MDS ... USE_OUTPUT_DATA_FROM=oo diff --git a/src/analysis/AnalysisBase.h b/src/analysis/AnalysisBase.h index 2717ce387..7893e9782 100644 --- a/src/analysis/AnalysisBase.h +++ b/src/analysis/AnalysisBase.h @@ -82,7 +82,7 @@ public: /// Get the ith data point virtual void getDataPoint( const unsigned& idata, std::vector<double>& point, double& weight ) const ; /// Get a reference configuration (in dimensionality reduction this returns the projection) - virtual ReferenceConfiguration* getReferenceConfiguration( const unsigned& idata, bool& isprojection ); + virtual ReferenceConfiguration* getReferenceConfiguration( const unsigned& idata ); /// Get the input configuration (in dimensionality reduction this returns the high dimensional configuration) virtual ReferenceConfiguration* getInputReferenceConfiguration( const unsigned& idata ); /// This actually performs the analysis @@ -159,8 +159,8 @@ void AnalysisBase::getDataPoint( const unsigned& idata, std::vector<double>& poi } inline -ReferenceConfiguration* AnalysisBase::getReferenceConfiguration( const unsigned& idata, bool& isprojection ){ - return mydata->getReferenceConfiguration( idata, isprojection ); +ReferenceConfiguration* AnalysisBase::getReferenceConfiguration( const unsigned& idata ){ + return mydata->getReferenceConfiguration( idata ); } inline diff --git a/src/analysis/AnalysisWithDataCollection.cpp b/src/analysis/AnalysisWithDataCollection.cpp index 61ddf9edd..1d3586edc 100644 --- a/src/analysis/AnalysisWithDataCollection.cpp +++ b/src/analysis/AnalysisWithDataCollection.cpp @@ -36,7 +36,10 @@ void AnalysisWithDataCollection::registerKeywords( Keywords& keys ){ AnalysisBase::registerKeywords( keys ); keys.use("ARG"); keys.reset_style("ARG","atoms-1"); keys.add("atoms-1","ATOMS","the atoms whose positions we are tracking for the purpose of analysing the data"); - keys.add("hidden","METRIC","how are we measuring the distances between configurations. If you have only arguments this will by default be the euclidean metric. You must specify a metric if you are analysing atoms"); + keys.add("hidden","METRIC","how are we measuring the distances between configurations. If you have only arguments this will by default be the euclidean " + "metric. You must specify a metric if you are analysing atoms. You can choose any of the metrics described in the part of the " + "manual on \\ref dists. If your metric involves multiple different blocks of atoms then you can use repeated ATOMS keywords " + "i.e. ATOMS1, ATOMS2 etc. You can also add additional information on your metric in this command."); keys.add("atoms-1","STRIDE","the frequency with which data should be stored for analysis. By default data is collected on every step"); keys.add("atoms-1","RUN","the frequency with which to run the analysis algorithms."); keys.addFlag("USE_ALL_DATA",false,"just analyse all the data in the trajectory. This option should be used in tandem with ATOMS/ARG + STRIDE"); @@ -75,21 +78,38 @@ old_norm(0.0) // we must collect data from the trajectory } else { // Get information on numbers of atoms and argument names - std::vector<AtomNumber> atom_numbers; std::vector<std::string> argument_names( getNumberOfArguments() ); + std::vector<std::string> argument_names( getNumberOfArguments() ); for(unsigned i=0;i<getNumberOfArguments();++i) argument_names[i]=getPntrToArgument(i)->getName(); - + if( getNumberOfArguments()>0 ) mypdb.addArgumentNames( argument_names ); // Read in information on the metric that is being used in this analysis object - parse("METRIC",metricname); - if( metricname.length()==0 ) metricname="EUCLIDEAN"; + std::string metrictmp; parse("METRIC",metrictmp); + if( metrictmp.length()==0 ){ + metricname="EUCLIDEAN"; + } else { + std::vector<std::string> metricwords = Tools::getWords( metrictmp ); + metricname=metricwords[0]; metricwords.erase(metricwords.begin()); + mypdb.addRemark( metricwords ); + } ReferenceConfiguration* checkref=metricRegister().create<ReferenceConfiguration>( metricname ); // Check if we should read atoms ReferenceAtoms* hasatoms=dynamic_cast<ReferenceAtoms*>( checkref ); if( hasatoms ){ - parseAtomList("ATOMS",atom_numbers); requestAtoms(atom_numbers); - if( atom_numbers.size()==0 ) error("no atom positions have been specified in input"); - log.printf(" monitoring positions of atoms "); - for(unsigned i=0;i<atom_numbers.size();++i) log.printf("%d ",atom_numbers[i].serial() ); - log.printf("\n"); + std::vector<AtomNumber> atom_numbers; parseAtomList("ATOMS",atom_numbers); + if( atom_numbers.size()>0 ){ + log.printf(" monitoring positions of atoms "); + for(unsigned i=0;i<atom_numbers.size();++i) log.printf("%d ",atom_numbers[i].serial() ); + log.printf("\n"); mypdb.addBlockEnd( atom_numbers.size() ); + } else { + std::vector<AtomNumber> tmpatoms; mypdb.addBlockEnd(0); + for(unsigned i=1;;++i){ + parseAtomList("ATOMS",i,tmpatoms); + if( i==1 && tmpatoms.size()==0 ) error("no atom positions have been specified in input"); + else if( tmpatoms.size()==0 ) break; + for(unsigned j=0;j<tmpatoms.size();++j) atom_numbers.push_back( tmpatoms[j] ); + mypdb.addBlockEnd( atom_numbers.size() ); + } + } + requestAtoms(atom_numbers); mypdb.setAtomNumbers( atom_numbers ); } // Check if we should read arguments ReferenceArguments* hasargs=dynamic_cast<ReferenceArguments*>( checkref ); @@ -107,10 +127,7 @@ old_norm(0.0) // Setup everything given the ammount of data that we will have in each analysis if( freq%getStride()!= 0 ) error("Frequncy of running is not a multiple of the stride"); unsigned ndata=freq/getStride(); data.resize(ndata); logweights.resize( ndata ); - for(unsigned i=0;i<ndata;++i){ - data[i]=metricRegister().create<ReferenceConfiguration>( metricname ); - data[i]->setNamesAndAtomNumbers( atom_numbers, argument_names ); - } + for(unsigned i=0;i<ndata;++i) data[i]=metricRegister().create<ReferenceConfiguration>( metricname ); log.printf(" running analysis every %u steps\n",freq); // Check if we are doing block averaging parseFlag("NOMEMORY",nomemory); @@ -189,10 +206,10 @@ void AnalysisWithDataCollection::readCheckPointFile( const std::string& filename if(fp!=NULL){ bool do_read=true, first=true; while (do_read) { - PDB mypdb; - do_read=mypdb.readFromFilepointer(fp,plumed.getAtoms().usingNaturalUnits(),0.1/atoms.getUnits().getLength()); + PDB tpdb; + do_read=tpdb.readFromFilepointer(fp,plumed.getAtoms().usingNaturalUnits(),0.1/atoms.getUnits().getLength()); if(do_read){ - data[idata]->set( mypdb ); + data[idata]->set( tpdb ); data[idata]->parse("TIME",tstep); if( !first && ((tstep-oldtstep) - getStride()*plumed.getAtoms().getTimeStep())>plumed.getAtoms().getTimeStep() ){ error("frequency of data storage in " + filename + " is not equal to frequency of data storage plumed.dat file"); @@ -229,9 +246,9 @@ void AnalysisWithDataCollection::getDataPoint( const unsigned& idat, std::vector } } -ReferenceConfiguration* AnalysisWithDataCollection::getReferenceConfiguration( const unsigned& idat, bool& isprojection ){ - if( !mydata ){ plumed_dbg_assert( idat<data.size() ); isprojection=false; return data[idat]; } - return AnalysisBase::getReferenceConfiguration( idat, isprojection ); +ReferenceConfiguration* AnalysisWithDataCollection::getReferenceConfiguration( const unsigned& idat ){ + if( !mydata ){ plumed_dbg_assert( idat<data.size() ); return data[idat]; } + return AnalysisBase::getReferenceConfiguration( idat ); } ReferenceConfiguration* AnalysisWithDataCollection::getInputReferenceConfiguration( const unsigned& idat ){ @@ -259,24 +276,22 @@ void AnalysisWithDataCollection::update(){ // Reweighting because of biases if( !biases.empty() ) ww += bias/simtemp; - // Get the arguments ready to transfer to reference configuration - std::vector<double> current_args( getNumberOfArguments() ); - for(unsigned i=0;i<getNumberOfArguments();++i) current_args[i]=getArgument(i); - // Could add stuff for fancy metrics here eventually but for now unecessary - std::vector<double> mymetric( getNumberOfArguments(), 1.0 ); - + // Pass the atom positions to the pdb + mypdb.setAtomPositions( getPositions() ); + // Pass the argument values to the pdb + for(unsigned i=0;i<getNumberOfArguments();++i){ + mypdb.setArgumentValue( getPntrToArgument(i)->getName(), getArgument(i) ); + } + // Could add stuff for mahalanobis distance etc here eventually but for now unecessary + if(use_all_data){ data.push_back( metricRegister().create<ReferenceConfiguration>( metricname ) ); plumed_dbg_assert( data.size()==idata+1 ); - std::vector<std::string> argument_names( getNumberOfArguments() ); - for(unsigned i=0;i<getNumberOfArguments();++i) argument_names[i] = getPntrToArgument(i)->getName(); - data[idata]->setNamesAndAtomNumbers( getAbsoluteIndexes(), argument_names ); - data[idata]->setReferenceConfig( getPositions(), current_args, mymetric ); - logweights.push_back(ww); + data[idata]->set( mypdb ); logweights.push_back(ww); } else { // Get the arguments and store them in a vector of vectors - data[idata]->setReferenceConfig( getPositions(), current_args, mymetric ); - logweights[idata] = ww; + // We have to clear all properties from previous analyses prior to setting the data + data[idata]->clearAllProperties(); data[idata]->set( mypdb ); logweights[idata] = ww; } // Write data to checkpoint file diff --git a/src/analysis/AnalysisWithDataCollection.h b/src/analysis/AnalysisWithDataCollection.h index 2a54464db..97ec59d8e 100644 --- a/src/analysis/AnalysisWithDataCollection.h +++ b/src/analysis/AnalysisWithDataCollection.h @@ -23,6 +23,7 @@ #define __PLUMED_analysis_AnalysisWithDataCollection_h #include "AnalysisBase.h" +#include "tools/PDB.h" namespace PLMD { @@ -52,8 +53,9 @@ private: bool firstAnalysisDone; /// The value of the old normalization constant double norm, old_norm; -/// List of argument names - std::vector<std::string> argument_names; +/// Data is collected from the trajectory by passing it to this pdb. These pdb +/// files are then read by the ReferenceConfigurations in data + PDB mypdb; /// The type of metric we are using to measure distances std::string metricname; /// The checkpoint file --- really I would like to get rid of this and have some universal mechanism and a single file GT @@ -88,7 +90,7 @@ public: /// Get the ith data point virtual void getDataPoint( const unsigned& idata, std::vector<double>& point, double& weight ) const ; /// Get a reference configuration (in dimensionality reduction this returns the projection) - virtual ReferenceConfiguration* getReferenceConfiguration( const unsigned& idat, bool& isprojection ); + virtual ReferenceConfiguration* getReferenceConfiguration( const unsigned& idat ); /// Get the underlying reference configuration (in dimensionality reduction this return the high dimensional point) ReferenceConfiguration* getInputReferenceConfiguration( const unsigned& idat ); /// This ensures that the energy is stored if we are reweighting diff --git a/src/analysis/EuclideanDissimilarityMatrix.cpp b/src/analysis/EuclideanDissimilarityMatrix.cpp index 2e5cd733e..d8d8ac568 100644 --- a/src/analysis/EuclideanDissimilarityMatrix.cpp +++ b/src/analysis/EuclideanDissimilarityMatrix.cpp @@ -73,8 +73,7 @@ double EuclideanDissimilarityMatrix::getDissimilarity( const unsigned& iframe, c plumed_dbg_assert( iframe<dissimilarities.nrows() && jframe<dissimilarities.ncols() ); if( dissimilarities(iframe,jframe)>0. ){ return dissimilarities(iframe,jframe); } if( iframe!=jframe ){ - bool ignore; - dissimilarities(iframe,jframe) = dissimilarities(jframe,iframe) = distance( getPbc(), getArguments(), getReferenceConfiguration(iframe,ignore), getReferenceConfiguration(jframe,ignore), true ); + dissimilarities(iframe,jframe) = dissimilarities(jframe,iframe) = distance( getPbc(), getArguments(), getReferenceConfiguration(iframe), getReferenceConfiguration(jframe), true ); return dissimilarities(iframe,jframe); } return 0.0; diff --git a/src/analysis/LandmarkSelectionBase.h b/src/analysis/LandmarkSelectionBase.h index 5a91ffe6f..09d565545 100644 --- a/src/analysis/LandmarkSelectionBase.h +++ b/src/analysis/LandmarkSelectionBase.h @@ -54,7 +54,7 @@ public: /// Get the ith data point void getDataPoint( const unsigned& idata, std::vector<double>& point, double& weight ) const ; /// Get a reference configuration - ReferenceConfiguration* getReferenceConfiguration( const unsigned& idat, bool& isprojection ); + ReferenceConfiguration* getReferenceConfiguration( const unsigned& idat ); /// Select landmark configurations void performAnalysis(); virtual void selectLandmarks()=0; @@ -85,8 +85,8 @@ void LandmarkSelectionBase::getDataPoint( const unsigned& idata, std::vector<dou } inline -ReferenceConfiguration* LandmarkSelectionBase::getReferenceConfiguration( const unsigned& idat, bool& isprojection ){ - return AnalysisWithDataCollection::getReferenceConfiguration( landmark_indices[idat], isprojection ); +ReferenceConfiguration* LandmarkSelectionBase::getReferenceConfiguration( const unsigned& idat ){ + return AnalysisWithDataCollection::getReferenceConfiguration( landmark_indices[idat] ); } inline diff --git a/src/analysis/OutputColvarFile.cpp b/src/analysis/OutputColvarFile.cpp index df589e265..fe56fc3d0 100644 --- a/src/analysis/OutputColvarFile.cpp +++ b/src/analysis/OutputColvarFile.cpp @@ -88,17 +88,21 @@ void OutputColvarFile::performAnalysis(){ gfile.fmtField(fmt+" "); gfile.open( filename.c_str() ); - // Can't print out all landmark data if we have reference atom positions - bool ignore; - ReferenceAtoms* myat=dynamic_cast<ReferenceAtoms*>( getReferenceConfiguration(0,ignore) ); - plumed_assert( !myat ); - + ReferenceConfiguration* myp = getReferenceConfiguration(0); + if( myp->getNumberOfProperties()==0 ) plumed_assert( !dynamic_cast<ReferenceAtoms*>( myp ) ); + // Print embedding coordinates for(unsigned i=0;i<getNumberOfDataPoints();++i){ - ReferenceArguments* myref=dynamic_cast<ReferenceArguments*>( getReferenceConfiguration(i,ignore) ); - plumed_assert( myref ); - for(unsigned j=0;j<myref->getReferenceArguments().size();++j){ - gfile.printField( myref->getArgumentNames()[j], myref->getReferenceArgument(j) ); + ReferenceConfiguration* mypoint=getReferenceConfiguration(i); + for(unsigned j=0;j<mypoint->getNumberOfProperties();++j){ + gfile.printField( mypoint->getPropertyName(j), mypoint->getPropertyValue(j) ); + } + if( mypoint->getNumberOfProperties()==0 ){ + ReferenceArguments* myref=dynamic_cast<ReferenceArguments*>( mypoint ); + plumed_assert( myref ); + for(unsigned j=0;j<myref->getReferenceArguments().size();++j){ + gfile.printField( myref->getArgumentNames()[j], myref->getReferenceArgument(j) ); + } } gfile.printField(); } diff --git a/src/analysis/OutputPDBFile.cpp b/src/analysis/OutputPDBFile.cpp index 6112115e1..ae0fa1db6 100644 --- a/src/analysis/OutputPDBFile.cpp +++ b/src/analysis/OutputPDBFile.cpp @@ -77,18 +77,12 @@ fmt("%f") void OutputPDBFile::performAnalysis(){ // Output the embedding in plumed pdb format OFile afile; afile.link(*this); afile.setBackupString("analysis"); std::size_t psign=fmt.find("%"); - afile.open( filename.c_str() ); bool isprojection; std::string descr="REMARK WEIGHT=%-" + fmt.substr(psign+1) + "\n"; + afile.open( filename.c_str() ); std::string descr="REMARK WEIGHT=%-" + fmt.substr(psign+1) + "\n"; for(unsigned j=0;j<getNumberOfDataPoints();++j){ afile.printf("DESCRIPTION: analysis data from calculation done at time %f \n",getLabel().c_str(),getTime() ); afile.printf(descr.c_str(),getWeight(j) ); - ReferenceConfiguration* myref = getReferenceConfiguration(j,isprojection); - if( plumed.getAtoms().usingNaturalUnits() ) myref->print( 1.0, afile, fmt, isprojection ); - else myref->print( plumed.getAtoms().getUnits().getLength()/0.1, afile, fmt, isprojection ); - // This ensures the high dimensional position is projected if we are working with dimensionality reduction - if( isprojection ){ - if( plumed.getAtoms().usingNaturalUnits() ) getInputReferenceConfiguration(j)->print( 1.0, afile, fmt, false ); - else getInputReferenceConfiguration(j)->print( plumed.getAtoms().getUnits().getLength()/0.1, afile, fmt, false ); - } + if( plumed.getAtoms().usingNaturalUnits() ) getReferenceConfiguration(j)->print( 1.0, afile, fmt ); + else getReferenceConfiguration(j)->print( plumed.getAtoms().getUnits().getLength()/0.1, afile, fmt ); } afile.close(); } diff --git a/src/analysis/ReadDissimilarityMatrix.cpp b/src/analysis/ReadDissimilarityMatrix.cpp index 03df61abb..7dec6c1dd 100644 --- a/src/analysis/ReadDissimilarityMatrix.cpp +++ b/src/analysis/ReadDissimilarityMatrix.cpp @@ -48,7 +48,7 @@ public: ReadDissimilarityMatrix( const ActionOptions& ao ); unsigned getNumberOfDataPoints() const { return nnodes; } /// This gives an error as if we read in the matrix we dont have the coordinates - ReferenceConfiguration* getReferenceConfiguration( const unsigned& idata, bool& isprojection ); + ReferenceConfiguration* getReferenceConfiguration( const unsigned& idata ); ReferenceConfiguration* getInputReferenceConfiguration( const unsigned& idata ); /// This gives an error as if we read in the matrix we dont have the coordinates void getDataPoint( const unsigned& idata, std::vector<double>& point, double& weight ) const ; @@ -124,7 +124,7 @@ double ReadDissimilarityMatrix::getDissimilarity( const unsigned& iframe, const return dissimilarities( iframe, jframe ); } -ReferenceConfiguration* ReadDissimilarityMatrix::getReferenceConfiguration( const unsigned& idata, bool& isprojection ){ +ReferenceConfiguration* ReadDissimilarityMatrix::getReferenceConfiguration( const unsigned& idata ){ plumed_merror("cannot get reference configurations from read in dissimilarity matrix"); return NULL; } diff --git a/src/dimred/DimensionalityReductionBase.cpp b/src/dimred/DimensionalityReductionBase.cpp index 505bbe4bb..364695734 100644 --- a/src/dimred/DimensionalityReductionBase.cpp +++ b/src/dimred/DimensionalityReductionBase.cpp @@ -21,7 +21,6 @@ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */ #include "DimensionalityReductionBase.h" #include "reference/ReferenceConfiguration.h" -#include "reference/MetricRegister.h" #include "core/PlumedMain.h" #include "core/Atoms.h" @@ -36,7 +35,6 @@ void DimensionalityReductionBase::registerKeywords( Keywords& keys ){ DimensionalityReductionBase::DimensionalityReductionBase( const ActionOptions& ao ): Action(ao), analysis::AnalysisBase(ao), -myref(NULL), dimredbase(NULL) { // Check that some dissimilarity information is available @@ -52,23 +50,12 @@ dimredbase(NULL) if( nlow<1 ) error("dimensionality of low dimensional space must be at least one"); } log.printf(" projecting in %d dimensional space \n",nlow); - - ReferenceConfigurationOptions("EUCLIDEAN"); - myref=metricRegister().create<ReferenceConfiguration>("EUCLIDEAN"); - std::vector<std::string> dimnames(nlow); std::string num; - for(unsigned i=0;i<nlow;++i){ Tools::convert(i+1,num); dimnames[i] = getLabel() + "." + num; } - myref->setNamesAndAtomNumbers( std::vector<AtomNumber>(), dimnames ); -} - -DimensionalityReductionBase::~DimensionalityReductionBase(){ - delete myref; } -ReferenceConfiguration* DimensionalityReductionBase::getReferenceConfiguration( const unsigned& idat, bool& isprojection ){ - std::vector<double> pp(nlow); for(unsigned i=0;i<nlow;++i) pp[i]=projections(idat,i); - std::vector<double> empty( pp.size() ); isprojection=true; - myref->setReferenceConfig( std::vector<Vector>(), pp, empty ); - return myref; +ReferenceConfiguration* DimensionalityReductionBase::getReferenceConfiguration( const unsigned& idat ){ + ReferenceConfiguration* myref = mydata->getInputReferenceConfiguration( idat ); std::string num; myref->clearAllProperties(); + for(unsigned i=0;i<nlow;++i){ Tools::convert(i+1,num); myref->attachProperty( getLabel() + "." + num, projections(idat,i) ); } + return myref; } ReferenceConfiguration* DimensionalityReductionBase::getInputReferenceConfiguration( const unsigned& idat ){ diff --git a/src/dimred/DimensionalityReductionBase.h b/src/dimred/DimensionalityReductionBase.h index 66725aa80..e06be9d81 100644 --- a/src/dimred/DimensionalityReductionBase.h +++ b/src/dimred/DimensionalityReductionBase.h @@ -34,9 +34,6 @@ private: /// This are the target distances for a single point. /// This is used when we do out of sample or pointwise global optimization std::vector<double> dtargets; -/// We create a reference configuration here so that we can pass projection data -/// quickly - ReferenceConfiguration* myref; /// The projections that were generated by the dimensionality reduction algorithm Matrix<double> projections; protected: @@ -47,11 +44,10 @@ protected: public: static void registerKeywords( Keywords& keys ); DimensionalityReductionBase( const ActionOptions& ); - ~DimensionalityReductionBase(); /// Get the ith data point (this returns the projection) void getDataPoint( const unsigned& idata, std::vector<double>& point, double& weight ) const ; /// Get a reference configuration (this returns the projection) - ReferenceConfiguration* getReferenceConfiguration( const unsigned& idata, bool& isprojection ); + ReferenceConfiguration* getReferenceConfiguration( const unsigned& idata ); ReferenceConfiguration* getInputReferenceConfiguration( const unsigned& idata ); /// Actually perform the analysis void performAnalysis(); diff --git a/src/dimred/ProjectNonLandmarkPoints.cpp b/src/dimred/ProjectNonLandmarkPoints.cpp index a606ffb31..0dc28f101 100644 --- a/src/dimred/ProjectNonLandmarkPoints.cpp +++ b/src/dimred/ProjectNonLandmarkPoints.cpp @@ -23,9 +23,9 @@ #include "core/PlumedMain.h" #include "core/ActionSet.h" #include "tools/Random.h" -#include "reference/MetricRegister.h" #include "tools/ConjugateGradient.h" #include "analysis/AnalysisBase.h" +#include "reference/ReferenceConfiguration.h" #include "DimensionalityReductionBase.h" //+PLUMEDOC DIMRED PROJECT_ALL_ANALYSIS_DATA @@ -46,22 +46,18 @@ private: double cgtol; /// Number of diemsions in low dimensional space unsigned nlow; -/// We create a reference configuration here so that we can pass projection data -/// quickly - ReferenceConfiguration* myref; /// The class that calcualtes the projection of the data that is required DimensionalityReductionBase* mybase; /// Generate a projection of the ith data point - this is called in two routine - void generateProjection( const unsigned& idata, std::vector<double>& point ); + void generateProjection( const unsigned& idat, std::vector<double>& point ); public: static void registerKeywords( Keywords& keys ); ProjectNonLandmarkPoints( const ActionOptions& ao ); - ~ProjectNonLandmarkPoints(); /// Get the ith data point (this returns the projection) - void getDataPoint( const unsigned& idata, std::vector<double>& point ); + void getDataPoint( const unsigned& idat, std::vector<double>& point ); /// Get a reference configuration (this returns the projection) - ReferenceConfiguration* getReferenceConfiguration( const unsigned& idata, bool& isprojection ); - ReferenceConfiguration* getInputReferenceConfiguration( const unsigned& idata ); + ReferenceConfiguration* getReferenceConfiguration( const unsigned& idat ); + ReferenceConfiguration* getInputReferenceConfiguration( const unsigned& idat ); /// This does nothing -- projections are calculated when getDataPoint and getReferenceConfiguration are called void performAnalysis(){} /// This just calls calculate stress in the underlying projection object @@ -92,24 +88,14 @@ mybase(NULL) log.printf(" generating out-of-sample projections using projection with label %s \n",myproj.c_str() ); parse("CGTOL",cgtol); - - ReferenceConfigurationOptions("EUCLIDEAN"); - myref=metricRegister().create<ReferenceConfiguration>("EUCLIDEAN"); - std::vector<std::string> dimnames(nlow); std::string num; - for(unsigned i=0;i<nlow;++i){ Tools::convert(i+1,num); dimnames[i] = getLabel() + "." + num; } - myref->setNamesAndAtomNumbers( std::vector<AtomNumber>(), dimnames ); -} - -ProjectNonLandmarkPoints::~ProjectNonLandmarkPoints(){ - delete myref; } -void ProjectNonLandmarkPoints::generateProjection( const unsigned& idata, std::vector<double>& point ){ +void ProjectNonLandmarkPoints::generateProjection( const unsigned& idat, std::vector<double>& point ){ ConjugateGradient<ProjectNonLandmarkPoints> myminimiser( this ); - unsigned closest=0; double mindist = sqrt( getDissimilarity( idata, mybase->getDataPointIndexInBase(0) ) ); + unsigned closest=0; double mindist = sqrt( getDissimilarity( idat, mybase->getDataPointIndexInBase(0) ) ); mybase->setTargetDistance( 0, mindist ); for(unsigned i=1;i<mybase->getNumberOfDataPoints();++i){ - double dist = sqrt( getDissimilarity( idata, mybase->getDataPointIndexInBase(i) ) ); + double dist = sqrt( getDissimilarity( idat, mybase->getDataPointIndexInBase(i) ) ); mybase->setTargetDistance( i, dist ); if( dist<mindist ){ mindist=dist; closest=i; } } @@ -119,19 +105,20 @@ void ProjectNonLandmarkPoints::generateProjection( const unsigned& idata, std::v myminimiser.minimise( cgtol, point, &ProjectNonLandmarkPoints::calculateStress ); } -ReferenceConfiguration* ProjectNonLandmarkPoints::getReferenceConfiguration( const unsigned& idata, bool& isprojection ){ - std::vector<double> pp(nlow); std::vector<double> empty( pp.size() ); generateProjection( idata, pp ); - myref->setReferenceConfig( std::vector<Vector>(), pp, empty ); isprojection=true; +ReferenceConfiguration* ProjectNonLandmarkPoints::getReferenceConfiguration( const unsigned& idat ){ + std::vector<double> pp(nlow); generateProjection( idat, pp ); std::string num; + ReferenceConfiguration* myref = mydata->getInputReferenceConfiguration( idat ); myref->clearAllProperties(); + for(unsigned i=0;i<nlow;++i){ Tools::convert(i+1,num); myref->attachProperty( getLabel() + "." + num, pp[i] ); } return myref; } -ReferenceConfiguration* ProjectNonLandmarkPoints::getInputReferenceConfiguration( const unsigned& idata ){ - return mydata->getInputReferenceConfiguration( idata ); +ReferenceConfiguration* ProjectNonLandmarkPoints::getInputReferenceConfiguration( const unsigned& idat ){ + return mydata->getInputReferenceConfiguration( idat ); } -void ProjectNonLandmarkPoints::getDataPoint( const unsigned& idata, std::vector<double>& point ){ +void ProjectNonLandmarkPoints::getDataPoint( const unsigned& idat, std::vector<double>& point ){ if( point.size()!=nlow ) point.resize( nlow ); - generateProjection( idata, point ); + generateProjection( idat, point ); } double ProjectNonLandmarkPoints::calculateStress( const std::vector<double>& pp, std::vector<double>& der ){ diff --git a/src/mapping/Mapping.cpp b/src/mapping/Mapping.cpp index b3ba5d58d..2a8fcaed3 100644 --- a/src/mapping/Mapping.cpp +++ b/src/mapping/Mapping.cpp @@ -106,9 +106,9 @@ ActionWithVessel(ao) requestAtoms( atoms ); std::vector<Value*> req_args; interpretArgumentList( args, req_args ); requestArguments( req_args ); // Duplicate all frames (duplicates are used by sketch-map) - mymap->duplicateFrameList(); + // mymap->duplicateFrameList(); // fframes.resize( 2*nfram, 0.0 ); dfframes.resize( 2*nfram, 0.0 ); - plumed_assert( !mymap->mappingNeedsSetup() ); + // plumed_assert( !mymap->mappingNeedsSetup() ); // Resize all derivative arrays // mymap->setNumberOfAtomsAndArguments( atoms.size(), args.size() ); // Resize forces array @@ -128,25 +128,25 @@ Mapping::~Mapping(){ delete mymap; } -void Mapping::prepare(){ - if( mymap->mappingNeedsSetup() ){ - // Get the arguments and atoms that are required - std::vector<AtomNumber> atoms; std::vector<std::string> args; - mymap->getAtomAndArgumentRequirements( atoms, args ); - requestAtoms( atoms ); std::vector<Value*> req_args; - interpretArgumentList( args, req_args ); requestArguments( req_args ); - // Duplicate all frames (duplicates are used by sketch-map) - mymap->duplicateFrameList(); - // Get the number of frames in the path - unsigned nfram=getNumberOfReferencePoints(); - // fframes.resize( 2*nfram, 0.0 ); dfframes.resize( 2*nfram, 0.0 ); - plumed_assert( !mymap->mappingNeedsSetup() ); - // Resize all derivative arrays - // mymap->setNumberOfAtomsAndArguments( atoms.size(), args.size() ); - // Resize forces array - forcesToApply.resize( 3*getNumberOfAtoms() + 9 + getNumberOfArguments() ); - } -} +// void Mapping::prepare(){ +// if( mymap->mappingNeedsSetup() ){ +// // Get the arguments and atoms that are required +// std::vector<AtomNumber> atoms; std::vector<std::string> args; +// mymap->getAtomAndArgumentRequirements( atoms, args ); +// requestAtoms( atoms ); std::vector<Value*> req_args; +// interpretArgumentList( args, req_args ); requestArguments( req_args ); +// // Duplicate all frames (duplicates are used by sketch-map) +// // mymap->duplicateFrameList(); +// // Get the number of frames in the path +// unsigned nfram=getNumberOfReferencePoints(); +// // fframes.resize( 2*nfram, 0.0 ); dfframes.resize( 2*nfram, 0.0 ); +// plumed_assert( !mymap->mappingNeedsSetup() ); +// // Resize all derivative arrays +// // mymap->setNumberOfAtomsAndArguments( atoms.size(), args.size() ); +// // Resize forces array +// forcesToApply.resize( 3*getNumberOfAtoms() + 9 + getNumberOfArguments() ); +// } +// } unsigned Mapping::getPropertyIndex( const std::string& name ) const { return mymap->getPropertyIndex( name ); diff --git a/src/mapping/Mapping.h b/src/mapping/Mapping.h index 855f91576..4fb4ea056 100644 --- a/src/mapping/Mapping.h +++ b/src/mapping/Mapping.h @@ -91,7 +91,7 @@ public: /// Get the value of the ith property for the current frame double getPropertyValue( const unsigned& current, const unsigned& iprop ) const ; /// Stuff to do before we do the calculation - void prepare(); +// void prepare(); /// Apply the forces void apply(); }; diff --git a/src/mapping/PCAVars.cpp b/src/mapping/PCAVars.cpp index aaf1ad0d1..928b1fbf6 100644 --- a/src/mapping/PCAVars.cpp +++ b/src/mapping/PCAVars.cpp @@ -274,8 +274,6 @@ mypack(0,0,myvals) /// This sets up all the storage data required by PCA in the pack myframes.getFrame(0)->setupPCAStorage( mypack ); - // Retrieve the position of the first frame, as we use this for alignment - myref->setNamesAndAtomNumbers( atoms, args ); // Check there are no periodic arguments for(unsigned i=0;i<getNumberOfArguments();++i){ if( getPntrToArgument(i)->isPeriodic() ) error("cannot use periodic variables in pca projections"); diff --git a/src/reference/MultiDomainRMSD.cpp b/src/reference/MultiDomainRMSD.cpp index c87317502..b9e1eca5b 100644 --- a/src/reference/MultiDomainRMSD.cpp +++ b/src/reference/MultiDomainRMSD.cpp @@ -79,7 +79,8 @@ void MultiDomainRMSD::read( const PDB& pdb ){ else weights.push_back( ww ); } // And set the atom numbers for this object - setAtomNumbers( pdb.getAtomNumbers() ); + for(unsigned i=0;i<pdb.size();++i){ indices.push_back( pdb.getAtomNumbers()[i] ); der_index.push_back(i); } + // setAtomNumbers( pdb.getAtomNumbers() ); } void MultiDomainRMSD::setReferenceAtoms( const std::vector<Vector>& conf, const std::vector<double>& align_in, const std::vector<double>& displace_in ){ diff --git a/src/reference/MultiReferenceBase.cpp b/src/reference/MultiReferenceBase.cpp index fcfdd2337..cd2ed45d0 100644 --- a/src/reference/MultiReferenceBase.cpp +++ b/src/reference/MultiReferenceBase.cpp @@ -70,20 +70,20 @@ void MultiReferenceBase::getAtomAndArgumentRequirements( std::vector<AtomNumber> // } // } -void MultiReferenceBase::copyFrame( ReferenceConfiguration* frameToCopy ){ - // Create a reference configuration of the appropriate type - ReferenceConfiguration* mymsd=metricRegister().create<ReferenceConfiguration>( frameToCopy->getName() ); - // Copy names of arguments and and indexes - mymsd->setNamesAndAtomNumbers( frameToCopy->getAbsoluteIndexes(), frameToCopy->getArgumentNames() ); - // Copy reference positions, reference arguments and reference metric - mymsd->setReferenceConfig( frameToCopy->getReferencePositions(), frameToCopy->getReferenceArguments(), frameToCopy->getReferenceMetric() ); - // Copy weight - mymsd->setWeight( frameToCopy->getWeight() ); - // Easy bit - copy the frame - frames.push_back( mymsd ); - // This resizes the low dim array - resizeRestOfFrame(); -} +// void MultiReferenceBase::copyFrame( ReferenceConfiguration* frameToCopy ){ +// // Create a reference configuration of the appropriate type +// ReferenceConfiguration* mymsd=metricRegister().create<ReferenceConfiguration>( frameToCopy->getName() ); +// // Copy names of arguments and and indexes +// mymsd->setNamesAndAtomNumbers( frameToCopy->getAbsoluteIndexes(), frameToCopy->getArgumentNames() ); +// // Copy reference positions, reference arguments and reference metric +// mymsd->setReferenceConfig( frameToCopy->getReferencePositions(), frameToCopy->getReferenceArguments(), frameToCopy->getReferenceMetric() ); +// // Copy weight +// mymsd->setWeight( frameToCopy->getWeight() ); +// // Easy bit - copy the frame +// frames.push_back( mymsd ); +// // This resizes the low dim array +// resizeRestOfFrame(); +// } void MultiReferenceBase::setWeights( const std::vector<double>& weights ){ plumed_assert( weights.size()==frames.size() ); diff --git a/src/reference/MultiReferenceBase.h b/src/reference/MultiReferenceBase.h index fddb71530..0d2827133 100644 --- a/src/reference/MultiReferenceBase.h +++ b/src/reference/MultiReferenceBase.h @@ -66,7 +66,7 @@ public: /// Return the ith reference frame ReferenceConfiguration* getFrame( const unsigned& iframe ); /// Copy a reference configuration into the multi reference object - void copyFrame( ReferenceConfiguration* frameToCopy ); +// void copyFrame( ReferenceConfiguration* frameToCopy ); /// Set the weight of the ith frame void setWeights( const std::vector<double>& ww ); /// Retrieve the weight of one of the frames diff --git a/src/reference/ReferenceArguments.cpp b/src/reference/ReferenceArguments.cpp index 50cb45786..a9bc45727 100644 --- a/src/reference/ReferenceArguments.cpp +++ b/src/reference/ReferenceArguments.cpp @@ -38,8 +38,8 @@ void ReferenceArguments::readArgumentsFromPDB( const PDB& pdb ){ if( !aref ) parseVector( "ARG", arg_names ); else parseVector( "ARG", arg_names, true ); - reference_args.resize( arg_names.size() ); - for(unsigned i=0;i<arg_names.size();++i) parse( arg_names[i], reference_args[i] ); + reference_args.resize( arg_names.size() ); der_index.resize( arg_names.size() ); + for(unsigned i=0;i<arg_names.size();++i){ parse( arg_names[i], reference_args[i] ); der_index[i]=i; } if( hasweights ){ plumed_massert( !hasmetric, "should not have weights if we are using metric"); @@ -62,17 +62,6 @@ void ReferenceArguments::readArgumentsFromPDB( const PDB& pdb ){ } } -void ReferenceArguments::setArgumentNames( const std::vector<std::string>& arg_vals ){ - reference_args.resize( arg_vals.size() ); - arg_names.resize( arg_vals.size() ); - der_index.resize( arg_vals.size() ); - for(unsigned i=0;i<arg_vals.size();++i){ - arg_names[i]=arg_vals[i]; der_index[i]=i; - } - if( hasmetric ) metric.resize( arg_vals.size(), arg_vals.size() ); - else weights.resize( arg_vals.size() ); -} - void ReferenceArguments::setReferenceArguments( const std::vector<double>& arg_vals, const std::vector<double>& sigma ){ plumed_dbg_assert( reference_args.size()==arg_vals.size() ); for(unsigned i=0;i<arg_vals.size();++i) reference_args[i]=arg_vals[i]; @@ -120,9 +109,8 @@ void ReferenceArguments::getArgumentRequests( std::vector<std::string>& argout, } } -void ReferenceArguments::printArguments( OFile& ofile, const std::string& fmt, const bool& isproperty ) const { - if( isproperty ) ofile.printf("REMARK PROPERTIES=%s", arg_names[0].c_str() ); - else ofile.printf("REMARK ARG=%s", arg_names[0].c_str() ); +void ReferenceArguments::printArguments( OFile& ofile, const std::string& fmt ) const { + ofile.printf("REMARK ARG=%s", arg_names[0].c_str() ); for(unsigned i=1;i<arg_names.size();++i) ofile.printf(",%s", arg_names[i].c_str() ); ofile.printf("\n"); ofile.printf("REMARK "); diff --git a/src/reference/ReferenceArguments.h b/src/reference/ReferenceArguments.h index d1fc4db14..0663aa44b 100644 --- a/src/reference/ReferenceArguments.h +++ b/src/reference/ReferenceArguments.h @@ -73,14 +73,12 @@ public: unsigned getNumberOfReferenceArguments() const ; /// Get the arguments required void getArgumentRequests( std::vector<std::string>&, bool disable_checks=false ); -/// Set the names of the arguments - void setArgumentNames( const std::vector<std::string>& arg_vals ); /// Set the positions of the refernce arguments void setReferenceArguments( const std::vector<double>& arg_vals, const std::vector<double>& sigma ); /// Get the value of the ith reference argument double getReferenceArgument( const unsigned& i ) const ; /// Print the arguments out - void printArguments( OFile& ofile, const std::string& fmt, const bool& isproperty ) const ; + void printArguments( OFile& ofile, const std::string& fmt ) const ; /// Return all the reference arguments const std::vector<double>& getReferenceArguments(); const std::vector<double>& getReferenceMetric(); diff --git a/src/reference/ReferenceAtoms.cpp b/src/reference/ReferenceAtoms.cpp index c28dc682e..b97f2d4cb 100644 --- a/src/reference/ReferenceAtoms.cpp +++ b/src/reference/ReferenceAtoms.cpp @@ -36,17 +36,7 @@ void ReferenceAtoms::readAtomsFromPDB( const PDB& pdb ){ for(unsigned i=0;i<pdb.size();++i){ indices.push_back( pdb.getAtomNumbers()[i] ); reference_atoms.push_back( pdb.getPositions()[i] ); - align.push_back( pdb.getOccupancy()[i] ); displace.push_back( pdb.getBeta()[i] ); - } - der_index.resize( reference_atoms.size() ); -} - -void ReferenceAtoms::setAtomNumbers( const std::vector<AtomNumber>& numbers ){ - reference_atoms.resize( numbers.size() ); align.resize( numbers.size() ); - displace.resize( numbers.size() ); der_index.resize( numbers.size() ); - indices.resize( numbers.size() ); - for(unsigned i=0;i<numbers.size();++i){ - indices[i]=numbers[i]; der_index[i]=i; + align.push_back( pdb.getOccupancy()[i] ); displace.push_back( pdb.getBeta()[i] ); der_index.push_back(i); } } diff --git a/src/reference/ReferenceAtoms.h b/src/reference/ReferenceAtoms.h index 5e7e0c12e..6fc17ced1 100644 --- a/src/reference/ReferenceAtoms.h +++ b/src/reference/ReferenceAtoms.h @@ -45,6 +45,7 @@ class ReferenceAtoms : virtual public ReferenceConfiguration { friend class SingleDomainRMSD; +friend class MultiDomainRMSD; private: /// This flag tells us if the user has disabled checking of the input in order to /// do fancy paths with weird inputs @@ -64,8 +65,6 @@ private: protected: /// Read in the atoms from the pdb file void readAtomsFromPDB( const PDB& ); -/// Add atom indices to list - void setAtomIndices( const std::vector<AtomNumber>& atomnumbers ); /// Read a list of atoms from the pdb input file bool parseAtomList( const std::string& , std::vector<unsigned>& ); /// Get the vector of alignment weights @@ -76,12 +75,6 @@ protected: Vector getReferencePosition( const unsigned& iatom ) const ; /// Get the reference positions const std::vector<Vector> & getReferencePositions() const ; -/// Add derivatives to iatom th atom in list -// void addAtomicDerivatives( const unsigned& , const Vector& ); -/// Get the atomic derivatives on the ith atom in the list -// Vector retrieveAtomicDerivatives( const unsigned& ) const ; -/// Add derivatives to the viral -// void addBoxDerivatives( const Tensor& ); /// This does the checks that are always required void singleDomainRequests( std::vector<AtomNumber>&, bool disable_checks ); public: @@ -92,8 +85,6 @@ public: unsigned getAtomIndex( const unsigned& ) const ; /// Get the atoms required (additional checks are required when we have multiple domains) virtual void getAtomRequests( std::vector<AtomNumber>&, bool disable_checks=false ); -/// Set the indices of the reference atoms - void setAtomNumbers( const std::vector<AtomNumber>& numbers ); /// Set the positions of the reference atoms virtual void setReferenceAtoms( const std::vector<Vector>& conf, const std::vector<double>& align_in, const std::vector<double>& displace_in )=0; /// Print the atomic positions @@ -116,13 +107,12 @@ const std::vector<double> & ReferenceAtoms::getDisplace() const { inline unsigned ReferenceAtoms::getNumberOfReferencePositions() const { - plumed_dbg_assert( der_index.size()==reference_atoms.size() ); - return reference_atoms.size(); + return der_index.size(); // reference_atoms.size(); } inline unsigned ReferenceAtoms::getNumberOfAtoms() const { - return reference_atoms.size(); + return der_index.size(); // reference_atoms.size(); } inline @@ -143,21 +133,6 @@ const std::vector<Vector> & ReferenceAtoms::getReferencePositions() const { return reference_atoms; } -// inline -// void ReferenceAtoms::addAtomicDerivatives( const unsigned& iatom, const Vector& der ){ -// atom_ders[ getAtomIndex(iatom) ]+=der; -// } - -// inline -// Vector ReferenceAtoms::retrieveAtomicDerivatives( const unsigned& iatom ) const { -// return atom_ders[ getAtomIndex(iatom) ]; -// } - -// inline -// void ReferenceAtoms::addBoxDerivatives( const Tensor& vir ){ -// virialWasSet=true; virial+=vir; -// } - inline const std::vector<AtomNumber>& ReferenceAtoms::getAbsoluteIndexes(){ return indices; diff --git a/src/reference/ReferenceConfiguration.cpp b/src/reference/ReferenceConfiguration.cpp index b20e9b9bc..8e0949995 100644 --- a/src/reference/ReferenceConfiguration.cpp +++ b/src/reference/ReferenceConfiguration.cpp @@ -45,8 +45,6 @@ std::string ReferenceConfigurationOptions::getMultiRMSDType() const { ReferenceConfiguration::ReferenceConfiguration( const ReferenceConfigurationOptions& ro ): name(ro.tt) -// arg_ders(0), -// atom_ders(0) { weight=0.0; } @@ -66,22 +64,14 @@ void ReferenceConfiguration::set( const PDB& pdb ){ if(ignore!=name) error("mismatch for name"); } if( !parse("WEIGHT",weight,true) ) weight=1.0; + // Read in properties + parseVector( "PROPERTIES", property_names, true ); + property_values.resize( property_names.size() ); + for(unsigned i=0;i<property_names.size();++i) parse( property_names[i], property_values[i] ); + // And read in rest of pdb read( pdb ); } -// void ReferenceConfiguration::setNumberOfArguments( const unsigned& n ){ -// arg_ders.resize(n); tmparg.resize(n); -// } - -// void ReferenceConfiguration::setNumberOfAtoms( const unsigned& n ){ -// atom_ders.resize(n); -// } - -// bool ReferenceConfiguration::getVirial( Tensor& virout ) const { -// if(virialWasSet) virout=virial; -// return virialWasSet; -// } - void ReferenceConfiguration::parseFlag( const std::string&key, bool&t ){ Tools::parseFlag(line,key,t); } @@ -90,45 +80,6 @@ void ReferenceConfiguration::error(const std::string& msg){ plumed_merror("error reading reference configuration of type " + name + " : " + msg ); } -void ReferenceConfiguration::setNamesAndAtomNumbers( const std::vector<AtomNumber>& numbers, const std::vector<std::string>& arg ){ - ReferenceAtoms* atoms=dynamic_cast<ReferenceAtoms*>( this ); - if(!atoms){ - plumed_massert( numbers.size()==0, "expecting no atomic positions"); - //setNumberOfAtoms( 0 ); - } else { - atoms->setAtomNumbers( numbers ); - // setNumberOfAtoms( numbers.size() ); - } - // Copy the arguments to the reference - ReferenceArguments* args=dynamic_cast<ReferenceArguments*>( this ); - if(!args){ - plumed_massert( arg.size()==0, "expecting no arguments"); - // setNumberOfArguments(0); - } else { - args->setArgumentNames( arg ); - // setNumberOfArguments( arg.size() ); - } -} - -void ReferenceConfiguration::setReferenceConfig( const std::vector<Vector>& pos, const std::vector<double>& arg, const std::vector<double>& metric ){ -// plumed_dbg_assert( pos.size()==atom_ders.size() && arg.size()==arg_ders.size() ); - // Copy the atomic positions to the reference - ReferenceAtoms* atoms=dynamic_cast<ReferenceAtoms*>( this ); - if(!atoms){ - plumed_massert( pos.size()==0, "expecting no atomic positions"); - } else { - std::vector<double> align_in( pos.size(), 1.0 ), displace_in( pos.size(), 1.0 ); - atoms->setReferenceAtoms( pos, align_in, displace_in ); - } - // Copy the arguments to the reference - ReferenceArguments* args=dynamic_cast<ReferenceArguments*>( this ); - if(!args){ - plumed_massert( arg.size()==0 && metric.size()==0, "expecting no arguments"); - } else { - args->setReferenceArguments( arg, metric ); - } -} - void ReferenceConfiguration::checkRead(){ if(!line.empty()){ std::string msg="cannot understand the following words from the input line : "; @@ -143,31 +94,50 @@ bool ReferenceConfiguration::isDirection() const { double ReferenceConfiguration::calculate( const std::vector<Vector>& pos, const Pbc& pbc, const std::vector<Value*>& vals, ReferenceValuePack& myder, const bool& squared ) const { - // clearDerivatives(); std::vector<double> tmparg( vals.size() ); for(unsigned i=0;i<vals.size();++i) tmparg[i]=vals[i]->get(); return calc( pos, pbc, vals, tmparg, myder, squared ); } -// void ReferenceConfiguration::copyDerivatives( const ReferenceConfiguration* ref ){ -// plumed_dbg_assert( ref->atom_ders.size()==atom_ders.size() && ref->arg_ders.size()==arg_ders.size() ); -// for(unsigned i=0;i<atom_ders.size();++i) atom_ders[i]=ref->atom_ders[i]; -// for(unsigned i=0;i<arg_ders.size();++i) arg_ders[i]=ref->arg_ders[i]; -// virialWasSet=ref->virialWasSet; virial=ref->virial; -// } - void ReferenceConfiguration::print( const double& lunits, OFile& ofile, const double& time, const double& weight, const double& old_norm ){ ofile.printf("REMARK TIME=%f LOG_WEIGHT=%f OLD_NORM=%f\n",time, weight, old_norm ); - print( lunits, ofile, "%f", false ); // HARD CODED FORMAT HERE AS THIS IS FOR CHECKPOINT FILE + print( lunits, ofile, "%f" ); // HARD CODED FORMAT HERE AS THIS IS FOR CHECKPOINT FILE } -void ReferenceConfiguration::print( const double& lunits, OFile& ofile, const std::string& fmt, const bool& isproperty ){ +void ReferenceConfiguration::print( const double& lunits, OFile& ofile, const std::string& fmt ){ ReferenceArguments* args=dynamic_cast<ReferenceArguments*>(this); - if(args) args->printArguments( ofile, fmt, isproperty ); + if( property_names.size()>0 ){ + ofile.printf("REMARK PROPERTIES=%s", property_names[0].c_str() ); + for(unsigned i=1;i<property_names.size();++i) ofile.printf(",%s", property_names[i].c_str() ); + ofile.printf("\nREMARK "); std::string descr2; + if(fmt.find("-")!=std::string::npos){ + descr2="%s=" + fmt + " "; + } else { + // This ensures numbers are left justified (i.e. next to the equals sign + std::size_t psign=fmt.find("%"); + plumed_assert( psign!=std::string::npos ); + descr2="%s=%-" + fmt.substr(psign+1) + " "; + } + for(unsigned i=0;i<property_names.size();++i) ofile.printf( descr2.c_str(),property_names[i].c_str(), property_values[i] ); + ofile.printf("\n"); + } + if(args) args->printArguments( ofile, fmt ); ReferenceAtoms* atoms=dynamic_cast<ReferenceAtoms*>(this); - if( atoms && isproperty ) plumed_merror("a set of atoms is not a list of properties"); if(atoms) atoms->printAtoms( lunits, ofile ); - if( !isproperty ) ofile.printf("END\n"); + ofile.printf("END\n"); +} + +void ReferenceConfiguration::clearAllProperties(){ + property_names.resize(0); property_values.resize(0); +} + +void ReferenceConfiguration::attachProperty( const std::string& name, const double& val ){ + bool found=false; + for(unsigned i=0;i<property_names.size();++i){ + if( property_names[i]==name ){ found=false; property_values[i]=val; break; } + } + plumed_dbg_assert( property_names.size()==property_values.size() ); + if( !found ){ property_names.push_back( name ); property_values.push_back( val ); } } double distance( const Pbc& pbc, const std::vector<Value*> & vals, ReferenceConfiguration* ref1, ReferenceConfiguration* ref2, const bool& squared ){ @@ -185,4 +155,5 @@ double distance( const Pbc& pbc, const std::vector<Value*> & vals, ReferenceConf return dist1; } + } diff --git a/src/reference/ReferenceConfiguration.h b/src/reference/ReferenceConfiguration.h index a94a010df..0dd4ce0f9 100644 --- a/src/reference/ReferenceConfiguration.h +++ b/src/reference/ReferenceConfiguration.h @@ -66,8 +66,6 @@ private: double weight; /// A vector containing all the remarks from the pdb input std::vector<std::string> line; -/// This is used to store the values of arguments -// std::vector<double> tmparg; /// These are used to do fake things when we copy frames std::vector<AtomNumber> fake_atom_numbers; std::vector<std::string> fake_arg_names; @@ -75,18 +73,12 @@ private: std::vector<Vector> fake_refatoms; std::vector<double> fake_refargs; std::vector<double> fake_metric; +/// Property values are basically the projections of points + std::vector<std::string> property_names; + std::vector<double> property_values; protected: -/// Derivatives wrt to the arguments -// std::vector<double> arg_ders; -/// The virial contribution has to be stored -// bool virialWasSet; -// Tensor virial; -/// Derivatives wrt to the atoms -// std::vector<Vector> atom_ders; /// Crash with an error void error(const std::string& msg); -/// Clear the derivatives -// void clearDerivatives(); public: ReferenceConfiguration( const ReferenceConfigurationOptions& ro ); /// Destructor @@ -100,10 +92,6 @@ public: virtual void getAtomRequests( std::vector<AtomNumber>&, bool disable_checks=false ){} /// Retrieve the arguments that are required for this guy virtual void getArgumentRequests( std::vector<std::string>&, bool disable_checks=false ){} -/// Set the final number of arguments -// virtual void setNumberOfArguments( const unsigned& ); -/// Set the final number of atoms -// virtual void setNumberOfAtoms( const unsigned& ); /// Set the reference configuration using a PDB virtual void set( const PDB& ); /// Do all local business for setting the configuration @@ -117,14 +105,6 @@ public: /// Calculate the distance from the reference configuration virtual double calc( const std::vector<Vector>& pos, const Pbc& pbc, const std::vector<Value*>& vals, const std::vector<double>& args, ReferenceValuePack& myder, const bool& squared ) const=0; -// /// Return the derivative wrt to the ith atom -// Vector getAtomDerivative( const unsigned& ) const ; -// /// Return the derivative wrt to the ith argument -// double getArgumentDerivative( const unsigned& ) const ; -/// Return the derivatives of the distance wrt the cell vectors. This returns false -/// for everything other than DRMSD as these sort of calculations have to be done -/// separately when you use RMSD -// bool getVirial( Tensor& virout ) const ; /// Parse something from the pdb remarks template<class T> bool parse( const std::string&key, T&t, bool ignore_missing=false ); @@ -137,13 +117,9 @@ public: void checkRead(); /// Copy derivatives from one frame to this frame void copyDerivatives( const ReferenceConfiguration* ); -/// Set the atom numbers and the argument names - void setNamesAndAtomNumbers( const std::vector<AtomNumber>& numbers, const std::vector<std::string>& arg ); -/// Set the reference structure (perhaps should also pass the pbc and align and displace ) - void setReferenceConfig( const std::vector<Vector>& pos, const std::vector<double>& arg, const std::vector<double>& metric ); /// Print a pdb file containing the reference configuration void print( const double& lunits, OFile& ofile, const double& time, const double& weight, const double& old_norm ); - void print( const double& lunits, OFile& ofile, const std::string& fmt, const bool& isproperty ); + void print( const double& lunits, OFile& ofile, const std::string& fmt ); /// Get one of the referene arguments virtual double getReferenceArgument( const unsigned& i ) const { plumed_error(); return 0.0; } /// These are overwritten in ReferenceArguments and ReferenceAtoms but are required here @@ -163,20 +139,18 @@ public: bool isDirection() const ; /// Stuff to setup pca virtual void setupPCAStorage( ReferenceValuePack& mypack ){ plumed_error(); } +/// This clears the set of properties that have been attached to the file + void clearAllProperties(); +/// Attach a property to this reference configuration + void attachProperty( const std::string& name, const double& val ); +/// Get the number of properties that are stored in this object + unsigned getNumberOfProperties() const ; +/// Get the inum th property value + double getPropertyValue( const unsigned& inum ) const ; +/// Get the name of the inum th property value + std::string getPropertyName( const unsigned& inum ) const ; }; -// inline -// Vector ReferenceConfiguration::getAtomDerivative( const unsigned& ider ) const { -// plumed_dbg_assert( ider<atom_ders.size() ); -// return atom_ders[ider]; -// } - -// inline -// double ReferenceConfiguration::getArgumentDerivative( const unsigned& ider ) const { -// plumed_dbg_assert( ider<arg_ders.size() ); -// return arg_ders[ider]; -// } - inline void ReferenceConfiguration::setWeight( const double& ww ){ weight=ww; @@ -236,7 +210,20 @@ unsigned ReferenceConfiguration::getNumberOfReferenceArguments() const { return 0; } +inline +unsigned ReferenceConfiguration::getNumberOfProperties() const { + return property_values.size(); +} +inline +double ReferenceConfiguration::getPropertyValue( const unsigned& inum ) const { + plumed_dbg_assert( inum<property_values.size() ); return property_values[inum]; +} + +inline +std::string ReferenceConfiguration::getPropertyName( const unsigned& inum ) const { + plumed_dbg_assert( inum<property_names.size() ); return property_names[inum]; +} } #endif diff --git a/src/tools/PDB.cpp b/src/tools/PDB.cpp index f24146ed8..6f75869da 100644 --- a/src/tools/PDB.cpp +++ b/src/tools/PDB.cpp @@ -28,6 +28,38 @@ using namespace std; namespace PLMD{ +void PDB::setAtomNumbers( const std::vector<AtomNumber>& atoms ){ + positions.resize( atoms.size() ); occupancy.resize( atoms.size() ); + beta.resize( atoms.size() ); numbers.resize( atoms.size() ); + for(unsigned i=0;i<atoms.size();++i){ numbers[i]=atoms[i]; beta[i]=1.0; occupancy[i]=1.0; } +} + +void PDB::addArgumentNames( const std::vector<std::string>& argument_names ){ + std::string newrem = "ARG="+argument_names[0]; + for(unsigned i=1;i<argument_names.size();++i) newrem+="," + argument_names[i]; + remark.push_back( newrem ); + for(unsigned i=0;i<argument_names.size();++i) remark.push_back( argument_names[i] + "=0" ); +} + +void PDB::setAtomPositions( const std::vector<Vector>& pos ){ + plumed_dbg_assert( pos.size()==positions.size() ); + for(unsigned i=0;i<positions.size();++i) positions[i]=pos[i]; +} + +void PDB::setArgumentValue( const std::string& argname, const double& val ){ + bool replaced=false; std::string num; Tools::convert( val, num ); + for(unsigned i=0;i<remark.size();++i){ + if( remark[i].find(argname+"=")!=std::string::npos){ + remark[i]=argname + "=" + num; replaced=true; + } + } + plumed_assert( replaced ); +} + +void PDB::addBlockEnd( const unsigned& end ){ + block_ends.push_back( end ); +} + unsigned PDB::getNumberOfAtomBlocks()const{ return block_ends.size(); } diff --git a/src/tools/PDB.h b/src/tools/PDB.h index ef4589560..7c242fee9 100644 --- a/src/tools/PDB.h +++ b/src/tools/PDB.h @@ -98,6 +98,16 @@ public: /// Return the atom named aname from residue number resnum and chain. /// Chain=="*" matches any chain and makes it equivalent to getNamedAtomFromResidue. AtomNumber getNamedAtomFromResidueAndChain( const std::string& aname, const unsigned& resnum, const std::string& chain ) const; +/// This is used in PLMD::analysis::AnalysisWithDataCollection to add the sizes of the domains for PLMD::MultiRMSD + void addBlockEnd( const unsigned& end ); +/// This is used in PLMD::analysis::AnalysisWithDataCollection to add the names of the arguments + void addArgumentNames( const std::vector<std::string>& argument_names ); +/// This is used in PLMD::analysis::AnalysisWithDataCollection to add the numbers of the atoms + void setAtomNumbers( const std::vector<AtomNumber>& atoms ); +/// This is used in PLMD::analysis::AnalysisWithDataCollection to set the atom positions + void setAtomPositions( const std::vector<Vector>& pos ); +/// This is used in PLMD::analysis::AnalysisWithDataCollection to set the argument values + void setArgumentValue( const std::string& argname, const double& val ); /// Get the extents of the blocks containing the atoms const std::vector<unsigned> & getAtomBlockEnds() const ; /// Get the number of blocks of atoms in the pdb -- GitLab