MCMCglmm с матрицей геномного родства: «у уровней нет записи строки в ginverse» - PullRequest
1 голос
/ 04 октября 2019

Я пытаюсь оценить наследуемость количественного признака, используя модель на животных. Поскольку я изучаю диких видов грызунов, мне не хватает информации о родословной;вместо этого я использую матрицу геномного родства (GRM), используя ~ 23 000 SNP, полученных из ddRAD и оцененных с помощью PLINK / GCTA.

Хотя я провел перекрестную проверку лиц в моей GRM и моем файле данных, я получаюэта ошибка:

Error in MCMCglmm(trait ~ 1, random = ~ID, data = phens, ginverse = list(ID = gctaGRM),  : 
  some levels of ID do not have a row entry in ginverse

Эта проблема аналогична описанной ранее: MCMCglmm трудности с форматированием данных . В этом случае на постере использовалась родословная.

Мои данные таковы:

  1. Файл данных с индивидуальным идентификатором, сайтом и фенотипическими данными, "phens"
> class(phens)
[1] "data.frame"

> head(phens)
    Site      ID       trait
1   QERC SGTm037  0.94770905
2 Robles SGTm038 -0.53410457
3   QERC SGTm039  0.35680224
4   QERC SGTm040 -0.24319776
5     MH SGTm041  0.02952266
6     MH SGTm043  2.25680224
> 
Черта как переменная
> trait <- phens$trait # quantitative trait

> head(trait)
[1]  0.94770905 -0.53410457  0.35680224 -0.24319776  0.02952266  2.25680224
GRM от PLINK или GCTA, читайте в пакете gap: https://github.com/cran/gap/blob/master/R/MCMCgrm.R
gctaGRM <- ReadGRM('gcta-GRM') # reading in GCTA grm
plinkGRM <- ReadGRMPLINK('plinkgenome') # reading in PLINK PIHAT grm

> head(gctaGRM)

          SGTm037     SGTm038     SGTm039
SGTm037 1.0487960 0.000000000 0.000000000
SGTm038 0.0000000 1.065967000 0.009045295
SGTm039 0.0000000 0.009045295 1.032933000
SGTm040 0.1843918 0.000000000 0.019915070
SGTm041 0.0000000 0.031226350 0.000000000
SGTm043 0.0000000 0.038495810 0.000000000

> head(plinkGRM)

        SGTm037 SGTm038 SGTm039 SGTm040 SGTm041
SGTm037  1.0000       0       0  0.1345       0
SGTm038  0.0000       1       0  0.0000       0
SGTm039  0.0000       0       1  0.0000       0
SGTm040  0.1345       0       0  1.0000       0
SGTm041  0.0000       0       0  0.0000       1
SGTm043  0.0000       0       0  0.0000       0

Насколько я могу судить, список идентификаторов в phens согласуется сстолбцы и строки идентификаторов в любой GRM. Я могу предоставить полные файлы данных для тех, кому интересно.

> head(phens$ID)
[1] SGTm037 SGTm038 SGTm039 SGTm040 SGTm041 SGTm043

# also played with changing phens$ID from factor to character; made no difference

colnames(gctaGRM)
[1] "SGTm037" "SGTm038" "SGTm039" "SGTm040" "SGTm041" "SGTm043"

Это должно быть проблема форматирования, и я потратил много времени на изучение этой проблемы в стеке, группах Google и документации r, но безрезультатно. К сожалению, мало ресурсов посвящено тому, как реализовать GRM в этих моделях (хотя см. https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0197720). Я попытался изменить классы моего файла данных и характеристики, но это не сработало.

Любые предложения будут с благодарностью!

1 Ответ

0 голосов
/ 07 октября 2019

Я нашел обходной путь для использования GRM на основе gcta, хотя я не ответил на мою точную проблему, указанную в моем исходном сообщении.

Я нашел этот старый пост: https://stat.ethz.ch/pipermail/r-sig-mixed-models/2014q2/022217.html. Я изменилмоя основанная на gcta GRM (исходная матрица классов) в класс dgcMatrix и была в состоянии запустить модель. Это решает другую ошибку, которую я получал до того, как опубликовал свой первоначальный вопрос:

(Error in FUN(X[[1L]], ...) : trying to get slot "Dim" from an object of a basic class ("matrix") with no slots)

Мне все равно было бы интересно разобраться в моей первоначальной проблеме, если у кого-то есть объяснение или он решил подобноепроблема!

...