# Taking data Pypixie16 provides several ways to take data. Normally, the following steps need to be taken: - initialize using `pixie16.control.init_and_boot()` - change settings (see previous section) - set run time `pixie16.control.set_run_time(...)` - take histogram or list mode data using 'pixie16.control.start_histogram_run()' or `pixie16.control.start_list_mode_run()` - for list mode runs: have a for loop to check runtime and status and download and save data. Pypixie16 also provides `pixie16.control.run_list_mode()` and `pixie16.control.take_list_mode_data()` for this use case. - for histograms one can also use `pixie16.control.take_MCA_spectra()` - save settings and stats using `pixie16.control.save_dsp_parameters_as_json()` and `pixie16.control.save_stats_to_file()` - end the run `pixie16.contro.end_run() - finally one can also exit the system completely using `pixie16.control.exit_system()` It is worth browsing `pixie16.control` to see what other functions are provided to make this easier. Examples can be seen in the exectubales, for example, `pixie16.cli.parameter_scan` ## More complex scenarios If the data needs to be operated on while taking data, for example, finding channels in list mode data that belong to a single coincidence event and generate custom plots in live mode, pypixie16 provides data pipelines in `pixie16.pipeline`. Here, single tasks can be defined and put together into a data pipeline. Data can be easily moved from one tasks to the next and each tasks runs in a separate process to parallelize operation and to not impeded the rate at which data is taken. Pypixie16 comes already with some predifined tasks in `pixie16.tasks`. These include: * taking data * providing dummy data from a file (no Pixi16 needed), this is useful for debugging * saving data to disk in larger chunks * convert list mode data to python structures * sort events by time and add a UTC time stamp from the local computer