Esempio n. 1
0
    def acquireProjection(self, idx, ts=20):

        print("Acquire projection along axis: ", idx, "\n")
        socket.write(struct.pack('<I', 7 << 28 | idx))

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

        while True:  # Read data
            socket.waitForReadyRead()
            datasize = socket.bytesAvailable()
            # print(datasize)
            time.sleep(0.0001)
            if datasize == 8 * self.size:
                print("Readout finished : ", datasize)
                self.buffer[0:8 * self.size] = socket.read(8 * self.size)
                t1 = time.time()  # calculate time for acquisition
                break
            else:
                continue

        print("Start processing readout.")
        self.process_readout(ts)

        self.readout_finished.emit()
Esempio n. 2
0
    def set_gradients(self, gx=None, gy=None, gz=None, gz2=None):

        if not gx == None:
            if np.sign(gx) < 0: sign = 1
            else: sign = 0
            socket.write(
                struct.pack('<I',
                            5 << 28 | self.GR_x << 24 | sign << 20 | abs(gx)))
        if not gy == None:
            if np.sign(gy) < 0: sign = 1
            else: sign = 0
            socket.write(
                struct.pack('<I',
                            5 << 28 | self.GR_y << 24 | sign << 20 | abs(gy)))
        if not gz == None:
            if np.sign(gz) < 0: sign = 1
            else: sign = 0
            socket.write(
                struct.pack('<I',
                            5 << 28 | self.GR_z << 24 | sign << 20 | abs(gz)))
        if not gz2 == None:
            if np.sign(gz2) < 0: sign = 1
            else: sign = 0
            #socket.write(struct.pack('<I', 5 << 28 | self.GR_z2 << 24 | sign << 20 | abs(gz2)))

        while (True):  # Wait until bytes written
            if not socket.waitForBytesWritten():
                break
Esempio n. 3
0
    def acquire(self, ts=20):
        t0 = time.time()  # calculate time for acquisition
        socket.write(struct.pack('<I', 1 << 28))

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

        while True:  # Read data
            socket.waitForReadyRead()
            datasize = socket.bytesAvailable()
            # print(datasize)
            time.sleep(0.0001)
            if datasize == 8 * self.size:
                print("Readout finished : ", datasize)
                self.buffer[0:8 * self.size] = socket.read(8 * self.size)
                t1 = time.time()  # calculate time for acquisition
                break
            else:
                continue

        print("Start processing readout.")
        self.process_readout(ts)
        print("Start analyzing data.")
        self.analytics()
        print('Finished acquisition in {:.3f} ms'.format((t1 - t0) * 1000.0))
        # Emit signal, when data was read
        self.readout_finished.emit()
Esempio n. 4
0
    def acquireImage(self, npe=16, TR=4000, ts=4):

        # Implement new concept:
        # com.start_image(npe)

        socket.write(struct.pack('<I', 6 << 28 | npe << 16 | TR))

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

        t0 = time.time()

        for n in range(npe):
            while True:  # Read data
                socket.waitForReadyRead()
                datasize = socket.bytesAvailable()
                time.sleep(0.0001)
                if datasize == 8 * self.size:
                    print("Readout finished : ", datasize)
                    self.buffer[0:8 * self.size] = socket.read(8 * self.size)
                    break
                else:
                    continue

            self.process_readout(ts)
            self.readout_finished.emit()

        t1 = time.time()
        print('Finished image acquisition in {:.4f} min'.format(
            (t1 - t0) / 60))
Esempio n. 5
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.")
Esempio n. 6
0
    def set_SIR(self, TI=15):

        params.ti = TI
        #self.change_SIR(params.ti, self.seq_sir)
        self.assembler = Assembler()
        byte_array = self.assembler.assemble(self.seq_sir)
        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)
        print("\nSIR sequence uploaded with TI = ", TI,
              " ms.")  #" and REC = ", REC, " ms.")
Esempio n. 7
0
    def set_2dSE(
        self
    ):  # Function to init and set FID -- only acquire call is necessary afterwards

        self.assembler = Assembler()
        byte_array = self.assembler.assemble(self.seq_2dSE)
        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)
        print("\n2D SE sequence uploaded.")
Esempio n. 8
0
    def set_uploaded_seq(self, seq):
        print("Set uploaded Sequence.")
        self.assembler = Assembler()
        byte_array = self.assembler.assemble(seq)
        socket.write(struct.pack('<I', 4 << 28))
        socket.write(byte_array)

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

        # Multiple function calls
        socket.setReadBufferSize(8 * self.size)
        print(byte_array)
        print("Sequence uploaded to server.")
        self.uploaded.emit(True)
Esempio n. 9
0
    def set_SE(self,
               TE=10):  # Function to modify SE -- call whenever acquiring a SE

        # Change TE in sequence and push to server
        params.te = TE
        self.change_TE(params.te)  #, REC)

        self.assembler = Assembler()
        byte_array = self.assembler.assemble(self.seq_se)
        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 = False
        self.se_flag = True
        self.fid_flag = False
        print("\nSE sequence uploaded with TE = ", TE, " ms.")
Esempio n. 10
0
    def acquireImage(self, npe=16, ts=20):

        socket.write(struct.pack('<I', 6 << 28 | npe))
        while (True):  # Wait until bytes written
            if not socket.waitForBytesWritten():
                break

        for n in range(npe):
            while True:  # Read data
                socket.waitForReadyRead()
                datasize = socket.bytesAvailable()
                time.sleep(0.0001)
                if datasize == 8 * self.size:
                    print("Readout finished : ", datasize)
                    self.buffer[0:8 * self.size] = socket.read(8 * self.size)
                    break
                else:
                    continue

            self.process_readout(ts)
            self.readout_finished.emit()
Esempio n. 11
0
    def set_FID(
        self
    ):  # Function to init and set FID -- only acquire call is necessary afterwards

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

        # 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 = False
        self.se_flag = False
        self.fid_flag = True
        print("\nFID sequence uploaded.")
Esempio n. 12
0
ax.grid(True)
plt.show()

if np.sign(grad_offset) < 0: sign = 1
else: sign = 0
# Check send values
print("Sending offset {} with sign {} to gradient {}.".format(
    abs(grad_offset), sign, x_grad))
# Send test command to set X gradient to grad_offset
#socket.write(struct.pack('<I', 5 << 28 | x_grad << 24 | sign << 20 | abs(grad_offset)))
#while(True): # Wait until bytes written
#    if not socket.waitForBytesWritten(): break
# Send frequency to server
socket.write(struct.pack('<I', 2 << 28 | int(1.0e6 * freq)))
while (True):  # Wait until bytes written
    if not socket.waitForBytesWritten(): break
# Semd attemiaton to server
socket.write(struct.pack('<I', 3 << 28 | int(abs(at) / 0.25)))
while (True):  # Wait until bytes written
    if not socket.waitForBytesWritten(): break

# Send Sequence
socket.write(struct.pack('<I', 4 << 28))
byte_array = assembler.assemble(seq)
socket.write(byte_array)
while (True):  # Wait until bytes written
    if not socket.waitForBytesWritten(): break

# Test 2D SE acquisition
#socket.write(struct.pack('<I', 6 << 28 | npe))
Esempio n. 13
0
x_grad = 3
y_grad = 1
z_grad = 2
z2_grad = 3

if np.sign(grad_offset) < 0: sign = 1
else: sign = 0

# Check send values
print("Sending offset {} with sign {} to gradient {}.".format(
    abs(grad_offset), sign, x_grad))

# Send test command to set X gradient to grad_offset
socket.write(
    struct.pack('<I', 5 << 28 | x_grad << 24 | sign << 20 | abs(grad_offset)))
while (True):  # Wait until bytes written
    if not socket.waitForBytesWritten():
        break

time.sleep(1)

# Test 2D SE acquisition
npe = 32
socket.write(struct.pack('<I', 6 << 28 | npe))
while (True):  # Wait until bytes written
    if not socket.waitForBytesWritten():
        break

time.sleep(1)