Разбор структуры файла из центра биоинформатики - lanit-tercom-school/analyzeme GitHub Wiki

Был прислан файл 1000_genomes_eur.gds, скорее всего, эти данные были получены из этого проекта: http://www.internationalgenome.org/about

Вот комментарий к нему:

Файл состоит из стандартной части (набор объектов "sample.id", "snp.id", "snp.chromosome", "snp.position", "snp.allele", "genotype") и дополнительной части ("samlple.annot"). Все, что далее - Вам не потребуется. В объекте "sample.annot" есть переменная "population", которая будет использована в качестве наблюдений. На входе каждого теста будет наблюдаемая переменная и генотип - соответствующий столбец объекта "genotype" (которых всего 6810380).

Давайте рассмотрим подробно его структуру:

В R:
library("gdsfmt")
(genofile <- openfn.gds("path/1000_genomes_eur.gds"))
На что среда возвращает ответ:
+ [ ]
|--+ sample.id { VStr8 404 ZIP(24.1%), 778B }
|--+ snp.id { VStr8 6810380 ZIP(35.8%), 24.4M }
|--+ snp.position { Int32 6810380 ZIP(66.8%), 17.4M }
|--+ snp.chromosome { VStr8 6810380 ZIP(0.10%), 15.6K }
|--+ snp.allele { VStr8 6810380 ZIP(16.0%), 4.2M }
|--+ genotype { Bit2 404x6810380 ZIP(15.1%), 98.7M } *
|--+ sample.annot [ data.frame ] *
| |--+ Population { Int32,factor 404 ZIP(2.48%), 40B } *
| |--+ Population.Description { Int32,factor 404 ZIP(2.48%), 40B } *
| \--+ Gender { Int32,factor 404 ZIP(7.74%), 125B } *
(дальше нам не интересно)

Рассмотрим подробно одну из строк в качестве примера:

|--+ sample.id { VStr8 404 ZIP(24.1%), 778B }
Есть узел sample.id, в котором лежат данные типа "строка из восьмибитных символов"(VStr8) в количестве 404 штук, при этом к этим данным применено сжатие (ZIP), которое сжало эти данные на 24.1%. В конце указывается их итоговый размер: 778B.

В R:
read.gdsn(index.gdsn(genofile, "sample.id"), start=c(1), count=c(3))
Вернет:
[1] "HG00096" "HG00097" "HG00099"
Давайте также посмотрим, есть ли повторы в этих данных:

В R:
length(unique(read.gdsn(index.gdsn(genofile, "sample.id"))))
Вернет:
[1] 404,
то есть все элементы этого узла уникальны (404 уникальных из 404 элементов).

Далее будет список с описанием остальных элементов из корня:

  • snp.id
    Тип: Строка из восьмибитных символов;
    Пример данных: "rs201725126" "rs200579949" "rs75454623";
    Уникальность: да (6810380/6810380);
  • snp.position
    Тип: Int32;
    Пример данных: 13116 13118 14930;
    Уникальность: нет (6687893/6810380);
  • snp.chromosome
    Тип: Строка из восьмибитных символов;
    Пример данных: "1" "1" "1";
    Уникальность: нет (22/6810380);
    Представленные значения: "1" "2" "3" "4" "5" "6" "7" "8" "9" "10" "11" "12" "13" "14" "15" "16" "17" "18" "19" "20" "21" "22";
  • snp.allele
    Тип: Строка из восьмибитных символов;
    Пример данных: "G/T" "G/A" "G/A";
    Уникальность: нет (12/6810380);
    Представленные значения: "G/T" "G/A" "T/G" "T/C" "A/T" "A/G" "C/A" "C/T" "T/A" "G/C" "C/G" "A/C";
  • genotype
    Тип: Двумерный массив бит;
    Пример данных:
    __[,1] [,2] [,3]
    [1,] 0 0 1
    [2,] 1 1 1
    [3,] 0 0 1;

sample.annot - узел, хранящий другие узлы
В R:
node = index.gdsn(genofile, "sample.annot")
Теперь мы можем посмотреть содержимое лежащих в node узлов:

  • Population
    Тип: Категориальный признак;
    Пример данных: GBR GBR GBR;
    Представленные значения: ACB ASW BEB CDX CEU CHB CHS CLM ESN FIN GBR GIH GWD IBS ITU JPT KHV LWK MSL MXL PEL PJL PUR STU TSI YRI;
  • Population.Description
    По сути - просто расшифровка аббревиатур из Population, то есть GBR из Population <=> British in England and Scotland из Population.Description;
  • Gender
    Тип: Категориальный признак;
    Пример данных: male female female;
    Представленные значения: female male;