Я пытаюсь применить многопроцессорную обработку к функции для расчета энтропии Шеннона для каждой позиции выравнивания ДНК, чтобы ускорить процесс. Он просто продолжает работать, ничего не возвращая, и я не могу понять, что не так с моим кодом. Я новичок в многопроцессорной обработке, поэтому буду очень признателен за любую помощь.
from Bio import AlignIO
from multiprocessing import Pool
from scipy.stats import entropy
import pandas as pd
from time import perf_counter
path = 'path_to_aln_fasta'
alignment = AlignIO.read(path, 'fasta')
def calc_entropy(column):
series = pd.Series(column)
vals = series.value_counts(normalize=False)
return entropy(vals)
def pool_calc_entropy(alignment):
pool = Pool(8)
entropies = pool.map(calc_entropy, [alignment[:, i] for i in range(alignment.get_alignment_length())])
return entropies
start = perf_counter()
entropies_series = []
for i in range(alignment.get_alignment_length()):
column = alignment[:, i]
entropies_series.append(calc_entropy(column))
end = perf_counter()
series_time = end-start
print(f'series time: {series_time}')
start = perf_counter()
entropies_pool = pool_calc_entropy(alignment)
end = perf_counter()
parallel_time = end-start
print(f'parallel time: {parallel_time}')
print(f'pool time is {round((end-start)/(end-start), 2)} times faster than series time')
Подробнее здесь: https://stackoverflow.com/questions/792 ... -alignment
Многопроцессорная обработка при итерации по выравниванию последовательностей ДНК ⇐ Python
Программы на Python
1734557744
Anonymous
Я пытаюсь применить многопроцессорную обработку к функции для расчета энтропии Шеннона для каждой позиции выравнивания ДНК, чтобы ускорить процесс. Он просто продолжает работать, ничего не возвращая, и я не могу понять, что не так с моим кодом. Я новичок в многопроцессорной обработке, поэтому буду очень признателен за любую помощь.
from Bio import AlignIO
from multiprocessing import Pool
from scipy.stats import entropy
import pandas as pd
from time import perf_counter
path = 'path_to_aln_fasta'
alignment = AlignIO.read(path, 'fasta')
def calc_entropy(column):
series = pd.Series(column)
vals = series.value_counts(normalize=False)
return entropy(vals)
def pool_calc_entropy(alignment):
pool = Pool(8)
entropies = pool.map(calc_entropy, [alignment[:, i] for i in range(alignment.get_alignment_length())])
return entropies
start = perf_counter()
entropies_series = []
for i in range(alignment.get_alignment_length()):
column = alignment[:, i]
entropies_series.append(calc_entropy(column))
end = perf_counter()
series_time = end-start
print(f'series time: {series_time}')
start = perf_counter()
entropies_pool = pool_calc_entropy(alignment)
end = perf_counter()
parallel_time = end-start
print(f'parallel time: {parallel_time}')
print(f'pool time is {round((end-start)/(end-start), 2)} times faster than series time')
Подробнее здесь: [url]https://stackoverflow.com/questions/79292509/multiprocessing-when-iterating-over-a-dna-sequence-alignment[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия