UltraSensitiveMrdRunChecker

Ultra-Sensitive MRD Run

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

Описание утилиты: Ultra-Sensitive MRD Run

Ultra-Sensitive MRD Run Checker — Специализированный QC запусков ультрачувствительных MRD-ассеев

ℹ️  Утилита выполняет проверку запусков MRD-ассеев (LOD ≤0.01% VAF) согласно CAP/CLIA §GEN.48800, FDA MRD assay guidance, ESMO MRD Guidelines и Blood Profiling Atlas:

     UMI МЕТРИКИ (ФУНДАМЕНТ ULTRA-SENSITIVE DETECTION):
     • Unique Molecular Depth ≥ Required: Глубина после дедупликации определяет реальный LOD.
     • Mean Family Size ≥ 3.0: Минимум для надёжного консенсуса; <3 = ошибка не устраняется.
     • Families ≥3 Members ≥ 70%: Доля UMI, способных сформировать консенсус.
     • Consensus Efficiency ≥ 60%: % UMI, дающих валидный консенсус. Низкая = потеря молекул.
     • UMI Collision Rate ≤ 2%: Коллизии объединяют разные молекулы; критично при высокой глубине.

     ПОЗИЦИОННЫЙ ФОНОВЫЙ ШУМ:
     • Mean Positional Background ≤ 0.0005% VAF: Средняя частота ошибок на мониторимых позициях в NTC.
     • Max Single Position Background ≤ 0.001% VAF: Худшая позиция не должна превышать порог.
     • Error Suppression Factor ≥ 100×: Во сколько раз UMI-консенсус снижает raw error rate.
     • ⚠ При LOD 0.01% фон должен быть минимум в 10–20 раз ниже; иначе LoB пересекает LOD.

     ULTRA-LOW POSITIVE CONTROL:
     • Контроль на уровне LOD (обычно 0.01% VAF): Подтверждение чувствительности в каждом запуске.
     • Recovery ≥ 70%: Достаточное восстановление сигнала.
     • ⛔ Failure = чувствительность на уровне LOD НЕ подтверждена.

     КОНТАМИНАЦИЯ И NTC:
     • NTC Clean: Ноль ложноположительных сигналов в безматричных контролях.
     • Index Hopping ≤ 0.1%: При MRD-уровнях даже 0.1% hopping создаёт FP.
     • UD Indexes Mandatory: Unique Dual indexes обязательны для ультрачувствительных assays.
     • Cross-Sample Contamination ≤ 0.01%: Межобразцовая контаминация недопустима.
     • ⛔ Любой позитивный сигнал в NTC = ВСЕ low-VAF вызовы недостоверны.

     LIMIT OF BLANK (LoB):
     • LoB ≤ 0.005% VAF: Верхняя граница шума из NTC.
     • LoB должен быть значительно ниже declared LOD для надёжного разделения сигнал/шум.

     ЧУВСТВИТЕЛЬНОСТЬ:
     • Theoretical LOD = 3 / unique_molecular_depth (Poisson, 95%).
     • Должен быть ≤ declared LOD ассая.
     • Если theoretical LOD > declared LOD = запуск не поддерживает заявленную чувствительность.

⚠️  ВАЖНО:
     • Ультрачувствительный MRD работает в зоне единичных молекул; каждая метрика критична.
     • Raw depth бессмысленен без UMI depth; 100 000× raw может дать только 2000× unique.
     • Family size <3 = консенсус невозможен; ошибки секвенирования проходят в финальные вызовы.
     • Index hopping без UD indexes = гарантированные FP при мультиплексировании.
     • NTC contamination при MRD-уровнях необратимо компрометирует весь запуск.
     • Positional background varies by position; мониторинг каждой позиции обязателен.
     • LoB ≥ LOD = тест не способен различить сигнал и шум; результаты бессмысленны.

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

📍 Область применения:
     • Лаборатории MRD-мониторинга: Обязательная приемка каждого ultra-sensitive запуска.
     • Клинические испытания MRD-guided терапии: QC стратификационных биомаркеров.
     • Производители MRD-ассеев: Выпускной контроль реагентов и пайплайнов.
     • Регуляторные инспекции: Документирование ultra-sensitive assay performance.
     • Аккредитация CAP/ISO: Специализированный QC для MRD-тестирования.

💡 Советы:
1. UMI Design: Используйте ≥10 bp UMI с sufficient diversity для целевой глубины.
2. NTC Multiplicity: Включайте ≥3 NTC на запуск для надёжной оценки LoB.
3. Positional Baselines: Ведите исторические baselines фона по каждой позиции; тренды важнее абсолютных значений.
4. Ultra-Low Controls: Готовьте алиquotы ultra-low controls; избегайте freeze-thaw.
5. Contamination Response Plan: Разработайте SOP для действий при NTC contamination (quarantine, investigation, re-run).

⚠️ Примечание: Утилита оценивает ТЕХНИЧЕСКУЮ ПРИГОДНОСТЬ запуска для ultra-sensitive MRD-детекции. Она не заменяет биоинформатическую валидацию вызовов или клиническую интерпретацию MRD-результатов. При статусе CONTAMINATION_SUSPECTED все результаты запуска должны быть заблокированы до завершения расследования. При SENSITIVITY_COMPROMISED результаты могут быть выданы только с явным указанием сниженной чувствительности и ограничений интерпретации.

input.csv

RunID,AssayName,Platform,PanelType,RunDate,TotalSamples,TotalReads_Million,UniqueUMIs_Million,UMIDeduplication_Rate,UniqueMolecularDepth_X,RequiredUniqueMolecularDepth_X,MeanFamilySize,MinMeanFamilySize,MedianFamilySize,PercentFamilies_SizeGE3,MinPercentFamilies_SizeGE3,UMICollisionRate_Percent,MaxUMICollisionRate_Percent,ConsensusEfficiency_Percent,MinConsensusEfficiency_Percent,PositionalBackground_Mean_VAF,MaxPositionalBackground_VAF,PositionalBackground_MaxSingle_VAF,MaxAllowed_SinglePosition_Background_VAF,PositionsAboveBackground_Threshold,TotalMonitoredPositions,ErrorSuppression_Factor,MinErrorSuppression_Factor,UltraLowPositive_Control_Passed,UltraLowPos_Recovery_Percent,MinUltraLowPos_Recovery_Percent,UltraLowPos_ObservedVAF,UltraLowPos_ExpectedVAF,NegativeControl_Clean,NTC_PositiveSignals_Detected,MaxNTC_PositiveSignals_Allowed,NoTemplateControl_Pass,IndexHopping_Rate_Percent,MaxIndexHopping_Rate_Percent,UDIndexes_Used,CrossSampleContamination_Estimate_Percent,MaxCrossSampleContamination_Percent,PercentQ30_Read1,PercentQ30_Read2,MinPercentQ30,OnTargetRate_Percent,MinOnTargetRate_Percent,AssayDeclared_LOD_VAF,LimitOfBlank_VAF,MaxAcceptable_LoB_VAF,ReagentKit_Lot,ReagentLot_Verified,Calibration_Current,PipelineVersion,PipelineVersion_Validated
MRD-2026-0142,Signatera_NSCLC_v3,UMI_NGS,Tumor_Informed,2026-06-08,24,120,8.5,0.82,12500,5000,5.8,3.0,5.0,85.0,70,0.8,2.0,92.0,60,0.00008,0.0005,0.00035,0.001,0,32,850,100,true,94.5,70,0.0095,0.01,true,0,0,true,0.02,0.1,true,0.003,0.01,91.5,88.2,75,82.0,60,0.01,0.0002,0.005,RK-2026-0451,true,true,v4.2.1,true
MRD-2026-0143,Guardant_Reveal,UMI_NGS,Tumor_Agnostic,2026-06-09,24,95,4.2,0.78,3800,5000,2.4,3.0,2.0,42.0,70,3.5,2.0,48.0,60,0.0012,0.0005,0.0045,0.001,5,50,35,100,false,52.0,70,0.0052,0.01,false,3,0,false,0.35,0.1,false,0.08,0.01,82.0,76.5,75,65.0,60,0.01,0.008,0.005,RK-2026-0467,true,true,v4.2.1,true

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

Документ описывает контролируемый интерфейс и поведение утилиты UltraSensitiveMrdRunChecker для сценария Ultra-Sensitive MRD Run Checker.

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

Ниже приведены ключевые фрагменты исходного описания. Перед продуктивным применением пределы должны быть сверены с утверждённой спецификацией, регистрационным досье и локальными SOP.
  • ℹ️ Утилита выполняет проверку запусков MRD-ассеев (LOD ≤0.01% VAF) согласно CAP/CLIA §GEN.48800, FDA MRD assay guidance, ESMO MRD Guidelines и Blood Profiling Atlas:
  • • Unique Molecular Depth ≥ Required: Глубина после дедупликации определяет реальный LOD.
  • • Mean Family Size ≥ 3.0: Минимум для надёжного консенсуса; <3 = ошибка не устраняется.
  • • Families ≥3 Members ≥ 70%: Доля UMI, способных сформировать консенсус.
  • • Consensus Efficiency ≥ 60%: % UMI, дающих валидный консенсус. Низкая = потеря молекул.
  • • UMI Collision Rate ≤ 2%: Коллизии объединяют разные молекулы; критично при высокой глубине.
  • • Mean Positional Background ≤ 0.0005% VAF: Средняя частота ошибок на мониторимых позициях в NTC.
  • • Max Single Position Background ≤ 0.001% VAF: Худшая позиция не должна превышать порог.
  • • Error Suppression Factor ≥ 100×: Во сколько раз UMI-консенсус снижает raw error rate.
  • • Recovery ≥ 70%: Достаточное восстановление сигнала.
  • • Index Hopping ≤ 0.1%: При MRD-уровнях даже 0.1% hopping создаёт FP.
  • • Cross-Sample Contamination ≤ 0.01%: Межобразцовая контаминация недопустима.
  • LIMIT OF BLANK (LoB):
  • • LoB ≤ 0.005% VAF: Верхняя граница шума из NTC.
  • • Должен быть ≤ declared LOD ассая.
  • • Если theoretical LOD > declared LOD = запуск не поддерживает заявленную чувствительность.
  • ⚠️ ВАЖНО:
  • • Ультрачувствительный MRD работает в зоне единичных молекул; каждая метрика критична.

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

IDТребованиеКритичностьКритерий приемки
URS-001Утилита должна принимать файл input.csv для Ultra-Sensitive MRD Run 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

#ПолеТипПримерНазначение
1RunIDstring / controlled vocabularyMRD-2026-0142Контролируемый входной параметр для детерминированных QC-правил.
2AssayNamestring / controlled vocabularySignatera_NSCLC_v3Контролируемый входной параметр для детерминированных QC-правил.
3Platformstring / controlled vocabularyUMI_NGSКонтролируемый входной параметр для детерминированных QC-правил.
4PanelTypestring / controlled vocabularyTumor_InformedКонтролируемый входной параметр для детерминированных QC-правил.
5RunDatestring / controlled vocabulary2026-06-08Контролируемый входной параметр для детерминированных QC-правил.
6TotalSamplesstring / controlled vocabulary24Идентификатор образца или лабораторной пробы.
7TotalReads_Millioninteger / decimal120Контролируемый входной параметр для детерминированных QC-правил.
8UniqueUMIs_Millioninteger / decimal8.5Контролируемый входной параметр для детерминированных QC-правил.
9UMIDeduplication_Ratestring / controlled vocabulary0.82Контролируемый входной параметр для детерминированных QC-правил.
10UniqueMolecularDepth_Xdecimal12500Контролируемый входной параметр для детерминированных QC-правил.
11RequiredUniqueMolecularDepth_Xdecimal5000Контролируемый входной параметр для детерминированных QC-правил.
12MeanFamilySizedecimal5.8Контролируемый входной параметр для детерминированных QC-правил.
13MinMeanFamilySizedecimal3.0Контролируемый входной параметр для детерминированных QC-правил.
14MedianFamilySizedecimal5.0Контролируемый входной параметр для детерминированных QC-правил.
15PercentFamilies_SizeGE3decimal85.0Контролируемый входной параметр для детерминированных QC-правил.
16MinPercentFamilies_SizeGE3decimal70Контролируемый входной параметр для детерминированных QC-правил.
17UMICollisionRate_Percentdecimal0.8Контролируемый входной параметр для детерминированных QC-правил.
18MaxUMICollisionRate_Percentdecimal2.0Контролируемый входной параметр для детерминированных QC-правил.
19ConsensusEfficiency_Percentdecimal92.0Контролируемый входной параметр для детерминированных QC-правил.
20MinConsensusEfficiency_Percentdecimal60Контролируемый входной параметр для детерминированных QC-правил.
21PositionalBackground_Mean_VAFdecimal0.00008Контролируемый входной параметр для детерминированных QC-правил.
22MaxPositionalBackground_VAFdecimal0.0005Контролируемый входной параметр для детерминированных QC-правил.
23PositionalBackground_MaxSingle_VAFdecimal0.00035Контролируемый входной параметр для детерминированных QC-правил.
24MaxAllowed_SinglePosition_Background_VAFdecimal0.001Контролируемый входной параметр для детерминированных QC-правил.
25PositionsAboveBackground_Thresholddecimal0Контролируемый входной параметр для детерминированных QC-правил.
26TotalMonitoredPositionsdecimal32Контролируемый входной параметр для детерминированных QC-правил.
27ErrorSuppression_Factordecimal850Контролируемый входной параметр для детерминированных QC-правил.
28MinErrorSuppression_Factordecimal100Контролируемый входной параметр для детерминированных QC-правил.
29UltraLowPositive_Control_Passedstring / controlled vocabularytrueКонтрольная точка/контрольный образец для валидности серии анализа.
30UltraLowPos_Recovery_Percentdecimal94.5Восстановление/извлечение; показатель валидности анализа.
31MinUltraLowPos_Recovery_Percentdecimal70Восстановление/извлечение; показатель валидности анализа.
32UltraLowPos_ObservedVAFdecimal0.0095Контролируемый входной параметр для детерминированных QC-правил.
33UltraLowPos_ExpectedVAFdecimal0.01Контролируемый входной параметр для детерминированных QC-правил.
34NegativeControl_Cleanstring / controlled vocabularytrueКонтрольная точка/контрольный образец для валидности серии анализа.
35NTC_PositiveSignals_Detecteddecimal0Контролируемый входной параметр для детерминированных QC-правил.
36MaxNTC_PositiveSignals_Allowedflag / boolean0Контролируемый входной параметр для детерминированных QC-правил.
37NoTemplateControl_Passstring / controlled vocabularytrueТемпературный профиль/MKT; параметр хранения, перевозки и стабильности.
38IndexHopping_Rate_Percentdecimal0.02Контролируемый входной параметр для детерминированных QC-правил.
39MaxIndexHopping_Rate_Percentdecimal0.1Контролируемый входной параметр для детерминированных QC-правил.
40UDIndexes_Usedstring / controlled vocabularytrueКонтролируемый входной параметр для детерминированных QC-правил.
41CrossSampleContamination_Estimate_Percentdecimal0.003Идентификатор образца или лабораторной пробы.
42MaxCrossSampleContamination_Percentdecimal0.01Идентификатор образца или лабораторной пробы.
43PercentQ30_Read1decimal91.5Контролируемый входной параметр для детерминированных QC-правил.
44PercentQ30_Read2decimal88.2Контролируемый входной параметр для детерминированных QC-правил.
45MinPercentQ30decimal75Контролируемый входной параметр для детерминированных QC-правил.
46OnTargetRate_Percentdecimal82.0Контролируемый входной параметр для детерминированных QC-правил.
47MinOnTargetRate_Percentdecimal60Контролируемый входной параметр для детерминированных QC-правил.
48AssayDeclared_LOD_VAFstring / controlled vocabulary0.01Контролируемый входной параметр для детерминированных QC-правил.
49LimitOfBlank_VAFdecimal0.0002Утверждённый предел, применяемый при проверке результата.
50MaxAcceptable_LoB_VAFdecimal0.005Контролируемый входной параметр для детерминированных QC-правил.
51ReagentKit_Lotstring / controlled vocabularyRK-2026-0451Идентификатор серии/партии для трассируемости.
52ReagentLot_Verifiedstring / controlled vocabularytrueИдентификатор серии/партии для трассируемости.
53Calibration_Currentstring / controlled vocabularytrueОтношение компонентов; структурный или рецептурный CQA.
54PipelineVersionstring / controlled vocabularyv4.2.1Контролируемый входной параметр для детерминированных QC-правил.
55PipelineVersion_Validatedstring / controlled vocabularytrueКонтролируемый входной параметр для детерминированных QC-правил.
RunID,AssayName,Platform,PanelType,RunDate,TotalSamples,TotalReads_Million,UniqueUMIs_Million,UMIDeduplication_Rate,UniqueMolecularDepth_X,RequiredUniqueMolecularDepth_X,MeanFamilySize,MinMeanFamilySize,MedianFamilySize,PercentFamilies_SizeGE3,MinPercentFamilies_SizeGE3,UMICollisionRate_Percent,MaxUMICollisionRate_Percent,ConsensusEfficiency_Percent,MinConsensusEfficiency_Percent,PositionalBackground_Mean_VAF,MaxPositionalBackground_VAF,PositionalBackground_MaxSingle_VAF,MaxAllowed_SinglePosition_Background_VAF,PositionsAboveBackground_Threshold,TotalMonitoredPositions,ErrorSuppression_Factor,MinErrorSuppression_Factor,UltraLowPositive_Control_Passed,UltraLowPos_Recovery_Percent,MinUltraLowPos_Recovery_Percent,UltraLowPos_ObservedVAF,UltraLowPos_ExpectedVAF,NegativeControl_Clean,NTC_PositiveSignals_Detected,MaxNTC_PositiveSignals_Allowed,NoTemplateControl_Pass,IndexHopping_Rate_Percent,MaxIndexHopping_Rate_Percent,UDIndexes_Used,CrossSampleContamination_Estimate_Percent,MaxCrossSampleContamination_Percent,PercentQ30_Read1,PercentQ30_Read2,MinPercentQ30,OnTargetRate_Percent,MinOnTargetRate_Percent,AssayDeclared_LOD_VAF,LimitOfBlank_VAF,MaxAcceptable_LoB_VAF,ReagentKit_Lot,ReagentLot_Verified,Calibration_Current,PipelineVersion,PipelineVersion_Validated
MRD-2026-0142,Signatera_NSCLC_v3,UMI_NGS,Tumor_Informed,2026-06-08,24,120,8.5,0.82,12500,5000,5.8,3.0,5.0,85.0,70,0.8,2.0,92.0,60,0.00008,0.0005,0.00035,0.001,0,32,850,100,true,94.5,70,0.0095,0.01,true,0,0,true,0.02,0.1,true,0.003,0.01,91.5,88.2,75,82.0,60,0.01,0.0002,0.005,RK-2026-0451,true,true,v4.2.1,true
MRD-2026-0143,Guardant_Reveal,UMI_NGS,Tumor_Agnostic,2026-06-09,24,95,4.2,0.78,3800,5000,2.4,3.0,2.0,42.0,70,3.5,2.0,48.0,60,0.0012,0.0005,0.0045,0.001,5,50,35,100,false,52.0,70,0.0052,0.01,false,3,0,false,0.35,0.1,false,0.08,0.01,82.0,76.5,75,65.0,60,0.01,0.008,0.005,RK-2026-0467,true,true,v4.2.1,true

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

IDПолеПравилоКритичность
VR-001RunIDПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.High
VR-002AssayNameПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.High
VR-003PlatformПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.High
VR-004PanelTypeПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.Medium
VR-005RunDateПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.Medium
VR-006TotalSamplesПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.Medium
VR-007TotalReads_MillionПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.Medium
VR-008UniqueUMIs_MillionПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.Medium
VR-009UMIDeduplication_RateПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.Medium
VR-010UniqueMolecularDepth_XПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.Medium
VR-011RequiredUniqueMolecularDepth_XПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.Medium
VR-012MeanFamilySizeПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.Medium
VR-013MinMeanFamilySizeПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.Medium
VR-014MedianFamilySizeПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.Medium
VR-015PercentFamilies_SizeGE3Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.Medium
VR-016MinPercentFamilies_SizeGE3Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.Medium
VR-017UMICollisionRate_PercentПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.Medium
VR-018MaxUMICollisionRate_PercentПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.Medium
VR-019ConsensusEfficiency_PercentПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.Medium
VR-020MinConsensusEfficiency_PercentПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.Medium
VR-021PositionalBackground_Mean_VAFПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.Medium
VR-022MaxPositionalBackground_VAFПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.Medium
VR-023PositionalBackground_MaxSingle_VAFПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.Medium
VR-024MaxAllowed_SinglePosition_Background_VAFПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.Medium
VR-025PositionsAboveBackground_ThresholdПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.Medium
VR-026TotalMonitoredPositionsПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.Medium
VR-027ErrorSuppression_FactorПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.Medium
VR-028MinErrorSuppression_FactorПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.Medium
VR-029UltraLowPositive_Control_PassedПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.Medium
VR-030UltraLowPos_Recovery_PercentПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.Medium
VR-031MinUltraLowPos_Recovery_PercentПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.Medium
VR-032UltraLowPos_ObservedVAFПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.Medium
VR-033UltraLowPos_ExpectedVAFПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.Medium
VR-034NegativeControl_CleanПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.Medium
VR-035NTC_PositiveSignals_DetectedПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.Medium
VR-036MaxNTC_PositiveSignals_AllowedПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.Medium
VR-037NoTemplateControl_PassПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.Medium
VR-038IndexHopping_Rate_PercentПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.Medium
VR-039MaxIndexHopping_Rate_PercentПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.Medium
VR-040UDIndexes_UsedПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.Medium
VR-041CrossSampleContamination_Estimate_PercentПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.Medium
VR-042MaxCrossSampleContamination_PercentПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.Medium
VR-043PercentQ30_Read1Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.Medium
VR-044PercentQ30_Read2Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.Medium
VR-045MinPercentQ30Поле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.Medium
VR-046OnTargetRate_PercentПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.Medium
VR-047MinOnTargetRate_PercentПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.Medium
VR-048AssayDeclared_LOD_VAFПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.Medium
VR-049LimitOfBlank_VAFПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.Medium
VR-050MaxAcceptable_LoB_VAFПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.Medium
VR-051ReagentKit_LotПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.Medium
VR-052ReagentLot_VerifiedПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.Medium
VR-053Calibration_CurrentПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.Medium
VR-054PipelineVersionПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.Medium
VR-055PipelineVersion_ValidatedПоле должно соответствовать утверждённому справочнику/словарю или допустимой строковой форме.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Применить правила для Ultra-Sensitive MRD Run 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": "ultrasensitivemrdrunchecker",
  "utilityFolder": "UltraSensitiveMrdRunChecker",
  "package": "LiquidBiopsy",
  "overallStatus": "PASS|WARNING|FAIL",
  "sourceFile": "input.csv",
  "processedAtUtc": "2026-06-10T00:00:00Z",
  "checks": [
    {
      "parameter": "RunID",
      "value": "MRD-2026-0142",
      "status": "PASS|WARNING|FAIL",
      "message": "Deterministic rule-based check result",
      "ruleReference": "FS-RULE-001"
    },
    {
      "parameter": "AssayName",
      "value": "Signatera_NSCLC_v3",
      "status": "PASS|WARNING|FAIL",
      "message": "Deterministic rule-based check result",
      "ruleReference": "FS-RULE-002"
    },
    {
      "parameter": "Platform",
      "value": "UMI_NGS",
      "status": "PASS|WARNING|FAIL",
      "message": "Deterministic rule-based check result",
      "ruleReference": "FS-RULE-003"
    },
    {
      "parameter": "PanelType",
      "value": "Tumor_Informed",
      "status": "PASS|WARNING|FAIL",
      "message": "Deterministic rule-based check result",
      "ruleReference": "FS-RULE-004"
    },
    {
      "parameter": "RunDate",
      "value": "2026-06-08",
      "status": "PASS|WARNING|FAIL",
      "message": "Deterministic rule-based check result",
      "ruleReference": "FS-RULE-005"
    },
    {
      "parameter": "TotalSamples",
      "value": "24",
      "status": "PASS|WARNING|FAIL",
      "message": "Deterministic rule-based check result",
      "ruleReference": "FS-RULE-006"
    },
    {
      "parameter": "TotalReads_Million",
      "value": "120",
      "status": "PASS|WARNING|FAIL",
      "message": "Deterministic rule-based check result",
      "ruleReference": "FS-RULE-007"
    },
    {
      "parameter": "UniqueUMIs_Million",
      "value": "8.5",
      "status": "PASS|WARNING|FAIL",
      "message": "Deterministic rule-based check result",
      "ruleReference": "FS-RULE-008"
    },
    {
      "parameter": "UMIDeduplication_Rate",
      "value": "0.82",
      "status": "PASS|WARNING|FAIL",
      "message": "Deterministic rule-based check result",
      "ruleReference": "FS-RULE-009"
    },
    {
      "parameter": "UniqueMolecularDepth_X",
      "value": "12500",
      "status": "PASS|WARNING|FAIL",
      "message": "Deterministic rule-based check result",
      "ruleReference": "FS-RULE-010"
    },
    {
      "parameter": "RequiredUniqueMolecularDepth_X",
      "value": "5000",
      "status": "PASS|WARNING|FAIL",
      "message": "Deterministic rule-based check result",
      "ruleReference": "FS-RULE-011"
    },
    {
      "parameter": "MeanFamilySize",
      "value": "5.8",
      "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": "UltraSensitiveMrdRunChecker.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, контроль образцов, контаминации, чувствительности и отчётности.

Открыть