| 140 | # parsed_line = parse_atom_line(line) |
| 141 | # line = "ATOM 123 CA ALA A 15 11.111 22.222 33.333 1.00 20.00 C" |
| 142 | def parse_pdb_atom_line(line): |
| 143 | atom_num = line[6:11].strip() |
| 144 | atom_name = line[12:16].strip() |
| 145 | residue_name = line[17:20].strip() |
| 146 | if residue_name == "LIG": return None # ligands in Boltz PDB-format files |
| 147 | chain_id = line[21].strip() |
| 148 | residue_seq_num = line[22:26].strip() |
| 149 | x = line[30:38].strip() |
| 150 | y = line[38:46].strip() |
| 151 | z = line[46:54].strip() |
| 152 | |
| 153 | # Convert string numbers to integers or floats as appropriate |
| 154 | atom_num = int(atom_num) |
| 155 | residue_seq_num = int(residue_seq_num) |
| 156 | x = float(x) |
| 157 | y = float(y) |
| 158 | z = float(z) |
| 159 | |
| 160 | return { |
| 161 | 'atom_num': atom_num, |
| 162 | 'atom_name': atom_name, |
| 163 | 'residue_name': residue_name, |
| 164 | 'chain_id': chain_id, |
| 165 | 'residue_seq_num': residue_seq_num, |
| 166 | 'x': x, |
| 167 | 'y': y, |
| 168 | 'z': z |
| 169 | } |
| 170 | |
| 171 | def parse_cif_atom_line(line,fielddict): |
| 172 | # for parsing AF3 and Boltz1/2 mmCIF files |