@staticmethod
def get_irreducible_kpoints(filename='OUTCAR', reciprocal=True, weight=True, planewaves=True, lines=None):
    '\n        Function to extract the irreducible kpoints from the OUTCAR file\n\n        Args:\n            filename (str): Filename of the OUTCAR file to parse\n            reciprocal (bool): Get either the reciprocal or the cartesian coordinates\n            weight (bool): Get the weight assigned to the irreducible kpoints\n            planewaves (bool): Get the planewaves assigned to the irreducible kpoints\n            lines (list/None): lines read from the file\n\n        Returns:\n            numpy.ndarray: An array of k-points\n        '
    kpoint_lst = []
    weight_lst = []
    planewaves_lst = []
    trigger_number_str = 'Subroutine IBZKPT returns following result:'
    trigger_plane_waves_str = 'k-point  1 :'
    trigger_number = 0
    trigger_plane_waves = 0
    lines = _get_lines_from_file(filename=filename, lines=lines)
    for (i, line) in enumerate(lines):
        line = line.strip()
        if (trigger_number_str in line):
            trigger_number = int(i)
        elif planewaves:
            if (trigger_plane_waves_str in line):
                trigger_plane_waves = int(i)
    number_irr_kpoints = int(lines[(trigger_number + 3)].split()[1])
    if reciprocal:
        trigger_start = (trigger_number + 7)
    else:
        trigger_start = ((trigger_number + 10) + number_irr_kpoints)
    for line in lines[trigger_start:(trigger_start + number_irr_kpoints)]:
        line = line.strip()
        line = _clean_line(line)
        kpoint_lst.append([float(l) for l in line.split()[0:3]])
        if weight:
            weight_lst.append(float(line.split()[3]))
    if (planewaves and (trigger_plane_waves != 0)):
        for line in lines[trigger_plane_waves:(trigger_plane_waves + number_irr_kpoints)]:
            line = line.strip()
            line = _clean_line(line)
            planewaves_lst.append(float(line.split()[(- 1)]))
    if (weight and planewaves):
        return (np.array(kpoint_lst), np.array(weight_lst), np.array(planewaves_lst))
    elif weight:
        return (np.array(kpoint_lst), np.array(weight_lst))
    elif planewaves:
        return (np.array(kpoint_lst), np.array(planewaves_lst))
    else:
        return np.array(kpoint_lst)
Function to extract the irreducible kpoints from the OUTCAR file

Args:
    filename (str): Filename of the OUTCAR file to parse
    reciprocal (bool): Get either the reciprocal or the cartesian coordinates
    weight (bool): Get the weight assigned to the irreducible kpoints
    planewaves (bool): Get the planewaves assigned to the irreducible kpoints
    lines (list/None): lines read from the file

Returns:
    numpy.ndarray: An array of k-points
@staticmethod
def get_irreducible_kpoints(filename='OUTCAR', reciprocal=True, weight=True, planewaves=True, lines=None):
    '\n        Function to extract the irreducible kpoints from the OUTCAR file\n\n        Args:\n            filename (str): Filename of the OUTCAR file to parse\n            reciprocal (bool): Get either the reciprocal or the cartesian coordinates\n            weight (bool): Get the weight assigned to the irreducible kpoints\n            planewaves (bool): Get the planewaves assigned to the irreducible kpoints\n            lines (list/None): lines read from the file\n\n        Returns:\n            numpy.ndarray: An array of k-points\n        '
    kpoint_lst = []
    weight_lst = []
    planewaves_lst = []
    trigger_number_str = 'Subroutine IBZKPT returns following result:'
    trigger_plane_waves_str = 'k-point  1 :'
    trigger_number = 0
    trigger_plane_waves = 0
    lines = _get_lines_from_file(filename=filename, lines=lines)
    for (i, line) in enumerate(lines):
        line = line.strip()
        if (trigger_number_str in line):
            trigger_number = int(i)
        elif planewaves:
            if (trigger_plane_waves_str in line):
                trigger_plane_waves = int(i)
    number_irr_kpoints = int(lines[(trigger_number + 3)].split()[1])
    if reciprocal:
        trigger_start = (trigger_number + 7)
    else:
        trigger_start = ((trigger_number + 10) + number_irr_kpoints)
    for line in lines[trigger_start:(trigger_start + number_irr_kpoints)]:
        line = line.strip()
        line = _clean_line(line)
        kpoint_lst.append([float(l) for l in line.split()[0:3]])
        if weight:
            weight_lst.append(float(line.split()[3]))
    if (planewaves and (trigger_plane_waves != 0)):
        for line in lines[trigger_plane_waves:(trigger_plane_waves + number_irr_kpoints)]:
            line = line.strip()
            line = _clean_line(line)
            planewaves_lst.append(float(line.split()[(- 1)]))
    if (weight and planewaves):
        return (np.array(kpoint_lst), np.array(weight_lst), np.array(planewaves_lst))
    elif weight:
        return (np.array(kpoint_lst), np.array(weight_lst))
    elif planewaves:
        return (np.array(kpoint_lst), np.array(planewaves_lst))
    else:
        return np.array(kpoint_lst)