У меня есть несколько сотен файлов в папке. Каждый из этих файлов представляет собой текстовый файл с разделителями табуляции, который содержит более миллиона строк и 27 столбцов. Из каждого файла я хочу иметь возможность извлекать только определенные столбцы (скажем, вытащить только столбцы: 1,2,11,12,13). Столбцы 3:10 и 14:27 можно игнорировать. Я хочу иметь возможность сделать это для всех файлов в папке (скажем, 2300 файлов). Столбцы из каждого файла 2300 выглядят так ..........
Sample.ID SNP.Name col3 col10 Sample.Index Allele1...Forward Allele2...Forward col14 ....col27
1234567890_A rs758676 - - 1 T T - ....col27
1234567890_A rs3916934 - - 1 T T - ....col27
1234567890_A rs2711935 - - 1 T C - ....col27
1234567890_A rs17126880 - - 1 - - - ....col27
1234567890_A rs12831433 - - 1 T T - ....col27
1234567890_A rs12797197 - - 1 T C - ....col27
Вырезанные столбцы из 2-го файла могут выглядеть следующим образом ...
Sample.ID SNP.Name col3 col10 Sample.Index Allele1...Forward Allele2...Forward col14 ....col27
1234567899_C rs758676 - - 100 T A - ....col27
1234567899_C rs3916934 - - 100 T T - ....col27
1234567899_C rs2711935 - - 100 T C - ....col27
1234567899_C rs17126880 - - 100 C G - ....col27
1234567899_C rs12831433 - - 100 T T - ....col27
1234567899_C rs12797197 - - 100 T C - ....col27
Вырезанные столбцы из 3-го файла могут выглядеть следующим образом ...
Sample.ID SNP.Name col3 col10 Sample.Index Allele1...Forward Allele2...Forward col14 ....col27
1234567999_F rs758676 - - 256 A A - ....col27
1234567999_F rs3916934 - - 256 T T - ....col27
1234567999_F rs2711935 - - 256 T C - ....col27
1234567999_F rs17126880 - - 256 C G - ....col27
1234567999_F rs12831433 - - 256 T T - ....col27
1234567999_F rs12797197 - - 256 C C - ....col27
Ширина Sample.ID
, Sample.Index
одинакова в каждом файле, но может изменяться между файлами. Значение Sample.ID
одинаково для каждого файла, но различно для разных файлов. Каждый из файлов вырезки имеет одинаковые значения в столбце «SNP.Name». Столбец Sample.Index
может иногда совпадать с другим файлом. Два других значения столбцов (Allele1...Forward & Allele2...Forward)
могут изменяться и вставляться с "" sep под каждым SNP.Name
для каждого Sample.ID
.
Наконец-то я хочу объединить (удалить с табуляции) все вырезанные столбцы из 2300 файлов в этот формат ......
Sample.Index Sample.ID rs758676 rs3916934 rs2711935 rs17126880 rs12831433 rs12797197
1 1234567890_A T T T T T C 0 0 T T T C
200 1234567899_C T A T T T C C G T T T C
256 1234567999_F A A T T T C C G T T C C
Проще говоря, я хочу иметь возможность конвертировать длинный формат в широкоформатный на основе столбца Sample.ID
. Это похоже на функцию reshape
в R. Я пробовал это с R, и она исчерпывает память и работает очень медленно. Кто-нибудь может помочь с инструментами Unix?
Когда файл reshape.sh был применен к 20 файлам ... он выдал ложную «строку сэмплов» на выходе. Первые 4 поля показаны здесь.
Sample.Index Sample.ID rs476542 rs7073746
1234567891_A 11 C C A G
1234567892_A 191 T C A G
1234567893_A 204 T C G G
1234567894_A 15 T C A G
1234567895_A 158 T T A A
1234567896_A 208 T C A A
1234567897_A 111 T T G G
1234567898_A 137 T C G G
1234567899_A 216 T C A G
1234567900_A 113 T C G G
1234567901_A 152 T C A G
1234567902_A 178 C C A A
1234567903_A 135 C C A A
1234567904_A 125 T C A A
1234567905_A 194 C C A A
1234567906_A 110 C C G G
1234567907_A 126 C C A A
Sample -
1234567908_A 169 C C G G
1234567909_A 173 C C G G
1234567910_A 168 T C A A