Exemplo n.º 1
0
    def queue(self):
        filename = str(IVProcedure.filename)
        #        filename = unique_filename(directory, prefix='IV')

        procedure = self.make_procedure()
        results = Results(procedure, filename)
        experiment = self.new_experiment(results)

        self.manager.queue(experiment)
Exemplo n.º 2
0
    def queue(self):
        directory = "./"  # Change this to the desired directory
        filename = unique_filename(directory, prefix='IV')

        procedure = self.make_procedure()
        results = Results(procedure, filename)
        experiment = self.new_experiment(results)

        self.manager.queue(experiment)
Exemplo n.º 3
0
    def queue(self, *, procedure=None):
        filename = tempfile.mktemp()

        if procedure is None:
            procedure = self.make_procedure()

        results = Results(procedure, filename)
        experiment = self.new_experiment(results)

        self.manager.queue(experiment)
Exemplo n.º 4
0
 def queue(self):
     fname = unique_filename(
         self.inputs.save_dir.text(),
         dated_folder=True,
         prefix=self.inputs.calib_name.text() + '_temperature_record_',
         suffix=''
     )
     procedure = self.make_procedure()
     results = Results(procedure, fname)
     experiment = self.new_experiment(results)
     self.manager.queue(experiment)
Exemplo n.º 5
0
    def queue(self):
        filename = tempfile.mktemp()

        procedure = TestProcedure()
        procedure.seed = str(self.inputs.seed.text())
        procedure.iterations = self.inputs.iterations.value()
        procedure.delay = self.inputs.delay.value()

        results = Results(procedure, filename)

        experiment = self.new_experiment(results)

        self.manager.queue(experiment)
Exemplo n.º 6
0
    def queue(self):
        # create filename based on procedure name, position in queue and a unique identifier
        procedure_string = re.search("'(?P<name>[^']+)'",
                                     repr(self.procedure_class)).group("name")
        main_str, basename = procedure_string.split('.')
        queue_position = len(self.manager.experiments.queue) + 1
        uidn = uuid.uuid4().clock_seq_hi_variant
        filename = f'{basename}-{queue_position}_{uidn}.csv'

        #create new experiment
        procedure = self.make_procedure()
        results = Results(procedure, filename)
        experiment = self.new_experiment(results)
        #que new experiment
        self.manager.queue(experiment)
    def queue(self, *, procedure=None):
        directory = os.getcwd() + '/' + self.directory

        if procedure is None:
            procedure = self.make_procedure()

        prefix = 'DUT{:s}_{:s}_{:s}'.format(str(procedure.dev_num),
                                            procedure.pd_type,
                                            procedure.pd_size)
        # suffix = strftime("%Y%m%d_%H%M%S")
        filename = unique_filename(
            directory,
            # prefix=prefix,
            # suffix=suffix,
            datetimeformat="%Y%m%d_%H%M%S")

        results = Results(procedure, filename)
        experiment = self.new_experiment(results)

        self.manager.queue(experiment)
Exemplo n.º 8
0
    def queue(self):
        direc = self.inputs.save_dir.text()
        # create list of procedures to run
        procedure = self.make_procedure()

        # create files
        pre = (procedure.your_name + '_') if procedure.your_name else ''
        suf = 'SS9'
        filename = unique_filename(direc,
                                   dated_folder=True,
                                   suffix=suf,
                                   prefix=pre)
        # ensure *some* sample name exists so Results.load() works
        if procedure.your_name == '':
            procedure.your_name = 'undefined'

        # Queue experiment
        results = Results(procedure, filename)
        experiment = self.new_experiment(results)
        self.manager.queue(experiment)
Exemplo n.º 9
0
    def queue(self):

        # create filename based on procedure name, position in queue and a unique identifier
        procedure_string = re.search("'(?P<name>[^']+)'",
                                     repr(self.procedure_class)).group("name")
        main_str, basename = procedure_string.split('.')
        queue_position = len(self.manager.experiments.queue) + 1
        uidn = uuid.uuid4().clock_seq_hi_variant
        filename = f'{basename}-{queue_position}_{uidn}.csv'

        # construct a new instance of procedure and define datapoints
        procedure = self.make_procedure()
        procedure.data_points = np.ceil(
            (procedure.max_voltage - procedure.min_voltage) /
            procedure.voltage_step)

        # construct a new instance of Results
        results = Results(procedure, filename)

        # construct new experiment (that contains the previously constructed procedure and results objects)
        experiment = self.new_experiment(results)

        # if its the first experiment don't start it right away
        if not self.manager.experiments.queue:
            self.manager._start_on_add = False
            self.manager._is_continuous = False
            self.manager.queue(experiment)

            # set the gui accordingly
            self.abort_button.setEnabled(False)
            self.abort_button.setText("Start")
            self.abort_button.clicked.disconnect()
            self.abort_button.clicked.connect(self.resume)
            self.abort_button.setEnabled(True)

        # add experiment to que
        else:
            self.manager.queue(experiment)
Exemplo n.º 10
0
    def update_plot(self, filename):
        for plot in self.plot:
            plot.clear()
        if not os.path.isdir(filename) and filename != '':
            try:
                results = self.procedure_class().load(str(filename))
            except Exception as error:
                try:
                    results = Results.load(str(filename))
                except ValueError:
                    return
                except Exception as e:
                    raise e
            for index, plot_widget in enumerate(self.plot_widget):
                curve_list = plot_widget.new_curve(results)
                for curve in curve_list:
                    curve.update()
                    self.plot[index].addItem(curve)

            self.preview_param.clear()
            for key, param in results.procedure.parameter_objects().items():
                new_item = QtGui.QTreeWidgetItem([param.name, str(param)])
                self.preview_param.addTopLevelItem(new_item)
            self.preview_param.sortItems(0, QtCore.Qt.AscendingOrder)
Exemplo n.º 11
0

if __name__ == "__main__":

    scribe = console_log(log, level=logging.DEBUG)
    scribe.start()

    filename = tempfile.mktemp()
    log.info("Using data file: %s" % filename)

    procedure = TestProcedure()
    procedure.iterations = 200
    procedure.delay = 0.1
    log.info("Set up TestProcedure with %d iterations" % procedure.iterations)

    results = Results(procedure, filename)
    log.info("Set up Results")

    plotter = Plotter(results)
    plotter.start()

    worker = Worker(results, scribe.queue, log_level=logging.DEBUG)
    log.info("Created worker for TestProcedure")
    log.info("Starting worker...")
    worker.start()

    log.info("Joining with the worker in at most 20 min")
    worker.join(60 * 20)
    log.info("Waiting for Plotter to close")
    plotter.wait_for_close()
    log.info("Plotter closed")
Exemplo n.º 12
0
                    'Reverse Current Dark': abs(trace_data_dark[i, 0]),
                    'Timestamp Dark': trace_data_dark[i, 1],
                    'Status Dark': trace_data_dark[i, 2],
                    'Reverse Voltage Light': abs(trace_data_light[i, 3]),
                    'Reverse Current Light': abs(trace_data_light[i, 0]),
                    'Timestamp Light': trace_data_light[i, 1],
                    'Status Light': trace_data_light[i, 2]
                }) for i in range(n_samples)
        ]
        log.info("Current data emitted")
        log.info("Turning off light source")
        self.power_supply.enabled = "OFF"
        log.info("Waiting for 30sec in between test.")
        sleep(30)


if __name__ == "__main__":
    console_log(log, level=logging.DEBUG)

    procedure = IVSweepProcedure()
    procedure.polarity = "Anode"
    # procedure.step = 1

    data_filename = 'example.csv'
    results = Results(procedure, data_filename)

    worker = Worker(results)
    worker.start()

    worker.join(timeout=3600)  # wait at most 1 hr (3600 sec)