def main(argv=sys.argv): argv = sys.argv args = read_inputs(argv[1:]) in_files_path = args.infiles #Import silver data wave_s, diel_rs, diel_is = numpy.loadtxt( '../data/wave_silver_diel_3700-4000.txt', skiprows=1, unpack=True) #Import water data wave_w, diel_rw, diel_iw = numpy.loadtxt( '../data/wave_water_diel_3700-4000.txt', skiprows=1, unpack=True) #Creating dielectric list first dielectric outside, then inside diel_list = [ list(eps) for eps in zip(diel_rw + 1j * diel_iw, diel_rs + 1j * diel_is) ] #Set enviornment variable for PyGBe folder_path = in_files_path + 'BSA_sensorR8_d=infty' full_path = os.path.abspath(folder_path) + '/' os.environ['PYGBE_PROBLEM_FOLDER'] = full_path #Creating dictionary field. We will modify the 'E' key in the for loop. field_dict_Ag = read_fields(full_path + 'sph_sensor.config') #Calculate Cext(lambda) for silver tic_ss = time.time() e_field = -0.0037 wave, Cext_silver = Cext_wave_scan(e_field, wave_s, diel_list, field_dict_Ag, full_path) toc_ss = time.time() #Calculate Cext_analytical(lambda) for silver, radius of sphere=8 nm tic_sa = time.time() r = 8. #Silver Cext_an_silver = Cext_analytical(r, wave_s / 10, diel_rw + 1j * diel_iw, diel_rs + 1j * diel_is) toc_sa = time.time() #Save wavelength, Cext, Cext_analytical, error #Silver numpy.savetxt('../results/lambda_Cext_Cext_an_silver.txt', list(zip(wave / 10, Cext_silver, Cext_an_silver)), fmt='%.5f %.5f %.5f ', header='lambda [ang], Cext, Cext_analytical') time_simulation = (toc_ss - tic_ss) time_analytical = (toc_sa - tic_sa) time_silver = (toc_ss - tic_ss) + (toc_sa - tic_sa) with open('../results/time_verification.txt', 'w') as f: print('time_total: {} s (simulation: {} + analytical: {}) '.format( time_silver, time_simulation, time_analytical), file=f)
def main(argv=sys.argv): argv = sys.argv args = read_inputs(argv[1:]) in_files_path = args.infiles #Import surface data wave_s, diel_rs, diel_is = numpy.loadtxt( '../dielectric_data/4H-SIC_permittivity_10-12_microns.csv', skiprows=1, unpack=True) air_diel = [1. + 1j * 0.] * len(wave_s) #Creating dielectric list first dielectric outside, then inside diel_list = [list(eps) for eps in zip(air_diel, diel_rs + 1j * diel_is)] #Set enviornment variable for PyGBe folder_path = in_files_path + 'prism_reg_SE' full_path = os.path.abspath(folder_path) + '/' os.environ['PYGBE_PROBLEM_FOLDER'] = full_path #Creating dictionary field. We will modify the 'E' key in the for loop. field_dict_pillars = read_fields(full_path + 'prism_reg_38K.config') #Calculate Cext(lambda) for pillars' surface tic_ss = time.time() e_field = -1. wave, Cext_pillars = Cext_wave_scan(e_field, wave_s, diel_list, field_dict_pillars, full_path) toc_ss = time.time() numpy.savetxt('../results_data/prism_regular_SE_LE_res/' + 'prism_reg_38K_short_edge' + '10-20microns.txt', list(zip(wave, Cext_pillars)), fmt='%.9f %.9f', header='lambda [Ang], Cext [nm^2]') time_simulation = (toc_ss - tic_ss) with open( '../results_data/prism_regular_SE_LE_res/Time_' + 'prism_reg_38K_short_edge' + '.txt', 'w') as f: print('time_total: {} s'.format(time_simulation), file=f)
#Complex dielectric assembly e_w = er_w + 1j * ei_w #water e_s = er_s + 1j * ei_s #silver e_p = er_p + 1j * ei_p #protein #Building E field for single sphere dictionary E_field_single = [list(eps) for eps in zip(e_w, e_s)] field_dict_single = read_fields( '../../../pygbe/examples/BSA_sensor_d=infty/sph_sensor.config') tic_single = time.time() elec_field = -1 wave_single, Cext_single = Cext_wave_scan( elec_field, wavelength, E_field_single, field_dict_single, '../../../pygbe/examples/BSA_sensor_d=infty') toc_single = time.time() numpy.savetxt('../../data/wave_cext_d_prot_sensor/wave_cext_d_infty.txt', list(zip(wave_single, Cext_single)), fmt='%.1f %.8f', header='lambda [Ang], Cext, d=infty') #Building E field for dictionary (protein) E_field = [list(eps) for eps in zip(e_w, e_s, e_p)] distance_path_folders = ['BSA_sensor_d=1', 'BSA_sensor_d=2', 'BSA_sensor_d=4'] tic_d = time.time() elec_field = -1
def main(argv=sys.argv): '''Creates lspr response data for the following cases: BSA_sensorR8_2pz_d=0.5_00, BSA_sensorR8_2pz_d=1_00, BSA_sensorR8_2pz_d=2_00 and for the case of no protein BSA_sensorR8_d=infty. Arguments passed (read docs of read_inputs) ---------------- infiles: str, absolute path where the input files are located. For example: if input_problem_folders was downloaded in the directory home/Downloads, then the path will be: home/Downloads/input_problem_folders/ ''' argv = sys.argv args = read_inputs(argv[1:]) in_files_path = args.infiles #Importing dielectrics data l_w, er_w, ei_w = numpy.loadtxt( '../dielectrics_data/wave_ang_water_diel_3820-3870.txt', unpack=True) l_s, er_s, ei_s = numpy.loadtxt( '../dielectrics_data/wave_ang_silver_diel_3820-3870.txt', unpack=True) l_p, er_p, ei_p = numpy.loadtxt( '../dielectrics_data/wave_ang_prot_diel_3820-3870.txt', unpack=True) #Check the wavelength ranges are all equal try: all(l_w == l_s) & all(l_s == l_p) wavelength = l_w except: raise ValueError( 'The wavelength ranges are not equal, check data generation') #Complex dielectric assembly e_w = er_w + 1j * ei_w #water e_s = er_s + 1j * ei_s #silver e_p = er_p + 1j * ei_p #protein #Building E field for single sphere dictionary E_field_single = [list(eps) for eps in zip(e_w, e_s)] field_dict_single = read_fields(in_files_path + 'BSA_sensorR8_d=infty/sph_sensor.config') tic_single = time.time() elec_field = -0.0037 wave_single, Cext_single = Cext_wave_scan( elec_field, wavelength, E_field_single, field_dict_single, in_files_path + 'BSA_sensorR8_d=infty/') toc_single = time.time() numpy.savetxt( '../Cext_variation_with_distance_two_bsa_z_results/BSA_sensorR8_d=infty_3820-3870ang.txt', list(zip(wave_single, Cext_single)), fmt='%.1f %.8f', header='lambda [Ang],Cext_' + 'BSA_sensorR8_d=infty') #Building E field for dictionary (one protein) uncomment the following line #E_field = [list(eps) for eps in zip(e_w, e_s, e_p) #If only one protein comment the following 4 lines of code #Building E field for dictionary for case of 2 proteins e_list = [list(eps) for eps in zip(e_w, e_s, e_p)] E_field = [] for lst in e_list: E_field.append(lst + [lst[-1]] * 1) #works for 2 proteins, if n proteins # needed replace lst+[lst[-1]]*1 by #lst+[lst[-1]]*(n-1) distance_path_folders = [ 'BSA_sensorR8_2pz_d=0.5_00', 'BSA_sensorR8_2pz_d=1_00', 'BSA_sensorR8_2pz_d=2_00' ] tic_d = time.time() elec_field = -0.0037 for path in distance_path_folders: folder_path = in_files_path + path full_path = os.path.abspath(folder_path) + '/' os.environ['PYGBE_PROBLEM_FOLDER'] = full_path field_dict = read_fields(folder_path + '/sphere_bsa.config') wave, Cext = Cext_wave_scan(elec_field, wavelength, E_field, field_dict, in_files_path + path) numpy.savetxt('../Cext_variation_with_distance_two_bsa_z_results/' + path + '_3820-3870ang.txt', list(zip(wave, Cext)), fmt='%.1f %.8f', header='lambda [Ang], Cext_' + path) toc_d = time.time() with open( '../Cext_variation_with_distance_two_bsa_z_results/Time_Cext_variation_with_distance_two_bsa_z.txt', 'w') as f: print('single sphere run time: {}'.format((toc_single - tic_single)), file=f) print('sphere-bsa run time: {}'.format((toc_d - tic_d)), file=f) print('total run time: {}'.format((toc_single - tic_single) + (toc_d - tic_d)), file=f)
unpack = True) #Creating dielectric list for silver diel_wat_75, diel_sil_75, diel_list_75 = create_diel_list(nw_75, kw_75, ns_75, ks_75) #Creating dielectric list for gold diel_wat_76, diel_gold_76, diel_list_76 = create_diel_list(nw_76, kw_76, ng_76, kg_76) #Creating dictionary field. We will modify the 'E' key in the for loop. field_dict_Ag = read_fields('../../../pygbe_dev/pygbe/examples/lspr_silver/sphereAg_complex.config') field_dict_Au = read_fields('../../../pygbe_dev/pygbe/examples/lspr_gold/sphereAu_complex.config') #Calculate Cext(lambda) for silver tic_s = time.time() wave_s, Cext_silver = Cext_wave_scan(lambda_75, diel_list_75, field_dict_Ag, '../../../pygbe_dev/pygbe/examples/lspr_silver') toc_s = time.time() #Calculate Cext(lambda) for gold tic_g = time.time() wave_g, Cext_gold = Cext_wave_scan(lambda_76, diel_list_76, field_dict_Au, '../../../pygbe_dev/pygbe/examples/lspr_gold') toc_g = time.time() #Calculate Cext_analytical(lambda) for silver and gold, radius of sphere=10 nm r = 10. #Silver Cext_an_silver = Cext_analytical(r, wave_s, diel_wat_75, diel_sil_75) #Gold Cext_an_gold = Cext_analytical(r, wave_g, diel_wat_76, diel_gold_76)
#Complex dielectric assembly e_w = er_w + 1j * ei_w #water e_s = er_s + 1j * ei_s #silver e_p = er_p + 1j * ei_p #protein #Building E field for single sphere dictionary E_field_single = [list(eps) for eps in zip(e_w, e_s)] field_dict_single = read_fields( '../../../pygbe_dev/pygbe/examples/lspr/sphere_complex.config') tic_single = time.time() wave_single, Cext_single = Cext_wave_scan( wavelength, E_field_single, field_dict_single, '../../../pygbe_dev/pygbe/examples/lspr') toc_single = time.time() numpy.savetxt('../../data/wave_cext_d/wave_cext_d_infty.txt', list(zip(wave_single, Cext_single)), fmt='%.3f %.8f', header='lambda [nm], Cext, d=infty') #Building E field for dictionary (protein) e_list = [list(eps) for eps in zip(e_w, e_s, e_p)] E_field = [] for lst in e_list: E_field.append(lst + [lst[-1]] * 5)
'lambda [nm], refrac_real_water, refrac_imag_water, refrac_real_silver, refrac_imag_silver, refrac_real_gold, refrac_imag_gold' ) #Creating dielectric list for silver diel_wat_s, diel_sil, diel_list_silv = create_diel_list(n_w, k_w, n_s, k_s) #Creating dielectric list for gold diel_wat_g, diel_gold, diel_list_gold = create_diel_list(n_w, k_w, n_g, k_g) #Creating dictionary field. We will modify the 'E' key in the for loop. field_dict = read_fields( '../../../pygbe_dev/pygbe/examples/lspr/sphere_complex.config') #Calculate Cext(lambda) for silver tic_s = time.time() wave_s, Cext_silver = Cext_wave_scan(lambda_wsg, diel_list_silv, field_dict, '../../../pygbe_dev/pygbe/examples/lspr') toc_s = time.time() #Calculate Cext(lambda) for gold tic_g = time.time() wave_g, Cext_gold = Cext_wave_scan(lambda_wsg, diel_list_gold, field_dict, '../../../pygbe_dev/pygbe/examples/lspr') toc_g = time.time() #Calculate Cext_analytical(lambda) for silver and gold, radius of sphere=10 nm r = 10. #Silver Cext_an_silver = Cext_analytical(r, wave_s, diel_wat_s, diel_sil) #Gold Cext_an_gold = Cext_analytical(r, wave_g, diel_wat_g, diel_gold)