xtbf.parsers
1def _test_partial_charges() -> str: 2 return """ 3 HL-Gap 0.4164018 Eh 11.3309 eV 4 Fermi-level -0.1811489 Eh -4.9293 eV 5 6 # Z covCN q C6AA α(0) 7 1 6 C 3.753 -0.106 22.589 6.778 8 2 6 C 3.798 -0.064 21.737 6.638 9 3 6 C 3.697 0.080 19.407 6.301 10 4 8 O 1.701 -0.319 19.336 5.937 11 5 6 C 3.696 0.088 19.284 6.282 12 13 """ 14 15def partial_charges(s:str): 16 """ 17 Reads partial charges from 18 the given xtb output string. 19 20 >>> partial_charges(_test_partial_charges()) 21 [[-0.106, -0.064, 0.08, -0.319, 0.088]] 22 """ 23 header = "# Z covCN q C6AA α(0)" 24 parsing = False 25 all_rslt = [] 26 rslt = [] 27 for lne in s.split("\n"): 28 lne = lne.strip() 29 if lne == header: 30 parsing = True 31 continue 32 if not lne.strip(): 33 parsing = False 34 if rslt: 35 all_rslt.append(rslt) 36 rslt = [] 37 if parsing: 38 lne = lne.strip().split() 39 rslt.append( 40 float(lne[4]) 41 ) 42 return all_rslt
def
partial_charges(s: str):
17def partial_charges(s:str): 18 """ 19 Reads partial charges from 20 the given xtb output string. 21 22 >>> partial_charges(_test_partial_charges()) 23 [[-0.106, -0.064, 0.08, -0.319, 0.088]] 24 """ 25 header = "# Z covCN q C6AA α(0)" 26 parsing = False 27 all_rslt = [] 28 rslt = [] 29 for lne in s.split("\n"): 30 lne = lne.strip() 31 if lne == header: 32 parsing = True 33 continue 34 if not lne.strip(): 35 parsing = False 36 if rslt: 37 all_rslt.append(rslt) 38 rslt = [] 39 if parsing: 40 lne = lne.strip().split() 41 rslt.append( 42 float(lne[4]) 43 ) 44 return all_rslt
Reads partial charges from the given xtb output string.
>>> partial_charges(_test_partial_charges())
[[-0.106, -0.064, 0.08, -0.319, 0.088]]