<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_site_coeffs(self, sites, imt):
 """ Extracts correct coefficients for each site from Table 5 on p. 208 for each site. :raises UserWarning: If vs30 is below limit for site class D, since "E- and F-type """


        site_classes = self.get_nehrp_classes(sites)
        is_bedrock = self.is_bedrock(sites)

        if 'E' in site_classes:
            msg = ('Site class E and F not supported by %s'
                   % type(self).__name__)
            warnings.warn(msg, UserWarning)

        a_1 = np.nan*np.ones_like(sites.vs30)
        a_2 = np.nan*np.ones_like(sites.vs30)
        sigma = np.nan*np.ones_like(sites.vs30)
        for key in self.COEFFS_NEHRP.keys():
            indices = (site_classes == key) & ~is_bedrock
            a_1[indices] = self.COEFFS_NEHRP[key][imt]['a1']
            a_2[indices] = self.COEFFS_NEHRP[key][imt]['a2']
            sigma[indices] = self.COEFFS_NEHRP[key][imt]['sigma']

        a_1[is_bedrock] = 0.
        a_2[is_bedrock] = 0.
        sigma[is_bedrock] = 0.

        return (a_1, a_2, sigma)