@classmethod
def from_pdb_line(cls, line: str):
    """
        Instantiate the class from a line in a PDB file.
        This will not have the atom_type, partial_charge
        or mass.

        :param line: an ATOM/HETATM record from a pdb file.

        """
    record = line[:6].strip()
    try:
        atom_serial = int(line[6:11])
    except ValueError:
        atom_serial = int(line[6:11], 16)
    atom_name = line[12:16].strip()
    alt_locator = line[16]
    residue_name = line[17:21].strip()
    chain = line[21]
    residue_number = int(line[22:26])
    insertion_code = line[27]
    x = float(line[30:38])
    y = float(line[38:46])
    z = float(line[46:54])
    occupancy = float(line[54:60])
    beta_factor = float(line[60:66])
    segment_id = line[72:76].strip()
    element_symbol = line[76:78].strip()
    charge = 0
    try:
        symbol = line[79]
        if symbol == '-':
            charge = 0 - int(line[78])
        else:
            try:
                charge = int(line[78])
            except ValueError:
                pass
    except IndexError:
        pass
    return cls(record, atom_serial, atom_name, alt_locator, residue_name,
        chain, residue_number, insertion_code, x, y, z, occupancy,
        beta_factor, segment_id, element_symbol, charge)
