Error running MTX model 3.0 tutorial

Hi Biobakery team,

I am going through the MTX model 3.0 tutorial on MaAsLin 3 using the demo data from maaslin3_tutorial_files and I am getting an error when running the code on section 3.3.3:

preprocess_out <- preprocess_dna_mtx(df_input_dnadata, df_input_data)
fit_maaslin_mtx_mgx <- maaslin3(
input_data = preprocess_out$rna_table,
input_metadata = df_input_metadata,
output = 'demo_output_mtx_mgx',
fixed_effects = c('diagnosis', 'dysbiosis_state', 'antibiotics', 'age'),
random_effects = c('participant_id'),
feature_specific_covariate = preprocess_out$dna_table,
feature_specific_covariate_name = 'DNA',
feature_specific_covariate_record = FALSE,
coef_plot_vars = c('dysbiosis_state dysbiosis_CD', 'diagnosis CD'),
heatmap_vars = c('dysbiosis_state dysbiosis_UC', 'diagnosis UC', 'age',
'antibiotics Yes'))

2026-06-22 10:42:09.81 INFO::Writing function arguments to log file
2026-06-22 10:42:09.82 INFO::Verifying options selected are valid
2026-06-22 10:42:09.82 INFO::Determining format of input files
2026-06-22 10:42:09.83 INFO::Input format is data samples as rows and metadata samples as rows
2026-06-22 10:42:09.83 INFO::Input format is data samples as rows and feature_specific_covariate samples as rows
2026-06-22 10:42:09.83 INFO::The following samples were found to have features but no metadata (or feature specific covariates if applicable). They will be removed. CSM79HIT,CSM79HJM,CSM79HJO,CSM79HJS,CSM79HR2,CSM79HR6,CSM79HR8,CSM79HRC,CSM79HRG,CSM7KOO5,CSM7KOO9,CSM7KOOD,CSM7KOOF,CSM7KOOV,CSM9X1Z4,CSM9X1ZC,CSM9X237,CSMA9J65,CSMAIG7X,HSM67VEK,HSM6XRT8,HSMA33IC,HSMA33IE,HSMA33LH_TR,HSMA33LH,HSMA33P6,HSMA33RT,HSMA33RX_TR,HSMA33RX,MSM6J2IE,MSM79H5G,MSM79H5K,MSM79H9A,MSM79H9G,MSM79H9M,MSM79H9Q,MSM79H9W,MSM9VZGO,MSM9VZHB,MSM9VZHF,MSM9VZLJ,MSMAPC64,PSM6XBUI,PSM7J14X,PSM7J4EF,MSM5LLIC_P,ESM5GEYY_P,ESM5GEYW_P,CSM5MCV1_P
2026-06-22 10:42:09.83 INFO::The following samples were found to have metadata but no features (or feature specific covariates if applicable). They will be removed. CSM5FZ3N_P,CSM5FZ3R_P,CSM5FZ3V_P,CSM5FZ3X_P,CSM5FZ3Z_P,CSM5FZ42_P,CSM5FZ44_P,CSM5FZ4A_P,CSM5FZ4E_P,CSM5MCUA_P,CSM5MCUS_P,CSM5MCVD_P,CSM5MCVF_P,CSM5MCVJ_P,CSM5MCVL,CSM5MCVZ_P,CSM5MCW4_P,CSM5MCWA_P,CSM5MCWG,CSM5MCWK_P,CSM5MCXB_P,CSM5MCXF_P,CSM5MCXV,CSM5MCXX_P,CSM5MCXZ_P,CSM5MCYI_P,CSM5MCYM_P,CSM5MCYO_P,CSM5MCYQ_P,CSM5MCYS,CSM5MCYU_P,CSM5MCYW,CSM5MCZ5,CSM5MCZ7,CSM5YRY7_P,CSM67U9B,CSM67U9H_P,CSM67U9J,CSM67U9N,CSM67U9P_P,CSM67U9R_P,CSM67U9T_P,CSM67U9V_P,CSM67U9X_P,CSM67UAG,CSM67UAI_P,CSM67UAQ,CSM67UAS,CSM67UB1,CSM67UB5_P,CSM67UB7_P,CSM67UB9_P,CSM67UBB,CSM67UBF,CSM67UBR,CSM67UBX,CSM67UCU_P,CSM67UE3,CSM67UEM,CSM67UEP_P,CSM67UET_P,CSM67UEW_P,CSM67UEW,CSM67UF1_P,CSM67UF1,CSM67UF5,CSM67UFV,CSM67UG8,CSM67UGC,CSM67UH7,CSM79HG5,CSM79HG7_P,CSM79HGD_P,CSM79HGF_P,CSM79HGH_P,CSM79HGJ_P,CSM79HGL_P,CSM79HGN_P,CSM79HGR_P,CSM79HGV_P,CSM79HH2_P,CSM79HHA,CSM79HIH,CSM79HJ2_P,CSM79HJ4_P,CSM79HJ6_P,CSM79HJ8_P,CSM79HJC_P,CSM79HJI_P,CSM79HJY,CSM79HK9,CSM79HKV,CSM79HKX,CSM79HKZ,CSM79HL4,CSM79HL6,CSM79HLI,CSM79HLK,CSM79HLM,CSM79HM1,CSM79HM5_P,CSM79HM7,CSM79HM9_P,CSM79HMN,CSM79HMP,CSM79HN2,CSM79HNE,CSM79HNG_P,CSM79HNI,CSM79HNK,CSM79HNM,CSM79HNW,CSM79HOF,CSM79HOH,CSM79HOJ,CSM79HOT,CSM79HOV,CSM79HOX,CSM79HP2,CSM79HP6,CSM79HPA_TR,CSM79HPM_P,CSM79HPO,CSM79HPQ_P,CSM79HPU,CSM79HQ9,CSM79HQB,CSM79HQR_P,CSM79HQT_P,CSM7CZ2F_P,CSM7KOJE,CSM7KOJQ,CSM7KOJS,CSM7KOK1,CSM7KOK3,CSM7KOK7,CSM7KOKF,CSM7KOKH_P,CSM7KOKL_P,CSM7KOKP_P,CSM7KOKT,CSM7KOL2,CSM7KOLK,CSM7KOLY,CSM7KOMH,CSM7KOMP,CSM7KOMR_P,CSM7KOMV_P,CSM7KOMX,CSM7KOMZ,CSM7KON8,CSM7KONA,CSM7KONS_P,CSM7KONU,CSM7KONW_P,CSM7KOOJ,CSM7KOOL,CSM7KOON,CSM7KOOP,CSM7KOP6,CSM7KOP8,CSM7KOPE,CSM7KOPG,CSM7KOQ1,CSM7KOQ5_P,CSM7KOQP_P,CSM7KOQX,CSM7KOQZ_P,CSM7KOR4_P,CSM7KOR8_P,CSM7KORI,CSM7KORS,CSM7KOS7,CSM7KOSH,CSM7KOSJ,CSM7KOST,CSM7KOTA,CSM7KOTO,CSM7KOU7_P,CSM7KOUB,CSM7KOUJ_P,CSM9X1Y5,CSM9X1ZO,CSM9X1ZQ,CSM9X1ZY,CSM9X ... <truncated>
2026-06-22 10:42:09.83 INFO::The following samples were found to have feature specific covariates but no features or no metadata. They will be removed. CSM79HIT,CSM79HJM,CSM79HJO,CSM79HJS,CSM79HR2,CSM79HR6,CSM79HR8,CSM79HRC,CSM79HRG,CSM7KOO5,CSM7KOO9,CSM7KOOD,CSM7KOOF,CSM7KOOV,CSM9X1Z4,CSM9X1ZC,CSM9X237,CSMA9J65,CSMAIG7X,HSM67VEK,HSM6XRT8,HSMA33IC,HSMA33IE,HSMA33LH_TR,HSMA33LH,HSMA33P6,HSMA33RT,HSMA33RX_TR,HSMA33RX,MSM6J2IE,MSM79H5G,MSM79H5K,MSM79H9A,MSM79H9G,MSM79H9M,MSM79H9Q,MSM79H9W,MSM9VZGO,MSM9VZHB,MSM9VZHF,MSM9VZLJ,MSMAPC64,PSM6XBUI,PSM7J14X,PSM7J4EF,MSM5LLIC_P,ESM5GEYY_P,ESM5GEYW_P,CSM5MCV1_P
2026-06-22 10:42:09.84 INFO::Formula for random effects: expr ~ (1 | participant_id)
2026-06-22 10:42:09.84 INFO::Formula for fixed effects: expr ~  diagnosis + dysbiosis_state + antibiotics + age + DNA
2026-06-22 10:42:09.84 INFO::Running selected normalization method: TSS
2026-06-22 10:42:09.86 INFO::Creating output feature tables folder
2026-06-22 10:42:09.87 INFO::Writing normalized data to file demo_output_mtx_mgx/features/data_norm.tsv
2026-06-22 10:42:10.27 INFO::Filter data based on min abundance, min prevalence, and max prevalence
2026-06-22 10:42:10.27 INFO::Total samples in data: 754
2026-06-22 10:42:10.28 INFO::Min samples required with min abundance for a feature not to be filtered: 0.000000
2026-06-22 10:42:10.28 INFO::Max samples allowed with min abundance for a feature not to be filtered: 761.540000
2026-06-22 10:42:10.31 INFO::Total filtered features: 0
2026-06-22 10:42:10.31 INFO::Filtered feature names from abundance, min prevalence, and max prevalence filtering:
2026-06-22 10:42:10.34 INFO::Total features filtered by non-zero variance filtering: 0
2026-06-22 10:42:10.34 INFO::Filtered feature names from variance filtering:
2026-06-22 10:42:10.34 INFO::Writing filtered data to file demo_output_mtx_mgx/features/filtered_data.tsv
2026-06-22 10:42:10.76 INFO::Running selected transform method: LOG
2026-06-22 10:42:10.77 INFO::Writing normalized, filtered, transformed data to file demo_output_mtx_mgx/features/data_transformed.tsv
2026-06-22 10:42:11.16 INFO::Factor detected for categorial metadata 'diagnosis'. Using as-is.
2026-06-22 10:42:11.16 INFO::Factor detected for categorial metadata 'dysbiosis_state'. Using as-is.
2026-06-22 10:42:11.16 INFO::Factor detected for categorial metadata 'antibiotics'. Using as-is.
2026-06-22 10:42:11.16 INFO::Applying z-score to standardize continuous metadata
2026-06-22 10:42:11.17 INFO::Running the linear model component


Error in ckmatch(vars, nam) : Unknown columns: DNA

I am able to fix the issue by creating a dummy DNA variable in the metadata:

df_input_metadata$DNA <- NA
fit_maaslin_mtx_mgx <- maaslin3(
input_data = preprocess_out$rna_table,
input_metadata = df_input_metadata,
output = 'demo_output_mtx_mgx',
fixed_effects = c('diagnosis', 'dysbiosis_state', 'antibiotics', 'age'),
random_effects = c('participant_id'),
feature_specific_covariate = preprocess_out$dna_table,
feature_specific_covariate_name = 'DNA',
feature_specific_covariate_record = FALSE,
coef_plot_vars = c('dysbiosis_state dysbiosis_CD', 'diagnosis CD'),
heatmap_vars = c('dysbiosis_state dysbiosis_UC', 'diagnosis UC', 'age',
'antibiotics Yes'))

But then when I check the output produced I do not obtain any hits in terms of prevalence. When I check either the significant_results.tsv or all_results.tsv output files, I get the following error for all the prevalence models:
All columns of .data have to be uniquely named

Any ideas what could be causing this? Thanks in advance!

Hi,

We had a bug in the formula parser of the latest release. If you re-install with:

devtools::install_github("biobakery/maaslin3")

it should be fixed now.

Will

Hi Will,

I just updated using that version and it seems to be working now, thanks!

Cheers,
Esteban