Exemple #1
0
 def test_null_self_swap(self):
     # spoof AtomicSwapper __init__
     swap_args = {"swap": ["KK:PP"], "debug": True}
     bare_swap = AtomicSwapper([])
     bare_swap.periodic_table = get_periodic_table()
     bare_swap.swap_args = swap_args["swap"]
     # try to parse swaps
     bare_swap.parse_swaps()
     self.assertEqual(bare_swap.swap_pairs, [[["K"], ["K"]], [["P"], ["P"]]])
     # set up test data for real swap
     doc = dict()
     doc["atom_types"] = ["K", "K", "P", "P"]
     swapped_docs, num_swapped = bare_swap.atomic_swaps(doc)
     self.assertEqual(num_swapped, 0)
Exemple #2
0
 def test_maintain_num_species(self):
     # spoof AtomicSwapper __init__
     swap_args = {"swap": ["[Li,Na]K"], "debug": True}
     bare_swap = AtomicSwapper([])
     bare_swap.periodic_table = get_periodic_table()
     bare_swap.swap_args = swap_args["swap"]
     # try to parse swaps
     bare_swap.parse_swaps()
     # set up test data for real swap
     doc = dict()
     doc["atom_types"] = ["Li", "Na"]
     swapped_docs, num_swapped = bare_swap.atomic_swaps(doc)
     print(swapped_docs)
     self.assertEqual(num_swapped, 0)
Exemple #3
0
 def test_many_to_one_macro(self):
     swap_args = {"swap": ["[V]P"], "debug": True}
     bare_swap = AtomicSwapper([], maintain_num_species=False)
     bare_swap.periodic_table = get_periodic_table()
     bare_swap.swap_args = swap_args["swap"]
     # try to parse swaps
     bare_swap.parse_swaps()
     self.assertEqual(bare_swap.swap_pairs, [[["N", "P", "As", "Sb", "Bi"], ["P"]]])
     # set up test data for real swap
     doc = dict()
     doc["atom_types"] = ["P", "Sb", "As", "As"]
     swapped_docs, num_swapped = bare_swap.atomic_swaps(doc)
     self.assertEqual(num_swapped, 1)
     self.assertEqual(swapped_docs[0]["atom_types"], ["P", "P", "P", "P"])
Exemple #4
0
 def test_multiple_simple_swap(self):
     # spoof AtomicSwapper __init__
     swap_args = {"swap": ["AsP:LiNa"], "debug": True}
     bare_swap = AtomicSwapper([])
     bare_swap.periodic_table = get_periodic_table()
     bare_swap.swap_args = swap_args["swap"]
     # try to parse swaps
     bare_swap.parse_swaps()
     self.assertEqual(bare_swap.swap_pairs, [[["As"], ["P"]], [["Li"], ["Na"]]])
     # set up test data for real swap
     doc = dict()
     doc["atom_types"] = ["Li", "Li", "As", "As"]
     swapped_docs, num_swapped = bare_swap.atomic_swaps(doc)
     self.assertEqual(num_swapped, 1)
     self.assertEqual(swapped_docs[0]["atom_types"], ["Na", "Na", "P", "P"])
Exemple #5
0
 def test_one_to_many_swap(self):
     # spoof AtomicSwapper __init__
     swap_args = {"swap": ["As[P,Sb,Zn,Cu]"], "debug": True}
     bare_swap = AtomicSwapper([])
     bare_swap.periodic_table = get_periodic_table()
     bare_swap.swap_args = swap_args["swap"]
     # try to parse swaps
     bare_swap.parse_swaps()
     self.assertEqual(bare_swap.swap_pairs, [[["As"], ["P", "Sb", "Zn", "Cu"]]])
     # set up test data for real swap
     doc = dict()
     doc["atom_types"] = ["Li", "Li", "As", "As"]
     swapped_docs, num_swapped = bare_swap.atomic_swaps(doc)
     self.assertEqual(num_swapped, 4)
     P_found = False
     Sb_found = False
     Zn_found = False
     Cu_found = False
     for new_doc in swapped_docs:
         self.assertTrue("As" not in new_doc["atom_types"])
         if "P" in new_doc["atom_types"]:
             self.assertTrue(
                 x not in new_doc["atom_types"] for x in ["Sb", "Zn", "Cu"]
             )
             self.assertEqual(new_doc["atom_types"], ["Li", "Li", "P", "P"])
             P_found = True
         if "Sb" in new_doc["atom_types"]:
             self.assertTrue(
                 x not in new_doc["atom_types"] for x in ["P", "Zn", "Cu"]
             )
             self.assertEqual(new_doc["atom_types"], ["Li", "Li", "Sb", "Sb"])
             Sb_found = True
         if "Zn" in new_doc["atom_types"]:
             self.assertTrue(
                 x not in new_doc["atom_types"] for x in ["P", "Sb", "Cu"]
             )
             self.assertEqual(new_doc["atom_types"], ["Li", "Li", "Zn", "Zn"])
             Zn_found = True
         if "Cu" in new_doc["atom_types"]:
             self.assertTrue(
                 x not in new_doc["atom_types"] for x in ["P", "Sb", "Zn"]
             )
             self.assertEqual(new_doc["atom_types"], ["Li", "Li", "Cu", "Cu"])
             Cu_found = True
     self.assertTrue(P_found)
     self.assertTrue(Sb_found)
     self.assertTrue(Zn_found)
     self.assertTrue(Cu_found)
Exemple #6
0
 def test_multiple_many_to_one_swap(self):
     # spoof AtomicSwapper __init__
     swap_args = {"swap": ["[Li,Na]K:[Ru, Rh]La"], "debug": True}
     bare_swap = AtomicSwapper([], maintain_num_species=False)
     bare_swap.periodic_table = get_periodic_table()
     bare_swap.swap_args = swap_args["swap"]
     # try to parse swaps
     bare_swap.parse_swaps()
     self.assertEqual(
         bare_swap.swap_pairs, [[["Li", "Na"], ["K"]], [["Ru", "Rh"], ["La"]]]
     )
     # set up test data for real swap
     doc = dict()
     doc["atom_types"] = ["Li", "Na", "Ru", "Rh"]
     swapped_docs, num_swapped = bare_swap.atomic_swaps(doc)
     self.assertEqual(num_swapped, 1)
     self.assertEqual(swapped_docs[0]["atom_types"], ["K", "K", "La", "La"])
Exemple #7
0
 def test_many_to_many_swap_awkward(self):
     # spoof AtomicSwapper __init__
     swap_args = {"swap": ["[Li,Na]K:[V,I][I]"], "debug": True}
     bare_swap = AtomicSwapper([], maintain_num_species=False)
     bare_swap.periodic_table = get_periodic_table()
     bare_swap.swap_args = swap_args["swap"]
     # try to parse swaps
     bare_swap.parse_swaps()
     self.assertEqual(
         bare_swap.swap_pairs,
         [[["Li", "Na"], ["K"]], [["V", "I"], ["Li", "Na", "K", "Rb", "Cs", "Fr"]]],
     )
     # set up test data for real swap
     doc = dict()
     doc["atom_types"] = ["Li", "Na", "V", "I"]
     swapped_docs, num_swapped = bare_swap.atomic_swaps(doc)
     self.assertEqual(num_swapped, 6)
     self.assertEqual(swapped_docs[0]["atom_types"], ["K", "K", "Li", "Li"])