Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Salmon strand inference is often wrong #1185

Closed
zeehio opened this issue Jan 9, 2024 · 4 comments · Fixed by #1306
Closed

Salmon strand inference is often wrong #1185

zeehio opened this issue Jan 9, 2024 · 4 comments · Fixed by #1306

Comments

@zeehio
Copy link

zeehio commented Jan 9, 2024

Description of feature

Hi,

Thanks for all the work on this pipeline.

I have had to analyse several public datasets, and I plan to analyse more. Since the strandedness on such datasets is usually not provided, I use the "strandedness: auto" option in the pipeline to guess it.

Quite often (apologies for not having statistics about that, I could try to get some if needed) I get "WARNING: Fail Strand Check" messages, and I find that Salmon had set the strandedness to "reverse" when infer_experiment.py founds it to be "unstranded".

When this happens, I set the strandedness to "unstranded" and rerun the pipeline.

Would it make sense for the pipeline to just reset the strandedness and rerun automatically?

Thanks again

@mvheetve
Copy link

Hi there,

I'm seeing behaviour, which could be similar to your issue, in data I received from several collaborators. The logs show for example:
Please check MultiQC report: 17/47 samples failed strandedness check

When I look in detail at the infer_experiment files, I get:

This is PairEnd Data
Fraction of reads failed to determine: 0.2379
Fraction of reads explained by "1++,1--,2+-,2-+": 0.0050
Fraction of reads explained by "1+-,1-+,2++,2--": 0.7571

This is PairEnd Data
Fraction of reads failed to determine: 0.2594
Fraction of reads explained by "1++,1--,2+-,2-+": 0.0084
Fraction of reads explained by "1+-,1-+,2++,2--": 0.7323

This is PairEnd Data
Fraction of reads failed to determine: 0.2518
Fraction of reads explained by "1++,1--,2+-,2-+": 0.0050
Fraction of reads explained by "1+-,1-+,2++,2--": 0.7432

This is PairEnd Data
Fraction of reads failed to determine: 0.2775
Fraction of reads explained by "1++,1--,2+-,2-+": 0.0047
Fraction of reads explained by "1+-,1-+,2++,2--": 0.7178

This is PairEnd Data
Fraction of reads failed to determine: 0.2672
Fraction of reads explained by "1++,1--,2+-,2-+": 0.0040
Fraction of reads explained by "1+-,1-+,2++,2--": 0.7288

Results like these are not covered by the examples in the rseqc docs on infer_experiment.py. I was wondering:

  1. If you are seeing similar results or if your data are clear cut unstranded, like in example 1 of the rseqc docs on infer_experiment.py?
  2. How anyone reading this would proceed with for example StringTie2? My idea would to treat this as fr-firststrand, but maybe this is incorrect because of the high amount of reads with undetermined strandedness...
  3. Does anyone have an idea where the 25% of reads with undetermined strandedness could come from and if this can be prevented in the future?

Regards
Mattias

@mvheetve mvheetve reopened this Jan 30, 2024
@drpatelh drpatelh added this to the 3.15.0 milestone May 13, 2024
@me-orlov
Copy link

Hi, thank you for posting these questions! I would love to hear from either of you, if you have any further thoughts on the issue! I too am getting similar warnings across the board. In all cases, salmon marks the experiment samples as "reverse" and infer_experiment.py identifies something like 28% reverse and 75% undetermined. Do you think I should be concerned, or proceed ahead trusting the salmon identification? Thank you!

@pinin4fjords
Copy link
Member

The reason this comes up is because the auto strand setting comes from Salmon based on its pseudo-alignment against transcript sequences, while the final strandedness check is based on genomic alignments and RSeQC's assessment.

The main source of the discrepancy is the reads of undetermined strand in RSeQC which play a part in the the assessment the pipeline makes bases on those statistics, and (possibly) shouldn't. I've opened the above PR to discuss and/ or address this.

@pinin4fjords
Copy link
Member

Tackled in #1306

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

Successfully merging a pull request may close this issue.

5 participants