#python #r #windows #tar #data-conversion
#python #r #Windows #tar #преобразование данных
Вопрос:
Мне было интересно, знает ли кто-нибудь, как распаковывать файлы TAR в R и как экстраполировать данные из большого количества файлов GZ? Кроме того, кто-нибудь знает, как одновременно считывать большие объемы данных (около 100), сохраняя целостность файлов данных (в какой-то момент мой компьютер не справляется с объемом данных и начинает записывать каракули)?
Как начинающий программист, все еще изучающий программирование. Мне было дано задание проанализировать и сопоставить данные о сходных генах, обнаруженных в разных клеточных структурах, для определения признака заболевания. Мне удалось получить доступ к файлам набора данных TXT для работы и отформатировать его для распознавания другой программой, известной как GSEA.
1.) Я установил программное обеспечение, известное как «WinZip», и это помогло мне распаковать мои TAR-файлы в файлы GZ. Я сохранил эти файлы во вновь созданную папку в разделе «Загрузки»
2.) Затем я попытался использовать R для доступа к файлам с помощью этого кода:
>untar("file.tar", list=TRUE)
And it produced approximately 170 results (it converted TAR -> GZ files)
3.) Когда я попытался ввести один из файлов GZ, он сгенерировал более тысячи строк из отдельных буквенно-цифровых символов и цифр, непонятных для меня.
>989 ™šBx
>990 33BŸ™šC:LÍC005€
>991 LÍB¬
>992 B«™šBꙚB™™šB¯
>993 B¡
>994 BŸ
>995 C003
>996 BŽ™šBð™šB¦
>997 B(
>998 LÍAòffBó
>999 LÍBñ™šBó
>1000 €
> [ reached 'max' / getOption("max.print") -- omitted 64340 rows ]
Warning messages:
>1: In read.table("GSM2458563_Control_1_0.CEL.gz") :
line 1 appears to contain embedded nulls
>2: In read.table("GSM2458563_Control_1_0.CEL.gz") :
line 2 appears to contain embedded nulls
>3: In read.table("GSM2458563_Control_1_0.CEL.gz") :
line 3 appears to contain embedded nulls
>4: In read.table("GSM2458563_Control_1_0.CEL.gz") :
line 4 appears to contain embedded nulls
>5: In read.table("GSM2458563_Control_1_0.CEL.gz") :
line 5 appears to contain embedded nulls
>6: In scan(file = file, what = what, sep = sep, quote = quote, dec = dec, :
embedded nul(s) found in input
Что я пытаюсь сделать, так это одновременно получить доступ ко всем этим файлам без информационной перегрузки компьютера и сохранить целостность данных. Затем я хочу получить правильный доступ к информации, где она будет напоминать какую-то таблицу данных (в идеале, мне было интересно, были бы возможны преобразования из TAR в TXT-файл, чтобы GSEA мог прочитать и идентифицировать такие данные).
Кто-нибудь знает какие-либо программы, совместимые с window, которые могли бы правильно распаковывать и читать такие файлы или какие-либо команды R, которые помогли бы мне сгенерировать или преобразовать такие файлы данных?
Ответ №1:
Фоновое исследование
Итак, я работал над этим около часа — вот результаты.
Файл, который вы пытаетесь открыть, GSM2458563_Control_1_0
сжат внутри .gz
файла, который содержит .CELL
файл, поэтому он нечитаем.
Такие файлы публикуются «Национальным центром биотехнологической информации».
Видел код Python 2 для их открытия:
from Bio.Affy import CelFile
with open('GSM2458563_Control_1_0.CEL') as file:
c = CelFile.read(file)
Я нашел документацию о Bio.Affy в версии 1.74 biopython.
Тем не менее, текущий biopython readme говорит:
«… Biopython 1.76 был нашей последней версией для поддержки Python 2.7 и Python 3.5».
В настоящее время Python 2 устарел, не говоря уже о том, что упомянутая выше библиотека значительно эволюционировала и изменилась.
Решение
Итак, я нашел другой способ обойти это, используя R.
Мои спецификации:
Operation System : Windows 64
RStudio : Version 1.3.1073
R Version : R-4.0.2 for Windows
Я предварительно установил зависимости, упомянутые ниже.
Используйте GEOquery.getGEO
функцию для извлечения файла из NCBI GEO.
# Presequites
# Download and install Rtools custom from http://cran.r-project.org/bin/windows/Rtools/
# Install BiocManager
if (!requireNamespace("BiocManager", quietly=TRUE))
install.packages("BiocManager")
BiocManager::install("GEOquery")
library(GEOquery)
# Download and open the data
gse <- getGEO("GSM2458563", GSEMatrix = TRUE)
show(gse)
# ****** Data Table ******
# ID_REF VALUE
# 1 7892501 1.267832
# 2 7892502 3.254963
# 3 7892503 1.640587
# 4 7892504 7.198422
# 5 7892505 2.226013
Комментарии:
1. Большое вам спасибо за вашу преданность, время и усилия, направленные на поиск решения моей дилеммы! Вы действительно MVP. Я пытался задать этот вопрос большинству моих наставников, и они просто ответили распаковкой и чтением по одному за раз или LINUX. Я попробовал ваш метод на R, и он действительно работает!!! Я не могу отблагодарить вас за то, сколько помощи вы мне оказали.
2. Добро пожаловать @StephenSitu! Всем удачи 🙂