chromosome start end
1 300 500
1 400 600
... ... ...
- найти центр каждого интервала (+/- 250 от центра начала/конца)
1 300 500 400
1 400 600 500
... ... ...
- Создать новые окна (-/+ 250 вокруг центра)
1 300 500 400 50 750
1 400 600 500 150 850
... ... ...
- получить оценки для каждой отдельной позиции в этих окнах (используя мою собственную функцию). Сначала необходимо воссоздать df, используя только Chr, window_start и window_end.
1 50 750
1 150 850
... ... ...
chromosome start end score
1 50 50 .8
1 51 51 .2
1 52 52 .12
...
1 750 750 .43
... ... ...
- ФИНАЛ: мне нужен график, на котором ось X будет представлять положение относительно центра (-250-е до +250-й позиции), а по оси Y будет средний балл. Поэтому я бы занял -250-ю позицию во всех своих интервалах (здесь у меня только 2 интервала) и усреднил бы эти результаты.

Чаще всего мне нужна помощь, чтобы перейти от шага 4 к шагу 5 наиболее эффективным способом (шаг 4 не требует много времени, а шаг 5 — в зависимости от того, как я сейчас пишу свой код).
Этот код работает отлично, но он слишком медленный.
def get_postional_avgs(promoter_df):
promoter_df['center'] = (promoter_df['Start'] + promoter_df['End']) // 2
# Calculate window start and end
promoter_df['window_start'] = promoter_df['center'] - 250
promoter_df['window_end'] = promoter_df['center'] + 250
# Prepare a new DataFrame for conservation score requests
conservation_intervals = promoter_df[['Chromosome', 'window_start', 'window_end']]
conservation_intervals.columns = ['Chromosome', 'Start', 'End'] #create a new start/end
# Retrieve base-level conservation scores
base_level_scores = get_base_scores(conservation_intervals)
# Initialize a DataFrame to hold average scores
average_scores = []
for index, row in promoter_df.iterrows():
center = row['center']
# Extract scores for the current cCRE
scores_for_cCRE = base_level_scores[
(base_level_scores['Chromosome'] == row['Chromosome']) &
(base_level_scores['Start'] >= (center - 250)) &
(base_level_scores['End']
Подробнее здесь: https://stackoverflow.com/questions/790 ... al-windows