<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def get_commensurate_points_in_integers(supercell_matrix):
 """Commensurate q-points in integer representation are returned. A set of integer representation of lattice points is transformed to the equivalent set of lattice points in fractional coordinates with respect to supercell basis vectors by integer_lattice_points / det(supercell_matrix) Parameters supercell_matrix : array_like Supercell matrix with respect to primitive cell basis vectors. shape=(3, 3) dtype=intc Returns ------- lattice_points : ndarray Integer representation of lattice points in supercell. shape=(N, 3) """

    smat = np.array(supercell_matrix, dtype=int)
    snf = SNF3x3(smat.T)
    snf.run()
    D = snf.A.diagonal()
    b, c, a = np.meshgrid(range(D[1]), range(D[2]), range(D[0]))
    lattice_points = np.dot(np.c_[a.ravel() * D[1] * D[2],
                                  b.ravel() * D[0] * D[2],
                                  c.ravel() * D[0] * D[1]], snf.Q.T)
    lattice_points = np.array(lattice_points % np.prod(D),
                              dtype='intc', order='C')
    return lattice_points