Как извлечь части матрицы массива HDF5 и соответствующий ей атрибут строки - PullRequest
0 голосов
/ 02 октября 2018

Я работаю с набором данных генов, который изначально хранится в формате HDF5.Он имеет формат, аналогичный приведенному ниже (я добавил несколько произвольных чисел и генов, чтобы проиллюстрировать, как это выглядит).Таким образом, у него есть гены в качестве атрибута строки и основная цифровая матрица, содержащая числовые данные.Столбцы будут представлять повторы, то есть разные ячейки.

У меня есть другой файл, который содержит список генов, которые меня интересуют (ниже представлен my_gene_list в качестве примера).То, что я хотел бы сделать, это извлечь числовые данные для генов, которые меня интересуют , а также соответствующего гена , либо в виде структурированного массива, либо в pandas DataFrame (т.е. имеяген как индекс).

  Gene                                      ...
  RP11-.3     1   2   3   0   7   0   0   0 ...
  FAM138A     2   0   1   0   6   0   0   0 ...
  CACNA1C     3   0   6   0   5   0   0   0 ...
  RP11-.7     4   0   8   0   4   0   0   0 ...
  RP11-.8     5   0   9   0   3   0   0   0 ...
  FO538.2     6   0   2   0   2   0   0   0 ...
  AP006.2     7   0   0   0   1   0   0   0 ...
    ...         ... ... ... ... ... ... ... ...

my_gene_list=['CACNA1C', 'RP11-.7']

Используя цикл for, я могу извлечь числовые данные для каждого гена в моем списке.Я знаю, что это работает, поскольку я попытался напечатать и ген, и соответствующий массив.

for element in my_gene_list:
    set[set.ra.Gene==element] # set is the name of the whole dataset

Однако по понятным причинам я также хочу знать, какая строка принадлежит какому гену, и именно здесь я застрял,Я не знаю, как хранить фактические результаты, как я хотел бы, показанные внизу.Это относится как к самому массиву, так и к соответствующему имени гена.

FAM138A     2   0   1   0   6   0   0   0 ...
RP11-.7     4   0   8   0   4   0   0   0 ...

Я изучал, как сделать это в совершенно отдельных шагах, используя списки, словари, многократно добавляя к фрейму данных, но я бы хотелметод, который гарантирует поддержание порядка (как генный-массив, так и столбцы в самом массиве.

Я попытался добавить выходной массив после цикла for в качестве списка, а затем сделать массив из спискаиспользуя 'np.asarray', но по какой-то причине я до сих пор не понимаю, в результате получился 3-мерный массив, и на данный момент я недостаточно опытен в numpy (или Python в этом отношении), чтобы преобразовать его в 2dмассив и гарантировать, что порядок не испорчен. Даже если я делаю это таким образом, у меня все еще нет имен генов. Я думаю, я мог бы сделать то же самое для них, а затем создать панду DataFrame изчисловые данные и добавьте имена генов в один и тот же DataFrame. Будет ли порядок в этом случае сохраняться на протяжении всего?

Повторюсь, приведенный выше код является лишь примером, набор данных, который я использую, содержит около 28 000 генов, а в моем списке около 50, поэтому я спрашиваю, как это сделать.

Надеюсь, мой вопрос понятен.Я сделал все возможное, чтобы объяснить это правильно.Если что-то неясно, пожалуйста, дайте мне знать.Заранее большое спасибо!

...