Как получить значение площади под несколькими вершинами

Вы должны просто передать ответ на вопрос как переменную, используя extra_variables. Это позволит избежать приглашения и позволит вам установить значение переменной по умолчанию.

https://docs.ansible.com/ansible/latest/user_guide/playbooks_variables.html#passing -variables-on-the-command-line

ansible-playbook playbooks/release.yml --extra-vars 'updateciphers=True updatedcipherslist=["cipher1","cipher2","cipher3"]'

-> Вам может потребоваться избежать двойных кавычек. vars: updateciphers: False

tasks:
  - name: Upgrade
    command: /tmp/bin/update_script.sh 
    environment:
      JAVA_HOME: /opt/java/
    when: updateciphers
    with_items: "{{ updatedcipherslist }}"

1
задан Harbus 19 January 2019 в 00:24
поделиться

1 ответ

Автоматический ответ

Учитывая набор значений x и y, а также набор peaks (x -координат пиков), вот как вы можете автоматически найдите площадь под каждым из пиков. Я предполагаю, что x, y и peaks являются массивами Numpy:

import numpy as np

# find the minima between each peak
ixpeak = x.searchsorted(peaks)
ixmin = np.array([np.argmin(i) for i in np.split(y, ixpeak)])
ixmin[1:] += ixpeak
mins = x[ixmin]

# split up the x and y values based on those minima
xsplit = np.split(x, ixmin[1:-1])
ysplit = np.split(y, ixmin[1:-1])

# find the areas under each peak
areas = [np.trapz(ys, xs) for xs,ys in zip(xsplit, ysplit)]

Вывод:

enter image description here [1111 ]

Примеры данных были настроены таким образом, чтобы площадь под каждым пиком (более или менее) была гарантированно равна 1.0, поэтому результаты на нижнем графике верны. Зеленые метки X - это места минимума между каждыми двумя пиками. Часть кривой, «принадлежащая» каждому пику, определяется как часть кривой между минимумами, примыкающими к каждому пику.

Полный код

Вот полный код, который я использовал для генерации данных примера:

import scipy as sp
import scipy.stats

prec = 1e5
n = 10
N = 150
r = np.arange(0, N+1, N//n)

# generate some reasonable fake data
peaks = np.array([np.random.uniform(s, e) for s,e in zip(r[:-1], r[1:])])
x = np.linspace(0, N + n, num=int(prec))
y = np.max([sp.stats.norm.pdf(x, loc=p, scale=.4) for p in peaks], axis=0)

и код, который я использовал для построения графиков:

import matplotlib.pyplot as plt

# plotting stuff
plt.figure(figsize=(5,7))
plt.subplots_adjust(hspace=.33)
plt.subplot(211)
plt.plot(x, y, label='trace 0')
plt.plot(peaks, y[ixpeak], '+', c='red', ms=10, label='peaks')
plt.plot(mins, y[ixmin], 'x', c='green', ms=10, label='mins')
plt.xlabel('dep')
plt.ylabel('indep')
plt.title('Example data')
plt.ylim(-.1, 1.6)
plt.legend()

plt.subplot(212)
plt.bar(np.arange(len(areas)), areas)
plt.xlabel('Peak number')
plt.ylabel('Area under peak')
plt.title('Area under the peaks of trace 0')
plt.show()
0
ответ дан tel 19 January 2019 в 00:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: