Разбор структуры файла из центра биоинформатики - 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;