def compute_noise_variance(D, K_strong_columns, strong_column_multiplier, noise_multiplier):
    """
    Recall that y = X * \beta
    where X is a vector of D independent samples from some distribution and \beta is a vector of N(0,1) variables.
    The first K_strong_columns of X are multiplied by strong_column_multiplier the variance of Y is proportional to
    K_strong_columns*(strong_column_multiplier**2) + (D-K_strong_columns)
    """
    return noise_multiplier*(K_strong_columns*(strong_column_multiplier**2) + (D-K_strong_columns))