From 443ba6da6757f2fb78515bed108ca8d32fb21005 Mon Sep 17 00:00:00 2001 From: John Huddleston Date: Mon, 29 Jul 2024 14:07:16 -0700 Subject: [PATCH] Check for mutations and clades before removing Fixes a bug in the fix_tree script when trying to remove mutations or clades from lists where those values don't exist. The short-term fix is to check for the presence of the values in the lists before trying to remove them. The long term fix is to use a different tree builder than eliminates the need for a "fix tree" script. --- phylogenetic/scripts/fix_tree.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/phylogenetic/scripts/fix_tree.py b/phylogenetic/scripts/fix_tree.py index 53abeee7..ded28cce 100644 --- a/phylogenetic/scripts/fix_tree.py +++ b/phylogenetic/scripts/fix_tree.py @@ -57,10 +57,14 @@ print(f"Below {clade}: {mut_child} in {child.name} reverted in {grandchild.name}") for reversion in reversions: - # Remove reversion from grandchild - reversion["grandchild"].relevant_mutations.remove(reversion["mut_grandchild"]) - # Remove grandchild from child - reversion["child"].clades.remove(reversion["grandchild"]) + if reversion["mut_grandchild"] in reversion["grandchild"].relevant_mutations: + # Remove reversion from grandchild + reversion["grandchild"].relevant_mutations.remove(reversion["mut_grandchild"]) + + if reversion["grandchild"] in reversion["child"].clades: + # Remove grandchild from child + reversion["child"].clades.remove(reversion["grandchild"]) + # If there are mutations, add grandchild as child of parent if reversion["grandchild"].relevant_mutations != reversion["parent"].relevant_mutations: reversion["parent"].clades.append(reversion["grandchild"])