Hi MaAsLin Team,
I am running a longitudinal analysis using MaAsLin 3 on relative abundances obtained via MetaPhlAn. My goal is to look for differential changes in the microbiome leading up to disease conversion, while adjusting for age.
My Model: I am using the following formula to test the interaction between Diagnosis and Relative_timepoint (Time-to-conversion), while adjusting for timepoint_numeric (Subject Age):
formula = '~ Diagnosis * Relative_timepoint + timepoint_numeric'
-
Diagnosis: Factor (Case/Control) -
Relative_timepoint: Numeric (Negative months counting up to conversion at 0) -
timepoint_numeric: Numeric (Subject age in months)
The Issue: I have significant q-values (< 0.1) for the interaction term (Diagnosis:Relative_timepoint) in my all_results.tsv. However, the automatic output plots are not generating figures for this interaction. For example, when I navigate to the figures/assciation_plots/ directory, there are only timepoint_numeric plots.
It seems MaAsLin is prioritizing timepoint_numeric (Age) for the X-axis or skipping the interaction plot entirely, maybe because there are two continuous time variables in the model?
My Question: Is there a parameter in maaslin3 or maaslin_plot_results_from_output that allows me to force the plotter to use Relative_timepoint as the X-axis variable or to generate plots for both timepoint_numeric & Relative_timepoint?
I include timepoint_numeric because it is necessary to control for the effects of development on the microbiome in this disease context, but our scientific interest lies in the differences approaching conversion along the Relative_timepoint timeline. Ideally, there would be a way to do this and avoid manually recreating with ggplot, however I’m fine to do that if necessary. If that is what it takes, where might I start with this process?
Thanks!
Reference code:
msln3_output_res <- maaslin3(
input_data = species_mpa_relab_filt,
input_metadata = maasalin_metadata,
output = 'mpa_msln3_res',
formula = '~ Diagnosis * Relative_timepoint + timepoint_numeric',
normalization = 'NONE',
transform = 'LOG',
# Set to 0 because I have already filtered the data.
min_abundance = 0,
min_prevalence = 0,
standardize = FALSE,
augment = TRUE,
cores = 60
)