# Gemelli Joint-RPCA biplot axis 1 is 100%

**URL:** https://forum.qiime2.org/t/gemelli-joint-rpca-biplot-axis-1-is-100/34334
**Category:** General Discussion
**Tags:** gemelli
**Created:** [September 21, 2026, 4:37pm UTC](https://forum.qiime2.org/t/gemelli-joint-rpca-biplot-axis-1-is-100/34334 "2026-09-21T16:37:17Z")
**Posts on this page:** 2
**Page:** 1

<div class="post-metadata">

### Author: ![Bark9299](https://forum.qiime2.org/letter_avatar_proxy/v4/letter/b/a8b319/32.png) [@Bark9299](https://forum.qiime2.org/u/Bark9299)
#### Post date: [September 21, 2026, 4:37pm UTC](https://forum.qiime2.org/t/gemelli-joint-rpca-biplot-axis-1-is-100/34334/1 "2026-09-21T16:37:17Z")

</div>

I am using qiime2-amplicon-2025.7 conda environment. I am following the [Joint-RPCA](https://github.com/biocore/gemelli/blob/master/ipynb/tutorials/Joint-RPCA-QIIME2-CLI.ipynb) tutorial on my shotgun metagenomic and 16S V4 shared samples. I used the following code to produce the volatility plot and biplot (My data tables are raw, and not normalized in any way):

```auto
qiime gemelli joint-rpca \
  --i-tables renamed-matching-16s-sweden-metagenomics-filtered-table-BP-W.qza table-150-BP-W-gg2-filter-features.qza \
  --m-sample-metadata-file metadata_AVITI_16S_filtered.tsv \
  --p-max-iterations 15 \
  --p-min-feature-frequency 5 \
  --o-biplot joint_biplot.qza \
  --o-distance-matrix joint_distance_matrix.qza \
  --o-cross-validation-error cross_validation_error.qza
#i did not specify a train_test variable but I have 36 samples so I though the default 10 samples would be fine

qiime longitudinal volatility \
    --m-metadata-file cross_validation_error.qza \
    --p-state-column 'iteration' \
    --o-visualization volatility_plot.qzv

qiime emperor biplot \
    --i-biplot joint_biplot.qza \
    --m-sample-metadata-file metadata_AVITI_16S_filtered.tsv \
    --p-number-of-features 25 \
    --o-visualization emperor-biplot.qzv

```

The resulting plots look like this:  
 ![Image](https://github.com/user-attachments/assets/e60dca0c-7b37-4914-abda-c021f6623167)

![Image](https://github.com/user-attachments/assets/7eb32e1c-519e-48fa-a8f0-20e12f9ddf8c)

I am confused because my axis 1 is 100% which must not be correct. I thought maybe the difference in read depth could be an issue so I rarefied both datasets and re-ran everything and got a similar axis 1:  
 ![Image](https://github.com/user-attachments/assets/2311472c-4b82-4876-a8ce-e0a870237aab)

Why do you think my axis 1 is 100%? Is rarefying even an accurate thing to do for a joint-RPCA? I noticed in the general RPCA tutorial you can use the rarefied data if the QC test (qiime gemelli qc-rarefy) is significant.

Additionally to my above question, I am interested in doing this strictly in R and came across #105 and [https://github.com/vegandevs/vegan/pull/667](https://github.com/vegandevs/vegan/pull/667) but #105 uses `vegan::decostand(table, method = "rclr")` and `vegan::vegdist(rclr_table, method = "euclidean")` but the [Fix to na.rm in decostand methods alr/clr by antagomir · Pull Request #667 · vegandevs/vegan · GitHub](https://github.com/vegandevs/vegan/pull/667) has a Robust Aitchison distance `vegdist(..., method="robust.aitchison")`. Which one is correctly doing RPCA like gemelli? Can you do Joint-RPCA or phylo-RPCA in R with these vegan functions?

---

<div class="post-metadata">

### Author: ![jwdebelius](https://forum.qiime2.org/user_avatar/forum.qiime2.org/jwdebelius/32/9655_2.png) [@jwdebelius](https://forum.qiime2.org/u/jwdebelius)
#### Post date: [October 6, 2026, 1:20pm UTC](https://forum.qiime2.org/t/gemelli-joint-rpca-biplot-axis-1-is-100/34334/3 "2026-10-06T13:20:15Z")

</div>

Hi @Bark9299,

Could you please run a jaccard PCoA with your rarefied data for us?

Could you also please give some more details about your pipeline.

Thanks,  
Justine
