def test_probability_classmethod(self): file = os.path.join(tests_dir, "cNa3PS4_pda.json") data = json.load(open(file, "r")) diff_analyzer = DiffusionAnalyzer.from_dict(data) #ProbabilityDensityAnalysis object pda = ProbabilityDensityAnalysis.from_diffusion_analyzer(diffusion_analyzer=diff_analyzer, interval=0.5) dV = pda.structure.lattice.volume / pda.lens[0] / pda.lens[1] / pda.lens[2] Pr_tot = np.sum(pda.Pr) * dV self.assertAlmostEqual(pda.Pr.max(), 0.0361594977596, 8) self.assertAlmostEqual(pda.Pr.min(), 0.0, 12) self.assertAlmostEqual(Pr_tot, 1.0, 12)
def test_probability(self): traj_file = os.path.join(tests_dir, "cNa3PS4_trajectories.npy") struc_file = os.path.join(tests_dir, "cNa3PS4.cif") trajectories = np.load(traj_file) structure = Structure.from_file(struc_file, False) # ProbabilityDensityAnalysis object pda = ProbabilityDensityAnalysis(structure, trajectories, interval=0.5) dV = pda.structure.lattice.volume / pda.lens[0] / pda.lens[1] / pda.lens[2] Pr_tot = np.sum(pda.Pr) * dV self.assertAlmostEqual(pda.Pr.max(), 0.030735573102, 12) self.assertAlmostEqual(pda.Pr.min(), 0.0, 12) self.assertAlmostEqual(Pr_tot, 1.0, 12)
def test_generate_stable_sites(self): file = os.path.join(tests_dir, "cNa3PS4_pda.json") data = json.load(open(file, "r")) diff_analyzer = DiffusionAnalyzer.from_dict(data) # ProbabilityDensityAnalysis object pda = ProbabilityDensityAnalysis.from_diffusion_analyzer( diffusion_analyzer=diff_analyzer, interval=0.1) pda.generate_stable_sites(p_ratio=0.25, d_cutoff=1.5) self.assertEqual(len(pda.stable_sites), 50) self.assertAlmostEqual(pda.stable_sites[1][2], 0.24113475177304966, 8) self.assertAlmostEqual(pda.stable_sites[7][1], 0.5193661971830985, 8) s = pda.get_full_structure() self.assertEqual(s.num_sites, 178) self.assertEqual(s.composition["Na"], 48) self.assertEqual(s.composition["X"], 50) self.assertAlmostEqual(s[177].frac_coords[2], 0.57446809)