Lifespec FL
Parse .FL files from a Lifespec TRPL machine.
Install with
python -m pip install lifespec-fl
Parser
The lifespec_fl.parse(<file>) method is used to parse a .FL file.
This is the main function of this package.
File format description
Parsing the .FL binary file uses the parse_binary_file package. This package uses configuration files to describe the structure of a binary file format for parsing.
You can find this configuration file at lifespec_fl/data/fl_descriptor.yaml.
CLI
Installs a command line interface (CLI) named lifespec_fl that can be used to
convert .FL files to .csv.
Example
Library
import pandas as pd
import lifespec_fl as fl
# parse the 'my_trpl.FL' file
(counts, data) = fl.parse('my_trpl.FL')
# place counts into a pandas Series
df = pd.Series(counts[:, 1], index = counts[:, 0])
CLI
Convert all .FL files in the current directory to .csv.
lifespec_fl
Convert all .FL files ending in trpl in the current directly into a single .csv.
lifespec_fl --join *trpl.FL
File Format Notes
- 3 lines separated by
\r\n(0d0a) - Little Endian
latin-1encoded- Heads of lines 1 and 2 follow similar pattern
Line 0 (0x00 - 0x14, 0x15 bytes)
EAI Multiple Scans null terminated (0x00) string followed by \r\n
Line 1 (0x15 - 0x60, 0x4d bytes)
head (0x34 bytes)
- bytes 0x00 - 0x01 (0x02 bytes):
dc05 - bytes 0x02 - 0x05 (0x04 bytes):
0000 0033 - bytes 0x06 - 0x09 (0x04 bytes):
0000 0096 - bytes 0x0a - 0x10 (0x07 bytes): null
- bytes 0x11 - 0x14 (0x04 bytes): Stop time as a float
- bytes 0x15 - 0x19 (0x05 bytes): X axis label (e.g.
'Time') as a null terminated string - bytes 0x1a - 0x1c (0x03 bytes): Time scale (e.g.
'ns','us') as a null terminated string - bytes 0x1d - 0x20 (0x04 bytes): null
- bytes 0x21 - 0x24 (0x04 bytes): ?, possibly no. of counts in 1000 as float
- bytes 0x25 - 0x2b (0x07 bytes): Y axis label (e.g.
'Counts') as a null terminated string - bytes 0x2c - 0x33 (0x08 bytes):
'1.4.5.0'null terminated string, version?
body
- bytes 0x36 - 0x3d (0x08 bytes): Seems to always be
6400 0000 0100 0000 - bytes 0x3e - 0x4c (0x0d bytes): Scan type as null terminated string
- bytes 0x4d - 0x4e (0x02 bytes):
\r\nto end line
Line 2 (0x61 - end)
head (0x34 bytes)
- bytes 0x00 - 0x01 (0x02 bytes):
8813 - bytes 0x02 - 0x06 (0x04 bytes): ?, float
- bytes 0x07 - 0x09 (0x04 bytes):
0100 0096, control sequence? - bytes 0x0a - 0x10 (0x07 bytes): null
- bytes 0x11 - 0x14 (0x04 bytes): Stop time as a float
- bytes 0x15 - 0x19 (0x05 bytes): X axis label (e.g.
'Time') as a null terminated string - bytes 0x1a - 0x1c (0x03 bytes): Time scale (e.g.
'ns','us') as a null terminated string - bytes 0x1d - 0x24 (0x08 bytes): null
- bytes 0x25 - 0x2b (0x07 bytes): Y axis label (e.g.
'Counts') null terminated string - bytes 0x2c - 0x33 (0x08 bytes):
'1.4.5.0'null terminated string, version?
body
- Original file name, null terminated
- (0x01 bytes)
2c - (0x04 bytes)
0100 0000, control secquence? - (0x02 bytes)
0400 - (0x02 bytes) null
- (0x0f bytes) ?
- (0x02 bytes)
4090, control sequence? - (0x04 bytes)
0100 0000, control sequence? - (0x04 bytes) ?, null terminated
- (0x07 bytes) null
- (0x04 bytes)
f401 0000, control sequence? - (0x0c bytes)
'TCSPC Diode'string, null terminated - (0x0a bytes) null
- (0x0a bytes)
'Reference'string, null terminated - (0x02 bytes) null
- (0x03 bytes)
'HC'string, null terminated - (0x04 bytes)
f6ff ffff, control sequence? - (0x02 bytes)
1000 - (0x03 bytes) null
- (0x02 bytes)
000c - (0x0c bytes)
'TCSPC Diode'sting, null t2rminated - (0x06 bytes) null
- (0x01 bytes)
fe, control sequence? - (0x04 bytes)
'K B'string, null terminated - (0x01 bytes) null
- (0x0a bytes)
'HS PMT920'string, null terminated - (0x05 bytes) ?, float
- (0x06 bytes)
00f6 ffff ff0d 00control sequence? - (0x03 bytes) null
- (0x0d bytes)
'200nm-1000nm'string, null terminated - (0x01 bytes)
05, control sequence? - (0x12 bytes)
'High Speed PMT920'string, null terminated - (0x02 bytes)
0001 - (0x16 bytes) null
002c 0100 0001 0000 00control sequence?- (0x04 bytes) ?, float?
- (0x04 bytes) ?, float?
- (0x0d bytes)
c220 b043 2000 0000 - Time scale string (e.g.
'50ns','100ns'), null terminated - (0x01 bytes) Data padding
- If
30, skip next byte - If
31- If
2e39, skip next byte - if
392e, skip next 2 bytes
- If
- If
data
- Each 4 bytes should be interpreted as a float
Metadata
Release files for lifespec-fl 0.0.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| lifespec_fl-0.0.4.tar.gz | 8.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| lifespec_fl-0.0.4-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 17.6 kB
Release files / lifespec_fl-0.0.4.tar.gz
| Download URL | lifespec_fl-0.0.4.tar.gz |
|---|---|
| Size | 8.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3346134ee7a7bcdd3a2777442aa7f6a0082aeda0e5ce39387a8ddcd7a510d2df
|
|
BLAKE2b-256 checksum How to use checksums |
2378e6b7ac3ce69468b39e4190793be1f967b4c79316ac314433b7d02ef95491
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.4.1 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.8
|
Release files / lifespec_fl-0.0.4-py3-none-any.whl
| Download URL | lifespec_fl-0.0.4-py3-none-any.whl |
|---|---|
| Size | 8.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
69fe05a7cec66d24e8a15dc39bfd129e57962ddb380adc4925e0a50d3e0c0d13
|
|
BLAKE2b-256 checksum How to use checksums |
42d94b5008bcf03d9efd868dec3b4b36471416b98a02ddaaa65653d2cd6d03aa
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.4.1 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.8
|