Skip to content

Failure to Match Sample Names from methylseq-Bismark Cytosine Report Files Without Underscores #89

Description

@nickostarkey

When running DMRichR::processBismark(), I encountered an error related to sample name matching between the metadata file and Bismark cytosine report files. The function expects sample names in the metadata to match the names of the cytosine report files, but the pattern matching logic only works if the sample name is followed by an underscore in the filename. This causes issues with default Bismark cytosine report filenames (e.g., generated by Nextflow's methylseq pipeline with the --cytosine_report option), which don’t include an underscore before the file extension.

Steps to Reproduce:

  1. Prepare a metadata file (sample_info.xlsx) with a Name column containing sample names like SRR24725548.
  2. Generate Bismark cytosine report files using Nextflow’s methylseq with --cytosine_report, resulting in filenames like SRR24725548.CpG_report.txt.gz.
  3. Run the following code in R:

library(DMRichR) DMRichR::DM.R(genome="hg38", testCovariate="Diagnosis", cutoff=0.05)

The function throws the following error:

Assigning sample metadata with Diagnosis as factor of interest...

Error in DMRichR::processBismark(files = list.files(path = getwd(), pattern = "*.CpG_report.txt.gz"),  :

  sampleNames(bs) == as.character(meta$Name) are not all TRUE

> sampleNames(bs)

Error in h(simpleError(msg, call)) : 

  error in evaluating the argument 'object' in selecting a method for function 'sampleNames': object 'bs' not found

Actual Behavior

The issue arises because the bs object isn’t created. The sample names in meta$Name (e.g., SRR24725548) don’t match the filenames (e.g., SRR24725548.CpG_report.txt.gz) due to DMRichR’s pattern matching, which seems to expect an underscore after the sample name. Since the default Bismark filenames lack an underscore before .CpG_report.txt.gz, the matching fails.

Expected Behavior

I resolved this by manually renaming all cytosine report files to include an underscore after the sample name. For example:
cmd: mv SRR24725548.CpG_report.txt.gz SRR24725548_.CpG_report.txt.gz

This allowed the sample names to match and the function to proceed. However, this is inconvenient, especially when dealing with large datasets.

Suggested Fix

It would be great if DMRichR’s pattern matching could be updated to handle filenames without requiring an underscore after the sample name. Perhaps the function could use a more flexible regex pattern or allow users to specify a custom pattern for matching sample names to filenames.

Additional Information

  • DMRichR Version:

    > packageVersion("DMRichR")
    
    [1] ‘1.7.8’
    
  • R Version:

> R.version.string

[1] "R version 4.3.3 (2024-02-29)"

Operating System:

PRETTY_NAME="Ubuntu 24.04.2 LTS"
NAME="Ubuntu"
VERSION_ID="24.04"

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions