def get_kpts_line_explicit(kpts_line, ndiv):
    
    """
    Explicitly lists all points along a given high-symmetry k-path

    Parameters
    ----------
    kpts_line: Kpoint object describing the high-symmetry k-path
    ndiv : (int) number of divisions along high-symmetry lines

    Returns
    -------
    abs_path : list of all points along the given high-symmetry k-path
        
    """         
    
    num_branches = int(len(kpts_line.kpts)/2)
    
    abs_path = []
    for i in range(num_branches):
        ## alternating kpts define the start and end points for each branch
        start_kpt = [kpts_line.kpts[2*i][0],kpts_line.kpts[2*i][1],
                     kpts_line.kpts[2*i][2],str(kpts_line.labels[2*i])]
        end_kpt = [kpts_line.kpts[2*i+1][0],kpts_line.kpts[2*i+1][1],
                   kpts_line.kpts[2*i+1][2],str(kpts_line.labels[2*i+1])]
#        print (start_kpt,end_kpt)
        
        increments = [(end_kpt[0] - start_kpt[0]) / ndiv,
                      (end_kpt[1] - start_kpt[1]) / ndiv,
                      (end_kpt[2] - start_kpt[2]) / ndiv]
        
        abs_path.append([str(k) for k in start_kpt[:3]] + ['0', start_kpt[-1]])
        ## explicitly write out all the intermediate kpts along the branch
        for n in range(1, ndiv):
            abs_path.append([str(start_kpt[0] + increments[0] * n),
                             str(start_kpt[1] + increments[1] * n),
                             str(start_kpt[2] + increments[2] * n), '0'])
        abs_path.append([str(k) for k in end_kpt[:3]] + ['0', end_kpt[-1]])            

    return abs_path