LongitudinalCtDnaTrendChecker

Longitudinal ctDNA Trend

Liquid Biopsy жидкостная биопсия cfDNA ctDNA CTC exosomes NGS qPCR
Открыть подборку

Описание утилиты: Longitudinal ctDNA Trend

Longitudinal ctDNA Trend Checker — Анализ динамики циркулирующей опухолевой ДНК

ℹ️  Утилита выполняет статистический анализ лонгитюдных данных ctDNA согласно рекомендациям ESMO, ASCO и стандартам TRACERx:

     МОЛЕКУЛЯРНЫЙ ОТВЕТ (MOLECULAR RESPONSE):
     • Значимое снижение VAF от baseline (fold change ≤ 0.5, т.е. ≥50% снижение).
     • Статистически значимый отрицательный slope (p ≤ 0.05).
     • Отрицательное время снижения вдвое (halving time).
     • Полная молекулярная ремиссия: текущая VAF ниже LOD.

     МОЛЕКУЛЯРНАЯ ПРОГРЕССИЯ (MOLECULAR PROGRESSION):
     • Значимый рост от nadir (fold change ≥ 2.0) — признак приобретенной резистентности.
     • Статистически значимый положительный slope.
     • Положительное время удвоения (doubling time).
     • Появление новых вариантов — возможный механизм резистентности.

     MRD ПОЗИТИВНЫЙ:
     • Детекция ctDNA выше LOD в пост-терапевтическом периоде наблюдения.
     • Высокий риск клинического рецидива (опережает визуализацию на недели/месяцы).

     СТАБИЛЬНОЕ ЗАБОЛЕВАНИЕ (STABLE DISEASE):
     • Нет значимого fold change от baseline.
     • Slope не статистически значим (p > 0.05).
     • Колебания в пределах биологической/технической вариабельности.

     НЕОПРЕДЕЛЁННО (INDETERMINATE):
     • Менее 3 временных точек.
     • Противоречивые сигналы (например, снижение tracked variant + рост нового).
     • Все точки ниже LOQ (невозможна количественная оценка тренда).

⚠️  ВАЖНО:
     • Изменения VAF в пределах LOQ НЕ являются значимыми — это технический шум.
     • Рост от NADIR более информативен, чем рост от baseline (учитывает глубину ответа).
     • Один временной пункт ≠ тренд. Минимум 3 точки для статистической оценки.
     • Новый вариант может появиться ДО роста отслеживаемого варианта — мониторьте весь профиль.
     • Клиническое решение никогда не должно основываться ТОЛЬКО на молекулярном тренде без корреляции с визуализацией и состоянием пациента.

Использование:
  LongitudinalCtDnaTrendChecker.exe                            → демо-режим (вывод в консоль)
  LongitudinalCtDnaTrendChecker.exe input.csv output.json      → оценка ваших данных

📍 Область применения (Usage Where):
     • Мониторинг ответа на таргетную терапию: Ранняя оценка эффективности.
     • Детекция приобретенной резистентности: Рост от nadir + новые варианты.
     • MRD-мониторинг после радикального лечения: Предикция рецидива.
     • Клинические испытания: Молекулярные конечные точки (mPFS, mMRD).
     • Мультидисциплинарные консилиумы: Объективная основа для обсуждения динамики.

— ЗАЧЕМ ЭТО НУЖНО?
Визуализация (КТ/МРТ) оценивает ответ с задержкой в недели/месяцы относительно молекулярных изменений.
Субъективная оценка «VAF вроде снизился» неприемлема для принятия решений о смене дорогостоящей терапии.
Статистически обоснованная классификация тренда обеспечивает воспроизводимость и объективность.
Это критически важно для персонализированного управления лечением в реальном времени.

⚠️  КРИТИЧЕСКИ ВАЖНО:
• Min Timepoints ≥ 3: Меньше = INDETERMINATE.
• Significant Fold Change ≥ 2.0: Изменения <50% обычно находятся в пределах вариабельности.
• Slope P-Value ≤ 0.05: Без статистической значимости тренд ненадежен.
• Rise From Nadir ≥ 2.0×: Более чувствительный маркер прогрессии, чем рост от baseline.
• Points Below LOQ: Снижают надежность количественного тренда.
• New Variants: Всегда требуют внимания, даже при стабильном tracked variant.
• Clinical Correlation: Молекулярный тренд ≠ клиническое решение. Всегда интегрируйте с imaging и ECOG.

Ключевые особенности утилиты:
• Пятикатегорийная классификация молекулярной динамики
• Интеграция fold change, slope и doubling/halving time
• Контекстно-зависимая логика (active treatment vs surveillance)
• Автоматическая детекция новых вариантов как маркера резистентности
• Учет аналитических ограничений (LOD/LOQ) при интерпретации
• Соответствие ESMO/ASCO/TRACERx recommendations

💡 Советы по использованию:
1. Частота мониторинга: Каждые 4-8 недель при активной терапии; каждые 3-6 месяцев при MRD-наблюдении.
2. Baseline: Используйте пре-терапевтический образец как reference. Если недоступен — первый доступный.
3. Nadir Tracking: Автоматически обновляйте nadir при каждом новом измерении.
4. Multi-Variant Tracking: Мониторьте ВСЕ известные варианты, не только драйверный.
5. Visualization: Всегда представляйте тренд графически (spaghetti plot) вместе с числовой классификацией.

⚠️ Примечание: Данная утилита предоставляет СТАТИСТИЧЕСКУЮ КЛАССИФИКАЦИЮ молекулярной динамики. Она НЕ заменяет клиническое суждение онколога. Решения о смене терапии должны учитывать совокупность данных: молекулярный тренд + визуализация + клиническое состояние + токсичность + предпочтения пациента.

input.csv

PatientID,VariantID,TherapyContext,NumTimepoints,BaselineVAF_Percent,CurrentVAF_Percent,NadirVAF_Percent,AssayLOD_Percent,AssayLOQ_Percent,Slope_VAF_per_Week,SlopePValue,FoldChange_FromBaseline,FoldChange_FromNadir,DoublingOrHalvingTime_Days,MinSignificantFoldChange,MaxSlopePValue,AllPointsAboveLOQ,CurrentBelowLOD,AnyNewVariantDetected,DaysSinceLastSample
PAT-2026-001,EGFR_L858R,Active_Treatment,5,12.5,0.8,0.6,0.01,0.05,-1.8,0.001,0.064,1.33,-14.5,2.0,0.05,false,false,false,21
PAT-2026-002,KRAS_G12D,Active_Treatment,4,5.0,8.2,0.3,0.01,0.05,1.2,0.008,1.64,27.3,18.0,2.0,0.05,true,false,true,28
PAT-2026-003,TP53_R175H,Post_Treatment_Surveillance,3,0.0,0.08,0.0,0.01,0.05,0.02,0.12,0,0,0,2.0,0.05,false,false,false,42
PAT-2026-004,PIK3CA_H1047R,Active_Treatment,3,0.12,0.09,0.07,0.01,0.05,-0.01,0.45,0.75,1.29,-60.0,2.0,0.05,false,false,false,30

URS & FS — спецификация пользователя и функциональная спецификация

Документ описывает контролируемый интерфейс и поведение утилиты LongitudinalCtDnaTrendChecker для сценария Longitudinal ctDNA Trend Checker.

Предметные ограничения и критические параметры

Ниже приведены ключевые фрагменты исходного описания. Перед продуктивным применением пределы должны быть сверены с утверждённой спецификацией, регистрационным досье и локальными SOP.
  • • Значимое снижение VAF от baseline (fold change ≤ 0.5, т.е. ≥50% снижение).
  • • Статистически значимый отрицательный slope (p ≤ 0.05).
  • • Значимый рост от nadir (fold change ≥ 2.0) — признак приобретенной резистентности.
  • • Slope не статистически значим (p > 0.05).
  • • Колебания в пределах биологической/технической вариабельности.
  • НЕОПРЕДЕЛЁННО (INDETERMINATE):
  • ⚠️ ВАЖНО:
  • • Изменения VAF в пределах LOQ НЕ являются значимыми — это технический шум.
  • Это критически важно для персонализированного управления лечением в реальном времени.
  • ⚠️ КРИТИЧЕСКИ ВАЖНО:
  • • Min Timepoints ≥ 3: Меньше = INDETERMINATE.
  • • Significant Fold Change ≥ 2.0: Изменения <50% обычно находятся в пределах вариабельности.
  • • Slope P-Value ≤ 0.05: Без статистической значимости тренд ненадежен.
  • • Rise From Nadir ≥ 2.0×: Более чувствительный маркер прогрессии, чем рост от baseline.

URS — пользовательские требования

IDТребованиеКритичностьКритерий приемки
URS-001Утилита должна принимать файл input.csv для Longitudinal ctDNA Trend Checker с заголовками, определёнными в контракте данных.HighФайл обрабатывается без ручного изменения заголовков.
URS-002Утилита должна выполнять детерминированную оценку QC/ОКК без машинного обучения и без вероятностного принятия решения о соответствии.HighПри одинаковых входных данных, версии правил и конфигурации результат полностью воспроизводим.
URS-003Утилита должна валидировать обязательные поля, типы данных, диапазоны, единицы измерения и предметную правдоподобность значений.HighОшибки схемы, преобразования и диапазона явно отражаются в результате.
URS-004Утилита должна применять предметные пределы и правила из описания, утверждённой спецификации, регистрационного досье и локальных SOP.HighКаждая проверка имеет результат PASS/WARNING/FAIL и понятное сообщение.
URS-005Утилита должна формировать output.json с машинно-читаемыми результатами, исходными значениями, предупреждениями, отказами и критическими находками.HighJSON пригоден для LIMS/ELN/MES-интеграции и QA/QC review.
URS-006Утилита должна сохранять трассируемость между серией/образцом, входным файлом, применёнными правилами и итоговым статусом.HighВыход содержит идентификаторы, список параметров и audit metadata.
URS-007Документация должна поддерживать подготовку IQ/OQ/PQ, CSV/CSA и обсуждение с инспекторами или внутренним QA.MediumURS, FS, контракт input/output и тестовые сценарии поставляются вместе с утилитой.
URS-008Утилита должна использоваться как decision-support инструмент QC, а не как замена утверждённым спецификациям и выпускному решению Qualified Person/QA.MediumВ документации указан контроль change control и необходимость сверки пределов.

Контракт input.csv

#ПолеТипПримерНазначение
1PatientIDstring / controlled vocabularyPAT-2026-001Контролируемый входной параметр для детерминированных QC-правил.
2VariantIDstring / controlled vocabularyEGFR_L858RКонтролируемый входной параметр для детерминированных QC-правил.
3TherapyContextstring / controlled vocabularyActive_TreatmentКонтролируемый входной параметр для детерминированных QC-правил.
4NumTimepointsdecimal5Временной параметр процесса, инкубации, хранения или анализа.
5BaselineVAF_Percentdecimal12.5Контролируемый входной параметр для детерминированных QC-правил.
6CurrentVAF_Percentdecimal0.8Контролируемый входной параметр для детерминированных QC-правил.
7NadirVAF_Percentdecimal0.6Контролируемый входной параметр для детерминированных QC-правил.
8AssayLOD_Percentdecimal0.01Контролируемый входной параметр для детерминированных QC-правил.
9AssayLOQ_Percentdecimal0.05Контролируемый входной параметр для детерминированных QC-правил.
10Slope_VAF_per_Weekdecimal-1.8Контролируемый входной параметр для детерминированных QC-правил.
11SlopePValuedecimal0.001Контролируемый входной параметр для детерминированных QC-правил.
12FoldChange_FromBaselinedecimal0.064Контролируемый входной параметр для детерминированных QC-правил.
13FoldChange_FromNadirdecimal1.33Контролируемый входной параметр для детерминированных QC-правил.
14DoublingOrHalvingTime_Daysinteger / decimal-14.5Временной параметр процесса, инкубации, хранения или анализа.
15MinSignificantFoldChangedecimal2.0Контролируемый входной параметр для детерминированных QC-правил.
16MaxSlopePValuedecimal0.05Контролируемый входной параметр для детерминированных QC-правил.
17AllPointsAboveLOQstring / controlled vocabularyfalseКонтролируемый входной параметр для детерминированных QC-правил.
18CurrentBelowLODstring / controlled vocabularyfalseКонтролируемый входной параметр для детерминированных QC-правил.
19AnyNewVariantDetectedstring / controlled vocabularyfalseКонтролируемый входной параметр для детерминированных QC-правил.
20DaysSinceLastSampleinteger / decimal21Идентификатор образца или лабораторной пробы.
PatientID,VariantID,TherapyContext,NumTimepoints,BaselineVAF_Percent,CurrentVAF_Percent,NadirVAF_Percent,AssayLOD_Percent,AssayLOQ_Percent,Slope_VAF_per_Week,SlopePValue,FoldChange_FromBaseline,FoldChange_FromNadir,DoublingOrHalvingTime_Days,MinSignificantFoldChange,MaxSlopePValue,AllPointsAboveLOQ,CurrentBelowLOD,AnyNewVariantDetected,DaysSinceLastSample
PAT-2026-001,EGFR_L858R,Active_Treatment,5,12.5,0.8,0.6,0.01,0.05,-1.8,0.001,0.064,1.33,-14.5,2.0,0.05,false,false,false,21
PAT-2026-002,KRAS_G12D,Active_Treatment,4,5.0,8.2,0.3,0.01,0.05,1.2,0.008,1.64,27.3,18.0,2.0,0.05,true,false,true,28
PAT-2026-003,TP53_R175H,Post_Treatment_Surveillance,3,0.0,0.08,0.0,0.01,0.05,0.02,0.12,0,0,0,2.0,0.05,false,false,false,42

Правила валидации входных данных

IDПолеПравилоКритичность
VR-001PatientIDПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.High
VR-002VariantIDПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.High
VR-003TherapyContextПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.High
VR-004NumTimepointsПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.Medium
VR-005BaselineVAF_PercentПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.Medium
VR-006CurrentVAF_PercentПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.Medium
VR-007NadirVAF_PercentПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.Medium
VR-008AssayLOD_PercentПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.Medium
VR-009AssayLOQ_PercentПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.Medium
VR-010Slope_VAF_per_WeekПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.Medium
VR-011SlopePValueПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.Medium
VR-012FoldChange_FromBaselineПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.Medium
VR-013FoldChange_FromNadirПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.Medium
VR-014DoublingOrHalvingTime_DaysПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.Medium
VR-015MinSignificantFoldChangeПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.Medium
VR-016MaxSlopePValueПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.Medium
VR-017AllPointsAboveLOQПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.Medium
VR-018CurrentBelowLODПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.Medium
VR-019AnyNewVariantDetectedПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.Medium
VR-020DaysSinceLastSampleПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.Medium

FS — функциональная спецификация

IDФункцияРеализация
FS-001CLI executionПоддержать режимы запуска: demo mode без аргументов и production mode input.csv output.json.
FS-002CSV importПрочитать input.csv в UTF-8/CSV-совместимом формате, проверить наличие заголовка и ожидаемых колонок.
FS-003Schema validationПроверить обязательные поля, количество колонок, неизвестные ключевые поля и пустые обязательные значения.
FS-004Type conversionПреобразовать числовые, флаговые и текстовые значения; некорректный формат фиксировать как ошибку строки.
FS-005Domain rule engineПрименить правила для Longitudinal ctDNA Trend Checker, включая критические пределы из описания и утверждённой спецификации.
FS-006Status aggregationСформировать итоговый статус: FAIL при критическом отказе, WARNING при некритическом отклонении, PASS при соответствии.
FS-007JSON exportЗаписать output.json с детализацией проверок, исходными значениями, предупреждениями, отказами и critical findings.
FS-008Audit supportСохранять структуру результата пригодной для review, расследования отклонений и воспроизведения расчёта.
FS-009Integration contractПоддержать сценарий LIMS/ELN/MES → input.csv → utility → output.json → portal/admin review.
FS-010Error handlingВозвращать явные сообщения для отсутствующего файла, пустого CSV, неверной схемы, ошибки записи output.json и некорректного формата.

Пример output.json

{
  "utilityId": "longitudinalctdnatrendchecker",
  "utilityFolder": "LongitudinalCtDnaTrendChecker",
  "package": "LiquidBiopsy",
  "overallStatus": "PASS|WARNING|FAIL",
  "sourceFile": "input.csv",
  "processedAtUtc": "2026-06-10T00:00:00Z",
  "checks": [
    {
      "parameter": "PatientID",
      "value": "PAT-2026-001",
      "status": "PASS|WARNING|FAIL",
      "message": "Deterministic rule-based check result",
      "ruleReference": "FS-RULE-001"
    },
    {
      "parameter": "VariantID",
      "value": "EGFR_L858R",
      "status": "PASS|WARNING|FAIL",
      "message": "Deterministic rule-based check result",
      "ruleReference": "FS-RULE-002"
    },
    {
      "parameter": "TherapyContext",
      "value": "Active_Treatment",
      "status": "PASS|WARNING|FAIL",
      "message": "Deterministic rule-based check result",
      "ruleReference": "FS-RULE-003"
    },
    {
      "parameter": "NumTimepoints",
      "value": "5",
      "status": "PASS|WARNING|FAIL",
      "message": "Deterministic rule-based check result",
      "ruleReference": "FS-RULE-004"
    },
    {
      "parameter": "BaselineVAF_Percent",
      "value": "12.5",
      "status": "PASS|WARNING|FAIL",
      "message": "Deterministic rule-based check result",
      "ruleReference": "FS-RULE-005"
    },
    {
      "parameter": "CurrentVAF_Percent",
      "value": "0.8",
      "status": "PASS|WARNING|FAIL",
      "message": "Deterministic rule-based check result",
      "ruleReference": "FS-RULE-006"
    },
    {
      "parameter": "NadirVAF_Percent",
      "value": "0.6",
      "status": "PASS|WARNING|FAIL",
      "message": "Deterministic rule-based check result",
      "ruleReference": "FS-RULE-007"
    },
    {
      "parameter": "AssayLOD_Percent",
      "value": "0.01",
      "status": "PASS|WARNING|FAIL",
      "message": "Deterministic rule-based check result",
      "ruleReference": "FS-RULE-008"
    },
    {
      "parameter": "AssayLOQ_Percent",
      "value": "0.05",
      "status": "PASS|WARNING|FAIL",
      "message": "Deterministic rule-based check result",
      "ruleReference": "FS-RULE-009"
    },
    {
      "parameter": "Slope_VAF_per_Week",
      "value": "-1.8",
      "status": "PASS|WARNING|FAIL",
      "message": "Deterministic rule-based check result",
      "ruleReference": "FS-RULE-010"
    },
    {
      "parameter": "SlopePValue",
      "value": "0.001",
      "status": "PASS|WARNING|FAIL",
      "message": "Deterministic rule-based check result",
      "ruleReference": "FS-RULE-011"
    },
    {
      "parameter": "FoldChange_FromBaseline",
      "value": "0.064",
      "status": "PASS|WARNING|FAIL",
      "message": "Deterministic rule-based check result",
      "ruleReference": "FS-RULE-012"
    }
  ],
  "criticalFindings": [],
  "warnings": [],
  "audit": {
    "inputHash": "sha256:<calculated at runtime>",
    "rulesVersion": "<utility executable version>",
    "documentation": "LongitudinalCtDnaTrendChecker.documentation.html"
  }
}

Матрица трассируемости

URSFSТестПодтверждение
URS-001FS-001, FS-002OQ-001Проверить запуск и импорт валидного input.csv.
URS-002FS-005, FS-006OQ-004Повторить один и тот же набор данных и сравнить output.json.
URS-003FS-003, FS-004, FS-010OQ-002, OQ-003Проверить отсутствующие колонки и неверные типы.
URS-004FS-005, FS-006OQ-004, PQ-001Проверить критические отклонения по реальным/граничным данным.
URS-005FS-007, FS-009OQ-005Проверить JSON schema и пригодность для downstream-систем.
URS-006FS-008OQ-006Проверить наличие идентификаторов и audit metadata.
URS-007FS-008, FS-010IQ-001, OQ-007Проверить комплектность документации и control evidence.
URS-008FS-005, FS-008PQ-002Проверить review workflow и запрет автоматической замены QA-решения.

IQ/OQ/PQ тестовые сценарии

IDСценарийОжидаемый результат
IQ-001Проверить наличие executable, input.csv, документации и контрольной суммы.Комплект поставки полон; версия зафиксирована.
OQ-001Валидная строка из примера input.csv.PASS или допустимый WARNING согласно правилам.
OQ-002Удалить обязательную колонку из CSV.Ошибка схемы или FAIL с указанием отсутствующей колонки.
OQ-003Внести нечисловое значение в числовое поле.Ошибка преобразования типа с указанием строки/поля.
OQ-004Значение критического параметра вывести за предел.FAIL и critical finding.
OQ-005Проверить структуру output.json.Все обязательные секции присутствуют, JSON валиден.
OQ-006Проверить трассируемость серии/образца.Идентификаторы входа и результатов совпадают.
PQ-001Проверить 3–5 реальных партий/образцов пользователя.Результат подтверждён QC/QA review.
PQ-002Проверить workflow отклонения и ручного QA-решения.Утилита поддерживает review, но не заменяет утверждённое решение.

QA/QC и change control

  • Не менять имена колонок без обновления валидатора, документации и тестового набора.
  • Хранить input.csv, output.json, версию исполняемого файла и контрольную сумму.
  • Перед продуктивным использованием провести IQ/OQ/PQ или эквивалентную CSV/CSA-проверку.
  • Критические пределы должны быть сверены с утверждённой спецификацией, регистрационным досье и локальными SOP.
  • Утилита предоставляет формализованный QC decision support, но окончательное решение выпуска остаётся за QA/QP и утверждёнными процедурами.

Входит в пакеты

Жидкостная биопсия

Пакет для QC и преданалитического контроля жидкостной биопсии: cfDNA/ctDNA, CTC, EV/exosomes, метилирование, NGS/qPCR/ddPCR, контроль образцов, контаминации, чувствительности и отчётности.

Открыть