Я хочу создать граф генов из таблицы данных.Моя таблица T имеет 2 столбца, столбец «ID» и столбец «Genes» со списками в нем.Списки содержат гены (Strings).
Я хочу, чтобы мои гены были узлами (один узел для каждого гена), и ребра должны соединяться с двумя генами, которые имеют один и тот же идентификатор.Я много пробовал, но мне нужно самое быстрое решение, потому что таблица содержит от 700 тысяч до 2,7 миллионов строк.
Как мне поступить?Например, как я могу найти все появления определенного гена в моей таблице?
Я уже достиг генерации nd.array всех упомянутых генов.Затем я дважды попытался перебрать этот список с помощью nd.nditer, чтобы получить все попарные комбинации, а затем перебрать все строки, чтобы проверить, есть ли оба гена в одном из списков.Пример ниже.
Затем я попытался сначала преобразовать таблицу, найдя все идентификаторы для определенного гена, а затем перейти оттуда.Эта идея - второй цикл for.
И то, и другое не очень эффективно, поэтому я спрашиваю, есть ли более эффективное решение этой проблемы.
for gene1 in nd.nditer(mentionendGenes):
for gene2 in nd.nditer(mentionendGenes):
for row in range(0,len(T['ID'])):
if (gene1 in T['Genes'].values[row]) and (gene2 in T['Genes'].values[row])
G.add_edge(gene1,gene2)
for gene in np.nditer(mentionendGenes):
for listofgenes in np.nditer(T['Genes'].values, flags = ['refs_ok']):
if gene in listofgenes:
doStuff()