Hi-C Compartments Calling (MCP-based)
Overview
This skill provides an automated workflow for compartments calling on .mcool, .cool or .hic Hi-C data.
Main steps include:
- Refer to the Inputs & Outputs section to verify required files and output structure.
- Always prompt user for genome assembly used.
- Always prompt user for resolution used to call compartments. ~50-250 kb is recommended. 100 kb is default.
- Locate the genome FASTA file from homer genome fasta file based on user input.
- Rename chromosomes in the .mcool or .cool file to satisfy the chromosome format with "chr".
- Generate chromosome-arm view files for compartment calling after changing the chromosome name.
- Perform PCA-based compartment analysis and extract the first principal component (PC1).
- Generate compartment interaction saddle plots and BigWig outputs for visualization.
When to Use This Skill
Use this skill when:
- You want to identify A/B compartments from Hi-C
.mcool or .cool files.
- You need PC1 compartment scores and bigWig tracks for genome browser visualization.
- You want a reproducible, normalized, automated compartment-calling workflow.
Inputs & Outputs
Inputs
- File format: .mcool, .cool, or .hic (Hi-C data file) data.
- Genome assembly: Prompt the user for genome assembly used.
- Resolution: Prompt the user for resolution used to call compartments. The default resolution is 100 kb.
Outputs
${sample}_Compartments_calling/
compartments/
eigs.${resolution}.cis.vecs.tsv # PC1 compartment scores
eigs.${resolution}.bw
eigs.${resolution}.cis.lam.txt
saddle.cis.${resolution}.digitized.tsv
saddle.cis.${resolution}.saddledump.npz
plots/ # PC1 track for genome browser
saddle.cis.${resolution}.pdf # Saddle plot visualization
temp/
expected.${resolution}.cis.tsv
view_${genome}.tsv # Chromosome-arm view definition
bins.${res}.tsv
gc.${res}.tsv
Allowed Tools
When using this skill, you should restrict yourself to the following MCP tools from server cooler-tools, cooltools-tools, plot-hic-tools, project-init-tools, genome-locate-tools:
mcp__project-init-tools__project_init
mcp__genome-locate-tools__genome_locate_fasta
mcp__HiCExplorer-tools__hic_to_mcool
mcp__cooler-tools__list_mcool_resolutions
mcp__cooler-tools__harmonize_chrom_names
mcp__cooler-tools__make_view_chromarms
mcp__cooler-tools__dump_bins_for_gc
mcp__cooltools-tools__run_genome_gc
mcp__cooltools-tools__run_expected_cis
mcp__cooltools-tools__run_eigs_cis
mcp__cooltools-tools__run_saddle
mcp__plot-hic-tools__plot_saddle_pdf
Do NOT fall back to:
- raw shell commands (
cooler dump, cooltools eigs-cis, cooltools saddle, etc.)
- ad-hoc Python snippets (e.g. importing
cooler, bioframe, matplotlib manually in the reply).
Decision Tree
Step 0 — Gather Required Information from the User
Before calling any tool, ask the user:
Sample name (sample): used as prefix and for the output directory ${sample}_Compartments_calling.
Genome assembly (genome): e.g. hg38, mm10, danRer11.
- Never guess or auto-detect.
Hi-C matrix path/URI (mcool_uri): e.g. .mcool file path or .hic file path.
path/to/sample.mcool::/resolutions/100000 (.mcool file with resolution specified)
- or
.cool file path
- or
.hic file path
Resolution (resolution): default 100000 (100 kb).
- If user does not specify, use
100000 as default.
- Must be the same as the resolution used for
${mcool_uri}
Step 1 — Initialize Project & Locate Genome FASTA
- Make director for this project:
Call:
mcp__project-init-tools__project_init
with:
sample: the user-provided sample name
task: loop_calling
The tool will:
- Create
${sample}_loop_calling directory.
- Return the full path of the
${sample}_loop_calling directory, which will be used as ${proj_dir}.
- If the user provides a
.hic file, convert it to .mcool file using mcp__HiCExplorer-tools__hic_to_mcool tool:
Call:
mcp__HiCExplorer-tools__hic_to_mcool
with:
input_hic: the user-provided path (e.g. input.hic)
sample: the user-provided sample name
proj_dir: directory to save the view file. In this skill, it is the full path of the ${sample}_loop_calling directory returned by mcp__project-init-tools__project_init.
The tool will:
- Convert the
.hic file to .mcool file.
- Return the path of the
.mcool file.
If the conversion is successful, update ${mcool_uri} to the path of the .mcool file.
- Locate genome fasta file:
Call:
mcp__genome-locate-tools__genome_locate_fasta
with:
genome: the user-provided genome assembly
The tool will:
- Locate genome FASTA.
- Verify the FASTA exists.
Step 2: List Available Resolutions in the .mcool file & Modify the Chromosome Names if Necessary
- Check the resolutions in
mcool_uri:
Call:
mcp__cooler-tools__list_mcool_resolutions
with:
mcool_path: the user-provided path (e.g. input.mcool) without resolution specified.
The tool will:
- List all resolutions in the .mcool file.
- Return the resolutions as a list.
If the user defined or default ${resolution} is not found in the list, ask the user to specify the resolution again.
Else, use ${resolution} for the following steps.
- Check if the chromosome names in the .mcool file are started with "chr", and if not, modify them to start with "chr":
Call:
mcp__cooler-tools__harmonize_chrom_names
with:
sample: the user-provided sample name
proj_dir: directory to save the expected-cis and eigs-cis files. In this skill, it is the full path of the ${sample}_Compartments_calling directory returned by mcp__project-init-tools__project_init
mcool_uri: cooler URI with resolution specified, e.g. input.mcool::/resolutions/${resolution}
resolution: ${resolution} must be the same as the resolution used for ${mcool_uri} and must be an integer
The tool will:
- Check if the chromosome names in the .mcool file.
- If not, harmonize the chromosome names in the .mcool file.
Step 3 — Create Chromosome-Arm View File
Use bioframe to define chromosome arms based on centromeres:
Call:
mcp__cooler-tools__make_view_chromarms
with:
proj_dir: directory to save the expected-cis and eigs-cis files. In this skill, it is the full path of the ${sample}_Compartments_calling directory returned by mcp__project-init-tools__project_init
mcool_uri: cooler URI with resolution specified, e.g. input.mcool::/resolutions/${resolution}
resolution: ${resolution} must be the same as the resolution used for ${mcool_uri} and must be an integer
genome: genome assembly
The tool will:
- Fetch chromsizes and centromeres via
bioframe.
- Generate chromosomal arms and filter them to those present in the cooler.
- Return the path of the view file under
${proj_dir}/temp/ directory.
Step 4 — Compute GC Track for Bins
- Dump bins for GC track:
Call:
mcp__cooler-tools__dump_bins_for_gc
with:
sample: the user-provided sample name
proj_dir: directory to save the GC track file. In this skill, it is the full path of the ${sample}_Compartments_calling directory returned by mcp__project-init-tools__project_init
mcool_uri: cooler URI with resolution specified, e.g. input.mcool::/resolutions/${resolution}
resolution: ${resolution} must be the same as the resolution used for ${mcool_uri} and must be an integer
The tool will:
- Dump bins at the specified resolution from the cooler.
- Return the path of the bins file under
${proj_dir}/temp/ directory.
- Compute GC track:
Call:
mcp__cooltools-tools__run_genome_gc
with:
sample: the user-provided sample name
proj_dir: directory to save the GC track file. In this skill, it is the full path of the ${sample}_Compartments_calling directory returned by mcp__project-init-tools__project_init
mcool_uri: cooler URI with resolution specified, e.g. input.mcool::/resolutions/${resolution}
resolution: ${resolution} must be the same as the resolution used for ${mcool_uri} and must be an integer
genome: genome assembly
The tool will:
- Compute GC content for each bin.
- Return the path of the GC track file under
${proj_dir}/temp/ directory.
Step 5 — Run Expected-cis and Eigs-cis (PCA Compartment Calling)
- Calculate expected cis:
Call:
mcp__cooltools-tools__run_expected_cis
with:
sample: the user-provided sample name
proj_dir: directory to save the expected-cis and eigs-cis files. In this skill, it is the full path of the ${sample}_Compartments_calling directory returned by mcp__project-init-tools__project_init
mcool_uri: cooler URI with resolution specified, e.g. input.mcool::/resolutions/${resolution}
resolution: ${resolution} must be the same as the resolution used for ${mcool_uri} and must be an integer
view_path: the path to the view file (e.g. ${proj_dir}/temp/view_${genome}.tsv)
clr_weight_name: the name of the weight column (default: weight)
ignore_diags: the number of diagonals to ignore based on resolution
The tool will:
- Generate expected cis file.
- Return the path of the expected cis file under
${proj_dir}/temp/ directory.
- Calculate eigs cis:
Call:
mcp__cooltools-tools__run_eigs_cis
with:
sample: the user-provided sample name
proj_dir: directory to save the expected-cis and eigs-cis files. In this skill, it is the full path of the ${sample}_Compartments_calling directory returned by mcp__project-init-tools__project_init
mcool_uri: cooler URI with resolution specified, e.g. input.mcool::/resolutions/${resolution}
resolution: ${resolution} must be the same as the resolution used for ${mcool_uri} and must be an integer
view_path: the view TSV from Step 3 (e.g. view_${genome}.tsv)
gc_tsv: GC track TSV from Step 4
clr_weight_name: balancing column name (default "weight", but can be set based on clr.bins().columns if the user tells you the correct name)
n_eigs: the number of principal components to compute (default 1)
make_bigwig: whether to make bigwig file for PC1 track (default True)
This tool will:
- Run
cooltools expected-cis to compute expected contact frequencies.
- Run
cooltools eigs-cis to perform PCA and extract PC1.
- Return the path of the eigs-cis vecs file under
${proj_dir}/compartments/ directory.
- Return the path of the bigWig file under
${proj_dir}/compartments/ directory.
If the user reports an error about balancing weights:
- Ask the user which weight column should be used.
- Re-run
expected_and_eigs with the correct clr_weight_name.
Step 6 — Run Saddle Analysis
Call:
mcp__cooltools-tools__run_saddle
with:
sample: the user-provided sample name
proj_dir: directory to save the saddle file. In this skill, it is the full path of the ${sample}_Compartments_calling directory returned by mcp__project-init-tools__project_init
mcool_uri: cooler URI with resolution specified, e.g. input.mcool::/resolutions/${resolution}
resolution: ${resolution} must be the same as the resolution used for ${mcool_uri} and must be an integer
view_path: the view TSV from Step 3 (e.g. view_${genome}.tsv)
eigs_vecs_tsv: the eigs-cis vecs TSV from Step 5 (e.g. compartments/eigs.${resolution}.cis.vecs.tsv)
expected_cis_tsv: the expected-cis TSV from Step 5 (e.g. temp/expected_cis.${resolution}.tsv)
clr_weight_name: balancing column name (default "weight", but can be set based on clr.bins().columns if the user tells you the correct name)
qrange_low and qrange_high: default 0.02 and 0.98
The tool will:
- Run
cooltools saddle.
- Generate saddle dump and related outputs, typically:
- Return the path of the saddle dump file under
${proj_dir}/compartments/ directory.
- Return the path of the other related outputs under
${proj_dir}/compartments/ directory.
Step 7 — Plot Saddle as PDF
Call:
mcp__plot-hic-tools__plot_saddle_pdf
with:
sample: the user-provided sample name
proj_dir: directory to save the saddle file. In this skill, it is the full path of the ${sample}_Compartments_calling directory returned by mcp__project-init-tools__project_init
resolution: ${resolution} must be the same as the resolution used for ${mcool_uri} and must be an integer
chr_name: the user-provided chromosome name, e.g. chr1
This tool will:
- Load the corresponding
.saddledump.npz file.
- Plot the saddle matrix with
LogNorm(1e-1, 1e1) and RdBu_r colormap.
- Return the path of the compartment scores distribution PDF file under
${proj_dir}/plots/ directory.
- Return the path of the saddle plot PDF file under
${proj_dir}/plots/ directory.
- Return the path of the PC1 track PDF file under
${proj_dir}/plots/ directory.
If the saddledump file is missing, inform the user to run run_saddle first.
Best Practices
- Always confirm the genome and resolution explicitly with the user.
- Always use the defined MCP tools instead of ad-hoc code.
- If the user asks “how to run this manually”, you may conceptually describe the steps but still prefer to recommend using the MCP pipeline for reproducibility.
- If multiple resolutions are required, re-run the MCP tools with different
resolution values and keep outputs in the same ${proj_dir} directory, using resolution in filenames for disambiguation.
1---2name: hic-compartments-calling3description: This skill performs PCA-based A/B compartments calling on Hi-C .mcool datasets using pre-defined MCP tools from the cooler-tools, cooltools-tools, and plot-hic-tools servers.4---5# Hi-C Compartments Calling (MCP-based)67## Overview8This skill provides an automated workflow for compartments calling on .mcool, .cool or .hic Hi-C data.910Main steps include:11- Refer to the **Inputs & Outputs** section to verify required files and output structure.12- **Always prompt user** for genome assembly used.13- **Always prompt user** for resolution used to call compartments. ~50-250 kb is recommended. 100 kb is default.14- **Locate the genome FASTA file** from homer genome fasta file based on user input.15- **Rename chromosomes** in the .mcool or .cool file to satisfy the chromosome format with "chr".16- **Generate chromosome-arm view files** for compartment calling after changing the chromosome name.17- Perform **PCA-based compartment analysis** and extract the first principal component (PC1).18- **Generate compartment interaction saddle plots** and BigWig outputs for visualization.1920## When to Use This Skill2122Use this skill when:2324- You want to identify A/B compartments from Hi-C `.mcool` or `.cool` files.25- You need PC1 compartment scores and bigWig tracks for genome browser visualization.26- You want a reproducible, normalized, automated compartment-calling workflow.272829## Inputs & Outputs3031### Inputs3233- **File format:** .mcool, .cool, or .hic (Hi-C data file) data.34- **Genome assembly:** Prompt the user for genome assembly used.35- **Resolution:** Prompt the user for resolution used to call compartments. The default resolution is 100 kb.3637### Outputs3839```bash40${sample}_Compartments_calling/41 compartments/42 eigs.${resolution}.cis.vecs.tsv # PC1 compartment scores 43 eigs.${resolution}.bw44 eigs.${resolution}.cis.lam.txt45 saddle.cis.${resolution}.digitized.tsv46 saddle.cis.${resolution}.saddledump.npz47 plots/ # PC1 track for genome browser 48 saddle.cis.${resolution}.pdf # Saddle plot visualization 49 temp/50 expected.${resolution}.cis.tsv51 view_${genome}.tsv # Chromosome-arm view definition52 bins.${res}.tsv53 gc.${res}.tsv54```55---5657## Allowed Tools5859When using this skill, you should restrict yourself to the following MCP tools from server `cooler-tools`, `cooltools-tools`, `plot-hic-tools`, `project-init-tools`, `genome-locate-tools`:60- `mcp__project-init-tools__project_init`61- `mcp__genome-locate-tools__genome_locate_fasta`62- `mcp__HiCExplorer-tools__hic_to_mcool`63- `mcp__cooler-tools__list_mcool_resolutions`64- `mcp__cooler-tools__harmonize_chrom_names`65- `mcp__cooler-tools__make_view_chromarms`66- `mcp__cooler-tools__dump_bins_for_gc`67- `mcp__cooltools-tools__run_genome_gc`68- `mcp__cooltools-tools__run_expected_cis`69- `mcp__cooltools-tools__run_eigs_cis`70- `mcp__cooltools-tools__run_saddle`71- `mcp__plot-hic-tools__plot_saddle_pdf`7273Do NOT fall back to:7475- raw shell commands (`cooler dump`, `cooltools eigs-cis`, `cooltools saddle`, etc.)76- ad-hoc Python snippets (e.g. importing `cooler`, `bioframe`, `matplotlib` manually in the reply).7778---7980## Decision Tree8182### Step 0 — Gather Required Information from the User8384Before calling any tool, ask the user:85861. Sample name (`sample`): used as prefix and for the output directory `${sample}_Compartments_calling`.87882. Genome assembly (`genome`): e.g. `hg38`, `mm10`, `danRer11`. 89 - **Never** guess or auto-detect.90913. Hi-C matrix path/URI (`mcool_uri`): e.g. `.mcool` file path or `.hic` file path.92 - `path/to/sample.mcool::/resolutions/100000` (.mcool file with resolution specified)93 - or `.cool` file path94 - or `.hic` file path95964. Resolution (`resolution`): default `100000` (100 kb). 97 - If user does not specify, use `100000` as default.98 - Must be the same as the resolution used for `${mcool_uri}`99100101---102103### Step 1 — Initialize Project & Locate Genome FASTA1041051061. Make director for this project:107108Call:109110- `mcp__project-init-tools__project_init`111112with:113114- `sample`: the user-provided sample name115- `task`: loop_calling116117The tool will:118119- Create `${sample}_loop_calling` directory.120- Return the full path of the `${sample}_loop_calling` directory, which will be used as `${proj_dir}`.121122---1231242. If the user provides a `.hic` file, convert it to `.mcool` file using `mcp__HiCExplorer-tools__hic_to_mcool` tool:125126Call:127- `mcp__HiCExplorer-tools__hic_to_mcool`128129with:130- `input_hic`: the user-provided path (e.g. `input.hic`)131- `sample`: the user-provided sample name132- `proj_dir`: directory to save the view file. In this skill, it is the full path of the `${sample}_loop_calling` directory returned by `mcp__project-init-tools__project_init`.133134The tool will:135- Convert the `.hic` file to `.mcool` file.136- Return the path of the `.mcool` file.137138If the conversion is successful, update `${mcool_uri}` to the path of the `.mcool` file.139140---1411423. Locate genome fasta file:143144Call:145146- `mcp__genome-locate-tools__genome_locate_fasta`147148with:149150- `genome`: the user-provided genome assembly151152The tool will:153154- Locate genome FASTA. 155- Verify the FASTA exists.156157---158159160### Step 2: List Available Resolutions in the .mcool file & Modify the Chromosome Names if Necessary1611621. Check the resolutions in `mcool_uri`:163164Call:165166- `mcp__cooler-tools__list_mcool_resolutions`167168with:169170- `mcool_path`: the user-provided path (e.g. `input.mcool`) without resolution specified.171172The tool will:173174- List all resolutions in the .mcool file.175- Return the resolutions as a list.176177If the user defined or default `${resolution}` is not found in the list, ask the user to specify the resolution again.178Else, use `${resolution}` for the following steps.179180---1811822. Check if the chromosome names in the .mcool file are started with "chr", and if not, modify them to start with "chr":183184Call:185186- `mcp__cooler-tools__harmonize_chrom_names`187188with:189- `sample`: the user-provided sample name190- `proj_dir`: directory to save the expected-cis and eigs-cis files. In this skill, it is the full path of the `${sample}_Compartments_calling` directory returned by `mcp__project-init-tools__project_init`191- `mcool_uri`: cooler URI with resolution specified, e.g. `input.mcool::/resolutions/${resolution}`192- `resolution`: `${resolution}` must be the same as the resolution used for `${mcool_uri}` and must be an integer193194The tool will:195- Check if the chromosome names in the .mcool file.196- If not, harmonize the chromosome names in the .mcool file.197198---199200201### Step 3 — Create Chromosome-Arm View File202203Use `bioframe` to define chromosome arms based on centromeres:204205Call:206207- `mcp__cooler-tools__make_view_chromarms`208209with:210211- `proj_dir`: directory to save the expected-cis and eigs-cis files. In this skill, it is the full path of the `${sample}_Compartments_calling` directory returned by `mcp__project-init-tools__project_init`212- `mcool_uri`: cooler URI with resolution specified, e.g. `input.mcool::/resolutions/${resolution}`213- `resolution`: `${resolution}` must be the same as the resolution used for `${mcool_uri}` and must be an integer214- `genome`: genome assembly215216The tool will:217218- Fetch chromsizes and centromeres via `bioframe`.219- Generate chromosomal arms and filter them to those present in the cooler.220- Return the path of the view file under `${proj_dir}/temp/` directory.221222---223224225### Step 4 — Compute GC Track for Bins2262271. Dump bins for GC track:228229Call:230- `mcp__cooler-tools__dump_bins_for_gc`231with:232- `sample`: the user-provided sample name233- `proj_dir`: directory to save the GC track file. In this skill, it is the full path of the `${sample}_Compartments_calling` directory returned by `mcp__project-init-tools__project_init`234- `mcool_uri`: cooler URI with resolution specified, e.g. `input.mcool::/resolutions/${resolution}`235- `resolution`: `${resolution}` must be the same as the resolution used for `${mcool_uri}` and must be an integer236237The tool will:238- Dump bins at the specified resolution from the cooler.239- Return the path of the bins file under `${proj_dir}/temp/` directory.2402412422. Compute GC track:243244Call:245246- `mcp__cooltools-tools__run_genome_gc`247248with:249250- `sample`: the user-provided sample name251- `proj_dir`: directory to save the GC track file. In this skill, it is the full path of the `${sample}_Compartments_calling` directory returned by `mcp__project-init-tools__project_init`252- `mcool_uri`: cooler URI with resolution specified, e.g. `input.mcool::/resolutions/${resolution}`253- `resolution`: `${resolution}` must be the same as the resolution used for `${mcool_uri}` and must be an integer254- `genome`: genome assembly255256The tool will:257258- Compute GC content for each bin.259- Return the path of the GC track file under `${proj_dir}/temp/` directory.260261---262263264### Step 5 — Run Expected-cis and Eigs-cis (PCA Compartment Calling)2652661. Calculate expected cis:267268Call:269- `mcp__cooltools-tools__run_expected_cis`270271with:272- `sample`: the user-provided sample name273- `proj_dir`: directory to save the expected-cis and eigs-cis files. In this skill, it is the full path of the `${sample}_Compartments_calling` directory returned by `mcp__project-init-tools__project_init`274- `mcool_uri`: cooler URI with resolution specified, e.g. `input.mcool::/resolutions/${resolution}`275- `resolution`: `${resolution}` must be the same as the resolution used for `${mcool_uri}` and must be an integer276- `view_path`: the path to the view file (e.g. `${proj_dir}/temp/view_${genome}.tsv`)277- `clr_weight_name`: the name of the weight column (default: `weight`)278- `ignore_diags`: the number of diagonals to ignore based on resolution279280The tool will:281- Generate expected cis file.282- Return the path of the expected cis file under `${proj_dir}/temp/` directory.2832842852. Calculate eigs cis:286287Call:288289- `mcp__cooltools-tools__run_eigs_cis`290291with:292293- `sample`: the user-provided sample name294- `proj_dir`: directory to save the expected-cis and eigs-cis files. In this skill, it is the full path of the `${sample}_Compartments_calling` directory returned by `mcp__project-init-tools__project_init`295- `mcool_uri`: cooler URI with resolution specified, e.g. `input.mcool::/resolutions/${resolution}`296- `resolution`: `${resolution}` must be the same as the resolution used for `${mcool_uri}` and must be an integer297- `view_path`: the view TSV from Step 3 (e.g. `view_${genome}.tsv`)298- `gc_tsv`: GC track TSV from Step 4299- `clr_weight_name`: balancing column name (default `"weight"`, but can be set based on `clr.bins().columns` if the user tells you the correct name)300- `n_eigs`: the number of principal components to compute (default 1)301- `make_bigwig`: whether to make bigwig file for PC1 track (default True)302303This tool will:304305- Run `cooltools expected-cis` to compute expected contact frequencies.306- Run `cooltools eigs-cis` to perform PCA and extract PC1.307- Return the path of the eigs-cis vecs file under `${proj_dir}/compartments/` directory.308- Return the path of the bigWig file under `${proj_dir}/compartments/` directory.309310If the user reports an error about balancing weights:311312- Ask the user which weight column should be used.313- Re-run `expected_and_eigs` with the correct `clr_weight_name`.314315---316317### Step 6 — Run Saddle Analysis318319Call:320321- `mcp__cooltools-tools__run_saddle`322323with:324325- `sample`: the user-provided sample name326- `proj_dir`: directory to save the saddle file. In this skill, it is the full path of the `${sample}_Compartments_calling` directory returned by `mcp__project-init-tools__project_init`327- `mcool_uri`: cooler URI with resolution specified, e.g. `input.mcool::/resolutions/${resolution}`328- `resolution`: `${resolution}` must be the same as the resolution used for `${mcool_uri}` and must be an integer329- `view_path`: the view TSV from Step 3 (e.g. `view_${genome}.tsv`)330- `eigs_vecs_tsv`: the eigs-cis vecs TSV from Step 5 (e.g. `compartments/eigs.${resolution}.cis.vecs.tsv`)331- `expected_cis_tsv`: the expected-cis TSV from Step 5 (e.g. `temp/expected_cis.${resolution}.tsv`)332- `clr_weight_name`: balancing column name (default `"weight"`, but can be set based on `clr.bins().columns` if the user tells you the correct name)333- `qrange_low` and `qrange_high`: default `0.02` and `0.98`334335The tool will:336337- Run `cooltools saddle`.338- Generate saddle dump and related outputs, typically: 339- Return the path of the saddle dump file under `${proj_dir}/compartments/` directory.340- Return the path of the other related outputs under `${proj_dir}/compartments/` directory.341342---343344### Step 7 — Plot Saddle as PDF345346Call:347348- `mcp__plot-hic-tools__plot_saddle_pdf`349350with:351352- `sample`: the user-provided sample name353- `proj_dir`: directory to save the saddle file. In this skill, it is the full path of the `${sample}_Compartments_calling` directory returned by `mcp__project-init-tools__project_init`354- `resolution`: `${resolution}` must be the same as the resolution used for `${mcool_uri}` and must be an integer355- `chr_name`: the user-provided chromosome name, e.g. `chr1`356357This tool will:358359- Load the corresponding `.saddledump.npz` file.360- Plot the saddle matrix with `LogNorm(1e-1, 1e1)` and `RdBu_r` colormap.361- Return the path of the compartment scores distribution PDF file under `${proj_dir}/plots/` directory.362- Return the path of the saddle plot PDF file under `${proj_dir}/plots/` directory.363- Return the path of the PC1 track PDF file under `${proj_dir}/plots/` directory.364365If the saddledump file is missing, inform the user to run `run_saddle` first.366367---368369## Best Practices370371- Always confirm the genome and resolution explicitly with the user.372- Always use the defined MCP tools instead of ad-hoc code.373- If the user asks “how to run this manually”, you may conceptually describe the steps but still **prefer** to recommend using the MCP pipeline for reproducibility.374- If multiple resolutions are required, re-run the MCP tools with different `resolution` values and keep outputs in the same `${proj_dir}` directory, using resolution in filenames for disambiguation.375```