Coverage for src/instawell/__init__.py: 100%
17 statements
« prev ^ index » next coverage.py v7.11.0, created at 2025-11-07 15:47 -0600
« prev ^ index » next coverage.py v7.11.0, created at 2025-11-07 15:47 -0600
1"""
2InstaWell: A powerful toolkit for analyzing Differential Scanning Fluorimetry (DSF) data.
4This package provides a complete pipeline for processing thermal shift assay experiments,
5from raw data ingestion through melting temperature identification.
7Basic Usage:
8 >>> from instawell import setup_experiment, ingest_data, filter_wells
9 >>>
10 >>> # Setup experiment
11 >>> ctx = setup_experiment(
12 ... experiment_name="my_experiment",
13 ... raw_data_path="raw.csv",
14 ... layout_data_path="layout.csv"
15 ... )
16 >>>
17 >>> # Process data
18 >>> ingest_data(ctx)
19 >>> filter_wells(ctx, wells_to_filter=["A1"])
20 >>> # ... continue pipeline
22Pipeline Steps (in order):
23 1. setup_experiment() - Initialize experiment directory and context
24 2. ingest_data() - Parse layout and organize raw data
25 3. filter_wells() - Remove problematic wells
26 4. average_accross_replicates() - Average technical replicates
27 5. subtract_background() - Remove background signal (NPC controls)
28 6. min_max_scale() - Normalize to 0-1 range
29 7. calculate_derivative() - Compute -dY/dT for Tm identification
30 8. find_min_temperature() - Extract melting temperatures
31"""
33import logging
35logging.getLogger(__name__).addHandler(logging.NullHandler())
37# Core context and configuration
38# Data models
39from .core.data_models import Replicate, UniqueCondition
40from .core.exp_context import ExperimentContext
42# Parsing utilities
43from .core.parser import (
44 condition_from_string,
45 condition_to_string,
46 parse_concentration_to_float,
47 parse_condition_string,
48 validate_condition_string,
49)
50from .core.steps import StepFiles
52# Processing pipeline steps
53from .processing.step_00_setup_experiment import (
54 load_experiment_context,
55 setup_experiment,
56)
57from .processing.step_01_ingest_data import ingest_data
58from .processing.step_02_filter_wells import filter_wells
59from .processing.step_03_average_replicates import average_accross_replicates
60from .processing.step_04_subtract_background import subtract_background
61from .processing.step_05_minmax_scale import min_max_scale
62from .processing.step_06_calc_derivative import calculate_derivative
63from .processing.step_07_find_min_temp import find_min_temperature
65# Utility functions
66from .utils.utils import split_unqcon_column
68__all__ = [
69 # ===== Experiment Setup =====
70 "setup_experiment",
71 "load_experiment_context",
72 "ExperimentContext",
73 "StepFiles",
74 # ===== Processing Pipeline =====
75 "ingest_data",
76 "filter_wells",
77 "average_accross_replicates",
78 "subtract_background",
79 "min_max_scale",
80 "calculate_derivative",
81 "find_min_temperature",
82 # ===== Data Models =====
83 "Replicate",
84 "UniqueCondition",
85 # ===== Parsing Utilities =====
86 "condition_from_string",
87 "condition_to_string",
88 "parse_condition_string",
89 "parse_concentration_to_float",
90 "validate_condition_string",
91 # ===== Utilities =====
92 "split_unqcon_column",
93]
95__version__ = "0.2.0" # Bumped for new API