Oggi è 28 mar 2024, 17:54
   
Text Size
Login

Il mio primo "diagramma H-R"!

Il messaggio delle stelle nel flusso luminoso.

Messaggioda Paolo » 18 set 2019, 12:18

Buongiorno Adriano e benvenuto nel forum. Grazie per l'apprezzamento, l'esperienza e' davvero bella e sicuramente di alto valore didattico.

Come detto da Lorenzo, l'informazione che lega la stessa stella nelle due liste di magnitudini V e B (aggiungo generate in un report come quello di Astroart) puo' essere solo la posizione (AR/Dec oppure x/y se i frame sono perfettamente a registro).

In Astroart si parte quindi dalla calibrazione astrometrica e fotometrica dei frame presi con i filtri B e V, per poi salvare le due liste in formato testo (hanno estensione .sta).

In queste liste c'e' tutto, le magnitudini e l'astrometria che funge da chiave di aggancio. A questo punto si puo' procedere in diversi modi, dipende dalla propria conoscenza dei software per il trattamento dei dati numerici.

Io ho usato Excel ed un metodo molto grezzo ma che porta comunque al risultato (si puo' senz'altro sviluppare una soluzione piu' elegante). Ti mostro qualche passo.

Lista di stelle in Astroart (frame mag B):

AA_B_list.PNG

La stessa importata in Excel:

Excel_B_list.PNG

Nota che ho aggiunto una colonna (C) in cui ho inserito un progressivo.

Si fa lo stesso per il frame delle mag V. Ho inserito il risultato in un secondo foglio:

Excel_V_list.PNG

Stavolta, oltre alla colonna C con il progressivo, ho aggiunto in coda le colonne da H fino a M. E' qui che, a valle di una macro VBA, vengono riportate le magnitudini B coerenti con le stelle (nella videata i campi sono gia' popolati). Le colonne K e M sono solo di controllo, contengono una semplice formula che fa la differenza delle coordinate (sia AR che Dec) espressa in arcosecondi. Il valore molto piccolo (mediamente sotto il secondo d'arco) e' la garanzia che la stella trovata dalla macro sia quella corretta.

Per ogni stella del foglio delle mag V, la macro VBA calcola (in base alle coordinate) la distanza in secondi d'arco rispetto ad ognuna delle stelle del foglio contenente le magnitudini B e memorizza il valore minimo (e relativo indice). Si tratta di due cicli for-next, uno nell'altro. Al termine la macro riporta i dati rilevanti delle stelle trovate (indice progressivo, mag B, AR e Dec) nel foglio delle mag V.

Nello screenshot precedente puoi vedere come, ad esempio, alla stella #1 nella lista di mag V corrisponda la #2 della lista di mag B (V=9.862, B=10.822). Allo stesso modo, alla #2 mag V corrisponde la #5 mag B. Il check e' ok in quanto la differenza delle rispettive coordinate (dAR" e dDEC") e' praticamente zero. Quando le stelle hanno un alto SNR questi delta piccolissimi sono normali ma per stelle molto deboli i delta cominciano a crescere. E' bene quindi fissare un limite oltre il quale scartare la riga (potrebbe trattarsi di un'altra stella che si trova molto vicino).

Al termine ti ritrovi la lista con le magnitudini B e V nella stessa riga. Puoi aggiungere una colonna in cui calcolare B-V e graficare ad esempio V in funzione di B-V per creare il diagramma.

Ti allego un file di testo con la macro VBA in formato testo. La macro non e' stata redatta per essere distribuita quindi, se vuoi usarla, devi cambiare il nome dei due fogli contenenti le liste B e V e il numero di record in ogni foglio. Nel mio caso i due fogli si chiamano B_list e V_list. B_list contiene 507 record (stelle) e V_list 524 record. Anche le colonne devono essere nello stesso ordine che vedi negli screenshot.

Il tempo e' sempre tiranno e non ho mai realizzato una macro migliore da condividere. Ad esempio non e' complicato aggiungere un controllo per rilevare automaticamente il numero di record, il nome dei fogli e la posizione delle colonne coinvolte nell'analisi. Abbi pazienza...

Se vuoi provare questo metodo, per qualunque dubbio scrivimi pure in pvt. Sono certo che lo script di Lorenzo sia una soluzione molto piu' raffinata (non so se lavora anche con gli output di Astroart).

Paolo
Allegati
Macro_VBA.zip
(460 Bytes) Scaricato 142 volte
Avatar utente
Paolo
Quasar Guru
 
Messaggi: 7747
Iscritto il: 16 gen 2006, 22:49
Località: L'Aquila

Messaggioda LFranco » 18 set 2019, 15:45

Lo script scilab si può adattare a qualsiasi tipo di formato ascii.
Il criterio di funzionamento è molto semplice:
1. legge i due file (filtro B e V) in due matrici
2. per tutte le posizioni x, y del primo file (filtro B)
3. cerca le corrispondenti posizioni x, y del secondo file (filtro V) entro pochi pixel
4. combina il risultato in una matrice di output con posizioni e magnitudini B e V
5. esporta il risultato in un file di output

Questa logica si può implementare in qualsiasi linguaggio, basta conoscere qualche istruzione di input/output e di controllo del flusso di elaborazione.
Saluti
Lorenzo Franco
Avatar utente
LFranco
Quasar Dipendente
 
Messaggi: 647
Iscritto il: 8 ago 2015, 0:51
Località: Roma

Messaggioda AdrianoValvasori » 19 set 2019, 23:33

Grazie mille Paolo per perfetta la spiegazione.
In questi giorni proverò a fare dei test, devo rispolverare un po' le mie conoscenze di programmazione (base).

Per quanto riguarda il disegno delle isocrone, cercavo in rete informazioni ed ho trovato questo sito, se può interessare.

http://stev.oapd.inaf.it/cgi-bin/cmd

Un grazie anche a Lorenzo.

Ciao Adriano.
Avatar utente
AdrianoValvasori
Nuovo Utente
 
Messaggi: 6
Iscritto il: 17 set 2019, 21:55

Messaggioda Paolo » 22 set 2019, 11:48

Figurati Alessandro! Se ti va puoi mandarmi per e-mail le due liste B e V (*.sta) di Astroart, anche relative ad osservazioni di prova. Posso sistemartele nell'excel e rimandarti il foglio elettronico.

Grazie per l'interessante sito web sulle isocrone.

Lorenzo, ho capito che il tuo script e' davvero efficace, ottimo lavoro! Se si affronta uno studio del genere di frequente, penso sia la soluzione migliore.

Paolo
Avatar utente
Paolo
Quasar Guru
 
Messaggi: 7747
Iscritto il: 16 gen 2006, 22:49
Località: L'Aquila

Messaggioda AdrianoValvasori » 23 set 2019, 22:42

Ciao Paolo,
ho sistemato il codice VSB che mi hai mandato ed è andato tutto ok.
Sono un po' arrugginito in programmazione, ma quando ci si rimette le cose rivengono in mente.
Grazie ancora.
Ora sto studiando il sito delle isocrone per capire bene come cambiano in funzione delle variabili che si definiscono.

Ciao Adriano
Avatar utente
AdrianoValvasori
Nuovo Utente
 
Messaggi: 6
Iscritto il: 17 set 2019, 21:55

Messaggioda LFranco » 23 set 2019, 23:42

Ciao a tutti,
per gli interessati ecco lo script scilab per combinare i due file di posizioni (mag B e mag V).
Ricordo che scilab è scaricabile gratuitamente ed è molto efficace per la manipolazione di matrici.

Saluti
Lorenzo Franco

////////////////////////////////////////////////////////////////////////////
// Combina due file con le posizioni: x,y,mag delle stelle
// ottenute con filtri differenti
// (Autore: Lorenzo Franco (A81 Balzaretto Observatory) - aprile 2019
////////////////////////////////////////////////////////////////////////////

function n=cerca(xx, yy)
....n = 0
....max_dist = 5 // massima distanza in pixel
....for i = 1:numV
........delta_x = abs(xx - dVmag(i,1))
........// disp (i, delta_x)
........if delta_x < max_dist then
............delta_y = abs(yy - dVmag(i,2))
............// disp(i, delta_x, delta_y)
............if delta_y < max_dist then
................n = i // ritorna indice dove ha trovato corrispondenza
................disp("EXIT", n) // per debug del codice
................break
............end
........end
....end
endfunction

// apre il file di input filtro B (formato: x y magB) e lo mette sull'array dBmag[]
dBmag = read("c:\images\m67_B.dat",-1,3)
sdp = size(dBmag)
numB = sdp(1,1) // numero di righe mag B

// apre il file di input filtro V (formato: x y magV) e lo mette sull'array dVmag[]
dVmag = read("C:\images\m67_V.dat",-1,3) // file con le magnitudini V (formato: x y magV)
sdp = size(dVmag)
numV = sdp(1,1) // numero di righe mag V

output=[] // B(x,y,magB), V(x,y,magV)
p=1 // progressivo
for n = 1: numB
....xB = dBmag(n,1)
....yB = dBmag(n,2)
....mB = dBmag(n,3)
....iV = cerca(xB,yB)
....if iV > 0 then
........output(p,1)=xB
........output(p,2)=yB
........output(p,3)=mB
........output(p,4)=dVmag(iV,1)
........output(p,5)=dVmag(iV,2)
........output(p,6)=dVmag(iV,3)
........p=p+1
....end
end
// scrive il file di output (x,y,magB,x,y,magV)
fprintfMat("C:\images\m67_output.dat", output)

//
// togliere i puntini prima delle istruzioni ... servono solo per mantenere le indentazioni.
Avatar utente
LFranco
Quasar Dipendente
 
Messaggi: 647
Iscritto il: 8 ago 2015, 0:51
Località: Roma

Messaggioda Paolo » 24 set 2019, 10:25

Ciao Paolo,
ho sistemato il codice VSB che mi hai mandato ed è andato tutto ok.

Ciao Alessandro, ottimo! Quando completerai l'esperienza, sarebbe bello vedere qualcosa.

Ciao a tutti,
per gli interessati ecco lo script scilab per combinare i due file di posizioni (mag B e mag V).

Grazie per averlo condiviso Lorenzo!

Paolo
Avatar utente
Paolo
Quasar Guru
 
Messaggi: 7747
Iscritto il: 16 gen 2006, 22:49
Località: L'Aquila

Messaggioda AdrianoValvasori » 24 set 2019, 22:32

Ciao Paolo (sono Adriano non Alessandro ;) )
Grazie, tra qualche settimana inizierò con i ragazzi del liceo l'alternanza scuola/lavoro, poi pubblicherò l'esperienza, magari facendo preparare proprio a loro un piccolo documento.


Grazie Lorenzo, ho proprio scaricato questa sera Scilab, ora non mi resta che imparare e rinfrescare la programmazione.

Ciao Adriano
Avatar utente
AdrianoValvasori
Nuovo Utente
 
Messaggi: 6
Iscritto il: 17 set 2019, 21:55

PrecedenteProssimo

Torna a Fotometria

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti

cron

Chi c’è in linea

In totale ci sono 2 utenti connessi :: 0 iscritti, 0 nascosti e 2 ospiti (basato sugli utenti attivi negli ultimi 5 minuti)
Record di utenti connessi: 595 registrato il 22 dic 2022, 1:59

Visitano il forum: Nessuno e 2 ospiti

Login Form