import org.cidarlab.eugene.Eugene; import org.cidarlab.eugene.dom.Device; import org.cidarlab.eugene.dom.NamedElement; import org.cidarlab.eugene.dom.imp.container.EugeneArray; import org.cidarlab.eugene.dom.imp.container.EugeneCollection; import org.cidarlab.eugene.exception.EugeneException; import org.cidarlab.eugene.util.DeviceUtils; import org.junit.Test; import java.io.File; public class EugeneMajorityCircuit { private String home = System.getProperty("user.dir"); private String name_Eug_file1 = home +"/resources/eugene/majority_1_default.eug"; private String name_Eug_file2 = home +"/resources/eugene/majority_2_revorder.eug"; private String name_Eug_file3 = home +"/resources/eugene/majority_3_NOT_NOR_groups.eug"; private String name_Eug_file4 = home +"/resources/eugene/majority_4_subcircuits.eug"; private String name_Eug_file5 = home +"/resources/eugene/majority_5_scrambled.eug"; private String name_Eug_file6 = home +"/resources/eugene/majority_6_alternating.eug"; //@Test public void testEugeneMajorityCircuits() { callEugene(name_Eug_file1); callEugene(name_Eug_file2); callEugene(name_Eug_file3); callEugene(name_Eug_file4); callEugene(name_Eug_file5); callEugene(name_Eug_file6); } public static void callEugene(String name_Eug_file) { try { Eugene e = new Eugene(); EugeneCollection ec = e.executeFile(new File(name_Eug_file)); EugeneArray variants = (EugeneArray) ec.get("allResults"); for (int i = 0; i < 1; ++i) { NamedElement circuit = variants.getElement(i); if (circuit instanceof org.cidarlab.eugene.dom.Device) { /* * The full DNA sequence of the circuit is generated by * Eugene: */ int g_index = 0; for (NamedElement gate : ((Device) circuit) .getComponentList()) { if (gate instanceof org.cidarlab.eugene.dom.Part) { NamedElement part = gate; } else if (gate instanceof org.cidarlab.eugene.dom.Device) { String gate_name = gate.getName(); String g_direction = "+"; String o = ((Device) circuit).getOrientations( g_index).toString(); if (o.equals("[REVERSE]")) { g_direction = "-"; Device reverse_gate = DeviceUtils .flipAndInvert((Device) gate); gate = reverse_gate; } String egate = g_direction + gate_name; System.out.println(egate); int p_index = 0; for (NamedElement part : ((Device) gate) .getComponentList()) { String part_name = part.getName(); String p_direction = "+"; String op = ((Device) gate).getOrientations( p_index).toString(); if (op.equals("[REVERSE]")) { p_direction = "-"; } p_index++; String epart = p_direction + part_name; //System.out.println(" " + epart); } } g_index++; } } } System.out.println("Number of Eugene solutions " + variants.getElements().size()); } catch (EugeneException exception) { exception.printStackTrace(); } } }