Newsgroup: it.scienza.chimica
Titolo: Aiuto per calcolo numerico

Pofferbacco, mi sono dimenticato tutto..
Il problema è il seguente.
Ho un cromatogramma su file, con un dato ogni 0,2 sec. Per calcolare l' area
dei picchi ( pochini, 5 o 6 al massimo) devo ovviamente integrare i picchi
( e fin qui no problem).
La difficoltà è l' individuare automaticamente dove inizia e dove finisce il
singolo picco (tenendo conto delle parziali sovrapposizioni e dell'
andamento contorto della linea di base. In pratica devo trovare (sempre
automaticamente ) i minimi della curva (posizionati quindi prima e dopo ogni
picco)  e qui' non riesco ad individuare la via numerica piu' semplice.
Avete qualche sano e pratico suggerimento o qualche link?
Grazie
Mauro Baudino
PS: ringrazio per i vari consigli su fortran, c++, java ecc. Ho optato per
Visual Basic, che mi sembra un buon compromesso fra cio' che mi serve e cio'
che posso sperare di capire in tempi umani.


Speriamo!!    ^__^

Ciao!
Avrei un favore da chiederti: se ne sei a conoscenza, potresti postarmi la
"ricettina" (in italiano!!!!) per costruire un lava lamp, specificando dove
potrei reperire l'occorrente?
Te ne sarei molto grata.

nel caso di pochi picchi lontani e non sovrapposti:
dovresti passare tutto il cromatogramma, prendere un centinaio di punti a
caso(anche se sono sui picchi non importa perchè i picchi sono pochi) e con
un metodo di estrapolazione lineare (minimi quadrati) dovresti trovare una
equazione Y=mT+Y° per la linea di base con questi punti
ora prova a maggiorare la Y° diciamo del 10% (è tanto ma non so come è fatto
il cromatogramma quindi ti devi regolare tu)
così sei sicuro che tutti i picchi alti incontrino la linea di base
sottrai l'ordinata del singolo punto a quella della linea di base e integra
se il metodo funziona ma hai picchi più frequenti (sempre separati) e una
linea di base troppo alta prova a fare una cernita sui punti.
con un test di tipo statistico ripetuto una decina di volte:
Y=mT+Y°
preso un punto da cui hai estratto l'eq precedente
Y > Y° * 1.30  (30% di eccesso )
se vero allora (probabilmente hai preso un punto su un picco) butta via il
punto e ricalcola l'eq
fai in modo che il numero di punti rimanga elevato.
se i picchi sono sovrapposti devi procedere a passi di circa 10 punti
(possono essere molti di più)
calcolare come prima la retta passante per questi 10 punti e confrontarla
con la retta calcolata precedente nel momento in cui il coeff angolare
cambia significativamente (in % devi regolarti tu) hai un massimo/minimo e
tronchi l'integrazione (in un punto qualunque dei 10 perchè un picco di
solito comprende una vagonata di punti) ripartendo con l'integrazione dal
punto successivo.
(qui al posto che usare la lineare puoi anche usare una interpolazione
parabolica e confrontare il primo termine (a) al posto che confrontare (m) )
spero di esserti stato d'aiuto
ciao

 shiftare, con un semplice ciclo di for, tutti i dati a tua disposizione,
Ti ringrazio molto, ma il problema non era cosi' semplice.
I dubbi sono:
1) gli spike e i picchi da interferenze elettriche  come li considero nell'
analisi automatica?. Ad es. sul lato discendente di un picco (dove dovrei
trovare un minimo) se ho uno spike devo saltare il relativo minimo ; quindi
immagino dopo aver trovato un minimo di dover comunque proseguire l' analisi
di un paio di secondi di curva, per vedere se scenda ancora. Percentualmente
sulla larghezza presunta o media del picco, di quanto devo proseguire ?
2) come faccio in automatico a definire la linea di base quando ho piu'
picchi parzialmente sovrapposti, con la linea di base che deriva. ? Dopo
quanti sec. di acquisizione ( supponendo 5 letture al secondo) decido che un
andamento quasi costante è la linea di base?
3) ecc.
Mi piacerebbe sapere se qualcuno ha effettuato analisi numerica su curve
cromatografiche ( nello specifico un Dionex, ma poi seguiranno le altre
famiglie) e come ha affrontato i problemi pratici di analisi di
cromatogrammi reali, ovvero se conoscete i criteri teorici ottimali per l'
analisi di cromatogrammi.
Grazie comunque
Mauro

 potrei reperire l'occorrente?
Purtroppo non ho ricette; chiedi a Darkmen che ne sta facendo una. Poi posso
aiutarti, anche se credo che si trovi tutto facilmente.
Ciao
Mauro

Ciao, se ti interessa io mastico un po' di VBA (Visual Basic for
Applications), con il quale ho fatto una distinta base su excel.
Il file del cromatogramma consiste in una serie di dati numerici? Avrai un
valore numerico (ordinata) corrispondente ad ogni intervallo di tempo
(ascissa) o sbaglio?
Se cosě fosse potresti impostare qualche ciclo for/next del tipo:
Dim n (100,2) As Double   'nel caso fossero 100 coppie di valori'
   for k = 1 to 100
        for j = 1 to 2
            n (k, j) = 'qui ci va un riferimento al foglio di lavoro di
excel dove dovresti importare i dati del file'
        next j
   next k
 'cosě avresti una matrice con le tue 100 coppie di valori. Non sto a
dilungarmi troppo, potresti pigliare le differenze tra due punti successivi
sulle ordinate o in un certo intervallo e se supera un certo valore,
condsiderarlo l'inizio di un picco, stessa cosa per la fine.....'
se vuoi approfondire fammelo sapere che ti butto giu qualcosa di piů
concreto
ciao
Jonathan