A small package that converts SARS-CoV-2 PCR test Ct values to viral loads
Project description
ct2vl: Ct values to viral load
A python package and command line tool to convert SARS-CoV-2 PCR Ct values to viral load.
Usage
Python package
from ct2vl.conversion import Converter
converter = Converter(traces="traces.csv", LoD=100.0, Ct_at_LoD=37.96)
ct_values = [23.1, 31.8, 28.4, 34.0, 30.2]
viral_loads = converter.ct_to_viral_load(ct_values)
The traces
argument can also accept a pandas DataFrame or numpy ndarray.
Command line tool
To calibrate ct2vl run
python3 -m ct2vl calibrate <traces> <LoD> <Ct_at_LoD>
For example
python3 -m ct2vl calibrate example/path/traces.csv 100.0 37.96
Once ct2vl has been calibrated, Ct values can be converted to viral loads with
python3 -m ct2vl convert <Ct>
One or multiple Ct values can be passed. For example
python3 -m ct2vl convert 23.1
or
python3 -m ct2vl convert 23.1 31.8 28.4 34.0 30.2
Output can be saved to a file by providing a filepath to the optional flag --output
python3 -m ct2vl convert 23.1 --output example/path//viral_loads.tsv
Input
The command line tool has two modes calibrate
and convert
.
mode
:calibrate
uses positive PCR traces and their corresponding Ct values to calibrate ct2vl for a given machinetraces
: Filepath to a csv file containing PCR reaction tracesLoD
: Limit of detection (LoD): copies of SARS-CoV-2 viral genomes/mL (copies/mL; viral load at the LoD)Ct_at_LoD
: Ct value at the limit of detection (LoD)
mode
:convert
calculates the viral loads for given Ct valuesCt
: A list of Ct values that will be converted to viral loads--outfile
: An optional filepath to save the results to
For calibrate
mode, traces
is a csv file where each row corresponds to a PCR reaction curve and each column is a cycle in the reaction (example below).
Example traces
csv file
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | ... | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 0.036339 | 0.105185 | 0.140072 | 0.213080 | ... | 75.820797 | 103.521744 | 128.057320 | 146.543328 | 158.994255 | 166.878167 | 171.755301 | 174.695708 | 176.480445 | 178.004733 |
1 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 0.032859 | 0.106156 | 0.115075 | ... | 1.498253 | 3.242639 | 6.929736 | 14.413807 | 26.735120 | 42.908856 | 60.642276 | 77.436979 | 90.894471 | 98.702497 |
2 | 0.008563 | 0.077690 | 0.112795 | 0.112795 | 0.112795 | 0.112795 | 0.112795 | 0.112795 | 0.250068 | ... | 239.545742 | 240.219129 | 240.706006 | 241.006463 | 241.206473 | 241.304155 | 241.389261 | 241.421420 | 241.421420 | 241.421420 |
3 | 0.000000 | 0.000000 | 0.043038 | 0.061215 | 0.061215 | 0.061215 | 0.061215 | 0.061215 | 0.061215 | ... | 177.787281 | 185.406029 | 190.989406 | 195.223471 | 198.308876 | 200.551725 | 202.243363 | 203.463125 | 204.342186 | 205.015795 |
4 | 0.000000 | 0.000000 | 0.000000 | 0.014523 | 0.038724 | 0.083699 | 0.116689 | 0.131569 | 0.131569 | ... | 173.993467 | 183.424795 | 190.361277 | 195.482481 | 199.194926 | 201.862966 | 203.861077 | 205.329761 | 206.289263 | 206.824331 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
16 | 0.000000 | 0.000000 | 0.050974 | 0.085428 | 0.085428 | 0.085428 | 0.085428 | 0.085428 | 0.085428 | ... | 194.717208 | 201.251802 | 206.238474 | 209.977472 | 212.850522 | 214.995915 | 216.711037 | 217.980163 | 218.880729 | 219.491032 |
17 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 0.080598 | 0.126204 | 0.224708 | 0.254782 | ... | 187.883601 | 199.664452 | 208.208690 | 214.361070 | 218.809716 | 222.239450 | 224.701419 | 226.574815 | 227.972374 | 229.085984 |
18 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 0.000000 | 0.092015 | 0.215467 | 0.297682 | ... | 51.416916 | 80.692981 | 112.770737 | 142.339464 | 165.674804 | 182.084870 | 193.083210 | 200.171681 | 204.779740 | 208.237394 |
19 | 0.443534 | 0.443534 | 0.443534 | 0.443534 | 0.443534 | 0.443534 | 0.443534 | 0.443534 | 0.443534 | ... | 70.164310 | 97.490787 | 122.766640 | 142.936795 | 157.475829 | 167.632976 | 174.804737 | 179.870366 | 183.435423 | 186.212804 |
20 | 0.000000 | 0.060721 | 0.060721 | 0.064403 | 0.064403 | 0.064403 | 0.064403 | 0.064403 | 0.064403 | ... | 225.043424 | 226.333617 | 227.403273 | 228.214905 | 228.866112 | 229.370140 | 229.680560 | 229.890248 | 229.967121 | 229.967121 |
Example command line output
LoD | Ct_at_LoD | Ct | viral_load | log10_viral_load | |
---|---|---|---|---|---|
1 | 100 | 37.83 | 14.73 | 3.3277e+08 | 8.52214 |
2 | 100 | 37.83 | 20.27 | 7.98283e+06 | 6.90216 |
3 | 100 | 37.83 | 18.21 | 3.13511e+07 | 7.49625 |
4 | 100 | 37.83 | 18.05 | 3.48959e+07 | 7.54277 |
5 | 100 | 37.83 | 15.53 | 1.92109e+08 | 8.28355 |
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file ct2vl-1.0.1.tar.gz
.
File metadata
- Download URL: ct2vl-1.0.1.tar.gz
- Upload date:
- Size: 8.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c23d04f7b396cdf8969068a0aa9153ca9ef9bdea82be2a5932d55241e990e8b9 |
|
MD5 | c53bc448b7912ce749f490cf9cf28b54 |
|
BLAKE2b-256 | 48f82d3b980030a2e4eafcbc74d94a89b089c1ce173f08e30ab9cf2698ed1e52 |
File details
Details for the file ct2vl-1.0.1-py3-none-any.whl
.
File metadata
- Download URL: ct2vl-1.0.1-py3-none-any.whl
- Upload date:
- Size: 7.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3827da05fcf86ec77183973bb9178f32d2423225f4f7245646439ccf805711ff |
|
MD5 | 69900cc6bcfe165c30a2c1a7175a8f71 |
|
BLAKE2b-256 | 7a000dead38d52662479d0f2a2c24071ca5f2d514d1ada05ba73469767539b1d |