feat: analysis of low cfDNA input updated for comparison to QG

This commit is contained in:
2025-10-17 09:30:11 +02:00
parent 2581de3dc7
commit 7a35a49084
3 changed files with 227 additions and 43 deletions

View File

@@ -10,7 +10,9 @@ logging.basicConfig(
)
def main(s3_paths: list[str], bed_path: str, ref_path: str, cli_bin: str) -> None:
def main(
s3_paths: list[str], bed_path: str, ref_path: str, cli_bin: str, tars: bool
) -> None:
logging.info("Script started...")
logging.info(f"Using reference: {ref_path}")
logging.info(f"Using bed file: {bed_path}")
@@ -22,12 +24,21 @@ def main(s3_paths: list[str], bed_path: str, ref_path: str, cli_bin: str) -> Non
file_num = f"{idx+1}/{len(s3_paths)}"
logging.info(f"({file_num}) Downloading file: {name}")
down_cmd = (
f"{cli_bin} s3 cp {file} . --profile=se"
if cli_bin == "aws"
else f"{cli_bin} get {file} ."
)
run(down_cmd, shell=True, capture_output=False)
if tars:
down_unpack_cmd = (
f"{cli_bin} s3 cp {file} . --profile=se"
if cli_bin == "aws"
else f"{cli_bin} get {file} . && tar -xf {name} --strip-components=4 --wildcards --no-anchored '*.cram' && rm {name}"
)
run(down_unpack_cmd, shell=True, capture_output=False)
name = name.split(".")[0] + ".collapsed.cram"
else:
down_cmd = (
f"{cli_bin} s3 cp {file} . --profile=se"
if cli_bin == "aws"
else f"{cli_bin} get {file} ."
)
run(down_cmd, shell=True, capture_output=False)
sort_name = f"{name.split('.')[0]}.sorted.cram"
sort_cmd = f"samtools sort -@ 18 {name} --reference {ref_path} > {sort_name}"
@@ -47,40 +58,83 @@ def main(s3_paths: list[str], bed_path: str, ref_path: str, cli_bin: str) -> Non
if __name__ == "__main__":
s3_paths = [
# "s3://serenomica-pipeline-archive/se1-prd-2.1.1/LB-25-0001-pa-21Mar2025_S33.collapsed.cram",
"s3://serenomica-pipeline-archive/se1-prd-2.1.1/LB-25-0002-pa-21Mar2025_S34.collapsed.cram",
"s3://serenomica-pipeline-archive/se1-prd-2.1.1/LB-25-0003-pa-21Mar2025_S35.collapsed.cram",
"s3://serenomica-pipeline-archive/se1-prd-2.1.1/LB-25-0004-pa-21Mar2025_S36.collapsed.cram",
"s3://serenomica-pipeline-archive/se1-prd-2.1.1/LB-25-0005-pa-21Mar2025_S37.collapsed.cram",
"s3://serenomica-pipeline-archive/se1-prd-2.1.1/LB-25-0006-pa-21Mar2025_S38.collapsed.cram",
"s3://serenomica-pipeline-archive/se1-prd-2.1.1/LB-SeraPlasma-0d125pc-1-28Mar2025_S41.collapsed.cram",
"s3://serenomica-pipeline-archive/se1-prd-2.1.1/LB-SeraPlasma-0d125pc-2-28Mar2025_S42.collapsed.cram",
"s3://serenomica-pipeline-archive/se1-prd-2.1.1/LB-SeraPlasma-0d25pc-1-28Mar2025_S43.collapsed.cram",
"s3://serenomica-pipeline-archive/se1-prd-2.1.1/LB-SeraPlasma-0d25pc-2-28Mar2025_S44.collapsed.cram",
"s3://serenomica-pipeline-archive/se1-prd-2.1.1/LB-SeraPlasma-0d5pc-1-28Mar2025_S45.collapsed.cram",
"s3://serenomica-pipeline-archive/se1-prd-2.1.1/LB-SeraPlasma-0d5pc-2-28Mar2025_S46.collapsed.cram",
"s3://serenomica-pipeline-archive/se1-prd-2.1.1/LB-SeraPlasma-0pc-1-28Mar2025_S39.collapsed.cram",
"s3://serenomica-pipeline-archive/se1-prd-2.1.1/LB-SeraPlasma-0pc-2-28Mar2025_S40.collapsed.cram",
"s3://serenomica-pipeline-archive/se1-prd-2.1.1/LB-SeraPlasma-1pc-1-28Mar2025_S48.collapsed.cram",
"s3://serenomica-pipeline-archive/se1-prd-2.1.1/LB-SeraPlasma-1pc-2-28Mar2025_S47.collapsed.cram",
"s3://serenomica-pipeline-archive/se2-lb-1/LB-25-0007-pa-1-23May2025_S20.collapsed.cram",
"s3://serenomica-pipeline-archive/se2-lb-1/LB-25-0007-pa-2-23May2025_S21.collapsed.cram",
"s3://serenomica-pipeline-archive/se2-lb-1/LB-25-0008-pa-1-23May2025_S22.collapsed.cram",
"s3://serenomica-pipeline-archive/se2-lb-1/LB-25-0008-pa-2-23May2025_S23.collapsed.cram",
"s3://serenomica-pipeline-archive/se2-lb-1/LB-25-0009-pa-1-23May2025_S24.collapsed.cram",
"s3://serenomica-pipeline-archive/se2-lb-1/LB-25-0009-pa-2-23May2025_S25.collapsed.cram",
"s3://serenomica-pipeline-archive/se2-lb-1/LB-25-0010-pa-1-23May2025_S26.collapsed.cram",
"s3://serenomica-pipeline-archive/se2-lb-1/LB-25-0010-pa-2-23May2025_S27.collapsed.cram",
"s3://serenomica-pipeline-archive/se2-lb-1/LB-25-0011-pa-1-23May2025_S32.collapsed.cram",
"s3://serenomica-pipeline-archive/se2-lb-1/LB-25-0012-pa-1-23May2025_S28.collapsed.cram",
"s3://serenomica-pipeline-archive/se2-lb-1/LB-25-0012-pa-2-23May2025_S29.collapsed.cram",
"s3://serenomica-pipeline-archive/se2-lb-1/LB-25-0032-pa-1-23May2025_S30.collapsed.cram",
"s3://serenomica-pipeline-archive/se2-lb-1/LB-25-0032-pa-2-23May2025_S31.collapsed.cram",
"s3://serenomica-pipeline-archive/se2-lb-1/LB-SeraCare-0d25pc-1-21Mar2025_S17.collapsed.cram",
"s3://serenomica-pipeline-archive/se2-lb-1/LB-SeraCare-0d25pc-2-21Mar2025_S18.collapsed.cram",
"s3://serenomica-pipeline-archive/se2-lb-1/LB-SeraPlasma-0pc-3-28Mar2025_S19.collapsed.cram",
# "s3://serenomica-pipeline-archive/historical-qg-qc-samples/LB-23-0087-pa-13Jun2023_S1.bams.tar",
"s3://serenomica-pipeline-archive/historical-qg-qc-samples/LB-23-0089-pa-13Jun2023_S2.bams.tar",
"s3://serenomica-pipeline-archive/historical-qg-qc-samples/LB-23-0090-pa-13Jun2023_S3.bams.tar",
"s3://serenomica-pipeline-archive/historical-qg-qc-samples/LB-23-0091-pa-13Jun2023_S4.bams.tar",
"s3://serenomica-pipeline-archive/historical-qg-qc-samples/LB-23-0092-pa-13Jun2023_S5.bams.tar",
"s3://serenomica-pipeline-archive/historical-qg-qc-samples/LB-23-0096-pa-13Jun2023_S6.bams.tar",
"s3://serenomica-pipeline-archive/historical-qg-qc-samples/LB-23-0098-pa-29Jun2023_S1.bams.tar",
"s3://serenomica-pipeline-archive/historical-qg-qc-samples/LB-23-0099-pa-29Jun2023_S2.bams.tar",
"s3://serenomica-pipeline-archive/historical-qg-qc-samples/LB-23-0100-pa-29Jun2023_S3.bams.tar",
"s3://serenomica-pipeline-archive/historical-qg-qc-samples/LB-23-0103-pa-29Jun2023_S4.bams.tar",
"s3://serenomica-pipeline-archive/historical-qg-qc-samples/LB-23-0105-pa-29Jun2023_S5.bams.tar",
"s3://serenomica-pipeline-archive/historical-qg-qc-samples/LB-23-0107-pa-29Jun2023_S6.bams.tar",
"s3://serenomica-pipeline-archive/historical-qg-qc-samples/LB-23-0112-pa-19Jul2023_S1.bams.tar",
"s3://serenomica-pipeline-archive/historical-qg-qc-samples/LB-23-0113-pa-19Jul2023_S2.bams.tar",
"s3://serenomica-pipeline-archive/historical-qg-qc-samples/LB-23-0119-pa-19Jul2023_S4.bams.tar",
"s3://serenomica-pipeline-archive/historical-qg-qc-samples/LB-23-0122-pa-19Jul2023_S5.bams.tar",
"s3://serenomica-pipeline-archive/historical-qg-qc-samples/LB-23-0123-pa-19Jul2023_S6.bams.tar",
"s3://serenomica-pipeline-archive/historical-qg-qc-samples/LB-23-0124-pa-19Jul2023_S7.bams.tar",
"s3://serenomica-pipeline-archive/historical-qg-qc-samples/LB-23-0125-pa-19Jul2023_S8.bams.tar",
"s3://serenomica-pipeline-archive/historical-qg-qc-samples/LB-23-0126-pa-19Jul2023_S9.bams.tar",
"s3://serenomica-pipeline-archive/historical-qg-qc-samples/LB-23-0128-pa-19Jul2023_S10.bams.tar",
"s3://serenomica-pipeline-archive/historical-qg-qc-samples/LB-23-0129-pa-19Jul2023_S3.bams.tar",
"s3://serenomica-pipeline-archive/historical-qg-qc-samples/LB-23-0130-pa-09Aug2023_S1.bams.tar",
"s3://serenomica-pipeline-archive/historical-qg-qc-samples/LB-23-0132-pa-09Aug2023_S2.bams.tar",
"s3://serenomica-pipeline-archive/historical-qg-qc-samples/LB-23-0133-pa-09Aug2023_S3.bams.tar",
"s3://serenomica-pipeline-archive/historical-qg-qc-samples/LB-23-0134-pa-09Aug2023_S4.bams.tar",
"s3://serenomica-pipeline-archive/historical-qg-qc-samples/LB-23-0135-pa-09Aug2023_S5.bams.tar",
"s3://serenomica-pipeline-archive/historical-qg-qc-samples/LB-23-0136-pa-09Aug2023_S6.bams.tar",
"s3://serenomica-pipeline-archive/historical-qg-qc-samples/LB-23-0137-pa-09Aug2023_S7.bams.tar",
"s3://serenomica-pipeline-archive/historical-qg-qc-samples/LB-23-0138-pa-30Aug2023_S1.bams.tar",
"s3://serenomica-pipeline-archive/historical-qg-qc-samples/LB-23-0140-pa-30Aug2023_S2.bams.tar",
"s3://serenomica-pipeline-archive/historical-qg-qc-samples/LB-23-0141-pa-30Aug2023_S3.bams.tar",
"s3://serenomica-pipeline-archive/historical-qg-qc-samples/LB-23-0142-pa-30Aug2023_S4.bams.tar",
"s3://serenomica-pipeline-archive/historical-qg-qc-samples/LB-23-0144-pa-30Aug2023_S5.bams.tar",
"s3://serenomica-pipeline-archive/historical-qg-qc-samples/LB-23-0145-pa-30Aug2023_S6.bams.tar",
"s3://serenomica-pipeline-archive/historical-qg-qc-samples/LB-23-0146-pa-30Aug2023_S7.bams.tar",
"s3://serenomica-pipeline-archive/historical-qg-qc-samples/LB-23-0147-pa-30Aug2023_S8.bams.tar",
"s3://serenomica-pipeline-archive/historical-qg-qc-samples/LB-23-0153-pa-25Oct2023_S1.bams.tar",
"s3://serenomica-pipeline-archive/historical-qg-qc-samples/LB-23-0156-pa-25Oct2023_S2.bams.tar",
"s3://serenomica-pipeline-archive/historical-qg-qc-samples/LB-23-0159-pa-25Oct2023_S3.bams.tar",
"s3://serenomica-pipeline-archive/historical-qg-qc-samples/LB-23-0160-pa-25Oct2023_S4.bams.tar",
"s3://serenomica-pipeline-archive/historical-qg-qc-samples/LB-23-0186-pa-14Feb2024_S1.bams.tar",
"s3://serenomica-pipeline-archive/historical-qg-qc-samples/LB-24-0001-pa-14Feb2024_S2.bams.tar",
"s3://serenomica-pipeline-archive/historical-qg-qc-samples/LB-24-0015-pa-14Feb2024_S3.bams.tar",
"s3://serenomica-pipeline-archive/historical-qg-qc-samples/LB-24-0019-pa-14Feb2024_S4.bams.tar",
"s3://serenomica-pipeline-archive/historical-qg-qc-samples/LB-24-0023-pa-14Feb2024_S5.bams.tar",
"s3://serenomica-pipeline-archive/historical-qg-qc-samples/LB-24-0024-pa-14Feb2024_S6.bams.tar",
"s3://serenomica-pipeline-archive/historical-qg-qc-samples/LB-24-0027-pa-14Feb2024_S7.bams.tar",
"s3://serenomica-pipeline-archive/historical-qg-qc-samples/LB-24-0037-pa-28Mar2024_S16.bams.tar",
"s3://serenomica-pipeline-archive/historical-qg-qc-samples/LB-24-0038-pa-28Mar2024_S17.bams.tar",
"s3://serenomica-pipeline-archive/historical-qg-qc-samples/LB-24-0044-pa-13May2024_S2.bams.tar",
"s3://serenomica-pipeline-archive/historical-qg-qc-samples/LB-24-0046-pa-13May2024_S3.bams.tar",
"s3://serenomica-pipeline-archive/historical-qg-qc-samples/LB-24-0047-pa-13May2024_S4.bams.tar",
"s3://serenomica-pipeline-archive/historical-qg-qc-samples/LB-24-0047-pa-23May2024_S1.bams.tar",
"s3://serenomica-pipeline-archive/historical-qg-qc-samples/LB-24-0048-pa-13May2024_S5.bams.tar",
"s3://serenomica-pipeline-archive/historical-qg-qc-samples/LB-24-0049-pa-13May2024_S6.bams.tar",
"s3://serenomica-pipeline-archive/historical-qg-qc-samples/LB-24-0049-pa-23May2024_S2.bams.tar",
"s3://serenomica-pipeline-archive/historical-qg-qc-samples/LB-24-0050-pa-13May2024_S7.bams.tar",
"s3://serenomica-pipeline-archive/historical-qg-qc-samples/LB-24-0050-pa-23May2024_S3.bams.tar",
"s3://serenomica-pipeline-archive/historical-qg-qc-samples/LB-24-0053-pa-13May2024_S8.bams.tar",
"s3://serenomica-pipeline-archive/historical-qg-qc-samples/LB-24-0053-pa-23May2024_S4.bams.tar",
"s3://serenomica-pipeline-archive/historical-qg-qc-samples/LB-24-0054-pa-13May2024_S9.bams.tar",
"s3://serenomica-pipeline-archive/historical-qg-qc-samples/LB-24-0055-pa-13May2024_S10.bams.tar",
"s3://serenomica-pipeline-archive/historical-qg-qc-samples/LB-24-0056-pa-13May2024_S11.bams.tar",
"s3://serenomica-pipeline-archive/historical-qg-qc-samples/LB-24-0057-pa-13May2024_S12.bams.tar",
"s3://serenomica-pipeline-archive/historical-qg-qc-samples/LB-24-0058-pa-13May2024_S13.bams.tar",
"s3://serenomica-pipeline-archive/historical-qg-qc-samples/LB-24-0059-pa-23May2024_S5.bams.tar",
"s3://serenomica-pipeline-archive/historical-qg-qc-samples/LB-24-0060-pa-23May2024_S6.bams.tar",
"s3://serenomica-pipeline-archive/historical-qg-qc-samples/LB-24-0063-pa-23May2024_S7.bams.tar",
"s3://serenomica-pipeline-archive/historical-qg-qc-samples/LB-24-0064-pa-23May2024_S8.bams.tar",
"s3://serenomica-pipeline-archive/historical-qg-qc-samples/LB-24-0065-pa-23May2024_S9.bams.tar",
"s3://serenomica-pipeline-archive/historical-qg-qc-samples/LB-GVA-HC-246-13Jun2023_S10.bams.tar",
"s3://serenomica-pipeline-archive/historical-qg-qc-samples/LB-GVA-ME-339-13Jun2023_S9.bams.tar",
"s3://serenomica-pipeline-archive/historical-qg-qc-samples/LB-GVA-PA-307-13Jun2023_S8.bams.tar",
"s3://serenomica-pipeline-archive/historical-qg-qc-samples/LB-GVA-PA-308-13Jun2023_S7.bams.tar",
]
# "/home/darren/Documents/4_data/3_internal/1_panels/TWIST/twist_LB_probes_plus_30bp_merged.sorted.bed"
bed_path = "/home/darren/Documents/4_data/3_internal/1_panels/TWIST/twist_LB_probes_plus_30bp_merged.sorted.bed"
bed_path = "/home/darren/Documents/4_data/3_internal/1_panels/Aglient/LB_3413441_Covered_50ext.sorted.bed"
ref_path = "/home/darren/Documents/4_data/1_genomes/human/hg38/Homo_sapiens_assembly38.fasta"
main(s3_paths, bed_path, ref_path, cli_bin="aws")
main(s3_paths, bed_path, ref_path, cli_bin="s3cmd", tars=True)