Exemple #1
0
def sensitivity_sample_qoi(exp_q, dofhandler):
    """
    Sample QoI by means of Taylor expansion
    
        J(q+dq) ~= J(q) + dJdq(q)dq
    """
    # Basis
    phi = Basis(dofhandler, 'v')
    phi_x = Basis(dofhandler, 'vx')

    # Define problem
    exp_q_fn = Nodal(data=exp_q, basis=phi)

    primal = [Form(exp_q_fn, test=phi_x, trial=phi_x), Form(1, test=phi)]
    adjoint = [Form(exp_q_fn, test=phi_x, trial=phi_x), Form(0, test=phi)]
    qoi = [Form(exp_q_fn, test=phi_x)]
    problems = [primal, adjoint, qoi]

    # Define assembler
    assembler = Assembler(problems)

    #
    # Dirichlet conditions for primal problem
    #
    assembler.add_dirichlet('left', 0, i_problem=0)
    assembler.add_dirichlet('right', 1, i_problem=0)

    # Dirichlet conditions for adjoint problem
    assembler.add_dirichlet('left', 0, i_problem=1)
    assembler.add_dirichlet('right', -1, i_problem=1)

    # Assemble system
    assembler.assemble()

    # Compute solution and qoi at q (primal)
    u = assembler.solve(i_problem=0)

    # Compute solution of the adjoint problem
    v = assembler.solve(i_problem=1)

    # Evaluate J
    J = u.dot(assembler.get_vector(2))

    #
    # Assemble gradient
    #
    ux_fn = Nodal(data=u, basis=phi_x)
    vx_fn = Nodal(data=v, basis=phi_x)

    k_int = Kernel(f=[exp_q_fn, ux_fn, vx_fn],
                   F=lambda exp_q, ux, vx: exp_q * ux * vx)

    problem = [Form(k_int, test=phi)]

    assembler = Assembler(problem)
    assembler.assemble()
    dJ = -assembler.get_vector()
    return dJ
Exemple #2
0
def test_pop_static():
    translator = VM2ASM(annotate=True, no_init=True)
    asm = translator.translate('pop static 1').dumps()
    Assembler().assemble(asm)
    print('pop static 1\n', asm)

    translator = VM2ASM(annotate=True, no_init=True)
    asm = translator.translate('pop static 0').dumps()
    Assembler().assemble(asm)
    print('pop static 0\n', asm)
Exemple #3
0
def test_compat():
    ASM.set_compat(True)
    asm = EQ_Operation(compat=True).resolve()
    Assembler(compat=True).assemble(str(asm))

    try:
        ASM.set_compat(False)
        asm = EQ_Operation().resolve()
        Assembler(compat=True).assemble(str(asm))
    except:
        pass
    else:
        assert False, 'Should have failed'
Exemple #4
0
def test_push_static():
    translator = VM2ASM(None, annotate=True, no_init=True)
    translator.translate('push static 1')
    asm = translator.dumps()
    Assembler().assemble(asm)
    print(asm)

    translator = VM2ASM(None, annotate=True, no_init=True)
    translator.translate('''
    function foo 0
    push static 1
    return
  ''')
    asm = translator.dumps()
    Assembler().assemble(asm)
    print(asm)
Exemple #5
0
def test_add():
    asm = ADD_Operation().resolve()
    print(asm)
    expected = ASM('''
      // MACRO=LOAD_SP
      @SP
      A=M
      // MACRO_END
      // pop y into D
      A=A-1
      D=M
      // pop x into M
      A=A-1
      // do the operation
      M=M+D
      // MACRO=DEC_SP
      @SP
      M=M-1
      // MACRO_END
        ''')
    assert str(asm) == str(expected)

    # make sure it output valid assembly
    assembler = Assembler()
    assembler.assemble(str(asm))
Exemple #6
0
    def set_IR(
        self,
        TI=15
    ):  #, REC=1000): # Function to modify SE -- call whenever acquiring a SE

        params.ti = TI
        self.change_IR(params.ti, self.seq_ir)  #, REC)

        self.assembler = Assembler()
        byte_array = self.assembler.assemble(self.seq_ir)

        # Implement new concept:
        # com.set_sequence(byte_array)

        socket.write(struct.pack('<I', 4 << 28))
        socket.write(byte_array)

        while (True):  # Wait until bytes written
            if not socket.waitForBytesWritten(): break

        socket.setReadBufferSize(8 * self.size)
        self.ir_flag = True
        self.se_flag = False
        self.fid_flag = False
        print("\nIR sequence uploaded with TI = ", TI,
              " ms.")  #" and REC = ", REC, " ms.")
Exemple #7
0
 def test_subroutine(self):
     """
     Verifies subroutine calls are assembled correctly
     """
     instance = Assembler()
     return_value = '../input/test11.asm' if sys.platform == 'win32' else 'input/test11.asm'
     with mock.patch('builtins.input', return_value=return_value):
         self.binary_content = [
             ('1010100000000010', 0),  # JMPADDR start
             ('0000100100000101', 2),  # LOADIM R1, #5
             ('0000101100000010', 4),  # LOADIM R3, #2
             ('0000110100001010', 6),  # LOADIM R5, #0A
             ('1111000000001100', 8),  # call multiply_by_four
             ('1010010100000000', 10),  # JMPRIND R5
             ('1000101000101100', 12),  # SHIFTL R2, R1, R3
             ('1111100000000000', 14),  # RETURN
         ]
         self.hex_content = [
             ('A802', 0),  # JMPADDR start
             ('0905', 2),  # LOADIM R1, #5
             ('0B02', 4),  # LOADIM R3, #2
             ('0D0A', 6),  # LOADIM R5, #0A
             ('F00C', 8),  # call multiply_by_four
             ('A500', 10),  # JMPRIND R5
             ('8A2C', 12),  # SHIFTL R2, R1, R3
             ('F800', 14),  # RETURN
         ]
         verify_ram_content_helper(self, instance)
         self.binary_content.clear()
         self.hex_content.clear()
    def test_assembler_result_in_path(self):
        assembler = Assembler(asm_path=self.ADD_ASM_FILE)

        self.assertEqual(
            assembler.hack_path,
            self.EXPECTED_ADD_HACK_FILE,
        )
    def assembleClicked(self):
        if not self.assemblyFilePath:
            self.assemblyFilePath = os.path.dirname(
                os.path.abspath(__file__)) + "\\assembly.asm"
            self.binaryFilePath = self.assemblyFilePath[:self.assemblyFilePath.
                                                        rfind('/') +
                                                        1] + "binaryInstructions.txt"

        with open(self.assemblyFilePath, 'w') as asmFile:
            asmFile.write(self.assemblyEditor.toPlainText())

        errorFlag = False
        try:
            Assembler(self.assemblyFilePath, self.binaryFilePath)
        except:
            errorFlag = True
            print("Syntax error")

        with open(self.binaryFilePath, 'r') as binaryFile:
            self.machineCode.setPlainText(binaryFile.read())

        if errorFlag is True:
            count = 0
            with open(self.binaryFilePath, 'r') as binaryFile:
                for line in binaryFile:
                    count += 1
            error_dialog = QtWidgets.QErrorMessage()
            error_dialog.showMessage("Syntax error at {}".format(
                int(count / 4 + 1)))
            error_dialog.exec_()
Exemple #10
0
def experiment01():
    """
    Compute the quantity of interest, it's expectation and variance
    """
    #
    # FE Discretization
    #

    # Computational mesh
    mesh = Mesh1D(resolution=(64, ))

    # Element
    element = QuadFE(mesh.dim(), 'DQ0')
    dofhandler = DofHandler(mesh, element)
    dofhandler.distribute_dofs()

    # Linear Functional
    mesh.mark_region('integrate',
                     lambda x: x > 0.75,
                     entity_type='cell',
                     strict_containment=False)
    phi = Basis(dofhandler)
    assembler = Assembler(Form(1, test=phi, flag='integrate'))
    assembler.assemble()
    L = assembler.get_vector()
Exemple #11
0
    def __init__(self,
                 sequencefile: seq.SequenceFile = None,
                 f_Ex: float = None,
                 T_val: int = None,
                 numSamples: int = 2000,
                 shim: list = None):
        """
        Initialization of spectrum operation class
        @param sequencefile:    given sequence
        @param f_Ex:            excitation frequency
        @param T_val:           time value (TE, TI...)
        @param numSamples:      number of samples to be acquired
        @param shim:            Shim values for operation
        @return:                None
        """
        # make sure, shim is a len=4 array
        if shim is None:
            shim = [0, 0, 0, 0]
        while len(shim) < 4:
            shim += [0]

        # set class variables
        self.f_Ex: float = f_Ex
        self.T_val: int = T_val
        self.numSamples: int = numSamples
        self.sequencefile = sequencefile
        self.sequencebytestream = Assembler().assemble(self.sequencefile.path)
        self.shim_x: int = shim[0]
        self.shim_y: int = shim[1]
        self.shim_z: int = shim[2]
        self.shim_z2: int = shim[3]
Exemple #12
0
    def __init__(self,
                 sequencefile: seq.SequenceFile = None,
                 relaxationtype: relaxtyp = None,
                 f_Ex: float = None,
                 Tval_min: int = None,
                 Tval_max: int = None,
                 numTimeValues=20,
                 numSamplesPerTimeValue: int = 2000,
                 numAveragesPerTimeValue: int = 5):
        """
        Initialization of spectrum operation class
        @param sequencefile:    given sequence
        @param relaxationtype:  type of relaxation to be measured (T1, T2)
        @param f_Ex:            excitation frequency
        @param Tval_min:        lowest time value (TI, TE)
        @param Tval_max:        max time value (logarithmic scaling between Tval_min/max)
        @param numTimeValues:   number of time values (TI, TE) to be measured
        @param numSamplesPTV:   sample size for each T_val
        @param numAveragesPTV:  number of measurements for each T_val (get averaged)
        @return:                None
        """

        # set class variables
        self.sequencefile = sequencefile
        self.sequencebytestream = Assembler().assemble(self.sequencefile.path)
        self.relaxationtype = relaxationtype
        self.f_Ex: float = f_Ex
        self.numTimeValues: int = numTimeValues
        self.numSamplesPerTimeValue: int = numSamplesPerTimeValue
        self.numAveragesPerTimeValue: int = numAveragesPerTimeValue
        self.tval_min: int = Tval_min
        self.tval_max: int = Tval_max
Exemple #13
0
    def assembler(self):
        i = 0
        # Obtains last name on path string using ntpath and then
        # strips file extension using os.path.splitext
        # Should work across different OS
        filename = os.path.splitext(ntpath.basename(EVENTS['FILE_PATH']))[0]
        try:
            asm = Assembler(filename=EVENTS['FILE_PATH'])
            asm.read_source()
            asm.store_instructions_in_ram()
            verify_ram_content()
            hexify_ram_content()
            output_file_location = 'output/' + filename + '.obj'

            f = open(output_file_location, 'w')
            while i < 100:
                f.write(f'{RAM[i]} {RAM[i + 1]}' + '\n')
                i += 2
            f.close()

            # Runs simulator using generated .obj file
            self.run_micro_sim(output_file_location)

        except (AssertionError, FileNotFoundError, ValueError, MemoryError,
                KeyError, SyntaxError) as e:
            traceback.print_exc()
            toast(f'{e}')
Exemple #14
0
    def test_assemble_iiform(self):

        mesh = Mesh1D(resolution=(1, ))

        Q1 = QuadFE(1, 'DQ1')
        dofhandler = DofHandler(mesh, Q1)
        dofhandler.distribute_dofs()

        phi = Basis(dofhandler, 'u')

        k = Explicit(lambda x, y: x * y, n_variables=2, dim=1)
        kernel = Kernel(k)

        form = IIForm(kernel, test=phi, trial=phi)

        assembler = Assembler(form, mesh)
        assembler.assemble()
        Ku = Nodal(lambda x: 1 / 3 * x, basis=phi)

        #af = assembler.af[0]['bilinear']
        M = assembler.get_matrix().toarray()

        u = Nodal(lambda x: x, basis=phi)
        u_vec = u.data()
        self.assertTrue(np.allclose(M.dot(u_vec), Ku.data()))
Exemple #15
0
    def test_assemble_ipform(self):
        # =====================================================================
        # Test 7: Assemble Kernel
        # =====================================================================
        mesh = Mesh1D(resolution=(10, ))

        Q1 = QuadFE(1, 'DQ1')
        dofhandler = DofHandler(mesh, Q1)
        dofhandler.distribute_dofs()

        phi = Basis(dofhandler, 'u')

        k = Explicit(lambda x, y: x * y, n_variables=2, dim=1)
        kernel = Kernel(k)
        form = IPForm(kernel, test=phi, trial=phi)

        assembler = Assembler(form, mesh)
        assembler.assemble()

        #af = assembler.af[0]['bilinear']
        M = assembler.get_matrix().toarray()

        u = Nodal(lambda x: x, basis=phi)
        v = Nodal(lambda x: 1 - x, basis=phi)

        u_vec = u.data()
        v_vec = v.data()

        I = v_vec.T.dot(M.dot(u_vec))
        self.assertAlmostEqual(I[0, 0], 1 / 18)
Exemple #16
0
def get_elite(generation, board):
    elits = []
    _elits = generation[:Const.ELITE_Q]
    for hunter in _elits:
        elite_hunter = Assembler(hunter.orig_memory, board)
        elits.append(elite_hunter)
    return elits
Exemple #17
0
    def ensamblar(self):

        if not self.fileOpener(): return

        ens = Assembler(self.filename)
        ens.leerArchivo()

        try:
            ens.first_pass()
            ens.Second_pass()
            ens.print_tabla()
        except Exception as ex:
            self.newWindow = tk.Toplevel(self.master)
            self.pop = PopUP(self.newWindow)
            self.pop.addMessage("Error", str(ex))
            return

        fileOut = open(self.directory + "out.obj", "w+")
        for line in ens.CO:
            fileOut.write(line + "\n")
        fileOut.close()

        self.newWindow = tk.Toplevel(self.master)
        self.pop = PopUP(self.newWindow)
        self.pop.addMessage("Información",
                            "Archivo .obj creado en: \n" + self.directory)
Exemple #18
0
    def start(self):
        print("Starting MRI_SE_Widget")

        # send 2 as signal to start MRI_SE_Widget
        gsocket.write(struct.pack('<I', 2))

        # enable/disable GUI elements
        self.startButton.setEnabled(False)
        self.stopButton.setEnabled(True)
        self.gradOffset_x.setEnabled(True)
        self.gradOffset_y.setEnabled(True)
        self.gradOffset_z.setEnabled(True)
        self.gradOffset_z2.setEnabled(True)
        self.acquireButton.setEnabled(True)
        self.saveShimButton.setEnabled(True)
        self.loadShimButton.setEnabled(True)
        self.zeroShimButton.setEnabled(True)
        self.zoomCheckBox.setEnabled(True)
        self.peakWindowCheckBox.setEnabled(True)

        self.cycAcqBtn.setEnabled(False)
        self.cyclesValue.setEnabled(False)

        # setup global socket for receive data
        gsocket.readyRead.connect(self.read_data)

        # send the sequence to the backend
        ass = Assembler()
        seq_byte_array = ass.assemble(self.seq_filename)
        print(len(seq_byte_array))
        gsocket.write(struct.pack('<I', len(seq_byte_array)))
        gsocket.write(seq_byte_array)

        self.load_shim()
        self.idle = False
def deobfuscate(codestring):
    # Instructions are stored as a string, we need
    # to convert it to an array of the raw bytes
    insBytes = bytearray(codestring)

    oep = find_oep(insBytes)
    logger.info('Original code entrypoint at {}'.format(oep))

    logger.info('Starting control flow analysis...')
    disasm = Disassembler(insBytes, oep)
    disasm.find_leaders()
    disasm.construct_basic_blocks()
    disasm.build_bb_edges()
    logger.info('Control flow analysis completed.')
    logger.info('Starting simplication of basic blocks...')
    render_graph(disasm.bb_graph, 'before.svg')
    simplifier = Simplifier(disasm.bb_graph)
    simplifier.eliminate_forwarders()
    render_graph(simplifier.bb_graph, 'after_forwarder.svg')
    simplifier.merge_basic_blocks()
    logger.info('Simplification of basic blocks completed.')
    simplified_graph = simplifier.bb_graph
    render_graph(simplified_graph, 'after.svg')
    logger.info('Beginning verification of simplified basic block graph...')

    if not verify_graph(simplified_graph):
        logger.error('Verification failed.')
        raise SystemExit

    logger.info('Verification succeeded.')
    logger.info('Assembling basic blocks...')
    asm = Assembler(simplified_graph)
    codestring = asm.assemble()
    logger.info('Successfully assembled. ')
    return codestring
Exemple #20
0
 def test_assemble(self):
     from assembler import Assembler
     assbl = Assembler(sequences, identifiers)
     assbl._find_matching_pairs = MagicMock(return_value=(map_top_bottom,
                                                          map_bottom_top))
     assbl._determine_order = MagicMock(return_value=order)
     self.assertEqual(assbl.assemble(), assembled_seq)
Exemple #21
0
    def start(self):
        print("Starting MRI_FID_Widget")

        # send 1 as signal to start MRI_FID_Widget
        gsocket.write(struct.pack('<I', 1))

        # enable/disable GUI elements
        self.startButton.setEnabled(False)
        self.stopButton.setEnabled(True)
        self.applyFreqButton.setEnabled(True)
        self.gradOffset_x.setEnabled(True)
        self.gradOffset_y.setEnabled(True)
        self.gradOffset_z.setEnabled(True)
        self.gradOffset_z2.setEnabled(True)
        self.acquireButton.setEnabled(True)
        self.saveShimButton.setEnabled(True)
        self.loadShimButton.setEnabled(True)
        self.zeroShimButton.setEnabled(True)
        self.openFlipangletoolBtn.setEnabled(True)

        # setup global socket for receive data
        gsocket.setReadBufferSize(8 * self.size)
        gsocket.readyRead.connect(self.read_data)

        # send the sequence to the backend
        ass = Assembler()
        seq_byte_array = ass.assemble(self.seq_filename)
        print(len(seq_byte_array))
        gsocket.write(struct.pack('<I', len(seq_byte_array)))
        gsocket.write(seq_byte_array)

        self.load_shim()
        self.idle = False
Exemple #22
0
    def reset(self):
        ###
        #self.generate_routefile_two_intersections()
        self.generate_routefile()
        traci.load([
            "-c", "one_lane/one_lane4.sumocfg", "--collision.check-junctions",
            "1", "--start", '--no-step-log', 'true'
        ])

        ###
        #traci.load(["-c", "one_intersection_w_priority/one_intersection_w_priority.sumocfg", "--collision.check-junctions", "1", "--start"])

        run = Assembler(self.carID)

        terminate = False
        while terminate == False:

            num_vec = traci.vehicle.getIDList()
            for i in range(len(num_vec)):
                if num_vec[i] != 'ego':
                    traci.vehicle.setLaneChangeMode(num_vec[i], 512)
                    self.output = run.getTensor()
                    if self.output is not None:
                        terminate = True
            traci.simulationStep()

        return self.getObservation()
Exemple #23
0
 def test_determine_order(self):
     from assembler import Assembler
     assbl = Assembler(sequences, identifiers)
     c = map_top_bottom
     d = map_bottom_top
     o = assbl._determine_order(c, d)
     self.assertEqual(o, order)
Exemple #24
0
 def sub_test_ALU(self, name, opcode):
     code = f'''
         {name} A,B
         {name} D
         {name} (HL)
         {name} A, (HL)
         {name} A, A
         {name} A
         {name} L
         {name} A, 9
         {name} $90
         {name} lab
         {name} A, lab
         lab:
     '''
     p = Assembler(code).get_patch()
     self.assertEqual({
         0: opcode | 0x80,
         1: opcode | 0x82,
         2: opcode | 0x86,
         3: opcode | 0x86,
         4: opcode | 0x87,
         5: opcode | 0x87,
         6: opcode | 0x85,
         7: opcode | 0xC6, 8: 9,
         9: opcode | 0xC6, 10: 0x90,
         11: opcode | 0xC6, 12: 15,
         13: opcode | 0xC6, 14: 15,
         }, p)
Exemple #25
0
def test_goto():
    translator = VM2ASM(no_init=True)
    asm = translator.translate('''
      label abc
      goto abc
  ''').dumps()
    Assembler().assemble(asm)
Exemple #26
0
def main():
    p = open('demo.s', 'r')
    a = Assembler(p)
    print('')
    test_func1(a)
    print('')
    test_func2(a)
    print('')
Exemple #27
0
 def test_find_matching_pairs(self):
     from assembler import Assembler
     assbl = Assembler(sequences)
     a, b, c, d = assbl._find_matching_pairs()
     self.assertEqual(c, top_ranges_dict)
     self.assertEqual(d, bottom_ranges_dict)
     self.assertEqual(a, top_seq_dict)
     self.assertEqual(b, bottom_seq_dict)
 def make_top(self, args):
     if args.E:
         return None
     from assembler import Assembler
     assembler = Assembler()
     assembler.parse(self.text_file().read(), self.infile.name)
     assembler.finish()
     return assembler.top
Exemple #29
0
def test_call():
    translator = VM2ASM(no_init=True)
    asm = translator.translate('''
      function FOO 3
      call FOO 3
  ''').dumps()
    Assembler().assemble(asm)
    print(asm)
Exemple #30
0
def test_label_in_function():
    translator = VM2ASM(no_init=True)
    asm = translator.translate('''
      function HELLO 0
      label WORLD
  ''').dumps()
    assert '_in_memory_.HELLO.WORLD' in asm
    Assembler().assemble(asm)