def _read_multipoles(self, f): """ Read the atomic multipoles """ self.multipole_list = AtomicMultipoleList() # Eat the next 3 lines f.readline() f.readline() f.readline() line = f.readline() for i in range(self.pointers['npole']): try: int(line[0:6]) at = int(line[9:15]) - 1 # Collect the rest of the arguments, kept as strings frame = [line[16:23], line[23:30], line[30:37]] typestr = line[40:48] moments = [line[50:59]] # Next numbers are on the next line line = f.readline() moments.extend([line[50:59], line[59:68], line[68:77]]) line = f.readline() moments.append(line[50:59]) line = f.readline() moments.extend([line[50:59], line[59:68]]) line = f.readline() moments.extend([line[50:59], line[59:68], line[68:77]]) self.multipole_list.add(self.atom_list[at], frame, typestr, moments) except ValueError: raise TinkerError('Error parsing multipole term') line = f.readline()