def supernova_pca_model(frequency_array, pc_coeff1, pc_coeff2, pc_coeff3,
    pc_coeff4, pc_coeff5, luminosity_distance, **kwargs):
    """ Supernova signal model """
    realPCs = kwargs['realPCs']
    imagPCs = kwargs['imagPCs']
    pc1 = realPCs[:, (0)] + 1.0j * imagPCs[:, (0)]
    pc2 = realPCs[:, (1)] + 1.0j * imagPCs[:, (1)]
    pc3 = realPCs[:, (2)] + 1.0j * imagPCs[:, (2)]
    pc4 = realPCs[:, (3)] + 1.0j * imagPCs[:, (3)]
    pc5 = realPCs[:, (4)] + 1.0j * imagPCs[:, (5)]
    scaling = 1e-23 * (10.0 / luminosity_distance)
    h_plus = scaling * (pc_coeff1 * pc1 + pc_coeff2 * pc2 + pc_coeff3 * pc3 +
        pc_coeff4 * pc4 + pc_coeff5 * pc5)
    h_cross = scaling * (pc_coeff1 * pc1 + pc_coeff2 * pc2 + pc_coeff3 *
        pc3 + pc_coeff4 * pc4 + pc_coeff5 * pc5)
    return {'plus': h_plus, 'cross': h_cross}
