Supermongo

MaGosTranO93
Ciao,
sono alle prime armi con questo strumento di programmazione...c'è qualcuno piu esperto che puo darmi una mano?

Risposte
wedge
provaci, cosa ti serve? non e' il programma piu funzionale del pianeta in ogni caso.
(ma dall'altro lato, come bellezza dell'output grafico standard non ha paragoni al mondo)

MaGosTranO93
Lo uso perchè mi è stato suggerito, altrimenti non ne conoscevo nemmeno l'esistenza...
In pratica ho una tabella in un file e devo selezionare solo alcune righe di quella tabella, contraddistinte da una variabile che assume valori 1,2,3. Come faccio ad esempio, a selezionare solo le righe che hanno questa variabile =1?
Spero di essermi spiegato... :roll:

wedge
si, ho capito. purtroppo SM, che io sappia, non ha una funzione come il WHERE() di idl, che seleziona gli indici di un vettore o struttura che corrispondono ad una certa condizione. se il tuo scopo è solo plottare, quello che ti conviene fare è semplicemente mettere un if entro il plot, tipo
points x y if (z = 1)
se hai da fare cose più complicate... credo SM non sia l'ideale. va bene credo solo per veloce esplorazione dei dati. in ogni caso, prova anche a chiedere al tuo prof, magari ha una soluzione più elegante della mia.

MaGosTranO93
Purtroppo non funziona, o meglio funziona solo con una condizione della variabile, mentre con le altre non plotta niente, come se non leggesse le altre righe...
Purtroppo mi rendo conto che questo non è il posto piu funzionale per discuterne, però qualche altro suggerimento lo accetto volentieri :)

wedge
non ricordo la sintassi giusta, ma sono sicuro che se hai tre vettori in un file tabella.dat
#x y z
1 1 0
2 2 0
3 3 1

e fai una macro

data tabella.dat
read {x 1 y 2 z 3}
box
limits eccetera
points x y (if z == 0)

ti plotta solo i punti dove z e' 0. ti ripeto, non ricordo la sintassi esatta (specie come si scrive la conditio dentro la parentesi - o magari non c'e' la parentesi), ma lo schema e' quello.
comunque, non puoi chiedere anche al tuo professore?

MaGosTranO93
Esatto, anche se io ho fatto il ciclo if all'inizio e non alla fine in modo che
if z=1 plotta gli altri punti, Il problema è proprio che funziona solo nel primo caso e non nel secondo. Ti riporto la macro:

data Tabella_MIRO.txt

read {oid 1.s flag 3 z 4 fxs 5 fx 6 lxs 7 lx 8 nhf 13 nhfd 14 nhfu 15 g 16 gd 17 gu 18 oiii 19}
if (flag==1) {
ctype black
define color 2

set q = -2,10,1

set h=histogram(g:q)

limits q h
box
histogram q h
}

flag è una delle colonne della tabella, ed è quella che dovrebbe discriminare le righe, ma se cambio il valore di flag nell'IF non esegue piu nessun plot (non disegna neanche gli assi di BOX per intenderci).
Ci sarà qualche problema di sintassi...??

wedge
mi sembra di ricordare che in questi casi smongo voglia l'if dove hai histogram, perche' e' un linguaggio costruito strano.
succede che se metti un if in plot x y (if z == 0) questo vuole un vettore, perche anche x e y lo sono... mentre se fai if (z==0) di per se, vorrebbe uno scalare, mentre tu gli stai dando una colonna.
ma ti ripeto, sono tutti ricordi molto vaghi di 2 anni fa.
non saprei veramente come aiutarti se non consigliarti nuovamente di andare dal tuo prof, che non e' una cosa deplorevole.

MaGosTranO93
Avevo gia fatto un paio di tentativi nel modo in cui dici, ma rimaneva lo stesso problema.
Il fatto è che il prof è un po lontano e non sempre reperibile.
Provo a smanettarci un altro po, grazie comunque :)

david_e1
La mia esperienza è che si fa molto prima a creare un nuovo file (eventualmente tramite un qualche script Python o altro), piuttosto che perdere tempo a litigare con i 300'000 quirks di supermongo (che personalmente odio sia come software che come qualità dei grafici prodotti, ma che uso per facilitare i miei collaboratori).

MaGosTranO93
cosa sono i quirks?
Comunque mi sembra sconveniente creare addirittura diversi files, il programma dovrebbe essere fatto apposta per facilitare sti compiti no?

david_e1
Tutte le varie stranezze di supermongo.

Io personalmente uso supermongo solo per il "prodotto finito", per esplorare i dati o altro io uso gnuplot o python + matplotlib (entrambi in grado di produrre grafici di qualità superiore a quelli di SM IMHO), per cui in supermongo non devo fare che pochi plot e per quelli poco mi costa creare file multipli. Tanto più che il tipo di selezione dei dati che vuoi fare tu è molto semplice in ogni linguaggio di programmazione / software un minimo decente (guarda caso è un casino solo in supermongo! :D)...

Comunque io sono anche un po' biased: odio supermongo! :D

MaGosTranO93
Scusa la domanda, non ho capito perche se hai tutte queste alternative usi sm lo stesso... Voglio dire, si usa perche fa parte dello standard oramai? Altrimenti perche è cosi diffuso pur essendo fatto malissimo ?(come dite voi, io lo conosco ancora troppo poco)

wedge
la diffusione di SM e' dovuta credo al fatto che molte persone erano abituate a usarlo negli anni 80-90 e hanno continuato a farlo...
lo standard astronomico che si e' ormai affermato e' pero' IDL, con cui puoi fare dalla riduzione dei dati all analisi alla visualizzazione dei risultati, tutto insieme.
SM ha il vantaggio che pur non essendo molto personalizzabile ma produce comunque plot decenti da un file ASCII scrivendo 5 righe di codice.
ma rispetto a qualunque linguaggio di programmazione decente c'e' da mettersi le mani nei capelli, tantissime cose che sarebbero semplicissime sono un delirio.

david_e1
"MaGosTranO93":
Scusa la domanda, non ho capito perche se hai tutte queste alternative usi sm lo stesso... Voglio dire, si usa perche fa parte dello standard oramai? Altrimenti perche è cosi diffuso pur essendo fatto malissimo ?(come dite voi, io lo conosco ancora troppo poco)

Perché ci sono persone che lavorano con me che sono abituate usare SM e a me costa poca fatica adattare i file di dati in modo da plottarli poi con SM (anche io sono costretto a splittare i file...). SM non è fatto male, è solo molto vecchio, quindi IMHO non regge la concorrenza di software più recenti. Tra l'altro c'è anche da chiedersi quanto a lungo sarà ancora in giro, dato che è un sw. proprietario e non uno standard potrebbe anche sparire di circolazione (o se in futuro sarai presso un'Università disposta a pagare la licenza...)... personalmente preferisco quindi non dipendere da SM (o da altri sw. chiusi)...

A meno che tu non sia costretto o non sia un'amante dei plot stile ApJ primi anni '90, io ti sconsiglierei di usare SM. E se proprio devi / vuoi usarlo la cosa più facile è preparare i dati nel formato che lui si aspetta... ci si risparmia parecchi mal di testa.

MaGosTranO93
Riesumo questa discussione per chiedere se, volendo abbandonare SM, mi conviene usare IDL come è stato detto, e dove posso trovarlo, oppure cos'altro mi conviene :-)
Grazie

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.