|
| MergeTreePrincipalGeodesicsDecoding () |
|
template<class dataType > |
void | preprocessBarycenter (ftm::MergeTree< dataType > &barycenter) |
|
template<class dataType > |
void | processInputTrees (std::vector< ttk::ftm::MergeTree< dataType > > &inputTrees) |
|
template<class dataType > |
void | getGeodesicsMiddle (ftm::MergeTree< dataType > &barycenter, std::vector< std::vector< double * > > &vS, std::vector< std::vector< double * > > &v2s, size_t vSize, std::array< double, 2 > &middle) |
|
template<class dataType > |
void | computeGeodesicsDistance (std::vector< ttk::ftm::MergeTree< dataType > > &barycenters) |
|
template<class dataType > |
void | reconstruction (ftm::MergeTree< dataType > &barycenter, std::vector< ftm::MergeTree< dataType > > &inputTrees, std::vector< ftm::MergeTree< dataType > > &reconstructedTrees, std::vector< double > &reconstructionErrors, std::vector< std::vector< std::tuple< ftm::idNode, ftm::idNode, double > > > &recInputMatchings, std::vector< std::vector< std::tuple< ftm::idNode, ftm::idNode, double > > > &recBaryMatchings, bool isSecondInput=false) |
|
template<class dataType > |
void | constructGeodesicsTrees (ftm::MergeTree< dataType > &barycenter, std::vector< std::vector< ftm::MergeTree< dataType > > > &geodesicsTrees, bool isSecondInput=false) |
|
template<class dataType > |
void | constructGeodesicsEllipses (ftm::MergeTree< dataType > &barycenter, std::vector< ftm::MergeTree< dataType > > &geodesicsEllipses, bool isSecondInput=false) |
|
unsigned int | getNumberOfRectangles (unsigned int rectangleMultiplier=1) |
|
template<class dataType > |
void | constructGeodesicsRectangle (ftm::MergeTree< dataType > &barycenter, std::vector< ftm::MergeTree< dataType > > &geodesicsRectangle, unsigned int rectangleMultiplier=1, bool isSecondInput=false) |
|
template<class dataType > |
void | constructGeodesicsSurface (ftm::MergeTree< dataType > &barycenter, std::vector< ftm::MergeTree< dataType > > &geodesicsSurface, bool isSecondInput=false) |
|
| Debug () |
|
| ~Debug () override |
|
virtual int | setDebugLevel (const int &debugLevel) |
|
int | setWrapper (const Wrapper *wrapper) override |
|
int | printMsg (const std::string &msg, const debug::Priority &priority=debug::Priority::INFO, const debug::LineMode &lineMode=debug::LineMode::NEW, std::ostream &stream=std::cout) const |
|
int | printMsg (const std::vector< std::string > &msgs, const debug::Priority &priority=debug::Priority::INFO, const debug::LineMode &lineMode=debug::LineMode::NEW, std::ostream &stream=std::cout) const |
|
int | printErr (const std::string &msg, const debug::LineMode &lineMode=debug::LineMode::NEW, std::ostream &stream=std::cerr) const |
|
int | printWrn (const std::string &msg, const debug::LineMode &lineMode=debug::LineMode::NEW, std::ostream &stream=std::cerr) const |
|
int | printMsg (const std::string &msg, const double &progress, const double &time, const int &threads, const double &memory, const debug::LineMode &lineMode=debug::LineMode::NEW, const debug::Priority &priority=debug::Priority::PERFORMANCE, std::ostream &stream=std::cout) const |
|
int | printMsg (const std::string &msg, const double &progress, const double &time, const debug::LineMode &lineMode=debug::LineMode::NEW, const debug::Priority &priority=debug::Priority::PERFORMANCE, std::ostream &stream=std::cout) const |
|
int | printMsg (const std::string &msg, const double &progress, const double &time, const int &threads, const debug::LineMode &lineMode=debug::LineMode::NEW, const debug::Priority &priority=debug::Priority::PERFORMANCE, std::ostream &stream=std::cout) const |
|
int | printMsg (const std::string &msg, const double &progress, const debug::LineMode &lineMode=debug::LineMode::NEW, const debug::Priority &priority=debug::Priority::PERFORMANCE, std::ostream &stream=std::cout) const |
|
int | printMsg (const std::string &msg, const double &progress, const debug::Priority &priority, const debug::LineMode &lineMode=debug::LineMode::NEW, std::ostream &stream=std::cout) const |
|
int | printMsg (const std::vector< std::vector< std::string > > &rows, const debug::Priority &priority=debug::Priority::INFO, const bool hasHeader=true, const debug::LineMode &lineMode=debug::LineMode::NEW, std::ostream &stream=std::cout) const |
|
int | printMsg (const debug::Separator &separator, const debug::LineMode &lineMode=debug::LineMode::NEW, const debug::Priority &priority=debug::Priority::INFO, std::ostream &stream=std::cout) const |
|
int | printMsg (const debug::Separator &separator, const debug::Priority &priority, const debug::LineMode &lineMode=debug::LineMode::NEW, std::ostream &stream=std::cout) const |
|
int | printMsg (const std::string &msg, const debug::Separator &separator, const debug::LineMode &lineMode=debug::LineMode::NEW, const debug::Priority &priority=debug::Priority::INFO, std::ostream &stream=std::cout) const |
|
void | setDebugMsgPrefix (const std::string &prefix) |
|
| BaseClass () |
|
virtual | ~BaseClass ()=default |
|
int | getThreadNumber () const |
|
virtual int | setThreadNumber (const int threadNumber) |
|
| MergeTreePrincipalGeodesicsBase () |
|
template<class dataType > |
dataType | computeReconstructionError (ftm::MergeTree< dataType > &barycenter, std::vector< ftm::MergeTree< dataType > > &inputTrees, std::vector< std::vector< double * > > &vS, std::vector< std::vector< double * > > &v2s, size_t vSize, std::vector< std::vector< double > > &allTreesTs, std::vector< double > &reconstructionErrors, std::vector< std::vector< std::tuple< ftm::idNode, ftm::idNode, double > > > &matchings, bool transposeVector=true) |
|
template<class dataType > |
dataType | computeReconstructionError (ftm::MergeTree< dataType > &barycenter, std::vector< ftm::MergeTree< dataType > > &inputTrees, std::vector< std::vector< std::vector< double > > > &vS, std::vector< std::vector< std::vector< double > > > &v2s, std::vector< std::vector< double > > &allTreesTs, std::vector< double > &reconstructionErrors) |
|
template<class dataType > |
dataType | computeReconstructionError (ftm::MergeTree< dataType > &barycenter, std::vector< ftm::MergeTree< dataType > > &inputTrees, std::vector< std::vector< std::vector< double > > > &vS, std::vector< std::vector< std::vector< double > > > &v2s, std::vector< std::vector< double > > &allTreesTs) |
|
double | getGeodesicVectorMiddle (std::vector< double > &v, std::vector< double > &v2) |
|
double | getAdjustedTMax (double tMin, double m) |
|
double | getAdjustedTMin (double tMax, double m) |
|
void | updateT (double newT, double m, double &tMin, double &tMax, bool updateTMin) |
|
template<class dataType > |
bool | adjustDiagonalT (dataType baryBirth, dataType baryDeath, ftm::idNode node, std::vector< std::vector< double > > &vNew, std::vector< std::vector< double > > &v2New, double &tMin, double &tMax) |
|
template<class dataType > |
bool | adjustNestingT (ftm::MergeTree< dataType > &ttkNotUsed(barycenter), dataType baryBirth, dataType baryDeath, ftm::idNode node, std::vector< std::vector< double > > &vNew, std::vector< std::vector< double > > &v2New, double &tMin, double &tMax) |
|
template<class dataType > |
void | getInterpolationVectorDebugMsg (dataType birth, dataType death, std::vector< std::vector< double > > &vNew, std::vector< std::vector< double > > &v2New, int i, double t, double tMin, double tMax, const std::string &msg, std::stringstream &ssT) |
|
template<class dataType > |
double | getTNew (ftm::MergeTree< dataType > &barycenter, std::vector< std::vector< double > > &v, std::vector< std::vector< double > > &v2, int i, double t) |
|
template<class dataType > |
void | getInterpolationVector (ftm::MergeTree< dataType > &barycenter, std::vector< double * > &v, std::vector< double * > &v2, size_t vSize, double t, std::vector< dataType > &interpolationVectorT, bool transposeVector) |
|
template<class dataType > |
void | getInterpolation (ftm::MergeTree< dataType > &barycenter, std::vector< double * > &v, std::vector< double * > &v2, size_t vSize, double t, ftm::MergeTree< dataType > &interpolated, bool transposeVector=true) |
|
template<class dataType > |
void | getInterpolation (ftm::MergeTree< dataType > &barycenter, std::vector< std::vector< double > > &v, std::vector< std::vector< double > > &v2, double t, ftm::MergeTree< dataType > &interpolated) |
|
template<class dataType > |
void | getMultiInterpolation (ftm::MergeTree< dataType > &barycenter, std::vector< std::vector< double * > > &vS, std::vector< std::vector< double * > > &v2s, size_t vSize, std::vector< double > &ts, ftm::MergeTree< dataType > &interpolated, bool transposeVector=true) |
|
template<class dataType > |
void | getMultiInterpolation (ftm::MergeTree< dataType > &barycenter, std::vector< std::vector< std::vector< double > > > &vS, std::vector< std::vector< std::vector< double > > > &v2s, std::vector< double > &ts, ftm::MergeTree< dataType > &interpolated) |
|
template<class dataType > |
void | getMultiInterpolation (ftm::MergeTree< dataType > &barycenter, std::vector< std::vector< std::vector< double > > > &vS, std::vector< std::vector< std::vector< double > > > &v2s, std::vector< std::vector< double > > &v, std::vector< std::vector< double > > &v2, std::vector< double > &ts, double t, ftm::MergeTree< dataType > &interpolated) |
|
void | callGramSchmidt (std::vector< std::vector< double > > &vS, std::vector< double > &v, std::vector< double > &newV) |
|
void | vectorToPointer (std::vector< double > &vec, double *&pVec) |
|
void | vectorsToPointers (std::vector< std::vector< double > > &vec, std::vector< double * > &pVec) |
|
void | vectorOfVectorsToPointers (std::vector< std::vector< std::vector< double > > > &vS, std::vector< std::vector< double * > > &pVS) |
|
void | pointerToVector (double *pVec, size_t size, std::vector< double > &vec) |
|
void | pointersToVectors (std::vector< double * > &pVec, std::vector< size_t > sizes, std::vector< std::vector< double > > &vec) |
|
void | pointersToVectors (std::vector< double * > &pVec, size_t size, std::vector< std::vector< double > > &vec) |
|
| MergeTreeAxesAlgorithmBase () |
|
template<class dataType > |
void | computeOneDistance (ftm::MergeTree< dataType > &tree1, ftm::MergeTree< dataType > &tree2, std::vector< std::tuple< ftm::idNode, ftm::idNode, double > > &matching, dataType &distance, bool isCalled=false, bool useDoubleInput=false, bool isFirstInput=true) |
|
template<class dataType > |
void | computeOneDistance (ftm::MergeTree< dataType > &tree1, ftm::MergeTree< dataType > &tree2, dataType &distance, bool isCalled=false, bool useDoubleInput=false, bool isFirstInput=true) |
|
template<class dataType > |
void | initVectorFromMatching (ftm::MergeTree< dataType > &barycenter, ftm::MergeTree< dataType > &tree, std::vector< std::tuple< ftm::idNode, ftm::idNode, double > > &matching, std::vector< std::vector< double > > &v) |
|
template<class dataType > |
void | initRandomVector (ftm::MergeTree< dataType > &barycenter, std::vector< std::vector< double > > &v, std::vector< std::vector< std::vector< double > > > &vS, std::vector< std::vector< std::vector< double > > > &v2s) |
|
template<class dataType , typename F > |
int | initVectors (int axeNumber, ftm::MergeTree< dataType > &barycenter, std::vector< ftm::MergeTree< dataType > > &trees, ftm::MergeTree< dataType > &barycenter2, std::vector< ftm::MergeTree< dataType > > &trees2, std::vector< std::vector< double > > &v1, std::vector< std::vector< double > > &v2, std::vector< std::vector< double > > &trees2V1, std::vector< std::vector< double > > &trees2V2, int newVectorOffset, std::vector< double > &inputToOriginDistances, std::vector< std::vector< std::tuple< ftm::idNode, ftm::idNode, double > > > &baryMatchings, std::vector< std::vector< std::tuple< ftm::idNode, ftm::idNode, double > > > &baryMatchings2, std::vector< std::vector< double > > &inputToAxesDistances, std::vector< std::vector< std::vector< double > > > &vS, std::vector< std::vector< std::vector< double > > > &v2s, std::vector< std::vector< std::vector< double > > > &trees2Vs, std::vector< std::vector< std::vector< double > > > &trees2V2s, bool projectInitializedVectors, F initializedVectorsProjection) |
|
template<class dataType > |
void | computeOneBarycenter (std::vector< ftm::MergeTree< dataType > > &trees, ftm::MergeTree< dataType > &baryMergeTree, std::vector< std::vector< std::tuple< ftm::idNode, ftm::idNode, double > > > &matchings, std::vector< double > &finalDistances, double barycenterSizeLimitPercent, unsigned int barycenterMaximumNumberOfPairs, bool useDoubleInput=false, bool isFirstInput=true) |
|
template<class dataType > |
void | computeOneBarycenter (std::vector< ftm::MergeTree< dataType > > &trees, ftm::MergeTree< dataType > &baryMergeTree, std::vector< std::vector< std::tuple< ftm::idNode, ftm::idNode, double > > > &matchings, std::vector< double > &finalDistances, double barycenterSizeLimitPercent, bool useDoubleInput=false, bool isFirstInput=true) |
|
template<class dataType > |
void | computeOneBarycenter (std::vector< ftm::MergeTree< dataType > > &trees, ftm::MergeTree< dataType > &baryMergeTree, std::vector< std::vector< std::tuple< ftm::idNode, ftm::idNode, double > > > &matchings, std::vector< double > &finalDistances, bool useDoubleInput=false, bool isFirstInput=true) |
|
template<class dataType > |
void | computeOneBarycenter (std::vector< ftm::MergeTree< dataType > > &trees, ftm::MergeTree< dataType > &baryMergeTree, std::vector< std::vector< std::tuple< ftm::idNode, ftm::idNode, double > > > &matchings) |
|
template<class dataType > |
void | computeOneBarycenter (std::vector< ftm::MergeTree< dataType > > &trees, ftm::MergeTree< dataType > &baryMergeTree) |
|
template<class dataType > |
void | preprocessingTrees (std::vector< ftm::MergeTree< dataType > > &trees, std::vector< std::vector< int > > &nodeCorr, bool useMinMaxPairT=true) |
|
template<class dataType > |
void | preprocessingTrees (std::vector< ftm::MergeTree< dataType > > &trees, bool useMinMaxPairT=true) |
|
template<class dataType > |
void | getMatchingVector (ftm::MergeTree< dataType > &barycenter, ftm::MergeTree< dataType > &tree, std::vector< std::tuple< ftm::idNode, ftm::idNode, double > > &matchings, std::vector< ftm::idNode > &matchingVector) |
|
template<class dataType > |
void | getInverseMatchingVector (ftm::MergeTree< dataType > &barycenter, ftm::MergeTree< dataType > &tree, std::vector< std::tuple< ftm::idNode, ftm::idNode, double > > &matchings, std::vector< ftm::idNode > &matchingVector) |
|
void | reverseMatchingVector (unsigned int noNodes, std::vector< ftm::idNode > &matchingVector, std::vector< ftm::idNode > &invMatchingVector) |
|
template<class dataType > |
void | reverseMatchingVector (ftm::MergeTree< dataType > &tree, std::vector< ftm::idNode > &matchingVector, std::vector< ftm::idNode > &invMatchingVector) |
|
template<class dataType > |
void | getMatchingMatrix (ftm::MergeTree< dataType > &barycenter, std::vector< ftm::MergeTree< dataType > > &trees, std::vector< std::vector< std::tuple< ftm::idNode, ftm::idNode, double > > > &matchings, std::vector< std::vector< ftm::idNode > > &matchingMatrix) |
|
template<class dataType > |
std::tuple< dataType, dataType > | getParametrizedBirthDeath (ftm::FTMTree_MT *tree, ftm::idNode node) |
|
template<class dataType > |
void | computeBranchesCorrelationMatrix (ftm::MergeTree< dataType > &barycenter, std::vector< ftm::MergeTree< dataType > > &trees, std::vector< std::vector< std::tuple< ftm::idNode, ftm::idNode, double > > > &baryMatchings, std::vector< std::vector< double > > &allTs, std::vector< std::vector< double > > &branchesCorrelationMatrix, std::vector< std::vector< double > > &persCorrelationMatrix) |
|
| MergeTreeBase () |
|
void | setAssignmentSolver (int assignmentSolver) |
|
void | setEpsilon1UseFarthestSaddle (bool b) |
|
void | setEpsilonTree1 (double epsilon) |
|
void | setEpsilonTree2 (double epsilon) |
|
void | setEpsilon2Tree1 (double epsilon) |
|
void | setEpsilon2Tree2 (double epsilon) |
|
void | setEpsilon3Tree1 (double epsilon) |
|
void | setEpsilon3Tree2 (double epsilon) |
|
void | setPersistenceThreshold (double pt) |
|
void | setParallelize (bool para) |
|
void | setNodePerTask (int npt) |
|
void | setBranchDecomposition (bool useBD) |
|
void | setNormalizedWasserstein (bool normalizedWasserstein) |
|
void | setKeepSubtree (bool keepSubtree) |
|
void | setNonMatchingWeight (double weight) |
|
void | setBarycenterMergeTree (bool imt) |
|
void | setDistanceSquaredRoot (bool distanceSquaredRoot) |
|
void | setUseMinMaxPair (bool useMinMaxPair) |
|
void | setDeleteMultiPersPairs (bool deleteMultiPersPairsT) |
|
void | setCleanTree (bool clean) |
|
void | setIsPersistenceDiagram (bool isPD) |
|
std::vector< std::vector< int > > | getTreesNodeCorr () |
|
double | mixDistancesMinMaxPairWeight (bool isFirstInput) |
|
double | mixDistancesWeight (bool isFirstInput) |
|
template<class dataType > |
double | mixDistances (dataType distance1, dataType distance2) |
|
template<class dataType > |
void | mixDistancesMatrix (std::vector< std::vector< dataType > > &distanceMatrix, std::vector< std::vector< dataType > > &distanceMatrix2) |
|
template<class dataType > |
void | mergeSaddle (ftm::FTMTree_MT *tree, double epsilon, std::vector< std::vector< ftm::idNode > > &treeNodeMerged, bool mergeByPersistence=false) |
|
template<class dataType > |
void | persistenceMerging (ftm::FTMTree_MT *tree, double epsilon2, double epsilon3=100) |
|
template<class dataType > |
void | keepMostImportantPairs (ftm::FTMTree_MT *tree, int n, bool useBD) |
|
template<class dataType > |
void | persistenceThresholding (ftm::FTMTree_MT *tree, double persistenceThresholdT, std::vector< ftm::idNode > &deletedNodes) |
|
template<class dataType > |
void | persistenceThresholding (ftm::FTMTree_MT *tree, std::vector< ftm::idNode > &deletedNodes) |
|
template<class dataType > |
void | persistenceThresholding (ftm::FTMTree_MT *tree, double persistenceThresholdT) |
|
template<class dataType > |
void | persistenceThresholding (ftm::FTMTree_MT *tree) |
|
template<class dataType > |
void | verifyOrigins (ftm::FTMTree_MT *tree) |
|
template<class dataType > |
void | preprocessTree (ftm::FTMTree_MT *tree, bool deleteInconsistentNodes=true) |
|
template<class dataType > |
ftm::FTMTree_MT * | computeBranchDecomposition (ftm::FTMTree_MT *tree, std::vector< std::vector< ftm::idNode > > &treeNodeMerged) |
|
template<class dataType > |
void | dontUseMinMaxPair (ftm::FTMTree_MT *tree) |
|
void | verifyPairsTree (ftm::FTMTree_MT *tree) |
|
template<class dataType > |
void | deleteMultiPersPairs (ftm::FTMTree_MT *tree, bool useBD) |
|
template<class dataType > |
void | preprocessingPipeline (ftm::MergeTree< dataType > &mTree, double epsilonTree, double epsilon2Tree, double epsilon3Tree, bool branchDecompositionT, bool useMinMaxPairT, bool cleanTreeT, double persistenceThreshold, std::vector< int > &nodeCorr, bool deleteInconsistentNodes=true) |
|
template<class dataType > |
void | preprocessingPipeline (ftm::MergeTree< dataType > &mTree, double epsilonTree, double epsilon2Tree, double epsilon3Tree, bool branchDecompositionT, bool useMinMaxPairT, bool cleanTreeT, std::vector< int > &nodeCorr, bool deleteInconsistentNodes=true) |
|
void | reverseNodeCorr (ftm::FTMTree_MT *tree, std::vector< int > &nodeCorr) |
|
template<class dataType > |
void | mtFlattening (ftm::MergeTree< dataType > &mt) |
|
template<class dataType > |
void | mtsFlattening (std::vector< ftm::MergeTree< dataType > > &mts) |
|
double | getSizeLimitMetric (std::vector< ftm::FTMTree_MT * > &trees) |
|
template<class dataType > |
void | copyMinMaxPair (ftm::MergeTree< dataType > &mTree1, ftm::MergeTree< dataType > &mTree2, bool setOrigins=false) |
|
template<class dataType > |
std::tuple< int, dataType > | fixMergedRootOrigin (ftm::FTMTree_MT *tree) |
|
template<class dataType > |
void | branchDecompositionToTree (ftm::FTMTree_MT *tree) |
|
template<class dataType > |
void | putBackMergedNodes (ftm::FTMTree_MT *tree) |
|
template<class dataType > |
void | postprocessingPipeline (ftm::FTMTree_MT *tree) |
|
template<class dataType > |
void | convertBranchDecompositionMatching (ftm::FTMTree_MT *tree1, ftm::FTMTree_MT *tree2, std::vector< std::tuple< ftm::idNode, ftm::idNode, double > > &outputMatching) |
|
template<class dataType > |
void | convertBranchDecompositionMatching (ftm::FTMTree_MT *tree1, ftm::FTMTree_MT *tree2, std::vector< std::tuple< ftm::idNode, ftm::idNode > > &outputMatching) |
|
template<class dataType > |
void | identifyRealMatching (ftm::FTMTree_MT *tree1, ftm::FTMTree_MT *tree2, std::vector< std::tuple< ftm::idNode, ftm::idNode > > &outputMatching, std::vector< std::tuple< ftm::idNode, ftm::idNode, bool > > &realMatching) |
|
template<class dataType > |
dataType | computeDistance (dataType x1, dataType x2, dataType y1, dataType y2, double power=2) |
|
template<class dataType > |
dataType | deleteCost (ftm::FTMTree_MT *tree, ftm::idNode nodeId) |
|
template<class dataType > |
dataType | insertCost (ftm::FTMTree_MT *tree, ftm::idNode nodeId) |
|
template<class dataType > |
dataType | relabelCostOnly (ftm::FTMTree_MT *tree1, ftm::idNode nodeId1, ftm::FTMTree_MT *tree2, ftm::idNode nodeId2) |
|
template<class dataType > |
dataType | relabelCost (ftm::FTMTree_MT *tree1, ftm::idNode nodeId1, ftm::FTMTree_MT *tree2, ftm::idNode nodeId2) |
|
void | getParamNames (std::vector< std::string > ¶mNames) |
|
double | getParamValueFromName (std::string ¶mName) |
|
void | setParamValueFromName (std::string ¶mName, double value) |
|
void | getTreesStats (std::vector< ftm::FTMTree_MT * > &trees, std::array< double, 3 > &stats) |
|
void | printTreesStats (std::vector< ftm::FTMTree_MT * > &trees) |
|
template<class dataType > |
void | printTreesStats (std::vector< ftm::MergeTree< dataType > > &trees) |
|
template<class dataType > |
void | printTableVector (std::vector< std::vector< dataType > > &table) |
|
template<class dataType > |
void | printTable (dataType *table, int nRows, int nCols) |
|
void | printMatching (std::vector< MatchingType > &matchings) |
|
void | printMatching (std::vector< std::tuple< ftm::idNode, ftm::idNode, double > > &matchings) |
|
void | printMatching (std::vector< std::tuple< ftm::idNode, ftm::idNode > > &matchings) |
|
template<class dataType > |
void | printPairs (std::vector< std::tuple< SimplexId, SimplexId, dataType > > &treePairs) |
|
template<class dataType > |
void | printOutputMatching (std::vector< std::tuple< ftm::idNode, ftm::idNode > > &outputMatching, ftm::FTMTree_MT *tree1, ftm::FTMTree_MT *tree2, bool computeCosts=true) |
|