Ошибки памяти во время манипулирования матрицей - будет ли это исправить разреженная матрица? - PullRequest
0 голосов
/ 22 февраля 2019

У меня, правда, нет опыта работы с разреженными матрицами в Python.Я читал различные ответы и документацию по разреженным матрицам SciPy, и они звучат очень убедительно;но я не уверен, что они помогут мне решить мою проблему.Вот моя проблема:

v=proxy_chunk.proxy_pos_bp.values.astype(np.uint32)
s1=gene_chunk.start.values.astype(np.uint32)
s2=gene_chunk.end.values.astype(np.uint32)
mult_matr = ((v>=s1[:,None])&(v<=s2[:,None])).T
proxy_chunk['extract'] = [list(gene_chunk.loc[x, 'extract']) for x in mult_matr]

По сути, мой dataframe 'proxy_chunk' имеет переменную 'proxy_pos_bp', это просто числа, скажем [20, 12345, 900, 99, 97, 600321, 15],Мой dataframe 'gene_chunk' имеет две переменные, 'start' и 'end, которые определяют начало и конец интервалов в терминах, превышающих ноль.Допустим, начало - [40, 12000, 600000], а конец - [98, 15000, 610000].Я просто хочу придумать матрицу, которая построчно описывает, находится ли «proxy_pos_bp» в границах каждого интервала.

Вышеописанное прекрасно работает.В этом случае mult_matr выглядит так:

array([[False, False, False],
       [False,  True, False],
       [False, False, False],
       [False, False, False],
       [ True, False, False],
       [False, False,  True],
       [False, False, False]])

Проблема в том, что это обжор памяти.Когда я запускаю это на самом большом proxy_chunk, который у меня есть, который составляет около 110 000 строк, по сравнению с его соответствующим gene_chunk, я получаю 500 ГБ ОЗУ и вынужден завершать процесс перед тем, как завершить работу кластера.Однако я заметил, что mult_matr по существу соответствовал бы определению разреженной матрицы;большинство значений ложные, а некоторые истинные.Будет ли вывод этой информации непосредственно в разреженную матрицу решить мою проблему?Можно ли выводить напрямую в разреженную матрицу?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...