Как распаковать TAR-файл в TXT (прочитать файл CEL) на Python или R

#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! Всем удачи 🙂