Я получаю мои ноги влажными с некоторым анализом генома и немного застрял. У меня есть очень редкие данные и вам нужно найти места, где скользящее среднее превышает некоторый порог, обозначая каждую точку как 1 или 0. Данные имеют уникальный тип, поэтому я не могу использовать доступные программы для анализа.Эффективно принимать скользящее среднее разреженных данных и фильтровать выше порогового значения в python
Каждая точка представляет собой одну точку (basepair) на человеческом геноме. Для каждого набора данных есть 200 000 000 потенциальных точек. Данные по существу представляют собой список из ~ 12000 пар индексов/значений, где все остальные точки считаются равными нулю. Мне нужно сделать скользящее среднее по всему набору данных и вернуть регионы, где среднее значение превышает пороговое значение.
В настоящее время я читаю каждую точку из набора данных последовательно и строю массив вокруг каждой точки, которую я нахожу, но это очень медленно для больших размеров окна. Есть ли более эффективный способ сделать это, может быть, с scipy или пандами?
Редактировать: магический код Джейми ниже работает отлично (но я не могу еще возвысить)! Я очень благодарен.
Возможно, было бы целесообразнее преобразовать данные в формат, понятный доступным программам. Преобразование данных, скорее всего, намного проще реализовать, чем комплексный анализ и визуализация результатов. – Wilbert