From adb3341cf72da2336ce1189bd30af219216a80a7 Mon Sep 17 00:00:00 2001 From: chris-krenz Date: Wed, 8 May 2024 15:56:46 -0400 Subject: [PATCH 1/3] linspace -> geomspace --- core_algorithm/utils/response_plot.py | 28 +++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/core_algorithm/utils/response_plot.py b/core_algorithm/utils/response_plot.py index c5c55b9..34f576b 100644 --- a/core_algorithm/utils/response_plot.py +++ b/core_algorithm/utils/response_plot.py @@ -8,7 +8,6 @@ def get_table_values(table, col_name, input_cnt): - bar_values: dict[str:float] = {} col_index = None @@ -32,7 +31,6 @@ def get_table_values(table, col_name, input_cnt): def plot_bars(filepath, plot_name, best_graph, table, units): - input_cnt = len(best_graph.inputs) output_cnt = len(best_graph.outputs) @@ -54,7 +52,7 @@ def plot_bars(filepath, plot_name, best_graph, table, units): outputs_dict[k]['prev_node'] = best_graph.find_prev(outputs_dict[k]['node']).name for k, o in outputs_dict.items(): - if prev_node:=o['prev_node']: + if prev_node := o['prev_node']: outputs_dict[k]['name'] = prev_node outputs_dict[k]['scores_pre_HR'] = get_table_values(table, prev_node, input_cnt) outputs_dict[k]['scores_post_HR'] = get_table_values(table, k, input_cnt) @@ -64,8 +62,9 @@ def plot_bars(filepath, plot_name, best_graph, table, units): # fig = plt.subplots() px = 1 / plt.rcParams['figure.dpi'] - plt.figure(figsize=(px*(640 + 180*input_cnt), px*(120 + output_cnt*(280 + 120*input_cnt)))) - plt.subplots_adjust(top=0.8 + (0.03*output_cnt), hspace=0.5, wspace=0.5) + plt.figure( + figsize=(px * (640 + 180 * input_cnt), px * (120 + output_cnt * (280 + 120 * input_cnt)))) + plt.subplots_adjust(top=0.8 + (0.03 * output_cnt), hspace=0.5, wspace=0.5) if plot_name.endswith('.UCF'): plot_name = plot_name[:-4] plt.suptitle(f'{plot_name}: Response Plots', fontsize=15, y=.95, fontweight='bold') @@ -80,30 +79,32 @@ def plot_bars(filepath, plot_name, best_graph, table, units): for output, data in outputs_dict.items(): # Output Response Plots (all outputs) - ax1 = plt.subplot(output_cnt, 3, 3*i - 2) + ax1 = plt.subplot(output_cnt, 3, 3 * i - 2) ax1.set_title(f'{data["name"]}', fontsize=12) - plt.bar(list(data['scores_pre_HR'].keys()), list(data['scores_pre_HR'].values()), color='gray') + plt.bar(list(data['scores_pre_HR'].keys()), list(data['scores_pre_HR'].values()), + color='gray') plt.yscale('log') - plt.ylim(ax1.get_ylim()[0]*0.1, ax1.get_ylim()[1]*10) + plt.ylim(ax1.get_ylim()[0] * 0.1, ax1.get_ylim()[1] * 10) plt.ylabel(f'Output ({units})', fontsize=12, fontweight='bold') # Outputs with Hill Response functions (i.e. Communication Molecules) only... if data['prev_node']: # Hill Response Curve - curve = lambda ymax, ymin, kd, n, x : ymin + (ymax - ymin) / (1.0 + (kd / x)**n) - ax2 = plt.subplot(output_cnt, 3, 3*i - 1) - x = np.linspace(ax1.get_ylim()[0], ax1.get_ylim()[1], 1000) + curve = lambda ymax, ymin, kd, n, x: ymin + (ymax - ymin) / (1.0 + (kd / x) ** n) + ax2 = plt.subplot(output_cnt, 3, 3 * i - 1) + # for logspace, need ints corresponding to powers; geom uses real vals as endpoints + x = np.geomspace(ax1.get_ylim()[0] * 0.1, ax1.get_ylim()[1], 10000) ax2.plot(x, curve(data['params']['ymax'], data['params']['ymin'], data['params']['kd'], data['params']['n'], x)) ax2.set_title(f'{output} Hill', fontsize=12) - plt.yscale('log', ) + plt.yscale('log') plt.xscale('log') if i == last: plt.xlabel(f'Input ({units})', fontsize=12, fontweight='bold') # Promoter Activity Bars - ax3 = plt.subplot(output_cnt, 3, 3*i) + ax3 = plt.subplot(output_cnt, 3, 3 * i) ax3.sharey(ax2) ax3.set_title(f'{output} Promoter', fontsize=12) plt.bar(list(data['scores_post_HR'].keys()), list(data['scores_post_HR'].values())) @@ -111,7 +112,6 @@ def plot_bars(filepath, plot_name, best_graph, table, units): i += 1 - # Suppress (useless) console output matplotlib_logger = logging.getLogger("matplotlib") matplotlib_logger.setLevel(logging.INFO) From efe4c54fd5cc0f7a36ffee30fc3e3ad8f11d0823 Mon Sep 17 00:00:00 2001 From: chris-krenz Date: Wed, 17 Jul 2024 02:37:18 -0400 Subject: [PATCH 2/3] added constraint files and tweaked response plot --- core_algorithm/celloAlgo.py | 179 +- core_algorithm/utils/response_plot.py | 15 +- library/constraints/Eco2C1G5T1.UCF.json | 2006 ++++++++++++++++++++ library/constraints/Eco2C1G5T1.input.json | 93 + library/constraints/Eco2C1G5T1.output.json | 263 +++ 5 files changed, 2490 insertions(+), 66 deletions(-) create mode 100644 library/constraints/Eco2C1G5T1.UCF.json create mode 100644 library/constraints/Eco2C1G5T1.input.json create mode 100644 library/constraints/Eco2C1G5T1.output.json diff --git a/core_algorithm/celloAlgo.py b/core_algorithm/celloAlgo.py index 3f9f227..519ea1f 100644 --- a/core_algorithm/celloAlgo.py +++ b/core_algorithm/celloAlgo.py @@ -5,6 +5,7 @@ """ import os + # Note: environment variables should set before numpy/scipy import os.environ["OMP_NUM_THREADS"] = "1" os.environ["OPENBLAS_NUM_THREADS"] = "1" @@ -15,7 +16,8 @@ # from memory_profiler import memory_usage # Note: memory reported in simulated annealing function # mem_usage = 0 from threadpoolctl import threadpool_limits, threadpool_info -import scipy # Note: 'user_api' for use in thread-limiting with statement around scipy annealing algo +import \ + scipy # Note: 'user_api' for use in thread-limiting with statement around scipy annealing algo import time import itertools @@ -81,17 +83,19 @@ class CELLO3: [end] """ - def __init__(self, v_name, ucf_name, in_name, out_name, verilogs_path, constraints_path, out_path, + def __init__(self, v_name, ucf_name, in_name, out_name, verilogs_path, constraints_path, + out_path, options: dict = None): # NOTE: Initialization try: # NOTE: SETTINGS (Defaults for specific Cello object; see __main__ at bottom for global program defaults) yosys_cmd_choice = 1 # Set of cmds passed to YOSYS to convert Verilog to netlist & image generation - self.verbose = False # Print more info to console & log. See logging.config to change verbosity - self.print_iters = False # Print to console info on *all* tested iters (produces copious amounts of text) - self.exhaustive = False # Run *all* possible permutes to find true optimum score (*long* run time) - self.test_configs = False # Runs brief tests of all configs, producing logs and a csv summary of all tests + self.verbose = False # Print more info to console & log. See logging.config to change verbosity + self.print_iters = False # Print to console info on *all* tested iters (produces copious amounts of text) + self.exhaustive = False # Run *all* possible permutes to find true optimum score (*long* run time) + self.test_configs = False # Runs brief tests of all configs, producing logs and a csv summary of all tests self.log_overwrite = False # Removes date/time from file name, allowing overwrite of logs + self.total_iters = 1_000 # Number of iterations to run Cello for if 'yosys_cmd_choice' in options: yosys_cmd_choice = options['yosys_cmd_choice'] @@ -106,6 +110,8 @@ def __init__(self, v_name, ucf_name, in_name, out_name, verilogs_path, constrain if 'exhaustive' in options: # Normally uses Scipy's dual annealing self.exhaustive = options['exhaustive'] + if 'iterations' in options: + self.total_iters = options['iterations'] self.verilogs_path = os.path.abspath(verilogs_path) self.constraints_path = os.path.abspath(constraints_path) @@ -118,7 +124,9 @@ def __init__(self, v_name, ucf_name, in_name, out_name, verilogs_path, constrain self.best_score = 0 self.best_graphs = [] self.units = 'Unknown_Units' - self.filepath = os.path.join(out_path, self.verilog_name, f'{self.verilog_name}_{self.ucf_name[:-4]}') + self.conversions = {} + self.filepath = os.path.join(out_path, self.verilog_name, + f'{self.verilog_name}_{self.ucf_name[:-4]}') # Loggers log.config_logger(self.verilog_name, self.ucf_name, self.log_overwrite) log.reset_logs() @@ -131,7 +139,8 @@ def __init__(self, v_name, ucf_name, in_name, out_name, verilogs_path, constrain # NOTE: Logic Synthesis (YOSYS) try: # yosys cmd set 1 seems best after trial & error - cont = call_YOSYS(self.verilogs_path, self.out_path, self.verilog_name, self.ucf_name[:-4], yosys_cmd_choice) + cont = call_YOSYS(self.verilogs_path, self.out_path, self.verilog_name, + self.ucf_name[:-4], yosys_cmd_choice) print_centered('End of Logic Synthesis') if not cont: @@ -161,6 +170,11 @@ def __init__(self, v_name, ucf_name, in_name, out_name, verilogs_path, constrain log.cf.warning('Cannot find units...') if not self.ucf.valid: raise CelloError('Error with UCF') + conversions = self.ucf.query_top_level_collection(self.ucf.UCFout, 'models') + for gate in conversions: + print(gate['name'][:-6]) + print([param['value'] for param in gate['parameters'] if param['name'] == 'unit_conversion']) + self.conversions[gate['name'][:-6]] = [param['value'] for param in gate['parameters'] if param['name'] == 'unit_conversion'][0] except Exception as e: raise CelloError('Error reading UCF', e) @@ -192,7 +206,8 @@ def __init__(self, v_name, ucf_name, in_name, out_name, verilogs_path, constrain # NOTE: only rnl Gate nodes are dictionaries with inputs and outputs; Input and Output nodes are lists if self.verbose: - debug_print(f'final result for {self.verilog_name}.v+{self.ucf_name}: {best_result[0]}') + debug_print( + f'final result for {self.verilog_name}.v+{self.ucf_name}: {best_result[0]}') debug_print(best_result[1]) except Exception as e: raise CelloError('Error with circuit scoring', e) @@ -211,7 +226,8 @@ def __init__(self, v_name, ucf_name, in_name, out_name, verilogs_path, constrain log.cf.info(f'\nInputs ( input response = {best_graph.inputs[0].resp_func_eq} ):') in_labels = {} for rnl_in, g_in in graph_inputs_for_printing: - log.cf.info(f' - {rnl_in} {str(g_in)} with max sensor output of {str(list(g_in.out_scores.items()))}') + log.cf.info( + f' - {rnl_in} {str(g_in)} with max sensor output of {str(list(g_in.out_scores.items()))}') in_labels[rnl_in[0]] = g_in.name log.cf.info(f'\nGates ( response function = {best_graph.gates[0].response_func}; ' @@ -226,8 +242,10 @@ def __init__(self, v_name, ucf_name, in_name, out_name, verilogs_path, constrain for rnl_out, g_out in graph_outputs_for_printing: log.cf.info(f' - {rnl_out} {str(g_out)}') out_labels[rnl_out[0]] = g_out.name - tech_diagram_filepath = os.path.join(self.out_path, v_name, f'{self.verilog_name}_{self.ucf_name[:-4]}') - replace_techmap_diagram_labels(tech_diagram_filepath, gate_labels, in_labels, out_labels) + tech_diagram_filepath = os.path.join(self.out_path, v_name, + f'{self.verilog_name}_{self.ucf_name[:-4]}') + replace_techmap_diagram_labels(tech_diagram_filepath, gate_labels, in_labels, + out_labels) except Exception as e: log.cf.error('Error with results/circuit design\n') raise CelloError('Error with results/circuit design', e) @@ -235,7 +253,8 @@ def __init__(self, v_name, ucf_name, in_name, out_name, verilogs_path, constrain # NOTE: TRUTH TABLE/GATE SCORING try: # Create the full path for the file - filepath = os.path.join(out_path, self.verilog_name, f'{self.verilog_name}_{self.ucf_name[:-4]}') + filepath = os.path.join(out_path, self.verilog_name, + f'{self.verilog_name}_{self.ucf_name[:-4]}') # Ensure the directory exists directory_path = os.path.dirname(filepath) @@ -247,12 +266,14 @@ def __init__(self, v_name, ucf_name, in_name, out_name, verilogs_path, constrain print('(See log for more precision)') # Now write the CSV file - fullpath = os.path.join(os.path.dirname(filepath), f"{os.path.basename(filepath)}_activity-table.csv") + fullpath = os.path.join(os.path.dirname(filepath), + f"{os.path.basename(filepath)}_activity-table.csv") with open(fullpath, 'w', newline='') as csvfile: csv_writer = csv.writer(csvfile) csv_writer.writerow(['Scores...']) - csv_writer.writerows(zip(*[["{:.2e}".format(float(c)) if i > 0 else c for i, c in enumerate(row)] - for row in zip(*tb) if not row[0].endswith('_I/O')])) + csv_writer.writerows( + zip(*[["{:.2e}".format(float(c)) if i > 0 else c for i, c in enumerate(row)] + for row in zip(*tb) if not row[0].endswith('_I/O')])) csv_writer.writerows([[''], ['Binary...']]) csv_writer.writerows(zip(*[row for row in zip(*tb) if row[0].endswith('_I/O')])) @@ -267,7 +288,8 @@ def __init__(self, v_name, ucf_name, in_name, out_name, verilogs_path, constrain # NOTE: CIRCUIT SCORE FILE try: - fullpath = os.path.join(os.path.dirname(filepath), f"{os.path.basename(filepath)}_circuit-score.csv") + fullpath = os.path.join(os.path.dirname(filepath), + f"{os.path.basename(filepath)}_circuit-score.csv") with open(fullpath, 'w', newline='') as csvfile: csv_writer = csv.writer(csvfile) @@ -295,7 +317,8 @@ def __init__(self, v_name, ucf_name, in_name, out_name, verilogs_path, constrain # NOTE: DNA DESIGN try: - dna_designs = DNADesign(structs, cassettes, sequences, device_rules, circuit_rules, fenceposts) + dna_designs = DNADesign(structs, cassettes, sequences, device_rules, circuit_rules, + fenceposts) dna_designs.prep_to_get_part_orders() mini_eugene_part_orders = dna_designs.get_part_orders() # Calls miniEugene dna_designs.write_dna_parts_info(filepath) @@ -309,17 +332,22 @@ def __init__(self, v_name, ucf_name, in_name, out_name, verilogs_path, constrain # NOTE: SBOL DIAGRAM try: # SBOL XML - sbol_instance = SBOL(filepath, mini_eugene_part_orders[0], sequences) # TODO: loop part orders + sbol_instance = SBOL(filepath, mini_eugene_part_orders[0], + sequences) # TODO: loop part orders sbol_instance.generate_xml() base_dir = os.path.dirname(filepath) - plot_parameters_file = os.path.join(base_dir, f"{os.path.basename(filepath)}_dpl-plot-parameters.csv") - dpl_part_info_file = os.path.join(base_dir, f"{os.path.basename(filepath)}_dpl-part-information.csv") - dpl_reg_info_file = os.path.join(base_dir, f"{os.path.basename(filepath)}_dpl-regulatory-info.csv") - dpl_dna_designs_file = os.path.join(base_dir, f"{os.path.basename(filepath)}_dpl-dna-designs.csv") - dpl_png_file = os.path.join(base_dir, f"{os.path.basename(filepath)}_dpl-sbol.png") - dpl_pdf_file = os.path.join(base_dir, f"{os.path.basename(filepath)}_dpl-sbol.pdf") + plot_parameters_file = os.path.join(base_dir, + f"{os.path.basename(filepath)}_dpl-plot-parameters.csv") + dpl_part_info_file = os.path.join(base_dir, + f"{os.path.basename(filepath)}_dpl-part-information.csv") + dpl_reg_info_file = os.path.join(base_dir, + f"{os.path.basename(filepath)}_dpl-regulatory-info.csv") + dpl_dna_designs_file = os.path.join(base_dir, + f"{os.path.basename(filepath)}_dpl-dna-designs.csv") + dpl_png_file = os.path.join(base_dir, f"{os.path.basename(filepath)}_dpl-sbol.png") + dpl_pdf_file = os.path.join(base_dir, f"{os.path.basename(filepath)}_dpl-sbol.pdf") print(' - ', end='') plotter(plot_parameters_file, dpl_part_info_file, dpl_reg_info_file, @@ -332,7 +360,7 @@ def __init__(self, v_name, ucf_name, in_name, out_name, verilogs_path, constrain # NOTE: PLOTS try: plot_name = self.verilog_name + ' + ' + self.ucf_name - plot_bars(filepath, plot_name, best_graph, tb, self.units) + plot_bars(filepath, plot_name, best_graph, tb, self.units, self.conversions) log.cf.info(' - Response plots generated\n\n') except Exception as e: log.cf.error( @@ -351,7 +379,8 @@ def __init__(self, v_name, ucf_name, in_name, out_name, verilogs_path, constrain raise CelloError('Error with generating zipfile', e) def __load_netlist(self): - net_path = os.path.join(self.out_path, self.verilog_name, f'{self.verilog_name}_{self.ucf_name[:-4]}_yosys.json') + net_path = os.path.join(self.out_path, self.verilog_name, + f'{self.verilog_name}_{self.ucf_name[:-4]}_yosys.json') # net_path = os.path.join(self.out_path, self.verilog_name, self.verilog_name) net_file = open(net_path, 'r') net_json = json.load(net_file) @@ -383,13 +412,15 @@ def check_conditions(self, verbose=True): in_sensors = self.ucf.query_top_level_collection(self.ucf.UCFin, 'input_sensors') num_ucf_input_sensors = len(in_sensors) - num_ucf_input_structures = len(self.ucf.query_top_level_collection(self.ucf.UCFin, 'structures')) + num_ucf_input_structures = len( + self.ucf.query_top_level_collection(self.ucf.UCFin, 'structures')) num_ucf_input_models = len(self.ucf.query_top_level_collection(self.ucf.UCFin, 'models')) num_ucf_input_parts = len(self.ucf.query_top_level_collection(self.ucf.UCFin, 'parts')) num_netlist_inputs = len(self.rnl.inputs) if netlist_valid else 99999 inputs_match = (num_ucf_input_sensors == num_ucf_input_models) and \ (num_ucf_input_models == num_ucf_input_structures) and \ - (num_ucf_input_parts >= num_netlist_inputs) # TODO: why must part number match in line above? + ( + num_ucf_input_parts >= num_netlist_inputs) # TODO: why must part number match in line above? # == num_ucf_input_parts if verbose: log.cf.info(f'\nINPUTS (including the communication devices): \n' @@ -405,13 +436,16 @@ def check_conditions(self, verbose=True): out_sensors = self.ucf.query_top_level_collection(self.ucf.UCFout, 'output_devices') num_ucf_output_sensors = len(out_sensors) - num_ucf_output_structures = len(self.ucf.query_top_level_collection(self.ucf.UCFout, 'structures')) + num_ucf_output_structures = len( + self.ucf.query_top_level_collection(self.ucf.UCFout, 'structures')) num_ucf_output_models = len(self.ucf.query_top_level_collection(self.ucf.UCFout, 'models')) num_ucf_output_parts = len(self.ucf.query_top_level_collection(self.ucf.UCFout, 'parts')) num_netlist_outputs = len(self.rnl.outputs) if netlist_valid else 99999 outputs_match = (num_ucf_output_sensors == num_ucf_output_models) and \ - (num_ucf_output_models == num_ucf_output_parts == num_ucf_output_structures) and \ - (num_ucf_output_parts >= num_netlist_outputs) # TODO: why must part number match in line above? + ( + num_ucf_output_models == num_ucf_output_parts == num_ucf_output_structures) and \ + ( + num_ucf_output_parts >= num_netlist_outputs) # TODO: why must part number match in line above? if verbose: log.cf.info(f'\nOUTPUTS: \n' f'num OUT-SENSORS in {self.ucf_name} out-UCF: {num_ucf_output_sensors}\n' @@ -446,7 +480,8 @@ def check_conditions(self, verbose=True): f'num GATES in {self.ucf_name} UCF: {num_gates}') num_gates_available = [] - logic_constraints = self.ucf.query_top_level_collection(self.ucf.UCFmain, 'logic_constraints') + logic_constraints = self.ucf.query_top_level_collection(self.ucf.UCFmain, + 'logic_constraints') for logic_constraint in logic_constraints: for g in logic_constraint['available_gates']: num_gates_available.append(g['max_instances']) @@ -457,7 +492,8 @@ def check_conditions(self, verbose=True): log.cf.info(f'num GATES in {self.verilog_name} netlist: {num_netlist_gates}') log.cf.info(sorted(g_list)) log.cf.info(sorted(gate_names)) - gates_match = (num_structs == num_models == num_gates) and (num_gates_available[0] >= num_netlist_gates) + gates_match = (num_structs == num_models == num_gates) and ( + num_gates_available[0] >= num_netlist_gates) if verbose: log.cf.info(f"{'Valid' if gates_match else 'NOT valid'} intermediate match!") @@ -471,19 +507,24 @@ def check_conditions(self, verbose=True): pass_check = netlist_valid and inputs_match and outputs_match and gates_match - (max_iterations, confirm) = permute_count_helper(num_netlist_inputs, num_netlist_outputs, num_netlist_gates, - num_ucf_input_sensors, num_ucf_output_sensors, + (max_iterations, confirm) = permute_count_helper(num_netlist_inputs, num_netlist_outputs, + num_netlist_gates, + num_ucf_input_sensors, + num_ucf_output_sensors, num_groups) if pass_check else (None, None) if verbose: - log.cf.info(f'\n#{max_iterations:,} possible permutations for {self.verilog_name}.v+{self.ucf_name}...') + log.cf.info( + f'\n#{max_iterations:,} possible permutations for {self.verilog_name}.v+{self.ucf_name}...') log.cf.info(f'(#{confirm:,} permutations of UCF gate groups confirmed.)') print_centered('End of condition checks') # QUEST: Is this feature needed/appropriate? - if confirm and (confirm > 10_000_000_000_000): # if > 10 trillion iters, may not want to hand off to server + if confirm and ( + confirm > 10_000_000_000_000): # if > 10 trillion iters, may not want to hand off to server # TODO: Add check for server vs. local... # TODO: Add instructions for now to run locally... - log.cf.error('Circuit too complex for online version of Cello. Simplify the circuit or run Cello locally.') + log.cf.error( + 'Circuit too complex for online version of Cello. Simplify the circuit or run Cello locally.') raise Exception return pass_check, max_iterations @@ -549,9 +590,11 @@ def techmap(self, iter_: int): print_centered('End of GATE ASSIGNMENT') log.cf.info('\n') - return max(best_assignments, key=lambda x: x[0]) if len(best_assignments) > 0 else best_assignments + return max(best_assignments, key=lambda x: x[0]) if len( + best_assignments) > 0 else best_assignments - def simulated_annealing_assign(self, i_list: list, o_list: list, g_list: list, i: int, o: int, g: int, + def simulated_annealing_assign(self, i_list: list, o_list: list, g_list: list, i: int, o: int, + g: int, netgraph: GraphParser, iter_: int) -> list: """ Uses scipy's dual annealing func to efficiently find a regional optimum. @@ -577,20 +620,23 @@ def simulated_annealing_assign(self, i_list: list, o_list: list, g_list: list, i o_perms.append(o_perm) for g_perm in itertools.permutations(g_list, g): g_perms.append(g_perm) - max_fun = iter_ if iter_ < 1_000 else 1_000 + max_fun = iter_ if iter_ < self.total_iters else self.total_iters + max_iter = max_fun # DUAL ANNEALING SCIPY FUNC def func(x): - return self.prep_assign_for_scoring(x, (i_perms, o_perms, g_perms, netgraph, i, o, g, max_fun)) + return self.prep_assign_for_scoring(x, ( + i_perms, o_perms, g_perms, netgraph, i, o, g, max_fun)) lo = [0, 0, 0] hi = [len(i_perms), len(o_perms), len(g_perms)] # NOTE: Not possible to add integrality constraint; just round to int instead; adds only minor inefficiency - bounds = scipy.optimize.Bounds(lo, hi, True) # Alternatively: bounds = list(zip(lo, hi)) + bounds = scipy.optimize.Bounds(lo, hi, + True) # Alternatively: bounds = list(zip(lo, hi)) # TODO: CK: Implement seed (test in simplified script; test other scipy func seeding) # TODO: CK: Implement toxicity check... - ret = scipy.optimize.dual_annealing(func, bounds, maxfun=max_fun) + ret = scipy.optimize.dual_annealing(func, bounds, maxfun=max_fun, maxiter=max_iter) """ Dual Annealing: https://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.dual_annealing.html Dual Annealing combines Classical Simulated Annealing, Fast Simulated Annealing, and local search optimizations @@ -738,7 +784,8 @@ def map_helper(l, c): new_g = [Gate(g[0], g[1].gate_type, g[1].inputs, g[1].output) for g in new_g] - graph = AssignGraph(new_i, new_o, new_g) # NOTE: specific ins, gates, outs from annealing | exhaustive + graph = AssignGraph(new_i, new_o, + new_g) # NOTE: specific ins, gates, outs from annealing | exhaustive (circuit_score, tb, tb_labels) = self.score_circuit(graph) # NOTE: follow the circuit scoring functions @@ -754,8 +801,9 @@ def map_helper(l, c): f'{num_blocks * block}', end='\r') if self.print_iters: - print_centered(f'end of iteration {self.iter_count} : intermediate circuit score = {circuit_score}', - also_logfile=False) + print_centered( + f'end of iteration {self.iter_count} : intermediate circuit score = {circuit_score}', + also_logfile=False) # # Now write the CSV file if verbose # if self.verbose: @@ -830,16 +878,19 @@ def score_circuit(self, graph: AssignGraph): input_functions = {c['name'][:-6]: c['functions'] for c in input_info} input_equations = input_functions.copy() for key, input in input_functions.items(): - input_equations[key] = {k: (e['equation']) for e in input_function_json for (k, f) in input.items() + input_equations[key] = {k: (e['equation']) for e in input_function_json for (k, f) in + input.items() if (e['name'] == f)} - input_params = {c['name'][:-6]: {p['name']: p['value'] for p in c['parameters']} for c in input_info} + input_params = {c['name'][:-6]: {p['name']: p['value'] for p in c['parameters']} for c in + input_info} if self.print_iters: debug_print(f'Assignment configuration: {repr(graph)}', False) print(f'INPUT parameters:') for p in input_params: print(f'{p} {input_params[p]}') - print(f"input_response = {(funcs := next(iter(input_equations.values())))['response_function']}") + print( + f"input_response = {(funcs := next(iter(input_equations.values())))['response_function']}") if 'tandem_interference_factor' in funcs.keys(): print(f"\ntandem_interference_factor = {funcs['tandem_interference_factor']}") print(f'\nParameters in sensor_response function json: \n{input_params}\n') @@ -855,10 +906,12 @@ def score_circuit(self, graph: AssignGraph): gate_functions = {c['name'][:-6]: c['functions'] for c in gate_info} gate_equations = gate_functions.copy() for key, input in gate_functions.items(): - gate_equations[key] = {k: (e['equation']) for e in main_function_json for (k, f) in input.items() + gate_equations[key] = {k: (e['equation']) for e in main_function_json for (k, f) in + input.items() if (e['name'] == f and 'equation' in e.keys())} gate_func_names = gate_info[0]['functions'] - gate_params = {gf['name'][:-6]: {g['name']: g['value'] for g in gf['parameters']} for gf in gate_info} + gate_params = {gf['name'][:-6]: {g['name']: g['value'] for g in gf['parameters']} for gf in + gate_info} if self.print_iters: print(f'GATE parameters: ') for f in gate_params: @@ -884,10 +937,13 @@ def score_circuit(self, graph: AssignGraph): output_function_str = output_function_json[0]['equation'] output_names = [o.name for o in graph.outputs] output_model_names = [o + '_model' for o in output_names] - output_jsons = query_helper(self.ucf.query_top_level_collection(self.ucf.UCFout, 'models'), 'name', + output_jsons = query_helper(self.ucf.query_top_level_collection(self.ucf.UCFout, 'models'), + 'name', output_model_names) - output_params = {o['name'][:-6]: {p['name']: p['value'] for p in o['parameters']} for o in output_jsons} - output_functions = {c['name'][:-6]: c['functions']['response_function'] for c in output_jsons} + output_params = {o['name'][:-6]: {p['name']: p['value'] for p in o['parameters']} for o in + output_jsons} + output_functions = {c['name'][:-6]: c['functions']['response_function'] for c in + output_jsons} output_equations = {k: (e['equation']) for e in output_function_json for (k, f) in output_functions.items() if (e['name'] == f)} output_vars = {k: (e['variables']) for e in output_function_json for (k, f) in @@ -925,7 +981,8 @@ def score_circuit(self, graph: AssignGraph): num_outputs = len(graph.outputs) num_gates = len(graph.gates) (truth_table, truth_table_labels) = generate_truth_table(num_inputs, num_gates, num_outputs, - graph.inputs, graph.gates, graph.outputs) + graph.inputs, graph.gates, + graph.outputs) if self.print_iters: print('generating truth table...\n') @@ -954,7 +1011,8 @@ def get_tb_IO_index(node_name): # switch input on/off graph_input.switch_onoff(input_onoff) graph_input_idx = truth_table_labels.index(input_name) - truth_table[r][graph_input_idx] = graph_input.out_scores[graph_input.score_in_use] + truth_table[r][graph_input_idx] = graph_input.out_scores[ + graph_input.score_in_use] def set_tb_IO(node_name, io_val): """ @@ -1034,8 +1092,9 @@ def fill_truth_table_IO(graph_node): except Exception as e_: # FIXME: this happens for something like the sr_latch, it is not currently supported, # but with modifications to the truth table, this type of unstable could work - debug_print(f'{self.verilog_name} has unsupported circuit configuration due to flip-flopping.\n' - f'{e_}') + debug_print( + f'{self.verilog_name} has unsupported circuit configuration due to flip-flopping.\n' + f'{e_}') print_table([truth_table_labels] + truth_table) log.cf.info('\n') raise RecursionError diff --git a/core_algorithm/utils/response_plot.py b/core_algorithm/utils/response_plot.py index 34f576b..84b5fdf 100644 --- a/core_algorithm/utils/response_plot.py +++ b/core_algorithm/utils/response_plot.py @@ -7,7 +7,7 @@ import logging -def get_table_values(table, col_name, input_cnt): +def get_table_values(table, col_name, input_cnt, next_node=None, conversions=None): bar_values: dict[str:float] = {} col_index = None @@ -24,13 +24,16 @@ def get_table_values(table, col_name, input_cnt): elif v == 1: bar_label += '+\n' elif i == col_index: - bar_values[bar_label] = v + if next_node and conversions: # if CM, apply unit_conversion to first bar plot + bar_values[bar_label] = v * conversions[next_node] + else: # otherwise it would have already been applied + bar_values[bar_label] = v break return bar_values -def plot_bars(filepath, plot_name, best_graph, table, units): +def plot_bars(filepath, plot_name, best_graph, table, units, convs): input_cnt = len(best_graph.inputs) output_cnt = len(best_graph.outputs) @@ -54,11 +57,11 @@ def plot_bars(filepath, plot_name, best_graph, table, units): for k, o in outputs_dict.items(): if prev_node := o['prev_node']: outputs_dict[k]['name'] = prev_node - outputs_dict[k]['scores_pre_HR'] = get_table_values(table, prev_node, input_cnt) - outputs_dict[k]['scores_post_HR'] = get_table_values(table, k, input_cnt) + outputs_dict[k]['scores_pre_HR'] = get_table_values(table, prev_node, input_cnt, k, convs) + outputs_dict[k]['scores_post_HR'] = get_table_values(table, k, input_cnt) else: outputs_dict[k]['name'] = k - outputs_dict[k]['scores_pre_HR'] = get_table_values(table, k, input_cnt) + outputs_dict[k]['scores_pre_HR'] = get_table_values(table, k, input_cnt) # fig = plt.subplots() px = 1 / plt.rcParams['figure.dpi'] diff --git a/library/constraints/Eco2C1G5T1.UCF.json b/library/constraints/Eco2C1G5T1.UCF.json new file mode 100644 index 0000000..b70b894 --- /dev/null +++ b/library/constraints/Eco2C1G5T1.UCF.json @@ -0,0 +1,2006 @@ +[ + { + "collection": "header", + "description": "cI homologs: lambda, P22, TP901, r1t, Tuc2009, phage186, 933W, L5, N15, P2hd, P2, VP585, Wphi", + "version": "Eco2C1G5T1", + "date": "Tue April 13 16:01:11 EDT 2021", + "author": [ + "Jai Padmakumar", + "Alexander J. Triassi", + "Hamid Doosthosseini", + "Samuel M.D. Oliveira" + ], + "organism": "Escherichia coli MG1655 (Extended #Gates))", + "genome": "Wildtype (NCBI RefSeq: CP007799) with three landing pads integrated", + "media": "M9 minimal media composed of M9 media salts (6.78 g/L Na2HPO4, 3 g/L KH2PO4, 1 g/L NH4Cl, 0.5 g/L NaCl, 0.34 g/L thiamine hydrochloride, 0.4% D-glucose, 0.2% Casamino acids, 2 mM MgSO4, and 0.1 mM CaCl2", + "temperature": "37", + "growth": "Inoculation: Individual colonies into M9 media, 16 hours overnight in plate shaker.\tDilution: Next day, cells diluted 150-fold into M9 media without antibiotics, growth for 1.5 hours.\tInduction: Cells diluted into M9 media without antibiotics (starting OD600 = 0.0033).\tGrowth: shaking incubator for 5 hours.\tArrest protein production: PBS and 1 mg/ml kanamycin. Measurement: flow cytometry, data processing for RPU normalization." + }, + { + "collection": "measurement_std", + "signal_carrier_units": "RPUG", + "normalization_instructions": "The following equation converts the median YFP fluorescence to RPU. RPU = (YFP - YFP0)/(YFPRPUG - YFP0), where YFP is the median fluorescence of the cells of interest, YFP0 is the median fluorescence of the cells containing full sensor array with two other landing pads empty, and YFPRPUG is the median fluorescence of the cells containing the measurement standard on the genome landing pad", + "plasmid_description": "Genome integrated RPU standard where YFP fluorescent protein is driven by J23101 promoter and B0034 RBS. RiboJ was used as a ribozyme insulator. A bidirectional terminator DT3 was used to insulate YFP from the genome. The insertion is in the landing pad #2, at the position of 4633382" + }, + { + "collection": "input_composition", + "signal_carrier_units": "RPUG", + "normalization_instructions": "The following equation converts the median YFP fluorescence to RPU. RPU = (YFP - YFP0)/(YFPRPUG - YFP0), where YFP is the median fluorescence of the cells of interest, YFP0 is the median fluorescence of the cells containing full sensor array with two other landing pads empty, and YFPRPUG is the median fluorescence of the cells containing the measurement standard on the genome landing pad.", + "plasmid_description": "We used the pRpa*A (pC-HSL inducer) sensor cassette, which was cloned alongside the circuit. The DNA sequence of this particular input sensor includes a promoter, ribozyme, RBS, sensor protein, and terminator (all required components)" + }, + { + "collection": "genetic_locations", + "locations": [ + { + "symbol": "attB2", + "description": "", + "locus": { + "start": 0, + "end": 0 + }, + "sequence": { + "type": "", + "ref": "" + } + }, + { + "symbol": "attB7", + "description": "", + "locus": { + "start": 0, + "end": 0 + }, + "sequence": { + "type": "", + "ref": "" + } + }, + { + "symbol": "attB5", + "description": "", + "locus": { + "start": 0, + "end": 0 + }, + "sequence": { + "type": "", + "ref": "" + } + } + ] + }, + { + "collection": "logic_constraints", + "available_gates": [ + { + "type": "NOR", + "max_instances": 12 + }, + { + "type": "OUTPUT_OR", + "max_instances": true + } + ] + }, + { + "collection": "gates", + "name": "R1_Lambda", + "system": "TetR", + "group": "Lambda", + "regulator": "Lambda", + "gate_type": "NOR", + "color": "F9A427", + "model": "R1_Lambda_model", + "structure": "R1_Lambda_structure" + }, + { + "collection": "gates", + "name": "R2_Lambda", + "system": "TetR", + "group": "Lambda", + "regulator": "Lambda", + "gate_type": "NOR", + "color": "3BA9E0", + "model": "R2_Lambda_model", + "structure": "R2_Lambda_structure" + }, + { + "collection": "gates", + "name": "R3_P22", + "system": "TetR", + "group": "P22", + "regulator": "P22", + "gate_type": "NOR", + "color": "EE2F2B", + "model": "R3_P22_model", + "structure": "R3_P22_structure" + }, + { + "collection": "gates", + "name": "R4_TP901", + "system": "TetR", + "group": "TP901", + "regulator": "TP901", + "gate_type": "NOR", + "color": "6FCDE1", + "model": "R4_TP901_model", + "structure": "R4_TP901_structure" + }, + { + "collection": "gates", + "name": "R5_R1t", + "system": "TetR", + "group": "R1t", + "regulator": "R1t", + "gate_type": "NOR", + "color": "C24B9C", + "model": "R5_R1t_model", + "structure": "R5_R1t_structure" + }, + { + "collection": "gates", + "name": "R8_933W", + "system": "TetR", + "group": "933W", + "regulator": "933W", + "gate_type": "NOR", + "color": "3A563F", + "model": "R8_933W_model", + "structure": "R8_933W_structure" + }, + { + "collection": "gates", + "name": "R9_933W", + "system": "TetR", + "group": "933W", + "regulator": "933W", + "gate_type": "NOR", + "color": "9635CF", + "model": "R9_933W_model", + "structure": "R9_933W_structure" + }, + { + "collection": "gates", + "name": "R12_P2hd", + "system": "TetR", + "group": "P2hd", + "regulator": "P2hd", + "gate_type": "NOR", + "color": "261239", + "model": "R12_P2hd_model", + "structure": "R12_P2hd_structure" + }, + { + "collection": "gates", + "name": "R13_P2", + "system": "TetR", + "group": "P2", + "regulator": "P2", + "gate_type": "NOR", + "color": "CA30C6", + "model": "R13_P2_model", + "structure": "R13_P2_structure" + }, + { + "collection": "gates", + "name": "R14_P2", + "system": "TetR", + "group": "P2", + "regulator": "P2", + "gate_type": "NOR", + "color": "08A297", + "model": "R14_P2_model", + "structure": "R14_P2_structure" + }, + { + "collection": "gates", + "name": "R15_P2", + "system": "TetR", + "group": "P2", + "regulator": "P2", + "gate_type": "NOR", + "color": "81BC02", + "model": "R15_P2_model", + "structure": "R15_P2_structure" + }, + { + "collection": "gates", + "name": "R17_Wphi", + "system": "TetR", + "group": "Wphi", + "regulator": "Wphi", + "gate_type": "NOR", + "color": "D3799B", + "model": "R17_Wphi_model", + "structure": "R17_Wphi_structure" + }, + { + "collection": "structures", + "name": "R1_Lambda_structure", + "inputs": [ + { + "name": "in1", + "part_type": "promoter" + }, + { + "name": "in2", + "part_type": "promoter" + } + ], + "outputs": [ + "pLambda" + ], + "devices": [ + { + "name": "R1_Lambda_a", + "components": [ + "#in1", + "R1_Lambda_a_cassette" + ] + }, + { + "name": "R1_Lambda_a_cassette", + "components": [ + "RiboJ54", + "R1", + "Lambda", + "Ret0" + ] + }, + { + "name": "R1_Lambda_b", + "components": [ + "#in2", + "R1_Lambda_b_cassette" + ] + }, + { + "name": "R1_Lambda_b_cassette", + "components": [ + "RiboJ54", + "R1", + "Lambda", + "Ret0" + ] + } + ] + }, + { + "collection": "structures", + "name": "R2_Lambda_structure", + "inputs": [ + { + "name": "in1", + "part_type": "promoter" + }, + { + "name": "in2", + "part_type": "promoter" + } + ], + "outputs": [ + "pLambda" + ], + "devices": [ + { + "name": "R2_Lambda_a", + "components": [ + "#in1", + "R2_Lambda_a_cassette" + ] + }, + { + "name": "R2_Lambda_a_cassette", + "components": [ + "RiboJ54", + "R2", + "Lambda", + "Ret0" + ] + }, + { + "name": "R2_Lambda_b", + "components": [ + "#in2", + "R2_Lambda_b_cassette" + ] + }, + { + "name": "R2_Lambda_b_cassette", + "components": [ + "RiboJ54", + "R2", + "Lambda", + "Ret0" + ] + } + ] + }, + { + "collection": "structures", + "name": "R3_P22_structure", + "inputs": [ + { + "name": "in1", + "part_type": "promoter" + }, + { + "name": "in2", + "part_type": "promoter" + } + ], + "outputs": [ + "pP22" + ], + "devices": [ + { + "name": "R3_P22_a", + "components": [ + "#in1", + "R3_P22_a_cassette" + ] + }, + { + "name": "R3_P22_a_cassette", + "components": [ + "RiboJ71", + "R3", + "P22", + "IlvGEDA" + ] + }, + { + "name": "R3_P22_b", + "components": [ + "#in2", + "R3_P22_b_cassette" + ] + }, + { + "name": "R3_P22_b_cassette", + "components": [ + "RiboJ71", + "R3", + "P22", + "IlvGEDA" + ] + } + ] + }, + { + "collection": "structures", + "name": "R4_TP901_structure", + "inputs": [ + { + "name": "in1", + "part_type": "promoter" + }, + { + "name": "in2", + "part_type": "promoter" + } + ], + "outputs": [ + "pTP901" + ], + "devices": [ + { + "name": "R4_TP901_a", + "components": [ + "#in1", + "R4_TP901_a_cassette" + ] + }, + { + "name": "R4_TP901_a_cassette", + "components": [ + "RiboJ69", + "R4", + "TP901", + "RpoC" + ] + }, + { + "name": "R4_TP901_b", + "components": [ + "#in2", + "R4_TP901_b_cassette" + ] + }, + { + "name": "R4_TP901_b_cassette", + "components": [ + "RiboJ69", + "R4", + "TP901", + "RpoC" + ] + } + ] + }, + { + "collection": "structures", + "name": "R5_R1t_structure", + "inputs": [ + { + "name": "in1", + "part_type": "promoter" + }, + { + "name": "in2", + "part_type": "promoter" + } + ], + "outputs": [ + "pR1t" + ], + "devices": [ + { + "name": "R5_R1t_a", + "components": [ + "#in1", + "R5_R1t_a_cassette" + ] + }, + { + "name": "R5_R1t_a_cassette", + "components": [ + "BydvJ", + "R5", + "R1t", + "ECK120029600" + ] + }, + { + "name": "R5_R1t_b", + "components": [ + "#in2", + "R5_R1t_b_cassette" + ] + }, + { + "name": "R5_R1t_b_cassette", + "components": [ + "BydvJ", + "R5", + "R1t", + "ECK120029600" + ] + } + ] + }, + { + "collection": "structures", + "name": "R8_933W_structure", + "inputs": [ + { + "name": "in1", + "part_type": "promoter" + }, + { + "name": "in2", + "part_type": "promoter" + } + ], + "outputs": [ + "p933W" + ], + "devices": [ + { + "name": "R8_933W_a", + "components": [ + "#in1", + "R8_933W_a_cassette" + ] + }, + { + "name": "R8_933W_a_cassette", + "components": [ + "PlmJ", + "R8", + "933W", + "DT36" + ] + }, + { + "name": "R8_933W_b", + "components": [ + "#in2", + "R8_933W_b_cassette" + ] + }, + { + "name": "R8_933W_b_cassette", + "components": [ + "PlmJ", + "R8", + "933W", + "DT36" + ] + } + ] + }, + { + "collection": "structures", + "name": "R9_933W_structure", + "inputs": [ + { + "name": "in1", + "part_type": "promoter" + }, + { + "name": "in2", + "part_type": "promoter" + } + ], + "outputs": [ + "p933W" + ], + "devices": [ + { + "name": "R9_933W_a", + "components": [ + "#in1", + "R9_933W_a_cassette" + ] + }, + { + "name": "R9_933W_a_cassette", + "components": [ + "PlmJ", + "R9", + "933W", + "DT36" + ] + }, + { + "name": "R9_933W_b", + "components": [ + "#in2", + "R9_933W_b_cassette" + ] + }, + { + "name": "R9_933W_b_cassette", + "components": [ + "PlmJ", + "R9", + "933W", + "DT36" + ] + } + ] + }, + { + "collection": "structures", + "name": "R12_P2hd_structure", + "inputs": [ + { + "name": "in1", + "part_type": "promoter" + }, + { + "name": "in2", + "part_type": "promoter" + } + ], + "outputs": [ + "pP2hd" + ], + "devices": [ + { + "name": "R12_P2hd_a", + "components": [ + "#in1", + "R12_P2hd_a_cassette" + ] + }, + { + "name": "R12_P2hd_a_cassette", + "components": [ + "RiboJ60", + "R12", + "P2hd", + "DT56" + ] + }, + { + "name": "R12_P2hd_b", + "components": [ + "#in2", + "R12_P2hd_b_cassette" + ] + }, + { + "name": "R12_P2hd_b_cassette", + "components": [ + "RiboJ60", + "R12", + "P2hd", + "DT56" + ] + } + ] + }, + { + "collection": "structures", + "name": "R13_P2_structure", + "inputs": [ + { + "name": "in1", + "part_type": "promoter" + }, + { + "name": "in2", + "part_type": "promoter" + } + ], + "outputs": [ + "pP2" + ], + "devices": [ + { + "name": "R13_P2_a", + "components": [ + "#in1", + "R13_P2_a_cassette" + ] + }, + { + "name": "R13_P2_a_cassette", + "components": [ + "RiboJ64", + "R13", + "P2", + "DT86" + ] + }, + { + "name": "R13_P2_b", + "components": [ + "#in2", + "R13_P2_b_cassette" + ] + }, + { + "name": "R13_P2_b_cassette", + "components": [ + "RiboJ64", + "R13", + "P2", + "DT86" + ] + } + ] + }, + { + "collection": "structures", + "name": "R14_P2_structure", + "inputs": [ + { + "name": "in1", + "part_type": "promoter" + }, + { + "name": "in2", + "part_type": "promoter" + } + ], + "outputs": [ + "pP2" + ], + "devices": [ + { + "name": "R14_P2_a", + "components": [ + "#in1", + "R14_P2_a_cassette" + ] + }, + { + "name": "R14_P2_a_cassette", + "components": [ + "RiboJ64", + "R14", + "P2", + "DT86" + ] + }, + { + "name": "R14_P2_b", + "components": [ + "#in2", + "R14_P2_b_cassette" + ] + }, + { + "name": "R14_P2_b_cassette", + "components": [ + "RiboJ64", + "R14", + "P2", + "DT86" + ] + } + ] + }, + { + "collection": "structures", + "name": "R15_P2_structure", + "inputs": [ + { + "name": "in1", + "part_type": "promoter" + }, + { + "name": "in2", + "part_type": "promoter" + } + ], + "outputs": [ + "pP2" + ], + "devices": [ + { + "name": "R15_P2_a", + "components": [ + "#in1", + "R15_P2_a_cassette" + ] + }, + { + "name": "R15_P2_a_cassette", + "components": [ + "RiboJ64", + "R15", + "P2", + "DT86" + ] + }, + { + "name": "R15_P2_b", + "components": [ + "#in2", + "R15_P2_b_cassette" + ] + }, + { + "name": "R15_P2_b_cassette", + "components": [ + "RiboJ64", + "R15", + "P2", + "DT86" + ] + } + ] + }, + { + "collection": "structures", + "name": "R17_Wphi_structure", + "inputs": [ + { + "name": "in1", + "part_type": "promoter" + }, + { + "name": "in2", + "part_type": "promoter" + } + ], + "outputs": [ + "pWphi" + ], + "devices": [ + { + "name": "R17_Wphi_a", + "components": [ + "#in1", + "R17_Wphi_a_cassette" + ] + }, + { + "name": "R17_Wphi_a_cassette", + "components": [ + "SarJ", + "R17", + "Wphi", + "DT19" + ] + }, + { + "name": "R17_Wphi_b", + "components": [ + "#in2", + "R17_Wphi_b_cassette" + ] + }, + { + "name": "R17_Wphi_b_cassette", + "components": [ + "SarJ", + "R17", + "Wphi", + "DT19" + ] + } + ] + }, + { + "collection": "models", + "name": "R1_Lambda_model", + "functions": { + "response_function": "Hill_response", + "input_composition": "linear_input_composition", + "toxicity": "R1_Lambda_toxicity", + "cytometry": "R1_Lambda_cytometry" + }, + "parameters": [ + { + "name": "ymax", + "value": 3.779420838, + "description": "Maximal transcription" + }, + { + "name": "ymin", + "value": 0.035229117, + "description": "Minimal transcription" + }, + { + "name": "K", + "value": 0.043390621, + "description": "Half-maximum" + }, + { + "name": "n", + "value": 2.25481011, + "description": "Cooperativety" + } + ] + }, + { + "collection": "models", + "name": "R2_Lambda_model", + "functions": { + "response_function": "Hill_response", + "input_composition": "linear_input_composition", + "toxicity": "R2_Lambda_toxicity", + "cytometry": "R2_Lambda_cytometry" + }, + "parameters": [ + { + "name": "ymax", + "value": 5.216970779, + "description": "Maximal transcription" + }, + { + "name": "ymin", + "value": 0.04588324, + "description": "Minimal transcription" + }, + { + "name": "K", + "value": 0.162932102, + "description": "Half-maximum" + }, + { + "name": "n", + "value": 2.090738632, + "description": "Cooperativety" + } + ] + }, + { + "collection": "models", + "name": "R3_P22_model", + "functions": { + "response_function": "Hill_response", + "input_composition": "linear_input_composition", + "toxicity": "R3_P22_toxicity", + "cytometry": "R3_P22_cytometry" + }, + "parameters": [ + { + "name": "ymax", + "value": 2.4406312, + "description": "Maximal transcription" + }, + { + "name": "ymin", + "value": 0.103434868, + "description": "Minimal transcription" + }, + { + "name": "K", + "value": 0.217708584, + "description": "Half-maximum" + }, + { + "name": "n", + "value": 1.5512218, + "description": "Cooperativety" + } + ] + }, + { + "collection": "models", + "name": "R4_TP901_model", + "functions": { + "response_function": "Hill_response", + "input_composition": "linear_input_composition", + "toxicity": "R4_TP901_toxicity", + "cytometry": "R4_TP901_cytometry" + }, + "parameters": [ + { + "name": "ymax", + "value": 3.268995418, + "description": "Maximal transcription" + }, + { + "name": "ymin", + "value": 0.031118983, + "description": "Minimal transcription" + }, + { + "name": "K", + "value": 0.032539108, + "description": "Half-maximum" + }, + { + "name": "n", + "value": 1.529782691, + "description": "Cooperativety" + } + ] + }, + { + "collection": "models", + "name": "R5_R1t_model", + "functions": { + "response_function": "Hill_response", + "input_composition": "linear_input_composition", + "toxicity": "R5_R1t_toxicity", + "cytometry": "R5_R1t_cytometry" + }, + "parameters": [ + { + "name": "ymax", + "value": 3.542309059, + "description": "Maximal transcription" + }, + { + "name": "ymin", + "value": 0.058783804, + "description": "Minimal transcription" + }, + { + "name": "K", + "value": 0.054176575, + "description": "Half-maximum" + }, + { + "name": "n", + "value": 1.819793098, + "description": "Cooperativety" + } + ] + }, + { + "collection": "models", + "name": "R8_933W_model", + "functions": { + "response_function": "Hill_response", + "input_composition": "linear_input_composition", + "toxicity": "R8_933W_toxicity", + "cytometry": "R8_933W_cytometry" + }, + "parameters": [ + { + "name": "ymax", + "value": 1.576950293, + "description": "Maximal transcription" + }, + { + "name": "ymin", + "value": 0.021819985, + "description": "Minimal transcription" + }, + { + "name": "K", + "value": 0.02909727, + "description": "Half-maximum" + }, + { + "name": "n", + "value": 2.548280961, + "description": "Cooperativety" + } + ] + }, + { + "collection": "models", + "name": "R9_933W_model", + "functions": { + "response_function": "Hill_response", + "input_composition": "linear_input_composition", + "toxicity": "R9_933W_toxicity", + "cytometry": "R9_933W_cytometry" + }, + "parameters": [ + { + "name": "ymax", + "value": 3.75792433, + "description": "Maximal transcription" + }, + { + "name": "ymin", + "value": 0.026776673, + "description": "Minimal transcription" + }, + { + "name": "K", + "value": 0.078436787, + "description": "Half-maximum" + }, + { + "name": "n", + "value": 2.058969157, + "description": "Cooperativety" + } + ] + }, + { + "collection": "models", + "name": "R12_P2hd_model", + "functions": { + "response_function": "Hill_response", + "input_composition": "linear_input_composition", + "toxicity": "R12_P2hd_toxicity", + "cytometry": "R12_P2hd_cytometry" + }, + "parameters": [ + { + "name": "ymax", + "value": 1.488230227, + "description": "Maximal transcription" + }, + { + "name": "ymin", + "value": 0.013941128, + "description": "Minimal transcription" + }, + { + "name": "K", + "value": 0.074900767, + "description": "Half-maximum" + }, + { + "name": "n", + "value": 1.860140268, + "description": "Cooperativety" + } + ] + }, + { + "collection": "models", + "name": "R13_P2_model", + "functions": { + "response_function": "Hill_response", + "input_composition": "linear_input_composition", + "toxicity": "R13_P2_toxicity", + "cytometry": "R13_P2_cytometry" + }, + "parameters": [ + { + "name": "ymax", + "value": 1.896985729, + "description": "Maximal transcription" + }, + { + "name": "ymin", + "value": 0.031406958, + "description": "Minimal transcription" + }, + { + "name": "K", + "value": 0.481807912, + "description": "Half-maximum" + }, + { + "name": "n", + "value": 2.659059916, + "description": "Cooperativety" + } + ] + }, + { + "collection": "models", + "name": "R14_P2_model", + "functions": { + "response_function": "Hill_response", + "input_composition": "linear_input_composition", + "toxicity": "R14_P2_toxicity", + "cytometry": "R14_P2_cytometry" + }, + "parameters": [ + { + "name": "ymax", + "value": 1.819126514, + "description": "Maximal transcription" + }, + { + "name": "ymin", + "value": 0.024877707, + "description": "Minimal transcription" + }, + { + "name": "K", + "value": 0.092760168, + "description": "Half-maximum" + }, + { + "name": "n", + "value": 2.18283262, + "description": "Cooperativety" + } + ] + }, + { + "collection": "models", + "name": "R15_P2_model", + "functions": { + "response_function": "Hill_response", + "input_composition": "linear_input_composition", + "toxicity": "R15_P2_toxicity", + "cytometry": "R15_P2_cytometry" + }, + "parameters": [ + { + "name": "ymax", + "value": 1.023211547, + "description": "Maximal transcription" + }, + { + "name": "ymin", + "value": 0.021905529, + "description": "Minimal transcription" + }, + { + "name": "K", + "value": 0.032525222, + "description": "Half-maximum" + }, + { + "name": "n", + "value": 2.521017808, + "description": "Cooperativety" + } + ] + }, + { + "collection": "models", + "name": "R17_Wphi_model", + "functions": { + "response_function": "Hill_response", + "input_composition": "linear_input_composition", + "toxicity": "R17_Wphi_toxicity", + "cytometry": "R17_Wphi_cytometry" + }, + "parameters": [ + { + "name": "ymax", + "value": 2.636669224, + "description": "Maximal transcription" + }, + { + "name": "ymin", + "value": 0.018283171, + "description": "Minimal transcription" + }, + { + "name": "K", + "value": 0.103894911, + "description": "Half-maximum" + }, + { + "name": "n", + "value": 2.04086841, + "description": "Cooperativety" + } + ] + }, + { + "collection": "functions", + "name": "Hill_response", + "equation": "ymin + (ymax - ymin) / (1.0 + (x / K)^n)", + "variables": [ + { + "name": "x", + "map": "#//model/functions/input_composition" + } + ], + "parameters": [ + { + "name": "ymax", + "map": "#//model/parameters/ymax" + }, + { + "name": "ymin", + "map": "#//model/parameters/ymin" + }, + { + "name": "K", + "map": "#//model/parameters/K" + }, + { + "name": "n", + "map": "#//model/parameters/n" + } + ] + }, + { + "collection": "functions", + "name": "linear_input_composition", + "equation": "x1 + x2", + "variables": [ + { + "name": "x1", + "map": "#//structure/inputs/in1/model/functions/response_function" + }, + { + "name": "x2", + "map": "#//structure/inputs/in2/model/functions/response_function" + } + ] + }, + { + "collection": "circuit_rules", + "rules": { + "function": "AND", + "rules": [ + { + "function": "AND", + "rules": [ + "STARTSWITH attB2", + "TP901-1 NEXTTO L1", + "attB7 BEFORE attB5", + "R1_Lambda BEFORE attB5", + "R2_Lambda BEFORE attB5", + "R3_P22 BEFORE attB5", + "R4_TP901 BEFORE attB5", + "R5_R1t BEFORE attB5", + "R8_933W BEFORE attB5", + "R9_933W BEFORE attB5", + "R12_P2hd BEFORE attB5", + "R13_P2 BEFORE attB5", + "R14_P2 BEFORE attB5", + "R15_P2 BEFORE attB5", + "R17_Wphi BEFORE attB5", + "R6_Tuc2009 BEFORE attB5", + "R7_Phage186 BEFORE attB5", + "R10_L5 BEFORE attB5", + "R11_N15 BEFORE attB5", + "R16_VP585 BEFORE attB5", + "OC6_out AFTER attB5", + "pC-HSL_out AFTER attB5", + "DAPG_out AFTER attB5", + "OHC12_out AFTER attB5", + "ALL_FORWARD" + ] + }, + { + "function": "OR", + "rules": [ + { + "function": "AND", + "rules": [ + "P1_PhlF_a AFTER L2", + "P1_PhlF_a BEFORE L3", + "P1_PhlF_b AFTER L3" + ] + }, + { + "function": "AND", + "rules": [ + "P1_PhlF_a AFTER L2", + "P1_PhlF_a BEFORE L3", + "P1_PhlF_b BEFORE L2" + ] + }, + { + "function": "AND", + "rules": [ + "P1_PhlF_b AFTER L2", + "P1_PhlF_b BEFORE L3", + "P1_PhlF_a BEFORE L2" + ] + }, + { + "function": "AND", + "rules": [ + "P1_PhlF_b AFTER L2", + "P1_PhlF_b BEFORE L3", + "P1_PhlF_a BEFORE L2" + ] + } + ] + }, + { + "function": "OR", + "rules": [ + { + "function": "AND", + "rules": [ + "Q1_QacR_a AFTER L2", + "Q1_QacR_a BEFORE L3", + "Q1_QacR_b AFTER L3" + ] + }, + { + "function": "AND", + "rules": [ + "Q1_QacR_a AFTER L2", + "Q1_QacR_a BEFORE L3", + "Q1_QacR_b BEFORE L2" + ] + }, + { + "function": "AND", + "rules": [ + "Q1_QacR_b AFTER L2", + "Q1_QacR_b BEFORE L3", + "Q1_QacR_a BEFORE L2" + ] + }, + { + "function": "AND", + "rules": [ + "Q1_QacR_b AFTER L2", + "Q1_QacR_b BEFORE L3", + "Q1_QacR_a BEFORE L2" + ] + } + ] + }, + { + "function": "OR", + "rules": [ + { + "function": "AND", + "rules": [ + "A1_AmtR_a AFTER L2", + "A1_AmtR_a BEFORE L3", + "A1_AmtR_b AFTER L3" + ] + }, + { + "function": "AND", + "rules": [ + "A1_AmtR_a AFTER L2", + "A1_AmtR_a BEFORE L3", + "A1_AmtR_b BEFORE L2" + ] + }, + { + "function": "AND", + "rules": [ + "A1_AmtR_b AFTER L2", + "A1_AmtR_b BEFORE L3", + "A1_AmtR_a BEFORE L2" + ] + }, + { + "function": "AND", + "rules": [ + "A1_AmtR_b AFTER L2", + "A1_AmtR_b BEFORE L3", + "A1_AmtR_a BEFORE L2" + ] + } + ] + }, + { + "function": "OR", + "rules": [ + { + "function": "AND", + "rules": [ + "B3_BM3R1_a AFTER L2", + "B3_BM3R1_a BEFORE L3", + "B3_BM3R1_b AFTER L3" + ] + }, + { + "function": "AND", + "rules": [ + "B3_BM3R1_a AFTER L2", + "B3_BM3R1_a BEFORE L3", + "B3_BM3R1_b BEFORE L2" + ] + }, + { + "function": "AND", + "rules": [ + "B3_BM3R1_b AFTER L2", + "B3_BM3R1_b BEFORE L3", + "B3_BM3R1_a BEFORE L2" + ] + }, + { + "function": "AND", + "rules": [ + "B3_BM3R1_b AFTER L2", + "B3_BM3R1_b BEFORE L3", + "B3_BM3R1_a BEFORE L2" + ] + } + ] + }, + { + "function": "OR", + "rules": [ + { + "function": "AND", + "rules": [ + "F2_AmeRs_a AFTER L2", + "F2_AmeRs_a BEFORE L3", + "F2_AmeRs_b AFTER L3" + ] + }, + { + "function": "AND", + "rules": [ + "F2_AmeRs_a AFTER L2", + "F2_AmeRs_a BEFORE L3", + "F2_AmeRs_b BEFORE L2" + ] + }, + { + "function": "AND", + "rules": [ + "F2_AmeRs_b AFTER L2", + "F2_AmeRs_b BEFORE L3", + "F2_AmeRs_a BEFORE L2" + ] + }, + { + "function": "AND", + "rules": [ + "F2_AmeRs_b AFTER L2", + "F2_AmeRs_b BEFORE L3", + "F2_AmeRs_a BEFORE L2" + ] + } + ] + }, + { + "function": "OR", + "rules": [ + { + "function": "AND", + "rules": [ + "E1_BetI_a AFTER L2", + "E1_BetI_a BEFORE L3", + "E1_BetI_b AFTER L3" + ] + }, + { + "function": "AND", + "rules": [ + "E1_BetI_a AFTER L2", + "E1_BetI_a BEFORE L3", + "E1_BetI_b BEFORE L2" + ] + }, + { + "function": "AND", + "rules": [ + "E1_BetI_b AFTER L2", + "E1_BetI_b BEFORE L3", + "E1_BetI_a BEFORE L2" + ] + }, + { + "function": "AND", + "rules": [ + "E1_BetI_b AFTER L2", + "E1_BetI_b BEFORE L3", + "E1_BetI_a BEFORE L2" + ] + } + ] + } + ] + } + }, + { + "collection": "device_rules", + "rules": { + "function": "AND", + "rules": [ + "ALL_FORWARD" + ] + } + }, + { + "collection": "parts", + "type": "promoter", + "name": "pLambda", + "dnasequence": "TTCTTTCAGGCCGGGtaacaccgtgcgtgttgactattttacctctggcggtgataat" + }, + { + "collection": "parts", + "type": "cds", + "name": "Lambda", + "dnasequence": "atgagcacaaaaaagaaaccattaacacaagagcagcttgaggacgcacgtcgccttaaagcaatttatgaaaaaaagaaaaatgaacttggcttatcccaggaatctgtcgcagacaagatggggatggggcagtcaggcgttggtgctttatttaatggcatcaatgcattaaatgcttataacgccgcattgcttgcaaaaattctcaaagttagcgttgaagaatttagcccttcaatcgccagagaaatctacgagatgtatgaagcggttagtatgcagccgtcacttagaagtgagtatgagtaccctgttttttctcatgttcaggcagggatgttctcacctgagcttagaacctttaccaaaggtgatgcggagagatgggtaagcacaaccaaaaaagccagtgattctgcattctggcttgaggttgaaggtaattccatgaccgcaccaacaggctccaagccaagctttcctgacggaatgttaattctcgttgaccctgagcaggctgttgagccaggtgatttctgcatagccagacttgggggtgatgagtttaccttcaagaaactgatcagggatagcggtcaggtgtttttacaaccactaaacccacagtacccaatgatcccatgcaatgagagttgttccgttgtggggaaagttatcgctagtcagtggcctgaagagacgtttggcTGA" + }, + { + "collection": "parts", + "type": "rbs", + "name": "R1", + "dnasequence": "AACATCACACGTTAGCCTCTAC" + }, + { + "collection": "parts", + "type": "rbs", + "name": "R2", + "dnasequence": "AACATCCCTCGTTAGCCTCTTC" + }, + { + "collection": "parts", + "type": "ribozyme", + "name": "RiboJ54", + "dnasequence": "aggggtcagttgatgtgctttcaactctgatgagtcagtgatgacgaaaccccctctacaaataattttgtttaa" + }, + { + "collection": "parts", + "type": "terminator", + "name": "Ret0", + "dnasequence": "GCAGACAAAAAAAATGGCGCACAATGTGCGCCATTTTTCACTTCACAGGTACTATTGTTTTGAATTGAAAAGGGCGCTTCGGCGCCCTTTTTGCATTTGTTGACGGCATATATTTGTATATCGAAGCGCCCTGATGGGCGCTTTTTTTATTTAATCGATAACCAGA" + }, + { + "collection": "parts", + "type": "promoter", + "name": "pP22", + "dnasequence": "GATGAGGCGGTCAGGaataaacttgactaaagattcctttagtagataatttaagtgttctttaatttc" + }, + { + "collection": "parts", + "type": "cds", + "name": "P22", + "dnasequence": "ATGGGAGAGCGTATCCGTGCGCGCCGTAAAAAATTAAAAATCCGCCAGGCAGCGTTAGGCAAGATGGTCGGTGTTTCGAATGTAGCGATCTCTCAGTGGGAGCGTAGCGAAACTGAACCGAATGGAGAAAATTTATTGGCTTTATCTAAGGCACTGCAGTGTAGTCCGGACTACTTGTTGAAAGGTGATCTGAGTCAAACAAACGTCGCGTACCATTCTCGCCATGAACCACGTGGCTCTTATCCTCTGATTAGCTGGGTGTCTGCGGGGCAGTGGATGGAGGCGGTCGAACCGTATCACAAGCGTGCAATCGAGAATTGGCATGATACGACTGTAGACTGTAGCGAGGATTCGTTCTGGTTGGATGTTCAAGGGGATAGCATGACCGCACCCGCCGGATTAAGCATCCCCGAAGGCATGATTATTTTGGTCGATCCGGAAGTGGAGCCTCGCAACGGCAAACTTGTCGTGGCTAAGTTGGAAGGCGAGAATGAGGCGACGTTTAAGAAACTTGTCATGGATGCCGGACGTAAGTTTTTGAAACCCTTAAATCCGCAATATCCGATGATCGAGATCAATGGAAACTGCAAAATTATCGGTGTAGTAGTTGATGCCAAGCTGGCTAACTTACCGTAG" + }, + { + "collection": "parts", + "type": "rbs", + "name": "R3", + "dnasequence": "ACTTTTAGCTAAAGGAATGATTG" + }, + { + "collection": "parts", + "type": "ribozyme", + "name": "RiboJ71", + "dnasequence": "AGTTGTCAGCCACTGTGCTTGTGGCTCTGATGAGACGGTGACGTCGAAACAACCTCTACAAATAATTTTGTTTAA" + }, + { + "collection": "parts", + "type": "terminator", + "name": "IlvGEDA", + "dnasequence": "TAGAGATCAAGCCTTAACGAACTAAGACCCCCGCACCGAAAGGTCCGGGGGTTTTTTTTGACCTTAAAAACATAACCGAGGAGCAGACA" + }, + { + "collection": "parts", + "type": "promoter", + "name": "pTP901", + "dnasequence": "GCCACAAGCTCGAAAagttcatgaaacgtgaacttgacagctagctcagtcctaggtataaagttcatgaaacgtgaact" + }, + { + "collection": "parts", + "type": "cds", + "name": "TP901", + "dnasequence": "ATGAAGACTGACACATCAAATCGCTTAAAGCAGATCATGGCTGAGCGCAACCTTAAACAAGTGGATATCCTGAATCTTAGCATCCCTTTTCAAAAAAAATTCGGGATCAAATTGAGCAAGTCCACCCTTTCGCAATACGTCAACTCGGTACAATCCCCAGACCAGAACCGTATTTACCTGTTAGCCAAGACCTTGGGGGTAAGTGAAGCATGGTTGATGGGATTCGACGTTCCAATGGTGGAATCCTCGAAGATTGAGAATGATTCAGAGAACATTGAGGAGACGATCACCGTCATGAAGAAGCTGGAAGAGCCGCGTCAGAAAGTGGTCTTGGATACAGCAAAAATTCAGTTAAAGGAGCAGGATGAACAGAATAAGGTAAAGCAGATCGAGGACTATCGCTTATCCGACGAATATTTGGAGGAGCAGATCAGCAAGGCGTCGGCTTACGGAGGGGGGCAACTTAACGATAATGATAAGGAATTTTTCAAACGTCTGCTGAAAAACACCCTTAAGGAGAAAATTGACAAAGGCGATCTTTGA" + }, + { + "collection": "parts", + "type": "rbs", + "name": "R4", + "dnasequence": "GCTGGTACTGCTCGAGTATCTT" + }, + { + "collection": "parts", + "type": "ribozyme", + "name": "RiboJ69", + "dnasequence": "AGCTGTCAAGGCGTGTGCTTCGCCTTCTGATGAGCCCGTGAGGGCGAAACAGCCTCTACAAATAATTTTGTTTAA" + }, + { + "collection": "parts", + "type": "terminator", + "name": "RpoC", + "dnasequence": "GTAATCGTTAATCCGCAAATAACGTAAAAACCCGCTTCGGCGGGTTTTTTTATGGGGGGAGTTTAGGGAAAGAGCATTTGTCA" + }, + { + "collection": "parts", + "type": "promoter", + "name": "pR1t", + "dnasequence": "GAGAGCTAACTTTATaacttgacaaattggatagttttaggtataataacttgacaaattggatagtt" + }, + { + "collection": "parts", + "type": "cds", + "name": "R1t", + "dnasequence": "ATGAAGAAGATTCGCCTTCCCGAAATGATTGACTACTTCCGTAAGGAAAACGGCTGGACTATGAAAGAGTTTGGTGAAAAATTAGGGAAGAGTGAGAGCGCTATTAGCAAGTGGATCAAGGGGGTACGCTCCCCTATGGTAGAGGATTTTGACAAGATGGTGAATTTATTTAACACTGACCCAGAAACCCTGATGTATGGTGCGTCAGATTTATCTACGACGTTGAGCGAAATCAATAAGATTTCGAGCCAACTTGAGGAACCGCGCCAGAAGGTTGTACTGAATACGGCAAATAATCAGCTTGACGAACAAAATCAGGAAAAGAAAAAGGAATCTAAAGTCATCCCTATTAACAAAATCCCAGATGACTTACCACCCTACATTAGTCGCAAAATTCTGGAAAATTTTGTAATGCCGACTAACACTATGGAATACGAAGCTGATGAAGATATGGTGGACGTACCCATCCTTGGGCGCATCGCGGCGGGCCTTCCGCTTGACGCGGTAGAAAACTTTGATGGAACGCGCCCAGTCCCTGCACATTTCCTTTCGAGTGCCCGTGATTACTATTGGCTTATGGTGGACGGCCATTCTATGGAACCTAAGATTCCGTACGGAGCATACGTCTTGATCGAAGCCGTCCCCGATGTGAGCGATGGGACCATTGGTGCCGTCTTATTCCATGATGATTGTCAGGCGACGCTGAAAAAGGTATATCACGAGATCGACTGTTTGCGCTTAGTCTCAATTAACAAAGAATTTAAGGACCAATTCGCCACGCAAGATAATCCAGCTGCAGTGATTGGTCAAGCAGTTAAGGTTGAAATCGACTTGTAA" + }, + { + "collection": "parts", + "type": "rbs", + "name": "R5", + "dnasequence": "TATTTTTAATAAATAGGGTT" + }, + { + "collection": "parts", + "type": "ribozyme", + "name": "BydvJ", + "dnasequence": "agggtgtctcaaggtgcgtaccttgactgatgagtccgaaaggacgaaacacccctctacaaataattttgtttaa" + }, + { + "collection": "parts", + "type": "terminator", + "name": "ECK120029600", + "dnasequence": "TTCAGCCAAAAAACTTAAGACCGCCGGTCTTGTCCACTACCTTGCAGTAATGCGGTGGACAGGATCGGCGGTTTTCTTTTCTCTTCTCAA" + }, + { + "collection": "parts", + "type": "ribozyme", + "name": "ElvJ", + "dnasequence": "agccccatagggtggtgtgtaccacccctgatgagtccaaaaggacgaaatggggcctctacaaataattttgtttaa" + }, + { + "collection": "parts", + "type": "promoter", + "name": "pTuc", + "dnasequence": "AGTCTGGGAGGTACTtttcttgacaaaccacgaaaagtggactataatta" + }, + { + "collection": "parts", + "type": "cds", + "name": "Tuc2009", + "dnasequence": "ATGGTTATCGAACAAATCAACAAGTACGTTGGAAGCAAGATTAAGGATTATCGTAAATCATTTGGACTTTCCCAGGAAGAATTGGCTAAAAAAATTGGAGTCGGCAAAACCACTATCTCTAATTATGAAGTAGGGATCCGCTCACCAAAAAAGCCTCAGCTTATTAAATTATCCGAGGTGTTCGATGTAGCAATTGATGATTTTTTTCCTCAGACTGATAGTACACGCATGAACGTGTCTAGCATCCTGTCCGAAATCAACAAGATTTCCTCCCAGCTTGAAGAACCGCGCCAAAAGATCGTGCTTAATACCGCTACCAACCAACTTGATGAGCAGAATCAAGAAAAGAAAAAGGAAAGTAAGGTCATTCCTATCAATAAGATCCCTGACGATCTTCCACCTTACATTTCCCGCAAAATTTTAGAGAATTTTATTATGCCTTCCAATACGATGGAATATGAACCCGACGAGGACATGGTAGACGTTCCGATTTTGGGGCGTATTGCCGCCGGGTTACCACTGGATGCGGTCGAAAACTTCGATGGAACCCGTCCCGTACCAGCCCATTTCTTATCAAGTGCCCGTGATTACTACTGGTTAATGGTAGACGGTCACAGTATGGAACCGAAGATTCCTTATGGAGCCTACGTGCTGATTGAGGCGGTTCCCGATGTGTCAGACGGTACTATTGGTGCTGTACTTTTCCAAGATGACTGCCAGGCCACGTTAAAGAAGGTATATCACGAGATCGACTGTTTACGCCTGGTGTCCATTAACAAAGAGTTTAAGGATCAGTTTGCCACGCAAGACAATCCTGCTGCTGTTATCGGGCAGGCAGTGAAAGTAGAAATCGATTTGTAA" + }, + { + "collection": "parts", + "type": "rbs", + "name": "R6", + "dnasequence": "AGAATATTATTGAAGATAATAGGA" + }, + { + "collection": "parts", + "type": "promoter", + "name": "pVP585", + "dnasequence": "GGTGCAGTTTTGTGCgattgcaaaatttgcatttacttttattatcttttttgataaaaact" + }, + { + "collection": "parts", + "type": "cds", + "name": "VP585", + "dnasequence": "atgaaggaaaataagaggatgatagaaatagatattggcccggtattaaagcgcatccgttatgagcgagggctaacgctacaaaagctgtcacggcttacggatgacaaagtgctaccaagcaacatttcccgcatcgagagtgcgggcgctggcgctacgcttaaaaccttgaccaccttggcgaatgcgctggggacttctccttctgacattcttcgtgaagctgagggcggtgataaggtgatcaccaagccgcagcaagtcctttatgtacctgttttgtcttgggttcaggctggcacctggactgaatcaccagagcagcctgccgatggtgactatgatgaatgggtagaggcaccaagaggcgcatccaggaaggctttcggccttcgagttcaaggggatagtatgcaagcccctatcggcaagtcgttcccggaaggatgctgcatagttgttgacccaaccaaacaagcagataaccgctcgtttgttgttgctcgcctggcagacacaggagagcacacgttcaagcagctgatcattgacgggccgcaccaatatctaaagccgctaaacccaagttaccgaaccatagaagtgaacagcgaagtacacgtctgcggggtcgttttagcatggggtgaagggtacacggtgaacggtatttaa" + }, + { + "collection": "parts", + "type": "rbs", + "name": "R16", + "dnasequence": "CGGATCTAGTAGGTACAGTGCAATC" + }, + { + "collection": "parts", + "type": "ribozyme", + "name": "SarJ", + "dnasequence": "gactgtcgccggatgtgtatccgacctgacgatggcccaaaagggccgaaacagtcctctacaaataattttgtttaa" + }, + { + "collection": "parts", + "type": "terminator", + "name": "DT19", + "dnasequence": "TTCAGCCAAAAAACTTAAGACCGCCGGTCTTGTCCACTACCTTGCAGTAATGCGGTGGACAGGATCGGCGGTTTTCTTTTCTCTTCTCAACTCGGTACCAAAGACGAACAATAAGACGCTGAAAAGCGTCTTTTTTCGTTTTGGTCC" + }, + { + "collection": "parts", + "type": "promoter", + "name": "pPhage186", + "dnasequence": "TTGTTACCCATACTGtttcgataaaacctatttactatctctcaattgggagatatattttggctaaaccca" + }, + { + "collection": "parts", + "type": "cds", + "name": "Phage186", + "dnasequence": "atgagaatagattctttaggatggagcaacgtggatgtacttgaccgcatctgcgaggcgtacggattttcgcagaaaattcaattagctaaccacttcgatatcgcgtccagctcattgtcaaacaggtacacccgaggcgctatctcctatgactttgcggctcactgtgcccttgaaacaggtgctaatctccagtggttacttaccggagaaggagaagcatttgtaaataacagagaatcgagcgacgcaaaaaggattgagggattcacattaagtgaagaaatcctcaaatccgataaacaattgagtgttgatgcccaatttttcacaaaaccgctcacagatgggatggctatccgttccgaggggaaaatttattttgtggacaagcaagcatcattgtctgacggcttatggctagtcgacattgagggagcaataagcattcgagagttaacaaaactaccgggtagaaaactacatgttgcaggcgggaaggttcctttcgaatgcggcattgatgatattaaaacgttggggcgtgtggtgggtgtatacagcgaggttaactaa" + }, + { + "collection": "parts", + "type": "rbs", + "name": "R7", + "dnasequence": "AAGAGGCGACGTAACATCCTGGAGGCAAGTAATAACT" + }, + { + "collection": "parts", + "type": "ribozyme", + "name": "RiboJ10", + "dnasequence": "agcgctcaacgggtgtgcttcccgttctgatgagtccgtgaggacgaaagcgcctctacaaataattttgtttaa" + }, + { + "collection": "parts", + "type": "terminator", + "name": "DT83", + "dnasequence": "AGCGTCAAAAGGCCGGATTTTCCGGCCTTTTTTATTAGGCAGCATGCTGCCAGGTGATCCCCCTGGCCACCTCTTTT" + }, + { + "collection": "parts", + "type": "promoter", + "name": "p933W", + "dnasequence": "ATTGTCAGAAATGGCacttgcaaaaactttcagttcaaccataatacgtactgaaagtacgaaaaagg" + }, + { + "collection": "parts", + "type": "cds", + "name": "933W", + "dnasequence": "atggttcagaatgaaaaagtgcgcaaagaattcgcccagcggctagcgcaagcctgtaaagaagctggtcttgatgaacatggtaggggaatggctatagcccgtgccctttctctttcgtccaaaggcgttagcaaatggtttaatgctgagtctttaccgcgtcaggaaaaaatgaatgcgcttgcgaaatttctaaacgttgatgttgtttggcttcagcacggcacttcgttaaatggagcgaatgatgaagatactctttcatttgttggcaaattaaaaaaagggttagtgcgcgtggttggtgaggcaattcttggtgttgatggtgccatcgagatgaccgaagaacgcgatgggtggctcaaaatttatagcgatgatccagatgcctttggtctgcgtgtgaaaggagacagcatgtggcccagaataaaatcaggagaatatgtactcattgagcctaacaccaaagtattcccgggtgatgaggtgtttgtcagaaccgttgaaggacacaacatgattaaggttcttggctatgacagagatggagaataccaatttacaagcattaaccaggatcacaggcctataacgttgccttatcatcaagtagcaaaggtggagtatgtagctggtattctgaagcaatctcgccatctggatgacatcgaggcaagggagtggctgaaaagttcgtga" + }, + { + "collection": "parts", + "type": "rbs", + "name": "R8", + "dnasequence": "GCACTACGGAATTAAGCGCTCAA" + }, + { + "collection": "parts", + "type": "rbs", + "name": "R9", + "dnasequence": "GCACTACGGCATTAAGCGCTCAA" + }, + { + "collection": "parts", + "type": "ribozyme", + "name": "PlmJ", + "dnasequence": "agtcataagtctgggctaagcccactgatgagtcgctgaaatgcgacgaaacttatgacctctacaaataattttgtttaa" + }, + { + "collection": "parts", + "type": "terminator", + "name": "DT36", + "dnasequence": "GATCTAACTAAAAAGGCCGCTCTGCGGCCTTTTTTCTTTTCACTGTAACAACGGAAACCGGCCATTGCGCCGGTTTTTTTTGGCCT" + }, + { + "collection": "parts", + "type": "promoter", + "name": "pL5", + "dnasequence": "TGTTAATGTAATCTGcttgacagccacctcagtcctaggtactgtgctagcttgacagccacc" + }, + { + "collection": "parts", + "type": "cds", + "name": "L5", + "dnasequence": "atgagcggcaaaatccaacacaaagcagtggttccggcccctagccgaataccactcactctcagcgagatcgaagatcttcgcaggaaggggtttaatcagaccgaaatcgcagagctgtatggcgtgactcgacaagcggtgtcgtggcacaagaaaacctacggaggacggttgaccaccaggcagatcgtccagcagaactggccgtgggacacgcggaaacctcacgataagtcgaaggcttttcagaggctccgggatcacggcgagtacatgcgagtgggtagcttccgcacgatgtccgaagataagaagaagcgcctattgtcgtggtggaagatgctccgcgacgacgacttagtgctcgagttcgacccatccatcgagccctacgaaggtatggccggcggcgggttcaggtacgtcccccgaggcatcgaggatgacgatctcctgatccgggtgaacgagcacaccaacctcaccgccgagggtgaactcctctggtcgtggccagacgacatcgaggagcttctctcggagccctaa" + }, + { + "collection": "parts", + "type": "rbs", + "name": "R10", + "dnasequence": "CAATTATAAGGCCTGACGCGT" + }, + { + "collection": "parts", + "type": "ribozyme", + "name": "RiboJ60", + "dnasequence": "ctgaagtcgtcaagtgctgtgcttgcacttctgatgaggcagtgatgccgaaacgacctctacaaataattttgtttaa" + }, + { + "collection": "parts", + "type": "terminator", + "name": "L3S2P11", + "dnasequence": "ctcggtaccaaattccagaaaagagacgctttcgagcgtcttttttcgttttggtcc" + }, + { + "collection": "parts", + "type": "promoter", + "name": "pN15", + "dnasequence": "ACGTTAAAACCCACTaaattatacctagctttaattttcacttattgattataataatccc" + }, + { + "collection": "parts", + "type": "cds", + "name": "N15", + "dnasequence": "atgattaagggtatgaaaacacgaggcgaacgactgaaagcacgccgtttagagctgaaactgacgctgaagcaagtggcagaagctgtaggaatctctcttccgggcgtccaaaacttagaacgtggcgacgtgatgccgtcgctggagatcgggctatcgctggcaaaatgcctgcgtaagcccgtgcaatggatactgtatggcactgaatctgatccagaccgcgttcctgttattggtacgacagaaaccggaccggatagagactggcagcctggagaacctgccaacacagagcgattcctgccgttcgtgagtcaacggaacaccgtttacgcactgacggtcgggaaccagattcagcgaaactaccagccgggagacgttatcctggtcgattcttcacttacgcttgtaccgggtgaggatgtactggtttgtgataataacggcgagatcacaattcaacgattagcccgttatgacgagcagcattactaccttgatagtgctaactctcaacgggttatccatgataaaagtgatcttcaatttgtgcaccaagtagtcggtacgatcaaatcgttcatggttgagggtagatga" + }, + { + "collection": "parts", + "type": "rbs", + "name": "R11", + "dnasequence": "CAAGGGAGCAGGAAGAGACTTCGTAAACTGCG" + }, + { + "collection": "parts", + "type": "ribozyme", + "name": "ScmJ", + "dnasequence": "agcgctgtctgtacttgtatcagtacactgacgagtccctaaaggacgaaacaccgcctctacaaataattttgtttaa" + }, + { + "collection": "parts", + "type": "terminator", + "name": "DT42", + "dnasequence": "AGTTAACCAAAAAGGGGGGATTTTATCTCCCCTTTAATTTTTCCTCGCAGATAGCAAAAAAGCGCCTTTAGGGCGCTTTTTTACATTGGTGG" + }, + { + "collection": "parts", + "type": "promoter", + "name": "pP2hd", + "dnasequence": "AACTACTACGCAAAAttcaacttctccgaaacgtctattgacataattactccgattgcgtaatttcttg" + }, + { + "collection": "parts", + "type": "promoter", + "name": "pP2", + "dnasequence": "ATGATTGGCGACTCGgtttagatctcattgacatggtgtttagatctcaagtactgttagtttagatgtacaattttgttagtttagat" + }, + { + "collection": "parts", + "type": "promoter", + "name": "pWphi", + "dnasequence": "TCCTATAAGGACACGcatttgacagtaacctattggtgacttatattcccgtcaaaaggttgtgtattggtgacctt" + }, + { + "collection": "parts", + "type": "cds", + "name": "P2hd", + "dnasequence": "atgtcaatagacgtttcggagaagttgaagctaatccgtgaatctgaaaggttaaaccgtaaagaattcagtgaattaactggtgtagcctacagctcactttcgagctatgagagccggtcaaaaaacgctggagttgaagccataatgaaggtcttacaacatcctagatttactaaatatactttgtggttcatgactgatcaggtagctccagaagccgggcaaattgcgcccgctctcgcacactttgggcaaaacgaaacaacgtcgccccactccggtcaaaagactggttaa" + }, + { + "collection": "parts", + "type": "cds", + "name": "P2", + "dnasequence": "atgtcaaacacgataagcgagaagatagtcttaatgcgaaaatcagagtatttgagcagacaacaacttgctgatttaacaggggttccgtatggcacgctgagttactatgaaagtggtcgttcaacacctccaacagatgtcatgatgaacatcctgcagaccccacaattcaccaaatacactttatggttcatgaccaatcagatcgctcctgagtccgggcaaattgcgcccgctctcgcacactttgggcaaaacgaaacaacgtcgccccactccggtcaaaagactggttaa" + }, + { + "collection": "parts", + "type": "cds", + "name": "Wphi", + "dnasequence": "atgcagacattcgaaaaactgaaagcgattaggaaagcagaaggcttaacacaggcgaaattcagcgaaattagcgggatagctctaggaacagtcaaaaattacgaaagtgggcataaagaccctggtctgagcatcgttatgcgagtcacaaatacgcctttatttaaaaaatatacgctctggttaatgactggtgatacgtcaccacaagctggtcagatcgcgccggctctcgcacacattgggcaaaaaccaacagaatcagaccactccgaaaaacagactggttaa" + }, + { + "collection": "parts", + "type": "rbs", + "name": "R12", + "dnasequence": "TTATCTTAGGTACAGGGCACATAA" + }, + { + "collection": "parts", + "type": "rbs", + "name": "R13", + "dnasequence": "CAGGTTATAAGGCCTGCAGCGT" + }, + { + "collection": "parts", + "type": "rbs", + "name": "R14", + "dnasequence": "TTTTTCTCCACTACGATGGTAAT" + }, + { + "collection": "parts", + "type": "rbs", + "name": "R15", + "dnasequence": "TTTGTCCCTTCCACTAGGCTGGTAAT" + }, + { + "collection": "parts", + "type": "rbs", + "name": "R17", + "dnasequence": "TGCCACTTACATTAGCGTTTTTGA" + }, + { + "collection": "parts", + "type": "ribozyme", + "name": "RiboJ64", + "dnasequence": "aggagtcaattaatgtgcttttaattctgatgagacggtgacgtcgaaactccctctacaaataattttgtttaa" + }, + { + "collection": "parts", + "type": "terminator", + "name": "DT56", + "dnasequence": "TACCACCGTCAAAAAAAACGGCGCTTTTTAGCGCCGTTTTTATTTTTCAACCTTCCAGGCATCAAATAAAACGAAAGGCTCAGTCGAAAGACTGGGCCTTTCGTTTTATCTGTTGTTTGTCGGTGAACGCTCTC" + }, + { + "collection": "parts", + "type": "terminator", + "name": "DT86", + "dnasequence": "TAATCATTCTTAGCGTGACCGGGAAGTCGGTCACGCTACCTCTTCTGAAGAAACAGCAAACAATCCAAAACGCCGCGTTCAGCGGCGTTTTTTCTGCTTTTCT" + }, + { + "collection": "parts", + "type": "scar", + "name": "F_scar", + "dnasequence": "CGCT" + }, + { + "collection": "parts", + "type": "scar", + "name": "E_scar", + "dnasequence": "GCTT" + }, + { + "collection": "parts", + "type": "scar", + "name": "D_scar", + "dnasequence": "AGGT" + }, + { + "collection": "parts", + "type": "scar", + "name": "C_scar", + "dnasequence": "AATG" + }, + { + "collection": "parts", + "type": "scar", + "name": "B_scar", + "dnasequence": "TACG" + }, + { + "collection": "parts", + "type": "scar", + "name": "A_scar", + "dnasequence": "GGAG" + }, + { + "collection": "parts", + "type": "scar", + "name": "Y_scar", + "dnasequence": "ATTG" + }, + { + "collection": "parts", + "type": "scar", + "name": "X_scar", + "dnasequence": "TGTC" + }, + { + "collection": "parts", + "type": "scar", + "name": "V_scar", + "dnasequence": "TCTG" + }, + { + "collection": "parts", + "type": "scar", + "name": "U_scar", + "dnasequence": "GGGC" + }, + { + "collection": "parts", + "type": "scar", + "name": "R_scar", + "dnasequence": "GTAA" + }, + { + "collection": "parts", + "type": "scar", + "name": "Q_scar", + "dnasequence": "GAGT" + }, + { + "collection": "parts", + "type": "scar", + "name": "P_scar", + "dnasequence": "CCTA" + }, + { + "collection": "parts", + "type": "scar", + "name": "O_scar", + "dnasequence": "ATGC" + }, + { + "collection": "parts", + "type": "scar", + "name": "G_scar", + "dnasequence": "ATAG" + } +] \ No newline at end of file diff --git a/library/constraints/Eco2C1G5T1.input.json b/library/constraints/Eco2C1G5T1.input.json new file mode 100644 index 0000000..c4da016 --- /dev/null +++ b/library/constraints/Eco2C1G5T1.input.json @@ -0,0 +1,93 @@ +[ + { + "collection": "input_sensors", + "name": "aTc_sensor", + "model": "aTc_sensor_model", + "structure": "aTc_sensor_structure" + }, + { + "collection": "models", + "name": "aTc_sensor_model", + "functions": { + "response_function": "sensor_response" + }, + "parameters": [ + { + "name": "ymax", + "value": 5.41, + "description": "Maximal transcription" + }, + { + "name": "ymin", + "value": 0.02, + "description": "Minimal transcription" + } + ] + }, + { + "collection": "structures", + "name": "aTc_sensor_structure", + "outputs": [ + "PTet" + ] + }, + { + "collection": "parts", + "name": "PTet", + "type": "promoter", + "dnasequence": "AACGATCGTTGGCTGTCCCTATCAGTGATAGAGATTGACATCCCTATCAGTGATAGATATAATGAGCAC" + }, + { + "collection": "input_sensors", + "name": "Cuma_sensor", + "model": "Cuma_sensor_model", + "structure": "Cuma_sensor_structure" + }, + { + "collection": "models", + "name": "Cuma_sensor_model", + "functions": { + "response_function": "sensor_response" + }, + "parameters": [ + { + "name": "ymax", + "value": 2.39, + "description": "Maximal transcription" + }, + { + "name": "ymin", + "value": 0.19, + "description": "Minimal transcription" + } + ] + }, + { + "collection": "structures", + "name": "Cuma_sensor_structure", + "outputs": [ + "PCymRC" + ] + }, + { + "collection": "parts", + "name": "PCymRC", + "type": "promoter", + "dnasequence": "TTCCGATGTAGGAGTAACAAACAGACAATCTGGTCTGTTTGTATTATGGAAAATTTTTCTGTATAATAGATTC" + }, + { + "collection": "functions", + "name": "sensor_response", + "equation": "$STATE * (ymax - ymin) + ymin", + "parameters": [ + { + "name": "ymax", + "map": "#//model/parameters/ymax" + }, + { + "name": "ymin", + "map": "#//model/parameters/ymin" + } + ] + } +] \ No newline at end of file diff --git a/library/constraints/Eco2C1G5T1.output.json b/library/constraints/Eco2C1G5T1.output.json new file mode 100644 index 0000000..f64c159 --- /dev/null +++ b/library/constraints/Eco2C1G5T1.output.json @@ -0,0 +1,263 @@ +[ + { + "collection": "measurement_std", + "signal_carrier_units": "RNAP/s", + "normalization_instructions": "The values are converted from RPUG (from the Eco2C1G3T1 UCF) to RNAP/s with the following conversion factor: RPU = 0.019 RNAP/s (see 10.15252/msb.20209584). Note: change unit conversion factors accordingly if using a different or modified UCF." + }, + { + "collection": "output_devices", + "name": "OC6_out", + "model": "OC6_out_model", + "structure": "OC6_out_structure", + "description": "comms_device" + }, + { + "collection": "models", + "name": "OC6_out_model", + "functions": { + "response_function": "Hill_response", + "input_composition": "linear_input_composition" + }, + "parameters": [ + { + "name": "ymax", + "value": 0.1425, + "description": "Maximal transcription (7.5 RPU * 0.019 for conversion to RNAP/s)" + }, + { + "name": "ymin", + "value": 0.00114, + "description": "Minimal transcription (0.06 RPU * 0.019 for conversion to RNAP/s)" + }, + { + "name": "kd", + "value": 0.1, + "description": "Dissociation equilibrium constant" + }, + { + "name": "n", + "value": 1.9, + "description": "Cooperativety" + }, + { + "name": "unit_conversion", + "value": 0.102, + "description": "Unit conversion" + } + ] + }, + { + "collection": "structures", + "name": "OC6_out_structure", + "inputs": [ + { + "name": "in1", + "part_type": "promoter" + }, + { + "name": "in2", + "part_type": "promoter" + } + ], + "devices": [ + { + "name": "OC6_out_a", + "components": [ + "#in1", + "#in2", + "sLux_cassette" + ] + } + ] + }, + { + "collection": "parts", + "type": "cassette", + "name": "sLux_cassette", + "dnasequence": "agcgctcaacgggtgtgcttcccgttctgatgagtccgtgaggacgaaagcgcctctacaaataattttgtttaacggttccaaagccagatactaaggaggtcccAcATGactataatgataaaaaaatcggattttttggcaattccatcggaggagtataaaggtattctaagccttcgttatcaagtgtttaagcaaagacttgagtgggacttagttgtagaaaataaccttgaatcagatgagtatgataactcaaatgcagaatatatttatgcttgtgatgatactgaaaatgtaagtggatgctggcgtttattacctacaacaggtgattatatgctgaaaagtgtttttcctgaattgcttggtcaacagagtgctcccaaagatcctaatatagtcgaattaagtcgttttgctgtaggtaaaaatagctcaaagataaataactctgctagtgaaattacaatgaaactatttgaagctatatataaacacgctgttagtcaaggtattacagaatatgtaacagtaacatcaacagcaatagagcgatttttaaagcgtattaaagttccttgtcatcgtattggagacaaagaaattcatgtattaggtgatactaaatcggttgtattgtctatgcctattaatgaacagtttaaaaaagcagtcttaaattaatagCTTATTCCATAACAAAGCCGGGTAATTCCCGGCTTTGTTGTATCTGAACAATAAATGGATGCCCTGCGTAAGCGGGGCATTTTTCTTCCT" + }, + { + "collection": "output_devices", + "name": "pC-HSL_out", + "model": "pC-HSL_out_model", + "structure": "pC-HSL_out_structure", + "description": "comms_device" + }, + { + "collection": "models", + "name": "pC-HSL_out_model", + "functions": { + "response_function": "Hill_response", + "input_composition": "linear_input_composition" + }, + "parameters": [ + { + "name": "ymax", + "value": 0.114, + "description": "Maximal transcription (6 RPU * 0.019 for conversion to RNAP/s)" + }, + { + "name": "ymin", + "value": 0.00038, + "description": "Minimal transcription (0.02 RPU * 0.019 for conversion to RNAP/s)" + }, + { + "name": "kd", + "value": 0.2, + "description": "Dissociation equilibrium constant" + }, + { + "name": "n", + "value": 2, + "description": "Cooperativety" + }, + { + "name": "unit_conversion", + "value": 0.102, + "description": "Unit conversion" + } + ] + }, + { + "collection": "structures", + "name": "pC-HSL_out_structure", + "inputs": [ + { + "name": "in1", + "part_type": "promoter" + }, + { + "name": "in2", + "part_type": "promoter" + } + ], + "devices": [ + { + "name": "pC-HSL_out_a", + "components": [ + "#in1", + "#in2", + "sRpa_cassette" + ] + } + ] + }, + { + "collection": "parts", + "type": "cassette", + "name": "sRpa_cassette", + "dnasequence": "AGTGGTCGTGATCTGAAACTCGATCACCTGATGAGCTCAAGGCAGAGCGAAACCACCTCTACAAATAATTTTGTTTAAtggttccaaagccagatactaaggaggtcccAATGcaggttcatgttattcgtcgtgaaaatcgtgcactgtatgcaggtctgctggaaaaatactttcgtattcgccatcagatctatgttgttgaacgtggttggaaagaactggatcgtccggatggtcgtgaaattgatcagtttgataccgaagatgcagtttatctgctgggtgttgataacgatgatattgttgcaggtatgcgtatggttccgaccaccagtccgaccctgctgagtgatgtttttccgcagctggcactggcaggtccggttcgtcgtcctgatgcatatgaactgagccgtatttttgttgttccgcgtaaacgtggtgaacatggtggtccgcgtgcagaagcagttattcaggcagcagcaatggaatatggtctgagcattggtctgagtgcatttaccattgttctggaaacctggtggctgcctcgtctggttgatcagggctggaaagcaaaaccgctgggtctgccgcaggatattaatggttttagcaccaccgcagttattgtggatgttgatgatgatgcatgggtgggtatttgtaatcgtcgtagcgttccgggtccgacactggaatggcgtggtctggaagcaattcgtcgtcatagcctgccggaatttcaggttattagcTAAAGTCGCGGCAGCAGCACAAGAAGATGGAGAAGGACACGAAACAAGTCGACATCATTTTTCGTTCGAAGCTCCCCGACATTTACATCCCCAACCATCTTCCGCTTCACTCGTACTGTTTTGAAAACATTTCCGAATTCAGCAGCCGGCCCTGTCTCATTAACGGCGCAAATAAGCAGATTTACACCTACGCGGATGTTGAACTTAATTCGCGCAAAGTCGCCGCCGGCCTCCATAAGCAGGGTATCCAGCCCAAAGATACGATCATGATCCTGCTTCCCAACTCGCCCGAATTCGTTTTCGCGTTTATTGGCGCGTCGTACCTGGGCGCAATCAGCACGATGGCCAACCCCCTTTTTACCCCCGCCGAGGTGGTTAAGCAAGCCAAGGCGAGCTCCGCCAAGATTATTGTCACGCAGGCATGCCACGTCAATAAAGTTAAGGATTACGCATTTGAAAATGATGTGAAGATTATCTGCATCGACAGCGCCCCCGAGGGCTGCCTGCACTTCTCGGTCCTTACGCAGGCCAATGAGCACGACATTCCCGAGGTGGAGATTCAGCCCGATGACGTCGTCGCGCTCCCCTATAGCAGCGGCACCACGGGTCTGCCCAAAGGTGTCATGCTCACCCACAAAGGCCTCGTGACCAGCGTGGCACAACAGGTGGACGGCGAAAACCCCAACCTTTACATCCATTCCGAGGACGTTATGCTGTGTGTGCTCCCCCTGTTTCACATTTACTCCCTTAACTCGGTCCTTCTTTGCGGCCTCCGTGTTGGCGCAGCAATCCTTATTATGCAAAAGTTCGATATTGTCAGCTTCCTGGAGCTCATTCAACGCTACAAAGTCACGATTGGCCCCTTCGTCCCCCCGATTGTGCTCGCGATTGCGAAGTCCCCCATGGTGGATGACTACGATCTCAGCAGCGTCCGTACGGTCATGTCCGGCGCGGCACCGCTCGGTAAAGAACTGGAGGATACGGTCCGGGCCAAATTCCCGAATGCGAAGCTGGGTCAGGGTTACGGCATGACCGAGGCAGGTCCCGTGCTCGCCATGTGCCTGGCATTCGCGAAGGAGCCCTTCGAGATCAAGAGCGGTGCGTGCGGCACGGTCGTTCGGAACGCGGAAATGAAAATCGTGGACCCCAAAACCGGCAATTCCCTTCCCCGCAACCAATCCGGCGAAATTTGCATCCGGGGTGACCAGATTATGAAGGGCTATCTTAATGACCCGGAAGCCACGGCGCGGACGATTGACAAAGAAGGTTGGCTGTATACCGGTGACATTGGTTACATCGACGATGACGACGAGCTTTTTATTGTGGACCGGCTCAAAGAACTCATCAAATATAAAGGCTTTCAAGTTGCGCCCGCGGAGCTGGAGGCACTGCTTCTTAACCATCCCAACATCTCGGATGCCGCGGTCGTGCCGATGAAGGATGAACAAGCGGGTGAAGTGCCGGTCGCGTTTGTGGTTCGGAGCAACGGCTCCACGATTACGGAGGATGAGGTTAAGGATTTTATTTCCAAGCAGGTTATCTTTTATAAACGGATTAAACGCGTTTTCTTCGTCGATGCCATCCCCAAATCCCCCAGCGGCAAGATCCTTCGGAAAGATCTTCGTGCGAAACTGGCAGCAGGcCTTCCGAATTAAAAGAGGAGAAAGGTACCATGCTGGCCATGAGCCCGCCGAAACCGGCAGTGGAACTGGATCGTCATATTGATCTGGACCAGGCACACGCTGTTGCAAGCGGCGGTGCACGTATCGTCCTGGCACCTCCGGCCCGTGATCGCTGCCGTGCATCCGAAGCTCGTCTGGGTGCAGTCATTCGTGAAGCTCGCCATGTGTATGGCCTGACCACGGGTTTTGGTCCGCTGGCAAACCGTCTGATCAGCGGTGAAAATGTGCGCACCCTGCAAGCTAACCTGGTTCATCACCTGGCCAGCGGCGTGGGTCCGGTTCTGGATTGGACCACGGCACGTGCAATGGTCCTGGCACGCCTGGTGAGCATTGCACAAGGTGCCAGCGGTGCATCCGAAGGCACCATTGCGCGTCTGATCGATCTGCTGAACAGCGAACTGGCTCCTGCGGTGCCGAGCCGCGGTACCGTTGGTGCAAGCGGCGACCTGACGCCGCTGGCACATATGGTGCTGTGTCTGCAAGGCCGCGGTGATTTCCTGGATCGTGACGGTACCCGCCTGGACGGTGCAGAAGGCCTGCGTCGCGGCCGTCTGCAACCGCTGGATCTGAGCCACCGCGACGCCCTGGCACTGGTGAACGGTACCAGCGCGATGACGGGCATCGCCCTGGTTAATGCTCATGCGTGCCGTCACCTGGGTAACTGGGCAGTTGCACTGACCGCTCTGCTGGCAGAATGTCTGCGTGGTCGTACGGAAGCATGGGCGGCCGCACTGAGCGATCTGCGCCCGCATCCGGGTCAGAAAGACGCTGCGGCCCGCCTGCGTGCACGTGTTGATGGCTCCGCTCGTGTGGTTCGCCACGTCATTGCGGAACGTCGCCTGGATGCCGGTGACATCGGCACCGAACCGGAAGCCGGTCAGGATGCATACAGCCTGCGTTGCGCACCGCAAGTGCTGGGTGCTGGTTTTGATACCCTGGCGTGGCATGACCGCGTTCTGACCATTGAACTGAACGCGGTTACGGATAATCCGGTCTTTCCGCCGGACGGTAGCGTCCCGGCACTGCATGGCGGTAATTTCATGGGCCAGCACGTTGCACTGACCTCGGATGCTCTGGCAACCGCCGTTACGGTCCTGGCAGGTCTGGCAGAACGTCAAATCGCGCGCCTGACGGACGAACGTCTGAATCGCGGCCTGCCGCCGTTTCTGCATCGTGGTCCGGCGGGCCTGAACAGCGGTTTCATGGGTGCACAGGTGACCGCAACGGCTCTGCTGGCTGAAATGCGTGCAACCGGTCCGGCAAGCATTCACAGCATCAGCACGAACGCAGCTAATCAAGATGTCGTGTCGCTGGGCACCATTGCGGCCCGTCTGTGTCGCGAAAAAATCGACCGTTGGGCAGAAATTCTGGCTATCCTGGCACTGTGCCTGGCACAGGCAGCTGAACTGCGCTGTGGCAGCGGTCTGGATGGTGTCTCGCCGGCAGGCAAAAAACTGGTGCAGGCGCTGCGTGAACAATTCCCGCCGCTGGAAACCGATCGTCCGCTGGGTCAGGAAATTGCAGCACTGGCGACGCATCTGCTGCAACAAAGCCCGGTGTAaGGCTCCTTTTGGAGCCTTTTTTTTT" + }, + { + "collection": "output_devices", + "name": "DAPG_out", + "model": "DAPG_out_model", + "structure": "DAPG_out_structure", + "description": "comms_device" + }, + { + "collection": "models", + "name": "DAPG_out_model", + "functions": { + "response_function": "Hill_response", + "input_composition": "linear_input_composition" + }, + "parameters": [ + { + "name": "ymax", + "value": 0.0646, + "description": "Maximal transcription (3.4 RPU * 0.019 for conversion to RNAP/s)" + }, + { + "name": "ymin", + "value": 0.00038, + "description": "Minimal transcription (0.02 RPU * 0.019 for conversion to RNAP/s)" + }, + { + "name": "kd", + "value": 0.15, + "description": "Dissociation equilibrium constant" + }, + { + "name": "n", + "value": 4, + "description": "Cooperativety" + }, + { + "name": "unit_conversion", + "value": 0.102, + "description": "Unit conversion" + } + ] + }, + { + "collection": "structures", + "name": "DAPG_out_structure", + "inputs": [ + { + "name": "in1", + "part_type": "promoter" + }, + { + "name": "in2", + "part_type": "promoter" + } + ], + "devices": [ + { + "name": "DAPG_out_a", + "components": [ + "#in1", + "#in2", + "sPhl_cassette" + ] + } + ] + }, + { + "collection": "parts", + "type": "cassette", + "name": "sPhl_cassette", + "dnasequence": "actcttcctttttcaatattattgaagcatttatcagggttattgtctcatgagcggatacatatttgaatgtatttagaaaaataaacaaataggggttccgcgTACATCAGAGATTTTGAGACACAaGTACNNNNNNNNNNNNNNNNNNNNCGTAagctgtcaccggatgtgctttccggtctgatgagtccgtgaggacgaaacagcctctacaaataattttgtttaaGTGAAAGAACGGAATCTGGAGGATGTACACATGAATAAGGTAGGAATTGTGAGCTATGGCGCGGGTATCCCGGTCTGCCGGCTCAAGGTGGACGACGTGATCCAGGTGTGGAAAAACACCGATCTGAGTTTGGTAAAGGGCCAATTGGGCGTTATTGAAAGGGCCGTCCTGCAACCCGACGAAGATGTCATAACCTTGGGTGTCCTCGCCGCCCAACGCGCGCTGGACAAGGCACCACCTTGTTCCCTCGAAGCGCTTTATCTCGGCACCTGCACCAATCCTTATGACTCCCGGGCCTCGGCCGCAATCATCCTGGAAATGCTCGGCTGCGGCTATGACGCCTTTTGCGCAGACGTGCAGTTTGCCGGCAAATCAGGCACCAGCGCCCTCCAGATCGCATACGCCTTGGTAGCGTCGGGCATGGTGGGCAACGCTTTGGCGGTGGGTGCCGATACGATCAACCGCAACACCGCCCCCGGTGACTTGACGGAGTCCTATGCCGGAGCCGGGGCCGCGGCCTTGCTGTTGGGGACAGAAAATGTGATCGCGCATTTTGACGCAAGTTTTTCTTGCGCGGCGGATGTCGCTGACAACATCAGGCCTCAAGGGGACCGCTATATCCGCTCGGGAATGGGATTGGGCTCGGACAAGAACAGTATCGGCCTCGAGGACCAGACTCGCCGCGCCGCCTCGGGATTGATGGCCAAGATCCATGCGCAAGCCGATGATTTCGATTACGTCGTTTTCCAACAAAACCTGGTGTCGACCCCCTACTCTCTCGGCAAGCACCTGGGATTCACGAAGGCCCAAATCGAACCTGGCATCTACGCCCAGAGTGTCGGCGATGCTGGAGCCGCGAGTCCTTTACTGGGCTTGGTCAACGTACTCGATCAAGCGCGTCCTGGCGAAAGAATCCTGGTGGTTTCCTATGGCTTCGGTGCGGGCAGCGATGCCATCGCCTTGACCGTCACCGATGCCATCGAAGCCTATCAAAAGACCAACGTTCCGCTGCGCACGCAGCTGGAGGATAAGTACTACGTGGATTACGGGACGTCGATCAAGTACGAGTTCAAATACTTGCGGCCCGACTATGCCCTGACGGCCTATCTCTGATTCCAATCATCCAGCAAGGAGCACCTTTTTATGTGCGCACGACGCGTTGCTATCGTTTCGGCTGCCTATACCCCTAAACCTGGCAGTTCCAGAGTTCGCCAGACTTTCAAGGAGATGATCGTCGAGTCCGCCTACCAGGCACTCAACGCCATCAAGATGCACCCTCGCGAACTTCAGGCAGTTGCCTATGGGTACCATGGTGAAGGTATTTCTGAATACGGAGGTCTGGGCCCAACCATCTCCGATGCCTTGGGGATCAGCCCTGCCCCCACGTTCATGAGTACGGCCAACTGCACCAGCAGTTCGGTGTCTTTCCAGATGGCTCACCAAATGGTCGCCTCAGGTGAATACGACATCGTTCTGTGTGGCGGCTTTGAAAAAATGACCGATCACTTCAACTATGCCGAGTACATTGGCTCGAGCACTGAATGTGAATACGATTATTTTCTAGGCATCTCTCACACAGACGCCTTCGCCCTGGCGACCGCCGAATATTTTGAAAAGTACGGCTATGCAGGACGCGAAGCGGATGTATTGGCCACTTTCGGGCGGCAGATGCGCATTTATGCCCATAACACTCCCACGGCTACCCGTTATGGCGTGCCGATCCCGTCTCTCGAAACACTCAAAAGCAGCGAAGCATGCGGCTCCATGCTGGCCTGGGGTGAAGCCAGCGGTTGCGCCATCCTGGTTGCCGAACACCTTGTGCACCGCTACACGACCCAACCGGTATTTGTCCGTGGCTGTGCCTACACCGGTGTGTCGCATTATTTCGGCACGCGCTATCACAACCCGACGTTGCAATTTCCGGGGCTGCCAAAAGATGTCGGCATGGCGGTTTCCGCCAACTCGCTGGCCTGCGCCGAAATCGCCTACAAAAAAGCCGGTATCACCGCAAAGGATATCGATGTGGCGCAAGTCTACGACTTGCTGGGCGCCGGGTTGATTCAAATGGAGTCCATGGGCGTATGTGGTCCAGGCCAGGCAGGCGACTTTGTATTGGAAGGCGGCATAGCCCTTGATGGGCAACTTCCCCTGAACACTGACGGCGGCAACATCGGACGCGGCCACGCTTCCGGTTGCGATGGGATTTTGCACATTACTGAATTGTTCCGGCAGCTTCGCGGCGAGTCCAACAATCAAGTCAAAGGCGCGCGTATTGGCGTCTCGCAAAACCTGGGCGGTTACGCCGCGCACAACAGCGTCATTGTGCTTTCCAACGATTAAGGAGCCGACCATGTCCCTTTACCCTGAACAAATTCACCGCATGACCACCGCCAGCATGTTGCGCGAATGGCGCGAACACGGTGGCAAATACCGCCTCGAAGGCAGCCGATGCCAGGACTGCGAAGAAATCTTCTTCCCTCGGCGCACAGTTTGCGGTGCGTGCAACTCGTTGAATGTAGAACCGTATCGCTGCGCGCGCACCGGCACTATCCAGGTCAGCGCACACGCCGAGAACCCCATTCTTGCGGCCATGGGCTACGGCGAAACCGTGCCCCGCTTCATGGCGATGGTGCGCCTGGATGATGGTCTGGTGATTGCCTCGGAAATAGTTGACGTCATCGATCCGCGACAAGTCGTCAGCGGTGCGCCCGTGCGCATGGTCATTCGAAAACATGTCCGGGAAAGTAACTTGGCCTGGCAATATGCCTATAAGTTTGTATTGGTGAAATAACAAACTTAGACGCCGCCATACCCCGCGTTATCGATAACAACAGTCAAGTTTTTGGCCTCCAAGCCCGTTGCTTTGATTCTGTCTTTCAGAGTCCAGCTTTGCTGTTATTGCCTTAAACATGTTTCTAACTTTATTGGCTTTTAGCCGAGGACTTGTCATGTCTACTCTTTGCAAACCCAGTCTGCTGTTCCCGCAATATAAGATCACCCAGCAACAAATGATCGAGCATCTAGAGCAGTTGCATGATGATCACCCGAGAATGGCTCTTGCCAAACGCATGATTCAAAACACACAGGTGAACGAACGATACTTGGTCCTGCCCATTGATGAACTGGCGGTGCATACCGGCTTCACCCATCGCAGCATTGTTTATGAGCGCGAGGCCCGCCGCATGTCATCCATCGCGGCGCGCCAAGCCATCGAGAATGCCGGGCTGACCACCGACGACATTCGAATGGTCGCTGTGACATCGTGCACGGGTTTCATGATGCCTTCGCTGACGGCCCACTTGATCAACGACCTGGGCCTGCGAACATCGACCGTACAACTGCCTATCGCTCAATTGGGATGCGTGGCAGGCGCTGCGGCGATCAATCGAGCCAATGACTTCGCCAGCCTGGCGCCGGACAACCATGTGCTCATCGTCTCCCTGGAGTTCTCGTCGCTCTGCTATCAACCCCAGGACACCAAGTTGCACGCATTCATCTCAGCGGCATTATTCGGCGATGCGGTATCAGCCTGCGTAATGCGAGCCGACGATCAGGCGTCTGGTTTCAAGATCGCCAAGACGGGGTCTTACTTCCTGCCTGATAGCGAGCACTATATTAAATACGACGTCAAAGACAGTGGCTTTCACTTCACCCTGGACAAGGCGGTCATGAACTCCATTAAAGATGTCGCACCCATGATGGAGGAATTGAACTACGAAACCTTCAATCAACATTGCGCTCAAAATGACTTTTTCATCTTCCATACAGGCGGACGGAAAATTCTTGATGAACTGGTCCTGCAATTGGACTTGGAACCCGGCAGGGTCGCGCAATCCCGCGACAGTTTGAGCGAAGCCGGGAACATCGCCAGCGTGGTGGTTTTCGATGTGCTCAAGCGCCAGTTCGACAGCGGACCTGTCAATGGCGCGACGGGCATGTTGGCGGCCTTCGGCCCGGGTTTCACCGCTGAAATGGCCGTGGGCAAGTGGGTCGCCTGAcaaataaaacgaaaggctcagtcgaaagactgggcctttcgttttatctgttgtttgtcggtgaacgctctctactagagtcacactggctcaccttcgggtgggcctttctgcgtttataAGGTGCTTCCTCGCTCACTGactcgctgcacgaggcagacctcagcgctagcggagtgtatactggcttactatgttggcactgatgagggtgtcagtgaagtgcttcatgtggcaggagaaaaaaggctgcaccggtgcgtcagcagaatatgtgatacaggatatattccgcttcctcgctcactgactcgctacgctcggtcgttcgactgcggcgagcggaaatggcttacgaacggggcggagatttcctggaagatgccaggaagatacttaacagggaagtgagagggccgcggcaaagccgtttttccataggctccgcccccctgacaagcatcacgaaatctgacgctcaaatcagtggtggcgaaacccgacaggactataaagataccaggcgtttccccCtggcggctccctcgtgcgctctcctgttcctgcctttcggtttaccggtgtcattccgctgttatggccgcgtttgtctcattccacgcctgacactcagttccgggtaggcagttcgctccaagctggactgtatgcacgaaccccccgttcagtccgaccgctgcgccttatccggtaactatcgtcttgagtccaacccggaaagacatgcaaaagcaccactggcagcagccactggtaattgatttagaggagttagtcttgaagtcatgcgccggttaaggctaaactgaaaggacaagttttggtgactgcgctcctccaagccagttacctcggttcaaagagttggtagctcagagaaccttcgaaaaaccgccctgcaaggcggttttttcgttttcagagcaagagattacgcgcagaccaaaacgatctcaagaagatcatcttattaaATTCTCACCAATAAAAAACGCCCGGCGGCAACCGAGCGTTCTGAACAAATCCAGATGGAGTTCTGAGGTCATTACTGGATCTATCAACAGGAGTCCAAGCGAGCTTTAGAAAAACTCATCGAGgttaggtggcggtacttgggtcgatatcaaagtgcatcacttcttcccgtatgcccaactttgtatagagagccactgcgggatcgtcaccgtaatctgcttgcacgtagatcacataagcaccaagcgcgttggcctcatgcttgaggagattgatgagcgcggtggcaatgccctgcctccggtgctcgccggagactgcgagatcatagatatagatctcactacgcggctgctcaaacttgggcagaacgtaagccgcgagagcgccaacaaccgcttcttggtcgaaggcagcaagcgcgatgaatgtcttactacggagcaagttcccgaggtaatcggagtccggctgatgttgggagtaggtggctacgtctccgaactcacgaccgaaaagatcaagagcagtccgcatggatttgacttggtcagggccgagcctacatgtgcgaatgatgcccatacttgagccacctaactttgttttagggcgactgccctgctgcgtaacatcgttgctgctgcgtaacatcgttgctgctccataacatcaaacatcgacccacggcgtaacgcgcttgctgcttggatgcccgaggcatagactgtacaaaaaaacagtcataacaagccatgaaaaccgccactgcgccgttaccaccgctgcgttcggtcaaggttctggaccagttgcgtgagcgcatacgctacttgcattacagtttacgaaccgaacaggcttatgtcaattcggttgaatactcat" + }, + { + "collection": "functions", + "name": "Hill_response", + "equation": "ymin + (ymax - ymin) / (1.0 + (kd / (unit_conversion * x))^n)", + "variables": [ + { + "name": "x", + "map": "#//model/functions/input_composition" + } + ], + "parameters": [ + { + "name": "ymax", + "map": "#//model/parameters/ymax" + }, + { + "name": "ymin", + "map": "#//model/parameters/ymin" + }, + { + "name": "kd", + "map": "#//model/parameters/kd" + }, + { + "name": "n", + "map": "#//model/parameters/n" + } + ] + }, + { + "collection": "functions", + "name": "linear_input_composition", + "equation": "x", + "variables": [ + { + "name": "x", + "map": "#//structure/inputs/in1/model/functions/response_function" + } + ] + } +] \ No newline at end of file From 77826d8c3b2cb8dc66cfe03b667e460712046822 Mon Sep 17 00:00:00 2001 From: chris-krenz Date: Fri, 19 Jul 2024 03:04:51 -0400 Subject: [PATCH 3/3] changes to Eco5 input and output files --- library/constraints/Eco2C1G5T1.input.json | 496 ++++++++++++++++++++- library/constraints/Eco2C1G5T1.output.json | 314 ++++++++++++- 2 files changed, 802 insertions(+), 8 deletions(-) diff --git a/library/constraints/Eco2C1G5T1.input.json b/library/constraints/Eco2C1G5T1.input.json index c4da016..c83d86d 100644 --- a/library/constraints/Eco2C1G5T1.input.json +++ b/library/constraints/Eco2C1G5T1.input.json @@ -1,4 +1,90 @@ [ + { + "collection": "input_sensors", + "name": "Ara_sensor", + "model": "Ara_sensor_model", + "structure": "Ara_sensor_structure" + }, + { + "collection": "models", + "name": "Ara_sensor_model", + "functions": { + "response_function": "sensor_response" + }, + "parameters": [ + { + "name": "ymax", + "value": 2.13, + "description": "Maximal transcription" + }, + { + "name": "ymin", + "value": 0.0021, + "description": "Minimal transcription" + } + ] + }, + { + "collection": "structures", + "name": "Ara_sensor_structure", + "outputs": [ + "PBad" + ] + }, + { + "collection": "parts", + "name": "PBad", + "type": "promoter", + "dnasequence": "agaaaccaattgtccatattgcatcagacattgccgtcactgcgtcttttactggctcttctcgctaaccaaaccggtaaccccgcttattaaaagcattctgtaacaaagcgggaccaaagccatgacaaaaacgcgtaacaaaagtgtctataatcacggcagaaaagtccacattgattatttgcacggcgtcacactttgctatgccatagcatttttatccataagattagcggatcctacctgacgctttttatcgcaactctctactgtttctccat" + }, + + + + + + { + "collection": "input_sensors", + "name": "IPTG_sensor", + "model": "IPTG_sensor_model", + "structure": "IPTG_sensor_structure" + }, + { + "collection": "models", + "name": "IPTG_sensor_model", + "functions": { + "response_function": "sensor_response" + }, + "parameters": [ + { + "name": "ymax", + "value": 4.09, + "description": "Maximal transcription" + }, + { + "name": "ymin", + "value": 0.0302, + "description": "Minimal transcription" + } + ] + }, + { + "collection": "structures", + "name": "IPTG_sensor_structure", + "outputs": [ + "PTac" + ] + }, + { + "collection": "parts", + "name": "PTac", + "type": "promoter", + "dnasequence": "tgttgacaattaatcatcggctcgtataatgtgtggaattgtgagcgctcacaatt" + }, + + + + + { "collection": "input_sensors", "name": "aTc_sensor", @@ -14,12 +100,12 @@ "parameters": [ { "name": "ymax", - "value": 5.41, + "value": 6.13, "description": "Maximal transcription" }, { "name": "ymin", - "value": 0.02, + "value": 0.016, "description": "Minimal transcription" } ] @@ -35,8 +121,13 @@ "collection": "parts", "name": "PTet", "type": "promoter", - "dnasequence": "AACGATCGTTGGCTGTCCCTATCAGTGATAGAGATTGACATCCCTATCAGTGATAGATATAATGAGCAC" + "dnasequence": "ttttttccctatcagtgatagagattgacatccctatcagtgatagagataatgagcac" }, + + + + + { "collection": "input_sensors", "name": "Cuma_sensor", @@ -52,12 +143,12 @@ "parameters": [ { "name": "ymax", - "value": 2.39, + "value": 3.14, "description": "Maximal transcription" }, { "name": "ymin", - "value": 0.19, + "value": 0.0036, "description": "Minimal transcription" } ] @@ -73,8 +164,399 @@ "collection": "parts", "name": "PCymRC", "type": "promoter", - "dnasequence": "TTCCGATGTAGGAGTAACAAACAGACAATCTGGTCTGTTTGTATTATGGAAAATTTTTCTGTATAATAGATTC" + "dnasequence": "aacaaacagacaatctggtctgtttgtattatggaaaatttttctgtataatagattcaacaaacagacaatctggtctgtttgtattat" + }, + + + + + + { + "collection": "input_sensors", + "name": "Van_sensor", + "model": "Van_sensor_model", + "structure": "Van_sensor_structure" + }, + { + "collection": "models", + "name": "Van_sensor_model", + "functions": { + "response_function": "sensor_response" + }, + "parameters": [ + { + "name": "ymax", + "value": 4, + "description": "Maximal transcription" + }, + { + "name": "ymin", + "value": 0.0195, + "description": "Minimal transcription" + } + ] + }, + { + "collection": "structures", + "name": "Van_sensor_structure", + "outputs": [ + "PVanCC" + ] + }, + { + "collection": "parts", + "name": "PVanCC", + "type": "promoter", + "dnasequence": "attggatccaattgacagctagctcagtcctaggtaccattggatccaat" + }, + + + + + + { + "collection": "input_sensors", + "name": "OHC14_sensor", + "model": "OHC14_sensor_model", + "structure": "OHC14_sensor_structure" + }, + { + "collection": "models", + "name": "OHC14_sensor_model", + "functions": { + "response_function": "sensor_response" + }, + "parameters": [ + { + "name": "ymax", + "value": 3.13, + "description": "Maximal transcription" + }, + { + "name": "ymin", + "value": 0.0057, + "description": "Minimal transcription" + } + ] + }, + { + "collection": "structures", + "name": "OHC14_sensor_structure", + "outputs": [ + "PCin" + ] + }, + { + "collection": "parts", + "name": "PCin", + "type": "promoter", + "dnasequence": "gaatcgcaccaagacaggtttgtccaccctttgtgcgtccaaacggacgcacggcgctctaaagcgggtcgcgatctttcagattcgctcctcgcgctttcagtctttgttttggcgcatgtcgttatcgcaaaaccgctgcacacttttgcgcgacatgctctgatccccctcatctgggggggcctatctgagggaatttccgatccggctcgcctgaaccattctgctttccacgaacttgaaaacgct" + }, + + + + + + { + "collection": "input_sensors", + "name": "Sal_sensor", + "model": "Sal_sensor_model", + "structure": "Sal_sensor_structure" + }, + { + "collection": "models", + "name": "Sal_sensor_model", + "functions": { + "response_function": "sensor_response" + }, + "parameters": [ + { + "name": "ymax", + "value": 3.17, + "description": "Maximal transcription" + }, + { + "name": "ymin", + "value": 0.0138, + "description": "Minimal transcription" + } + ] + }, + { + "collection": "structures", + "name": "Sal_sensor_structure", + "outputs": [ + "PSalTTC" + ] + }, + { + "collection": "parts", + "name": "PSalTTC", + "type": "promoter", + "dnasequence": "ggggcctcgcttgggttattgctggtgcccggccgggcgcaatattcatgttgatgatttattatatatcgagtggtgtatttatttatattgtttgctccgttaccgttattaac" + }, + + + + + + { + "collection": "input_sensors", + "name": "RpaR-AM2_sensor", + "model": "RpaR-AM2_sensor_model", + "structure": "RpaR-AM2_sensor_structure" + }, + { + "collection": "models", + "name": "RpaR-AM2_sensor_model", + "functions": { + "response_function": "sensor_response" + }, + "parameters": [ + { + "name": "ymax", + "value": 6.9, + "description": "Maximal transcription" + }, + { + "name": "ymin", + "value": 0.06, + "description": "Minimal transcription" + } + ] + }, + { + "collection": "structures", + "name": "RpaR-AM2_sensor_structure", + "outputs": [ + "PRpa_A" + ], + "inputs": [ + { + "name": "in1", + "part_type": "promoter" + } + ], + "devices": [ + { + "name": "PRpa_A_RiboRpa_RpaR-AM2_TerRpa", + "components": [ + "#in1", + "PRpa_A_RiboRpa_RpaR-AM2_TerRpa_cassette" + ] + }, + { + "name": "PRpa_A_RiboRpa_RpaR-AM2_TerRpa_cassette", + "components": [ + "RiboRpa_RpaR-AM2_TerRpa" + ] + } + ] + }, + { + "collection": "parts", + "type": "cassette", + "name": "RiboRpa_RpaR-AM2_TerRpa", + "dnasequence": "AAAAAAAAAGGCTCCAAAAGGAGCCttgacggctagctcagtcctaggtacagtgctagctactAGATGCTGTAGTGGGATGTGTGTCTCACCTGAAGAGTACAAAAGTCCGAAACGGTATCCTCTACAAATAATTTTGTTTAAaAGCGATACTTAGGGTAACAGtAATGattgtgggtgaagatcagctgtggggtcgtcgtacactggaatttgttgatagcgttgaacgtctggaagcaccggcactgattagccgttttgaaagcctgattgcaagctgtggttttaccgcctatatcatggcaggtctgccgagccgtaatgccggtctgccggaactgaccctggcaaatggttggcctcgtgattggtttgatctgtatgttagcgaaaactttagcgcagttgatccggttccgcgttatggtgcaaccactgttcatccgtttgtttggagtgatgcaccgtatgatcgtgaccgtgatcaggcagcacatcgtgttatgacccgtgcagcagaatttggtctggttgaaggttattgtattccgctgcattacgatgatggtagcgcagcaattagtatggcaggtgaagatcctgatctgagtccggcagcccgtggtgtaatgcagctggttagcatttatgcacatagccgtctgcgtgtactgagccgtccgaaaccgattcgtcgtaatcgtctgacaccgcgtgaatgtgaaattctgcagtgggcagcacagggtaaaaccgcatgggaaattagcgttattctgtgtattaccgaacgcaccgttaaatttcatctgattgaagcagcacgtaaactggatgcagcaaatcgtaccgcagcagttgcaaaagcactgacactgggtctgattcgtctgtaatagagttaaccaaAAAGGGGGGATTTTATCTCCCCTTTaatttttcct" + }, + + + + + + + + + + + + + + + + + { + "collection": "input_sensors", + "name": "OC6_in", + "model": "OC6_in_model", + "structure": "OC6_in_structure", + "description": "comms_device" + }, + { + "collection": "models", + "name": "OC6_in_model", + "functions": { + "response_function": "sensor_response" + }, + "parameters": [ + { + "name": "ymax", + "value": 7.5, + "description": "Maximal transcription" + }, + { + "name": "ymin", + "value": 0.06, + "description": "Minimal transcription" + } + ] + }, + { + "collection": "structures", + "name": "OC6_in_structure", + "outputs": [ + "pLuxB" + ] + }, + { + "collection": "parts", + "type": "promoter", + "name": "pLuxB", + "dnasequence": "ACCTGTAGGATCGTACAGGTTTACGCAAGAAAATGGTTTGTTACAGTCGAATAAAAGCTGTCACCGGATGTGCTTTCCGGTCTGATGAGTCCGTGAGGACGAAACAGCCTCTACAAATAATTTTGTTTAATACTAGAG" + }, + + + + + + { + "collection": "input_sensors", + "name": "OHC12_in", + "model": "OHC12_in_model", + "structure": "OHC12_in_structure", + "description": "comms_device" + }, + { + "collection": "models", + "name": "OHC12_in_model", + "functions": { + "response_function": "sensor_response" + }, + "parameters": [ + { + "name": "ymax", + "value": 3.4, + "description": "Maximal transcription" + }, + { + "name": "ymin", + "value": 0.01, + "description": "Minimal transcription" + } + ] + }, + { + "collection": "structures", + "name": "OHC12_in_structure", + "outputs": [ + "pCin" + ] + }, + { + "collection": "parts", + "type": "promoter", + "name": "pCin", + "dnasequence": "CGTAAGCTGTCACCGGATGTGCTTTCCGGTCTGATGAGTCCGTGAGGACGAAACAGCCTCTACAAATAATTTTGTTTAATACTAGAG" + }, + + + + + + { + "collection": "input_sensors", + "name": "pC-HSL_in", + "model": "pC-HSL_in_model", + "structure": "pC-HSL_in_structure", + "description": "comms_device" + }, + { + "collection": "models", + "name": "pC-HSL_in_model", + "functions": { + "response_function": "sensor_response" + }, + "parameters": [ + { + "name": "ymax", + "value": 6, + "description": "Maximal transcription" + }, + { + "name": "ymin", + "value": 0.02, + "description": "Minimal transcription" + } + ] + }, + { + "collection": "structures", + "name": "pC-HSL_in_structure", + "outputs": [ + "pRpa" + ] + }, + { + "collection": "parts", + "type": "promoter", + "name": "pRpa", + "dnasequence": "CGTAAGCTGTCACCGGATGTGCTTTCCGGTCTGATGAGTCCGTGAGGACGAAACAGCCTCTACAAATAATTTTGTTTAATACTAGAG" + }, + + + + + + { + "collection": "input_sensors", + "name": "DAPG_in", + "model": "DAPG_in_model", + "structure": "DAPG_in_structure", + "description": "comms_device" + }, + { + "collection": "models", + "name": "DAPG_in_model", + "functions": { + "response_function": "sensor_response" + }, + "parameters": [ + { + "name": "ymax", + "value": 3.4, + "description": "Maximal transcription" + }, + { + "name": "ymin", + "value": 0.02, + "description": "Minimal transcription" + } + ] + }, + { + "collection": "structures", + "name": "DAPG_in_structure", + "inputs": [ + { + "name": "in1", + "part_type": "promoter" + } + ], + "outputs": [ + "pPhlF" + ] + }, + { + "collection": "parts", + "type": "promoter", + "name": "pPhlF", + "dnasequence": "AGCTGTCACCGGATGTGCTTTCCGGTCTGATGAGTCCGTGAGGACGAAACAGCCTCTACAAATAATTTTGTTTAATACTAGAG" }, + + + + + { "collection": "functions", "name": "sensor_response", @@ -90,4 +572,4 @@ } ] } -] \ No newline at end of file +] diff --git a/library/constraints/Eco2C1G5T1.output.json b/library/constraints/Eco2C1G5T1.output.json index f64c159..bab4d7b 100644 --- a/library/constraints/Eco2C1G5T1.output.json +++ b/library/constraints/Eco2C1G5T1.output.json @@ -4,6 +4,214 @@ "signal_carrier_units": "RNAP/s", "normalization_instructions": "The values are converted from RPUG (from the Eco2C1G3T1 UCF) to RNAP/s with the following conversion factor: RPU = 0.019 RNAP/s (see 10.15252/msb.20209584). Note: change unit conversion factors accordingly if using a different or modified UCF." }, + + + + + + { + "collection": "output_devices", + "name": "BFP_reporter", + "model": "BFP_reporter_model", + "structure": "BFP_reporter_structure" + }, + { + "collection": "models", + "name": "BFP_reporter_model", + "functions": { + "response_function": "linear_response", + "input_composition": "linear_input_composition" + }, + "parameters": [ + { + "name": "unit_conversion", + "value": 0.019, + "description": "Unit conversion" + } + ] + }, + { + "collection": "structures", + "name": "BFP_reporter_structure", + "inputs": [ + { + "name": "in1", + "part_type": "promoter" + }, + { + "name": "in2", + "part_type": "promoter" + } + ], + "devices": [ + { + "name": "BFP_reporter_a", + "components": [ + "#in1", + "BFP_reporter_cassette" + ] + }, + { + "name": "BFP_reporter_b", + "components": [ + "#in2", + "BFP_reporter_cassette" + ] + } + ] + }, + { + "collection": "parts", + "name": "BFP_reporter_cassette", + "type": "cassette", + "dnasequence": "GCTGTCACCGGATGTGCTTTCCGGTCTGATGAGTCCGTGAGGACGAAACAGCCTCTACAAATAATTTTGTTTAATACTAGAGaaagaggagaaaTACTAGATGGTGTCTAAGGGCGAAGAGCTGATTAAGGAGAACATGCACATGAAGCTGTACATGGAGGGCACCGTGGACAACCATCACTTCAAGTGCACATCCGAGGGCGAAGGCAAGCCCTACGAGGGCACCCAGACCATGCGCATCAAGGTGGTCGAGGGCGGCCCTCTCCCCTTCGCCTTCGACATCCTGGCTACTAGCTTCCTCTACGGCAGCAAGACCTTCATCAACCACACCCAGGGCATCCCCGACTTCTTCAAGCAGTCCTTCCCTGAGGGCTTCACATGGGAGCGCGTCACCACATACGAGGACGGGGGCGTGCTGACCGCTACCCAGGACACCAGCCTCCAGGACGGCTGCCTCATCTACAACGTCAAGATCCGGGGGGTGAACTTCACATCCAACGGCCCTGTGATGCAGAAGAAAACACTCGGCTGGGAGGCCTTCACCGAAACCCTGTACCCCGCTGACGGCGGCCTGGAAGGCCGTAACGACATGGCCCTGAAGCTCGTGGGCGGGAGCCATCTGATCGCAAACGCCAAGACCACATATCGTTCCAAGAAACCCGCTAAGAACCTCAAGATGCCTGGCGTCTACTATGTGGACTACCGCCTGGAACGTATCAAGGAGGCCAACAACGAAACGTACGTCGAGCAGCACGAGGTGGCAGTGGCCCGGTACTGCGACCTCCCTAGCAAACTGGGGCACAAGCTTAATTAAAGGAAACACAGAAAAAAGCCCGCACCTGACAGTGCGGGCTTTTTTTTTCGACCAAAGG" + }, + + + + + + { + "collection": "output_devices", + "name": "RFP_reporter", + "model": "RFP_reporter_model", + "structure": "RFP_reporter_structure" + }, + { + "collection": "models", + "name": "RFP_reporter_model", + "functions": { + "response_function": "linear_response", + "input_composition": "linear_input_composition" + }, + "parameters": [ + { + "name": "unit_conversion", + "value": 0.019, + "description": "Unit conversion" + } + ] + }, + { + "collection": "structures", + "name": "RFP_reporter_structure", + "inputs": [ + { + "name": "in1", + "part_type": "promoter" + }, + { + "name": "in2", + "part_type": "promoter" + } + ], + "devices": [ + { + "name": "RFP_reporter_a", + "components": [ + "#in1", + "RFP_reporter_cassette" + ] + }, + { + "name": "RFP_reporter_b", + "components": [ + "#in2", + "RFP_reporter_cassette" + ] + } + ] + }, + { + "collection": "parts", + "name": "RFP_reporter_cassette", + "type": "cassette", + "dnasequence": "agaagtcaattaatgtgcttttaattctgatgagtcggtgacgacgaaacttcctctacaaataattttgtttaaTACTAGAGAAAGAGGGGAAATACTAGATGGCTTCCTCCGAAGACGTTATCAAAGAGTTCATGCGTTTCAAAGTTCGTATGGAAGGTTCCGTTAACGGTCACGAGTTCGAAATCGAAGGTGAAGGTGAAGGTCGTCCGTACGAAGGTACCCAGACCGCTAAACTGAAAGTTACCAAAGGTGGTCCGCTGCCGTTCGCTTGGGACATCCTGTCCCCGCAGTTCCAGTACGGTTCCAAAGCTTACGTTAAACACCCGGCTGACATCCCGGACTACCTGAAACTGTCCTTCCCGGAAGGTTTCAAATGGGAACGTGTTATGAACTTCGAAGACGGTGGTGTTGTTACCGTTACCCAGGACTCCTCCCTGCAAGACGGTGAGTTCATCTACAAAGTTAAACTGCGTGGTACCAACTTCCCGTCCGACGGTCCGGTTATGCAGAAAAAAACCATGGGTTGGGAAGCTTCCACCGAACGTATGTACCCGGAAGACGGTGCTCTGAAAGGTGAAATCAAAATGCGTCTGAAACTGAAAGACGGTGGTCACTACGACGCTGAAGTTAAAACCACCTACATGGCTAAAAAACCGGTTCAGCTGCCGGGTGCTTACAAAACCGACATCAAACTGGACATCACCTCCCACAACGAAGACTACACCATCGTTGAACAGTACGAACGTGCTGAAGGTCGTCACTCCACCGGTGCTTAAGATGTGGGGTCCGATCTAACTAAAAAGGCCgctCTGCGGCCTTTTTTCTTTTCACT" + }, + + + + + + { + "collection": "output_devices", + "name": "YFP_reporter", + "model": "YFP_reporter_model", + "structure": "YFP_reporter_structure" + }, + { + "collection": "models", + "name": "YFP_reporter_model", + "functions": { + "response_function": "linear_response", + "input_composition": "linear_input_composition" + }, + "parameters": [ + { + "name": "unit_conversion", + "value": 0.019, + "description": "Unit conversion" + } + ] + }, + { + "collection": "structures", + "name": "YFP_reporter_structure", + "inputs": [ + { + "name": "in1", + "part_type": "promoter" + }, + { + "name": "in2", + "part_type": "promoter" + } + ], + "devices": [ + { + "name": "YFP_reporter_a", + "components": [ + "#in1", + "YFP_reporter_cassette" + ] + }, + { + "name": "YFP_reporter_b", + "components": [ + "#in2", + "YFP_reporter_cassette" + ] + } + ] + }, + { + "collection": "parts", + "name": "YFP_reporter_cassette", + "type": "cassette", + "dnasequence": "AGCTGTCACCGGATGTGCTTTCCGGTCTGATGAGTCCGTGAGGACGAAACAGCCTCTACAAATAATTTTGTTTAATACTAGAGAAAGAGGAGAAATACTAGATGGTGAGCAAGGGCGAGGAGCTGTTCACCGGGGTGGTGCCCATCCTGGTCGAGCTGGACGGCGACGTAAACGGCCACAAGTTCAGCGTGTCCGGCGAGGGCGAGGGCGATGCCACCTACGGCAAGCTGACCCTGAAGTTCATCTGCACCACAGGCAAGCTGCCCGTGCCCTGGCCCACCCTCGTGACCACCTTCGGCTACGGCCTGCAATGCTTCGCCCGCTACCCCGACCACATGAAGCTGCACGACTTCTTCAAGTCCGCCATGCCCGAAGGCTACGTCCAGGAGCGCACCATCTTCTTCAAGGACGACGGCAACTACAAGACCCGCGCCGAGGTGAAGTTCGAGGGCGACACCCTGGTGAACCGCATCGAGCTGAAGGGCATCGACTTCAAGGAGGACGGCAACATCCTGGGGCACAAGCTGGAGTACAACTACAACAGCCACAACGTCTATATCATGGCCGACAAGCAGAAGAACGGCATCAAGGTGAACTTCAAGATCCGCCACAACATCGAGGACGGCAGCGTGCAGCTCGCCGACCACTACCAGCAGAACACCCCAATCGGCGACGGCCCCGTGCTGCTGCCCGACAACCACTACCTTAGCTACCAGTCCGCCCTGAGCAAAGACCCCAACGAGAAGCGCGATCACATGGTCCTGCTGGAGTTCGTGACCGCCGCCGGGATCACTCTCGGCATGGACGAGCTGTACAAGTAAGCTCATGTATGTGTCTACGCGAGATTCTCGCCCGAGAACTTCTGCAAGGCACTGCTCTTGGCT" + }, + { + "collection": "functions", + "name": "linear_response", + "equation": "c * x", + "variables": [ + { + "name": "x", + "map": "#//model/functions/input_composition" + } + ], + "parameters": [ + { + "name": "c", + "map": "#//model/parameters/unit_conversion" + } + ] + }, + + + + + { "collection": "output_devices", "name": "OC6_out", @@ -76,6 +284,78 @@ "name": "sLux_cassette", "dnasequence": "agcgctcaacgggtgtgcttcccgttctgatgagtccgtgaggacgaaagcgcctctacaaataattttgtttaacggttccaaagccagatactaaggaggtcccAcATGactataatgataaaaaaatcggattttttggcaattccatcggaggagtataaaggtattctaagccttcgttatcaagtgtttaagcaaagacttgagtgggacttagttgtagaaaataaccttgaatcagatgagtatgataactcaaatgcagaatatatttatgcttgtgatgatactgaaaatgtaagtggatgctggcgtttattacctacaacaggtgattatatgctgaaaagtgtttttcctgaattgcttggtcaacagagtgctcccaaagatcctaatatagtcgaattaagtcgttttgctgtaggtaaaaatagctcaaagataaataactctgctagtgaaattacaatgaaactatttgaagctatatataaacacgctgttagtcaaggtattacagaatatgtaacagtaacatcaacagcaatagagcgatttttaaagcgtattaaagttccttgtcatcgtattggagacaaagaaattcatgtattaggtgatactaaatcggttgtattgtctatgcctattaatgaacagtttaaaaaagcagtcttaaattaatagCTTATTCCATAACAAAGCCGGGTAATTCCCGGCTTTGTTGTATCTGAACAATAAATGGATGCCCTGCGTAAGCGGGGCATTTTTCTTCCT" }, + { + "collection": "output_devices", + "name": "OHC12_out", + "model": "OHC12_out_model", + "structure": "OHC12_out_structure", + "description": "comms_device" + }, + { + "collection": "models", + "name": "OHC12_out_model", + "functions": { + "response_function": "Hill_response", + "input_composition": "linear_input_composition" + }, + "parameters": [ + { + "name": "ymax", + "value": 0.0646, + "description": "Maximal transcription (3.4 RPU * 0.019 for conversion to RNAP/s)" + }, + { + "name": "ymin", + "value": 0.00019, + "description": "Minimal transcription (0.01 RPU * 0.019 for conversion to RNAP/s)" + }, + { + "name": "kd", + "value": 0.3, + "description": "Dissociation equilibrium constant" + }, + { + "name": "n", + "value": 3.9, + "description": "Cooperativety" + }, + { + "name": "unit_conversion", + "value": 0.102, + "description": "Unit conversion" + } + ] + }, + { + "collection": "structures", + "name": "OHC12_out_structure", + "inputs": [ + { + "name": "in1", + "part_type": "promoter" + }, + { + "name": "in2", + "part_type": "promoter" + } + ], + "devices": [ + { + "name": "OHC12_out_a", + "components": [ + "#in1", + "#in2", + "sCin_cassette" + ] + } + ] + }, + { + "collection": "parts", + "type": "cassette", + "name": "sCin_cassette", + "dnasequence": "gctgtcaccggatgtgctttccggtctgatgagtccgtgaggacgaaacagcctctacaaataattttgtttaatggttccaaagccagatactaaggaggtcccAATGttcgttatcatccaggctcacgaataccagaaatacgctgctgttctggaccagatgttccgtctgcgtaaaaaagttttcgctgacaccctgtgctgggacgttccggttatcggtccgtacgaacgtgactcctacgactccctggctccggcttacctggtttggtgcaacgactcccgtacccgtctgtacggtggtatgcgtctgatgccgaccaccggtccgaccctgctgtacgacgttttccgtgaaaccttcccggacgctgctgacctgatcgctccgggtatctgggaaggtacccgtatgtgcatcgacgaagaagctatcgctaaagacttcccggaaatcgacgctggtcgtgctttctccatgatgctgctggctctgtgcgaatgcgctctggaccacggtatccacaccatgatctccaactacgaaccgtacctgaaacgtgtttacaaacgtgctggtgctgaagttgaagaactgggtcgtgctgacggttacggtaaatacccggtttgctgcggtgctttcgaagtttccgaccgtgttctgcgtaaaatgcgtgctgctctgggtctgaccctgccgctgtacgttcgtcacgttccggctcgttccgttgttacccagttcctggaaatggctgcttaatagccaggcatcaaataaaacgaaaggctcagtcgaaagactgggcctttcgttttatctgttgtttgtcggtgaacgctctctactagagtcacactggctcaccttcgggtgggcctttctgcgtttata" + }, { "collection": "output_devices", "name": "pC-HSL_out", @@ -220,6 +500,11 @@ "name": "sPhl_cassette", "dnasequence": "actcttcctttttcaatattattgaagcatttatcagggttattgtctcatgagcggatacatatttgaatgtatttagaaaaataaacaaataggggttccgcgTACATCAGAGATTTTGAGACACAaGTACNNNNNNNNNNNNNNNNNNNNCGTAagctgtcaccggatgtgctttccggtctgatgagtccgtgaggacgaaacagcctctacaaataattttgtttaaGTGAAAGAACGGAATCTGGAGGATGTACACATGAATAAGGTAGGAATTGTGAGCTATGGCGCGGGTATCCCGGTCTGCCGGCTCAAGGTGGACGACGTGATCCAGGTGTGGAAAAACACCGATCTGAGTTTGGTAAAGGGCCAATTGGGCGTTATTGAAAGGGCCGTCCTGCAACCCGACGAAGATGTCATAACCTTGGGTGTCCTCGCCGCCCAACGCGCGCTGGACAAGGCACCACCTTGTTCCCTCGAAGCGCTTTATCTCGGCACCTGCACCAATCCTTATGACTCCCGGGCCTCGGCCGCAATCATCCTGGAAATGCTCGGCTGCGGCTATGACGCCTTTTGCGCAGACGTGCAGTTTGCCGGCAAATCAGGCACCAGCGCCCTCCAGATCGCATACGCCTTGGTAGCGTCGGGCATGGTGGGCAACGCTTTGGCGGTGGGTGCCGATACGATCAACCGCAACACCGCCCCCGGTGACTTGACGGAGTCCTATGCCGGAGCCGGGGCCGCGGCCTTGCTGTTGGGGACAGAAAATGTGATCGCGCATTTTGACGCAAGTTTTTCTTGCGCGGCGGATGTCGCTGACAACATCAGGCCTCAAGGGGACCGCTATATCCGCTCGGGAATGGGATTGGGCTCGGACAAGAACAGTATCGGCCTCGAGGACCAGACTCGCCGCGCCGCCTCGGGATTGATGGCCAAGATCCATGCGCAAGCCGATGATTTCGATTACGTCGTTTTCCAACAAAACCTGGTGTCGACCCCCTACTCTCTCGGCAAGCACCTGGGATTCACGAAGGCCCAAATCGAACCTGGCATCTACGCCCAGAGTGTCGGCGATGCTGGAGCCGCGAGTCCTTTACTGGGCTTGGTCAACGTACTCGATCAAGCGCGTCCTGGCGAAAGAATCCTGGTGGTTTCCTATGGCTTCGGTGCGGGCAGCGATGCCATCGCCTTGACCGTCACCGATGCCATCGAAGCCTATCAAAAGACCAACGTTCCGCTGCGCACGCAGCTGGAGGATAAGTACTACGTGGATTACGGGACGTCGATCAAGTACGAGTTCAAATACTTGCGGCCCGACTATGCCCTGACGGCCTATCTCTGATTCCAATCATCCAGCAAGGAGCACCTTTTTATGTGCGCACGACGCGTTGCTATCGTTTCGGCTGCCTATACCCCTAAACCTGGCAGTTCCAGAGTTCGCCAGACTTTCAAGGAGATGATCGTCGAGTCCGCCTACCAGGCACTCAACGCCATCAAGATGCACCCTCGCGAACTTCAGGCAGTTGCCTATGGGTACCATGGTGAAGGTATTTCTGAATACGGAGGTCTGGGCCCAACCATCTCCGATGCCTTGGGGATCAGCCCTGCCCCCACGTTCATGAGTACGGCCAACTGCACCAGCAGTTCGGTGTCTTTCCAGATGGCTCACCAAATGGTCGCCTCAGGTGAATACGACATCGTTCTGTGTGGCGGCTTTGAAAAAATGACCGATCACTTCAACTATGCCGAGTACATTGGCTCGAGCACTGAATGTGAATACGATTATTTTCTAGGCATCTCTCACACAGACGCCTTCGCCCTGGCGACCGCCGAATATTTTGAAAAGTACGGCTATGCAGGACGCGAAGCGGATGTATTGGCCACTTTCGGGCGGCAGATGCGCATTTATGCCCATAACACTCCCACGGCTACCCGTTATGGCGTGCCGATCCCGTCTCTCGAAACACTCAAAAGCAGCGAAGCATGCGGCTCCATGCTGGCCTGGGGTGAAGCCAGCGGTTGCGCCATCCTGGTTGCCGAACACCTTGTGCACCGCTACACGACCCAACCGGTATTTGTCCGTGGCTGTGCCTACACCGGTGTGTCGCATTATTTCGGCACGCGCTATCACAACCCGACGTTGCAATTTCCGGGGCTGCCAAAAGATGTCGGCATGGCGGTTTCCGCCAACTCGCTGGCCTGCGCCGAAATCGCCTACAAAAAAGCCGGTATCACCGCAAAGGATATCGATGTGGCGCAAGTCTACGACTTGCTGGGCGCCGGGTTGATTCAAATGGAGTCCATGGGCGTATGTGGTCCAGGCCAGGCAGGCGACTTTGTATTGGAAGGCGGCATAGCCCTTGATGGGCAACTTCCCCTGAACACTGACGGCGGCAACATCGGACGCGGCCACGCTTCCGGTTGCGATGGGATTTTGCACATTACTGAATTGTTCCGGCAGCTTCGCGGCGAGTCCAACAATCAAGTCAAAGGCGCGCGTATTGGCGTCTCGCAAAACCTGGGCGGTTACGCCGCGCACAACAGCGTCATTGTGCTTTCCAACGATTAAGGAGCCGACCATGTCCCTTTACCCTGAACAAATTCACCGCATGACCACCGCCAGCATGTTGCGCGAATGGCGCGAACACGGTGGCAAATACCGCCTCGAAGGCAGCCGATGCCAGGACTGCGAAGAAATCTTCTTCCCTCGGCGCACAGTTTGCGGTGCGTGCAACTCGTTGAATGTAGAACCGTATCGCTGCGCGCGCACCGGCACTATCCAGGTCAGCGCACACGCCGAGAACCCCATTCTTGCGGCCATGGGCTACGGCGAAACCGTGCCCCGCTTCATGGCGATGGTGCGCCTGGATGATGGTCTGGTGATTGCCTCGGAAATAGTTGACGTCATCGATCCGCGACAAGTCGTCAGCGGTGCGCCCGTGCGCATGGTCATTCGAAAACATGTCCGGGAAAGTAACTTGGCCTGGCAATATGCCTATAAGTTTGTATTGGTGAAATAACAAACTTAGACGCCGCCATACCCCGCGTTATCGATAACAACAGTCAAGTTTTTGGCCTCCAAGCCCGTTGCTTTGATTCTGTCTTTCAGAGTCCAGCTTTGCTGTTATTGCCTTAAACATGTTTCTAACTTTATTGGCTTTTAGCCGAGGACTTGTCATGTCTACTCTTTGCAAACCCAGTCTGCTGTTCCCGCAATATAAGATCACCCAGCAACAAATGATCGAGCATCTAGAGCAGTTGCATGATGATCACCCGAGAATGGCTCTTGCCAAACGCATGATTCAAAACACACAGGTGAACGAACGATACTTGGTCCTGCCCATTGATGAACTGGCGGTGCATACCGGCTTCACCCATCGCAGCATTGTTTATGAGCGCGAGGCCCGCCGCATGTCATCCATCGCGGCGCGCCAAGCCATCGAGAATGCCGGGCTGACCACCGACGACATTCGAATGGTCGCTGTGACATCGTGCACGGGTTTCATGATGCCTTCGCTGACGGCCCACTTGATCAACGACCTGGGCCTGCGAACATCGACCGTACAACTGCCTATCGCTCAATTGGGATGCGTGGCAGGCGCTGCGGCGATCAATCGAGCCAATGACTTCGCCAGCCTGGCGCCGGACAACCATGTGCTCATCGTCTCCCTGGAGTTCTCGTCGCTCTGCTATCAACCCCAGGACACCAAGTTGCACGCATTCATCTCAGCGGCATTATTCGGCGATGCGGTATCAGCCTGCGTAATGCGAGCCGACGATCAGGCGTCTGGTTTCAAGATCGCCAAGACGGGGTCTTACTTCCTGCCTGATAGCGAGCACTATATTAAATACGACGTCAAAGACAGTGGCTTTCACTTCACCCTGGACAAGGCGGTCATGAACTCCATTAAAGATGTCGCACCCATGATGGAGGAATTGAACTACGAAACCTTCAATCAACATTGCGCTCAAAATGACTTTTTCATCTTCCATACAGGCGGACGGAAAATTCTTGATGAACTGGTCCTGCAATTGGACTTGGAACCCGGCAGGGTCGCGCAATCCCGCGACAGTTTGAGCGAAGCCGGGAACATCGCCAGCGTGGTGGTTTTCGATGTGCTCAAGCGCCAGTTCGACAGCGGACCTGTCAATGGCGCGACGGGCATGTTGGCGGCCTTCGGCCCGGGTTTCACCGCTGAAATGGCCGTGGGCAAGTGGGTCGCCTGAcaaataaaacgaaaggctcagtcgaaagactgggcctttcgttttatctgttgtttgtcggtgaacgctctctactagagtcacactggctcaccttcgggtgggcctttctgcgtttataAGGTGCTTCCTCGCTCACTGactcgctgcacgaggcagacctcagcgctagcggagtgtatactggcttactatgttggcactgatgagggtgtcagtgaagtgcttcatgtggcaggagaaaaaaggctgcaccggtgcgtcagcagaatatgtgatacaggatatattccgcttcctcgctcactgactcgctacgctcggtcgttcgactgcggcgagcggaaatggcttacgaacggggcggagatttcctggaagatgccaggaagatacttaacagggaagtgagagggccgcggcaaagccgtttttccataggctccgcccccctgacaagcatcacgaaatctgacgctcaaatcagtggtggcgaaacccgacaggactataaagataccaggcgtttccccCtggcggctccctcgtgcgctctcctgttcctgcctttcggtttaccggtgtcattccgctgttatggccgcgtttgtctcattccacgcctgacactcagttccgggtaggcagttcgctccaagctggactgtatgcacgaaccccccgttcagtccgaccgctgcgccttatccggtaactatcgtcttgagtccaacccggaaagacatgcaaaagcaccactggcagcagccactggtaattgatttagaggagttagtcttgaagtcatgcgccggttaaggctaaactgaaaggacaagttttggtgactgcgctcctccaagccagttacctcggttcaaagagttggtagctcagagaaccttcgaaaaaccgccctgcaaggcggttttttcgttttcagagcaagagattacgcgcagaccaaaacgatctcaagaagatcatcttattaaATTCTCACCAATAAAAAACGCCCGGCGGCAACCGAGCGTTCTGAACAAATCCAGATGGAGTTCTGAGGTCATTACTGGATCTATCAACAGGAGTCCAAGCGAGCTTTAGAAAAACTCATCGAGgttaggtggcggtacttgggtcgatatcaaagtgcatcacttcttcccgtatgcccaactttgtatagagagccactgcgggatcgtcaccgtaatctgcttgcacgtagatcacataagcaccaagcgcgttggcctcatgcttgaggagattgatgagcgcggtggcaatgccctgcctccggtgctcgccggagactgcgagatcatagatatagatctcactacgcggctgctcaaacttgggcagaacgtaagccgcgagagcgccaacaaccgcttcttggtcgaaggcagcaagcgcgatgaatgtcttactacggagcaagttcccgaggtaatcggagtccggctgatgttgggagtaggtggctacgtctccgaactcacgaccgaaaagatcaagagcagtccgcatggatttgacttggtcagggccgagcctacatgtgcgaatgatgcccatacttgagccacctaactttgttttagggcgactgccctgctgcgtaacatcgttgctgctgcgtaacatcgttgctgctccataacatcaaacatcgacccacggcgtaacgcgcttgctgcttggatgcccgaggcatagactgtacaaaaaaacagtcataacaagccatgaaaaccgccactgcgccgttaccaccgctgcgttcggtcaaggttctggaccagttgcgtgagcgcatacgctacttgcattacagtttacgaaccgaacaggcttatgtcaattcggttgaatactcat" }, + + + + + { "collection": "functions", "name": "Hill_response", @@ -259,5 +544,32 @@ "map": "#//structure/inputs/in1/model/functions/response_function" } ] + }, + + + + + + { + "collection": "circuit_rules", + "rules": { + "function": "AND", + "rules": [ + "OC6_out_a AFTER attB5", + "OHC12_out_a AFTER attB5", + "DAPG_out_a AFTER attB5", + "pC-HSL_out_a AFTER attB5", + "ALL_FORWARD" + ] + } + }, + { + "collection": "device_rules", + "rules": { + "function": "AND", + "rules": [ + "ALL_FORWARD" + ] + } } -] \ No newline at end of file +]