<jupyter_start><jupyter_text>Based on extract_distribution.ipynbAn unnamed collaborator mentioned the following interesting suggestion during the last call: Assuming the validity of Yang 2015's curve, is it possible that the charge q could be smaller than reported and the Q larger, and produce the same absorption spectrum?  CaveatsAs can be seen in extract_distribution in this repo, a hetrogenous distribution of particles can affect the observed curve. Here we assume no pleomorphy; a single damped harmonic resonator with uniform parameters. Also, the resonator is almost certainly "parametric".  Relaxation time might itself change with freq. ![Screenshot%20from%202020-08-17%2018-50-33.png](attachment:Screenshot%20from%202020-08-17%2018-50-33.png)<jupyter_code>curve_file = "../biology/data/figure_6a_Yang_digitized.csv"
curve = np.genfromtxt(open(curve_file, "r"), delimiter=",", dtype=np.float, encoding='ascii', skip_header=1)

curve[:,0] *= 1e9
curve[:,1] = curve[:,1] / np.max(curve[:,1]) #normalize

def power_amplitude_shift_coefficient(Q):
    '''
    from biology.ipynb
    maximum amplitude and maximum power frequencies are offset from one another
    '''
    return (sqrt(2*Q**2 - 1))/(sqrt(2) * Q)

def power_absorption_curve(f_res, Q, frequencies):
    # M and Fmax 
    angular_freq_res = 2.0*pi*f_res
    angular_frequencies = 2.0*pi*frequencies
    term_1 = ((angular_freq_res**2.0 - angular_frequencies**2.0)**2.0)
    term_2 = ((angular_freq_res**2.0)/(Q**2.0)) * (angular_frequencies**2.0)
        
    curve = 1/(term_1 + term_2)
    curve = curve / np.max(curve) #normalize

    
    return curve
    
frequencies = np.linspace(6e9, 12e9, 300)

f_res = 8.35e9 # okay, the digitizing is a little off 

Qs = [1.0, 1.5, 2.0, 3.7, 5]

for Q in Qs:
    power_coeff = power_amplitude_shift_coefficient(Q)
    simple_curve = power_absorption_curve(f_res / power_coeff, Q, frequencies)
    plt.plot(frequencies,simple_curve, label=str(Q))


interp_Yang_curve = np.interp(frequencies, curve[:,0], curve[:,1]) # linterp the hand-drawn points to match up with the freqs

plt.plot(frequencies,interp_Yang_curve, linestyle="--",label="Yang's observed curve")
plt.legend()<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.11722272317403065, 'fraction_numerical': 0.04508566275924256, 'mean_word_length': 4.824146981627297, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 5, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '1', 'dir': 'jupyter-structured-clean-dedup', 'id': '405040', 'license': 'MIT', 'n_tokens_mistral': 835, 'n_tokens_neox': 744, 'n_words': 200, 'path': 'documents/Q_big_q_small.ipynb', 'repo_name': '0xDBFB7/covidinator', 'size': '2218'}