void copyFromTopAlignment(AlignmentConstPtr topAlignment, AlignmentPtr mainAlignment, const string &genomeName) { Genome *mainReplacedGenome = mainAlignment->openGenome(genomeName); const Genome *topReplacedGenome = topAlignment->openGenome(genomeName); topReplacedGenome->copyTopDimensions(mainReplacedGenome); topReplacedGenome->copyTopSegments(mainReplacedGenome); mainReplacedGenome->fixParseInfo(); // Copy bot segments for the parent and top segments for the // siblings of the genome that's being replaced Genome *mainParent = mainReplacedGenome->getParent(); const Genome *topParent = topReplacedGenome->getParent(); topParent->copyBottomDimensions(mainParent); topParent->copyBottomSegments(mainParent); mainParent->fixParseInfo(); vector<string> siblings = mainAlignment->getChildNames(mainParent->getName()); for (size_t i = 0; i < siblings.size(); i++) { if (siblings[i] != genomeName) { Genome *mainChild = mainAlignment->openGenome(siblings[i]); const Genome *topChild = topAlignment->openGenome(siblings[i]); topChild->copyTopDimensions(mainChild); topChild->copyTopSegments(mainChild); mainChild->fixParseInfo(); } } }