Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #%% 52 nuovo ufficiale OK
- """
- Nota bene: ho modificato il file modeling.py per aggiungere gli errori
- 1. Ho ridefinito i parametri dell'init facendogli accettare le sigma
- def __init__(self, model: Model, graphs: List[mpl.lines.Line2D]=None, figure: mpl.figure.Figure=None,
- bbox: List[float]=[0, 0, 1, 1], background: Union[bool,str]=None, border: bool=False,
- radio_options: Dict[str, Any]=None, slider_options: Dict[str, Any]=None,
- data: Tuple[np.ndarray, np.ndarray]=None, sigma: np.ndarray=None):
- 2. ho ridefinito una parte dell'init per salvarsi le sigma
- ...
- self.slider_options = slider_options
- self.data = data
- self.sigma = sigma
- ...
- 3. Ho modificato nel metodo __fit_button_on_clicked la chiamata a fit
- ...
- self.model.fit(*self.data, sigma=self.sigma)
- ...
- """
- # Nota, ho alzato il bin150->200, ora converge
- # Carico i dati
- numRun = 52
- dati = listaMatrici[myDict[numRun]][:,1]
- dati = dati[dati<4095]
- # Costruisco l'istogramma e trovo il centro
- h, bins = np.histogram(dati, bins=200)
- binc = bins[:-1] + (bins[1] - bins[0])
- # Creo figura e assi su cui disegnare
- fig = plt.figure()
- fig.set_size_inches(12,5)
- fig.suptitle("226Ra - 600V - Gain: 1000 ", fontsize=16)
- ax = fig.add_axes([0.15, 0.14, 0.84, 0.70])
- ax.set_yscale("log")
- ax.grid(True)
- ax.set_xlabel("ADC", fontsize=14)
- ax.set_ylabel("Entries", fontsize=14)
- # Plotto tutti i dati
- ax.plot(binc, h, color='black', lw=1, label='Dati completi', ds="steps-mid")
- # Seleziono e Plotto i dati da fittare
- cond = (binc<2633) & (binc>243)
- xVect = binc[cond]
- yVect = h[cond]
- data_graph, = ax.plot(xVect, yVect, lw=1, label='Dati per fit',\
- ds="steps-mid", c="tab:green")
- # Starting points: inseriti copiando quelli di convergenza
- startPars = np.array([
- 3.14020187e+05, 2.98589322e+02, 1.43257226e+01,
- 9.41411082e+04, 5.34214983e+02, 2.02581202e+01,
- 1.04459955e+05, 6.51821651e+02, 2.23514168e+01,
- 2.30961972e+05, 7.65474019e+02, 2.49634128e+01,
- 3.65195534e+05, 8.86502718e+02, 2.82249031e+01,
- 2.14699579e+05, 1.42224403e+03, 4.12398651e+01,
- 1.13048417e+05, 1.76150564e+03, 1.49847505e+02,
- 6.24648382e+04, 2.11018949e+03, 1.12551885e+02,
- 9.82593192e+04, 2.47588684e+03, 1.06711679e+02,
- 7.81582354e+03, 2.32745796e-03])
- # Movello di fitting
- model = CompositeModel(
- Model(gauss,
- Parameter(value=startPars[0], bounds=(1e5, 3e6), label='A'),
- Parameter(value=startPars[1], bounds=(0, 4095), label='mu'),
- Parameter(value=startPars[2], bounds=(0, 100), label='sigma'),
- label='gaussiana 1'),
- Model(gauss,
- Parameter(value=startPars[3], bounds=(1e5, 3e6), label='A'),
- Parameter(value=startPars[4], bounds=(0, 4095), label='mu'),
- Parameter(value=startPars[5], bounds=(0, 100), label='sigma'),
- label='gaussiana 2'),
- Model(gauss,
- Parameter(value=startPars[6], bounds=(1e5, 3e6), label='A'),
- Parameter(value=startPars[7], bounds=(0, 4095), label='mu'),
- Parameter(value=startPars[8], bounds=(0, 100), label='sigma'),
- label='gaussiana 3'),
- Model(gauss,
- Parameter(value=startPars[9], bounds=(1e5, 3e6), label='A'),
- Parameter(value=startPars[10], bounds=(0, 4095), label='mu'),
- Parameter(value=startPars[11], bounds=(0, 100), label='sigma'),
- label='gaussiana 4'),
- Model(gauss,
- Parameter(value=startPars[12], bounds=(1e5, 3e6), label='A'),
- Parameter(value=startPars[13], bounds=(0, 4095), label='mu'),
- Parameter(value=startPars[14], bounds=(0, 100), label='sigma'),
- label='gaussiana 5'),
- Model(gauss,
- Parameter(value=startPars[15], bounds=(1e5, 3e6), label='A'),
- Parameter(value=startPars[16], bounds=(0, 4095), label='mu'),
- Parameter(value=startPars[17], bounds=(0, 100), label='sigma'),
- label='gaussiana 6'),
- Model(gauss,
- Parameter(value=startPars[18], bounds=(1e4, 3e6), label='A'),
- Parameter(value=startPars[19], bounds=(0, 4095), label='mu'),
- Parameter(value=startPars[20], bounds=(0, 100), label='sigma'),
- label='gaussiana 7'),
- Model(gauss,
- Parameter(value=startPars[21], bounds=(1e4, 3e6), label='A'),
- Parameter(value=startPars[22], bounds=(0, 4095), label='mu'),
- Parameter(value=startPars[23], bounds=(0, 100), label='sigma'),
- label='gaussiana 8'),
- Model(gauss,
- Parameter(value=startPars[24], bounds=(1e4, 3e6), label='A'),
- Parameter(value=startPars[25], bounds=(0, 4095), label='mu'),
- Parameter(value=startPars[26], bounds=(0, 100), label='sigma'),
- label='gaussiana 9'),
- # Model(line,
- # Parameter(value=-4.55851, bounds=(-10, 10), label='m'),
- # Parameter(value=5881.62, bounds=(-100, 10000), label='q'),
- # label='retta'),
- Model(exp,
- Parameter(value=startPars[27], bounds=(0, 1e5), label='a'),
- Parameter(value=startPars[28], bounds=(0, 1e-2), label='k'),
- label='exp'),
- label='gaussian_peaks')
- # Disegno la curva da muovere
- xsample = np.linspace(0, 4095, 1500)
- model_graph, = ax.plot(xsample, model(xsample), color='steelblue', \
- label='Curva fittata')
- ax.legend();
- # Mostro la figura
- fig
- # Ridimensiono gli assi per fare spazio ai cursori
- ax.set_position([0.10, 0.30, 0.84, 0.62])
- # Chiamo ciò che fa la magia
- gui = AutoGUI(model, [model_graph], bbox=[0.20, 0.07, 0.75, 0.16], figure=fig,
- slider_options={'color': 'steelblue'}, data=(xVect, yVect),
- sigma=np.sqrt(yVect));
- #%%
- # Eseguire a mano dopo aver premuto il pulsantone ed ispezionare a mano
- # è facilmente castabile in un array di numpy
- Riassunto_52 = model.summary()
- Riassunto52 = np.array(Riassunto_52)
- if Export: pass
- #plt.savefig(r'../RELAZIONE/FIGURE/risoluzione-52.eps', format='eps')
- #plt.show()
Add Comment
Please, Sign In to add comment