Rev Med Exp. Vol. 15 Nº 1 -2
1998 |
|
PROGRAMA EN "BASIC"
PARA EL CALCULO DE DL50
POR EL METODO DE PROBITS
Ramiro Castro de la Matal y
Alfonso Zavaleta Martínez-Vargas2,3.
Resumen
Se describe un programa en lenguaje
BASIC, para plataforma MSDOS, diseñado para calcular la Dosis Letal Media (DL50) de
agentes tóxicos utilizando el método de transformación en probits. Para la utilización
del programa, el operador provee las dosis del agente tóxico empleado en el ensayo de
toxicidad aguda letal, el número de animales utilizados en cada dosis, y el número de
animales que murieron con dicha dosis; la DL50, así como los límites fiducidales al 95%
de confianza. Asimismo se presentan los valores definitivos y provisionales de la recta.
El programa ofrece además la posibilidad de efectuar reanálisis de los datos en los
casos en que se desee buscar mayor aproximación de los valores; gráfica, archivo de
resultados en disco, y la opción de comparación de dos curvas, para la estimación de
potencias relativas.
Palabras claves: DL50, Probits, DE50,
Toxicidad aguda
Abstract
A program in the languaje BASIC is
described, for the MSDOS platform, designed to calculate the Average Lethal Dose (DL50) of
toxic agents used in the method of transformation in probits. For using this program, the
operator supplies the dose of the toxic reagent used in the lethal acute toxicity test,
the number of animals which die with this dose, DL50, as well as the trustworthy limits to
give 95% reliability. In addition final and provisional straight line values. The program
offers in addition, the possibility of making a reanalysis of the data in the cases in
which it is desired to seek a better approximation of the values, graphs, file the results
on discs and the option to compare the two curves, for the estimation of relative
strengths.
Key words: DL50, Probits, DE50, Acute
toxicity |
Introducción
Varios son los programas que se han
empleado para la determinación de la Dosis Letal Media (DL50) de agentes tóxicos. Entre
ellos se cuentan métodos (gráficos como el de Reed & Muench, y los métodos
estadísticamente válidos corno el método de Spearman Karber, y el método de
transformación en probits, siendo ambos métodos aceptados por la Organización Mundial
de la Salud, y empleados rutinariamente en laboratorios dedicados a la evaluación de la
toxicidad aguda en diferentes países2,3,5-7. Dado que el empleo del método de
transformación en probits, efectuado manualmente es laborioso y demanda el consumo de
varias horas en los cálculos, se ha diseñado un programa de cómputo que pueda operar en
computadoras pequeñas, y que reduzca significativamente el consumo de tiempo del
operador.
El presente programa para calcular la
DL50 por el método de transformación de porcentajes en probits se desarrolló
inicialmente para una procesadora Times-Sinclair 8080. Las Timex fueron las primeras
computadoras de precio muy bajo, de US$ 30, que aparecieron en el mercado a inicios de los
ochentas, usando como monitor un receptor de Televisión, con una baja velocidad de
procesamiento y sólo 16 kilobytes de memoria. Ahora son miradas como un juguete primitivo
pero en su tiempo, cuando aún no habían salido al mercado las computadoras personales
representaron la única posibilidad de efectuar operaciones muy complejas por las personas
que no tenían acceso a las grandes máquinas de costo elevadísimo y que requerían
locales especialmente acondicionados. El lenguaje usado por las Timex era el Basic y con
él se desarrolló el primer programa que permitía reducir a menos de 7 minutos el
cálculo de una DL50. Este mismo programa ha sido mejorado, ampliado y perfeccionado para
calcular además de los parámetros básicos, los niveles de ajuste de los resultados a
las curvas teóricas, las gráficas y la impresión de los resultados.
El propósito de esta comunicación es el
de presentar un programa para el cálculo de la DL50 que ha sido utilizado en la Sección
Farmacología de la Universidad Peruana Cayetano Heredia, y en el Laboratorio Afiliado del
Instituto Nacional de salud para la estandarización de los venenos de serpientes y
arácnidos peruanos, así como la evaluación de la potencia neutralizante de los sueros
antiofídicos comerciales fabricados por el Instituto Nacional de Salud8-15.
Materiales y métodos
1) DISEÑO DEL PROGRAMA
Las formulas del cálculo de probits se
han tomado de Burn y Col (1950)1, Finney (1952 )2, las Tablas
Científicas de la Ciba Geigy3, y Pearson y Hartley (1954)4. Cada
una de ellas ha suministrado información que ha permitido la integración del programa,
con el que se han recalculado los ejemplos y las tablas de las referencias para apreciar
su precisión y ajuste.
El programa tiene 356 instrucciones
numeradas. pese a que la versión que usamos en el laboratorio corre en QBASIC y está
compilada de tal modo de presentar los resultados en no más de uno o dos segundos
después de ingresados los datos.
Debido a lo que se indicó anteriormente,
los pasos 10 a 280 están dedicados a la prueba de normalidad por el método de ji
cuadrado, que se prefirió añadir al comienzo para controlar mejor su ejecución y allí
quedó.
Al inicio, en los Pasos 290-520 se crea
un arreglo (array) de 12 posiciones para mantener los datos ordenados y se efectúa un
diálogo con el operador, pidiendo de manera ordenada los valores experimentales: Número
de grupos, y en cada grupo dosis empleada, número de casos (número de animales del
grupo) y número de positivos (número de animales muertos).
Conforme van ingresando los datos se
colocan en el arreglo, directamente, transformados en logaritmos y coeficientes y
posteriormente con todos sus valores de probits.
De allí se pasa a los pasos 2080-2150
para ordenar los coeficientes de mortalidad en orden creciente. A los valores menores a
0.5 se les ha restado el valor de 1 para calcular el área bajo la curva normal para todos
los valores por encima de 0.5. Si el coeficiente era menor, después se recupera su valor,
pero ya sabiendo que área bajo la curva representa apartándose de la media. Para ello,
cada grupo en el arreglo tiene un lugar que permite seguir su valor inicial. Esta
estrategia se mantiene a lo largo de todo el programa. Se efectúa la interacción y
cuando corresponde adjudicar el resultado a un valor determinado se le coloca en el
espacio correspondiente de su arreglo. Luego se regresa a la posición inicial.
En los pasos siguientes, 540 a 800 se
calcula para cada grupo el valor del probit empírico como área bajo la curva normal
correspondiente al porcentaje (como coeficiente %/100) obtenido. Para ello se sigue un
proceso iterativo con intervalos de 0,005 hasta llegar al valor más lejano a 0,5 (50%).
A continuación, en los pasos 810-1020 se
calculan los probits provisionales por aproximación por mínimos cuadrados de la línea
recta de regresión del logaritmo de la dosis vs probit empírico recuperándose para cada
log-dosis el probit que le corresponde en la línea ajustada.
Para ello se reordenan los valores y se
eliminan momentáneamente los que corresponden a mortalidades de 0 y de 100%, los que se
recuperan de la recta ajustada (pasos hasta 1280)
Los valores obtenidos se ajustan mediante
los coeficientes de apreciación que permiten dar pesos variables a los diferentes valores
de acuerdo al número de casos y a su cercanía a los valores centrales obteniéndose los
probits de trabajo con los que se calcula la regresión definitiva en los pasos 1290 a
1620
En cada lugar del arreglo se han ido
colocando los diversos valores de probits: empíricos, provisionales y de trabajo.
Con los parámetros de la regresión de
los probits de trabajo se pasa a la subrutina 30-280 donde se efectúa la prueba de ji
cuadrado para apreciar la normalidad de los datos, (al 95% de precisión). La prueba se
efectúa alternativamente para grados de libertad menores o mayores de 29) Si la curva no
es normal, no se calculan los límites fiducidales.
Los resultados se expresan como la
ecuación de la recta definitiva y como serie de valores definitivos y provisionales. Se
presentan juntos estos valores con el objeto de correrlos de modo iterativo si la
desviación es muy grande, es decir considerar los probits definitivos como provisionales
y recalcular todo de nuevo hasta obtener un buen ajuste. Los limites fiducidales se
calculan en función del logaritmo de la dosis A nivel del 95% considerando la
distribución normal o con la fórmula alternativa de acuerdo a los resultados de la
prueba ji cuadrado. Cuando la distribución es normal, el error estándar se presenta
también para el logaritmo de la dosis.
Un error bastante común, que incluso se
aplica en publicaciones de revisión muy exigente, es el de considerar el error estándar
de la determinación en función de la dosis y no de su logaritmo v esto provoca una
distorsión muy grande al calcular los límites. Por ejemplo una DL50 de 100 con
error estándar de 10 daría como límite, al 95%: Los valores 80 a 120 (redondeando) Si
se consideran los logaritmos, como debe ser los límites son 10 y 1000, no solamente mucho
mayores sino también asimétricos con respecto al valor central.
Las alternativas que se presentan con los
resultados son las siguientes:
1. Buscar mayor aproximación, de acuerdo
al nivel de aproximación entre los probits provisionales y los definitivos.
2. Gráfica: La gráfica se calcula en
los pasos 34 10 a 3110 y se presenta en forma de curva sigmoidal con los puntos
experimentales. En muchas publicaciones se ha preferido el gráfico de la recta de
probits, pero esto no ofrece ninguna ventaja y se debe a la dificultad tradicional de
dibujar la sigmoidal ajustada a los datos, cosa que ya no ocurre con el uso de la
computadora.
3. Regresar al inicio para otros
cálculos.
4. Imprimir los resultados: Pasos 2160 a
2400 donde se arreglan los resultados para impresión en papel.
5. Archivar los resultados: Pasos 3120 a
3410 los resultados se guardan en un archivo con el objeto de poder comparar
posteriormente varias series de datos en pruebas de toxicidad comparada haciendo el
análisis correspondiente.
6. Comparar dos curvas: Pasos 3420 al
final en pantalla se dan las instrucciones al operador y se encadena al programa
correspondiente mediante el cual se comparan las DL50 y se establece la potencia relativa
de los compuestos ensayados. El programa correspondiente sigue las fórmulas de Finney y
se ha hecho de manera similar al presente.
7. Terminar: Concluye el programa.
Para la impresión de la gráfica no se
ha hecho ninguna previsión en el programa ya que basta utilizar el comando "Print
Screem" con la impresora en modalidad de gráficos y el comando "Graphics"
en la memoria. (Hay que tener en cuenta que este comando tiene modificadores de acuerdo al
tipo de impresora)
2) APLICACIÓN DEL PROGRAMA EN LA
ESTIMACIÓN DE LA DL50 DE VENENO DE ESCORPIÓN
Veneno del escorpión peruano Hadruroides
lunatus (Koch 1967) fue obtenido mediante electroestimulación y desecado en campana de
vacío sobre CaC12. Alícuotas de veneno se diluyeron en volúmenes apropiados de NaCl
0,85% e inyectados (0,5 mL) por vía intraperitoneal en ratones albinos mus musculus (cepa
Balb/C, ambos sexos, 20 a 24 g, 6 ratones/grupo, ámbito 32,47 a 378,96 mg/kg). Un grupo
de 6 ratones recibió 0,5 mL de NaCl 0.85% y utilizado como control. La mortalidad
producida por el veneno fue registrada hasta las 72 horas. La DL50 fue estimada
a las 72 horas, por el método de transformación en probits empleando los valores de
dosis (mg/kg), el número de ratones/grupo (casos) y el número de animales que murieron
(positivos). Los datos experimentales utilizados para el análisis fueron obtenidos de
Zavaleta (1980)17:
Dosis
(mg/Kg) |
Casos por
grupo |
Positivos
(muertos) |
| 32,47 |
4 |
1 |
| 60,31 |
5 |
2 |
| 111,02 |
5 |
3 |
| 204,37 |
4 |
4 |
| 378,96 |
5 |
5 |
Resultados
1) El Programa de Probits. A continuaci611 se lista el algoritmo completo del programa:
10 'probits %,11
20 CLS: GOTO 290
30 IF AN > 29 THEN ZJ = ((XD / AN) Ù (1/ 3) - (1 - 2 / (9 * AN))) / SQR (2 / (9 * AN)): GOTO
200
40 IF AN = I THEN ZJ = SQR(XD): GOTO 200
50 X I = AN / 2: X5 = XI + 5
60 G5 = SQR (2 * 3.14159 / X5) * (X5 Ù X5)
70 E5 = EXP(-(X5 - (1 / (12 * X5)) + (1 (360 * X5 X5 * X5))))
80 G5 = G5 * E5
90 GJ G5 / ((XI)* (XI + 1) * (XI + 2) (XI + 3) 1-, (X I + 4))
100 FI = XD (XI 1): F2 = (2 A XI) GJ * EXP(XD 2): Fl = F1 / F2
110 CJ = 2 * XD / AN * F1: S1 = 1
120 FOR KJ = I TO 30: S2 = S1: S4 = I
130 FOR J = I TO KJ: S4= S4 * XD/ (AN + 2 J): NEXT
140 S1 = S1 + S4
150 IF ABS(S1 - S2) <.0005 THEN KJ = 30
160 NEXT KJ
170 CJ = 1 - CJ * S 1
180 RETURN
190 STOP
200 B1 = .319382: B2 =-.356564: B3 = 1.78148:
B4 = -1.82126: B5 = 1.33027
210 RJ= .231642
220 FK SQR(I / (2 * 3.14159))
230 XX ABS(ZJ)
240 FJ = FK * EXP ( -(XX Ù 2/2))
250 TJ = I / (I + RJ * XX)
260 CJ = FJ * (B I * TJ + B2 * TJ Ù 2 + B3 * TJ Ù 3 + B4 * TJ Ù 4 + B5 * TJÙ 5)
270 IF AN = I THEN CJ = 2 * CJ
280 RETURN
290 LOCATE 8
300 PRINT "ANÁLISIS DE PROBITS": PRINT:
PRINT
310 INPUT "Nombre del compuesto (usar hasta 8
letras) "; MOC$
320 INPUT "Número de arupos "; A
330 DIM A (A,12)
340 FOR I = 1 TO A
350 PRINT "Dosis"; I; " : ";
360 INPUT A (I, 1)
370 PRINT "Número de casos"; I; ":"
380 INPUT A (I, 2)
390 PRINT "Positivos"; I; "; ";
400 INPUT A (I, 3)
410 PRINT
420 NEXT 1
430 FOR I = 1 TO A
440 A(I, 4) = A (I, 3) / A(I, 2)
450 A(I, 5) LOG (A(I, 1)) / LOG(10)
460 A(I, 7) =A (I, 4)
470 IF A(I, 4) <.5 THEN A(I, 7) = 1 - A(I. 4)
480 A(I, 8) = 1
490 NEXT 1
500 CLS
510 LOCATE 8: PRINT "Espere unos instantes"
520 GOSUB 2080
530 S = A
540 M= 1 / (2 * 3.1415926536#) Ù .5
550 N = 2.71822818#
560 FOR I = I TO A
570 IF A (I, 7) = I THEN S = S - 1
580 NEXT 1
590 J = 1
600 E =.5
610 1 = -.01
620 I = I +.01
630 IF I = 5.67 THEN GOTO 810
640 C = 1 +.01
650 R = M * N Ù (-I Ù 2 / 2)
660 P = M * N Ù (- (I +.005 ) Ù 2/2)
670 Q = M * N Ù -(C Ù 2/2)
680 D =.005 / 3 * (R + 4 * P + Q)
690 E = E + D
700 PRINT "*";
710 IF A(J, 7) -E<=.5 THEN A(A(J, 8), 6) =5
720 IF A(J. 7) - E <= 0 THEN GOTO 740
730 GOTO 620
740 IF A(A(J, 8),4) <.5 THEN A(A(J, 8), 6) = 5 -c
750* IF A(A(J, 8), 4) >.5 THEN A(A(J, 8),6) = 5 +c
760 IF A = J THEN GOTO 810
770 J = J + 1
780 IF A(J. 7) = I THEN A(A(J, 8), 6) 0
790 IF A(J, 7) = I THEN GOTO 760
800 GOTO 710
8 10 E = 0
820 F=0
830 C = 0
840 D = 0
850 FOR I = 1 TO A
860 IF A(I. 6) = 0 THEN A(I, 5) 0
870 F = F + A(I, 6)
880 E = E + A (I, 5)
890 C = C + A(I, 5) ^ 2
900 D = D + A(I. 6) * A(I, 5)
910 A (I, 5) = LOG(A(I, 1)) / LOG (10)
920 NEXT 1
930 B = (D - E * F / S) / (C -E Ù 2 S)
940 G = F / S - B * E / S
950½ FOR I = 1 TO A
960 A(I. 9) G + B * A(I. 5)
970 NEXT 1
980 FOR I= 1 TO A
990 UU = A(I. 9) - 5
1000 A (1, 7) = ABS(UU)
1010 A (1, 8) = 1
1020 NEXT 1
1030 GOSUB 2080
1040 J = 1
1050 E =.5
1060 1 = -.0 1
1070 1 = 1 +.01
1080 IF I = 5.67 THEN GOTO 1290
1090 C = 1 +.01
1100 R = M * N Ù (-I A 2/2)
1110 P= M * N Ù (- (] +.005 ) A 2/2)
1120 Q = M * N Ù (-C A 2/2)
1130 D =.005 / 3 * (R + 4 * P + Q)
1140 E = E + D
1150 IF A (J, 7) = 0 THEN GOTO 1240
1160 IF A (J.7) - C <= 0 THEN GOTO 1180
1170 GOTO 1070
1180 IF A(A(J, 8),9) < 5 THEN A(A(J, 8), 10) = I - E
1190 IF A(A(J, 8), 9) > 5 THEN A(A(J, 8), 10) = E
1200 A(A(J, 8), 11) = Q
1210 IF A = J THEN GOTO 1290
1220 J = J + 1
1230 GOTO 1150
1240 A(A(J, 8), 10) =.5
1250 A(A(J, 8), 11) = R
1260 IF J = A THEN GOTO 1290
1270 J = J + 1
1280 GOTO 1070
1290 FOR I = I TO A
1300 IF A(1, 4) = 0 THEN A(I, 12) = A(I, 9) - A(I, 10)/ A(I, 11)
1310 IF A(I, 4) = 1 THEN A(I, 12) = A(I, 9) + I - A(I, 10) / A(I, 11)
1320 A(I, 12) = A(I, 4) A(I, 11) - A(I, 10) A(I, 11) + A(I, 9)
1330 NEXT 1
1340 J = 0
1350 L = 0
1360 K = 0
1370 O = 0
1380 Q = 0
1390 R = 0
1400 P = 0
1410 FOR I = 1 TO A
1420 J = J + A(I, 12)
1430 W = A(1, 2) * A(I, 11) Ù 2/ (A(I, 10) * (1 - A(I. 10)))
1440 K = K + W
1450 L = L + W A(I, 12)
1460 O= O+ W * A(I, 12) Ù2
1470 P = P + W * A(I, 5) * A(I, 12)
1480 Q = Q + W * A(I, 5)
1490 R = R + W * A(I, 5) Ù 2
1500 NEXT 1
1510 SXX = R - Q Ù 2 / K
1520 SXY = P - Q * L / K
1530 XPRO = Q /K
1540 YPRO = L / K
1550 SYY = O - L Ù 2/K
1560 C = SXY / SXX
1570 H = L / K - C * Q / K
1580 DL (5 - H) / C
1590 ES =1 / C * (1 / K + ((DL - Q K) * (DL - Q / K)) /(R - Q Ù2 K)) Ù .5
1600 XD = SYY - C * SXY: AN = A - 2
1610 GOSUB 30
1620 PRINT "DATOS": PRINT
1630 PRINT "Dosis)", "Casos", "Positivos", "P.
empíricos", "P. provisorios"
1640 FOR I = 1 TO A
1650 PRINT A(I, 1), A(I, 2), A(I, 3), A(I, 6), A(I, 9)
1660 NEXT 1
1670 PRINT: PRINT "RESULTADOS"
1680 PRINT "ProvisionaL"; TAB(50); "Definitivo"
1690 PRINT "Logaritmo de DL50 "TAB(30); (5 - G) / B; TAB(50); DL
1700 IF CJ <=.05 THEN PRINT "La distribución no es normal": GOTO 1720
1710 PRINT "Error standard "; TAB(50); ES
1720 PRINT "DL50"; TAB(50); EXP(((5 - G) / B)
*(LOG(10))); TAB(50) EXP(DL * (LOGO(10)))
1730 PRINT "Regresión "; "Y="; G; "+"; B; "X";
TAB(50): "Y="; H;"+"; C; "X"
1740 IF CJ >.05 THEN GOTO 1820
1750 BACC = C * SXY - 3.8416
1760 IF BACC <= 0 THEN GOTO 1840
1770 LIMSUP = XPRO + (I / BACC) * (SXY * (5 - YPRO) + 1.96 * SQR (SXX * (BACC / K + (5 -
YPRO) (5 - YPRO))))
1780 LIMINF XPRO + (I / BACC) * (SXY * (5 -YPRO) - 1.96 * SQR(SXX ' (BACC / K + (5 -YPRO)
* (5 - YPRO))))
1790 PRINT "Límite Superior 95%"; TAB(50); EXP (LIMSUP * LOG(10))
1800 PRINT "Límite Inferior 95%"; TAB(50); EXP(LIMINF * LOG(10))
1810 GOTO 1840
1820 PRINT "Límite Superior 95%"; TAB(50); EXP ((DL + ES * 1.96) * LOG(10))
1830 PRINT "Límite Inferior 95%"; TAB(50); EXP((DL - ES * 1.96) * LOG(10))
1840 PRINT
1850 PRINT "Para mayor aproximación, M ";
1860 PRINT "Para gráfica G"
1870 PRINT "Para volver a empezar V ";
1880 PRINT "Para imprimir I"
1890 PRINT "Para archivar los resultados A ";
1900 PRINT "Para comparar dos curvas C"
19 10 PRINT "Para terminar T"
1920 SM$ = " "
1930 WHILE SM$ = " ": SM$ = INKEY$: WEND
1940 IF INSTR("mM". SM$) THEN CLS: GOTO 2040
1950 IF INSTR("tT", SM$) THEN CLS: CHAIN "menu"
1960 IF INSTR("cC", SM$) THEN CLS: GOTO 3420
1970 IF INSTR("gG", SM$) THEN GOTO 2410
1980 IF INSTR("aA", SM$) THEN GOTO 3120
1990 IF INSTR("il", SM$) THEN GOTO 2170
2000 IF INSTR("Vv", SM$) THEN CLS: RUN
2010 GOTO 1930
2020 CLS
2030 GOTO 1600
2040 B = C
2050 G = H
2060 GOTO 950
2070 STOP
2080 FOR I = I TO (A - 1)
2100 NEXT 1
2110 GOTO 2150
2120 SWAP A(I, 7), A(I + 1, 7)
2130 SWAP A(I, 8), A(I + 1, 8)
2140 GOTO 2080
2150 RETURN
2160 STOP
2170 INPUT "Título de la impresión"; AS
2180 LPRINT TABOO); A$: LPRINT
2190 LPRINT "Dosis", "Casos", "Positivos", "Positivos
%"
2200 FOR I = I TO A
2210 LPRINT A(I, 1), A(I, 2), A(I, 3), A(I. 4) = 100
2220 NEXT 1
2230 LPRINT: LPRINT o RESULTADOS"
2240 LPRINT "Provisiona"; TAB(50); "Definitivo"
2250 LPRINT "Logaritmo de DL50 "; TAB(30); (5 - G) / B; TAB(50); DL
2260 IF CJ <=.05 THEN PRINT "La distribución no es normal": GOTO 2280
2270 LPRINT "Error standard "; TAB(50); ES
2280 LPRINT "DL50"; TAB(30); EXP(((5 - G) / B) * (LOG(10))); TAB(50); EXP(DL *
(LOG(10)))
2290 LPRINT "Regresión "; "; "Y="; G; "+"; B;
"X": TAB(50); "Y=": H; "+"; C; "X"
2300 IF CJ >.05 THEN GOTO 2370
2340 LPRINT "Límite Superior 95%"; TAB(50): EXP (LIMSUP * LOG(10))
2350 LPRINT "Límite Inferior 95%"; TAB(50): EXP(LIMINF * LOG00))
2360 GOTO 2390
2370 LPRINT "Límite Superior 95%"; TAB(50); EXP((DL + ES * 1.96) * LOG(I 0))
2380 LPRINT Límite Inferior 95%>>; TAB(50); EXP((DL - ES * 1. 96) * LOG(10))
2390 LPRINT
2400 GOTO 1850
2410 CLS : LOCATE 8
2411 INPUT "Título a poner a la gráfica (Parte superior)"; TIT$
2412 INPUT "Leyenda de la gráfica (Parte inferior) "; LEY$
2413 TIT = LEN(TIT$): TIT = (80 - TIT) / 2
2414 LEY = LEN(LEY$): LEY = (80 - LEY) / 2
2420 SCREEN 2
2430 XMN = 2.5: XMX = 7.5: YMN = 0: YNIX = 1
2440 CLS
2450 NXTIC = 10: NYTIC = 10
2460 CLS
2470 SCREEN 2
2480 DSX = ABS(XMX - XMN): DSY = ABS(YMX - YMN)
2490 SX =.1: SY =.1
2500 A XMN = XMN - DSX * SX: AXMX = XMX + DSX * SX
2510 AYMX = YMX + DSY SY: AYMN = YMN - DSY * SY
2520 WINDOW (AXMN. AYMN)-(AXMX, AYMX)
2530 LINE (XMN. YMN) - (XMX. YMN)
2535 LINE (XMN. YMX) - (XMX. YMX)
2540 LINE (XMN. YMN) - (XMN. YMX)
2545 LINE (XMX. YMN) - (XMX. YMX)
2550 DXTIC = DSX * .02: DYTIC = DSY * .025
2560 XTIC = DSX /NXTIC: YTIC=DSY/NYTIC
2570 FOR I = 1 TO NXTIC
2580 XP = XMN + XTIC *1
2590 LINE (XP. YMN)-(XP. YMN + DYTIC)
2600 ROW = 24
2610 NEXT 1
2620 FOR I = 1 TO NYTIC
2630 YP = YMN + YTIC* 1
2640 LINE (XMN, YP)-(XMN + DXTIC. YP)
2650 NEXT 1
2660 FOR I = 1 TO A
2670 Z = H + C * A(1, 5)
2680 CIRCLE (Z, A(I, 4)), DSX / 120
2690 NEXT 1
2700 GRAF75 = (7.5 - H) / C: GRAF25 = (2.5 - H) / C: DGRAF = GRAF75 - GRAF25: DGRAF=
DGRAF/ 10
2710 FOR I = 1 TO NXTIC
2720 GRAF = GRAF25 +1 * DGRAF
2730 GRAF = EXP (GRAF * LOGO (10))
2740 XP = XMN + XTIC * 1
2750 XC = PMAP(XP, 0)
2760 COL = INT(80 * XC 640) - 1
2770 LOCATE 24. COL
2780 IF GRAF < .001 THEN PRINT USING ".####",: GRAF:: GOTO 2840
2790 IF GRAF <.01 THEN PRINT USING ".###"; GRAF:: GOTO 2840
2800 IF GRAF < 1 THEN PRINT USING ".##"; GRAF:: GOTO 2840
2810 IF GRAF < 10 THEN PRINT USING "##"; GRAF:: GOTO 2840
2820 IF GRAF < 100 THEN PRINT USING "##"; GRAF:: GOTO 2840
2830 PRINT USING "####"; GRAF;: GOTO 2840
2840 NEXT 1
2850 FOR I = I TO NYTIC
2860 YP = YMN + I * YTIC
2870 YR PMAP(YP, 1)
2880 ROW = CINT (24 * YR / 199) + 1
2890 LOCATE ROW, 1
2900 PRINT USING "###,#"; YP
2910 NEXT I
2911 LOCATE 1
2912 PRINT SPC(TIT); TIT$
2913 LOCATE 25
2914 PRINT SPC(LEY); LEY$
2920 E = .5
2930 I =.01
2940 I = 1 +.01
2950 IF I > 2.45 THEN GOTO 3070
2960 R = M * N Ù (-I Ù 2 / 2)
2970 P = M * N Ù (-(I +.005) Ù 2/2)
2980 Q = M N A (-(I + .01) A 2/2)
2990 D =.005 / 3 * (R + 4 * P + Q)
3000 E = E + D
3010 Y = (I - E)
3020 J = 5 + I
3030 K = 5 - 1
3040 PSET (J,E)
3050 PSET (K Y)
3060 GOTO 2940
3070 A$ = "": WHILE A$ "": A$ INKEY$: WEND
3080 SCREEN 0
3090 CLS
3100 LOCATE 8
3110 GOTO 1850
3120 PRINT "Drive en el que se va a archivar (A. B o C)"
3130 SM$ = ""
3140 WHILE SM$ = "": SM$ = INKEY$: WEND
3150 SM$ = SM$ + ":"
3160 MOC$ = SM$ + MOC$
3170 CLOSE #1: OPEN MOC$ FOR OUTPUT AS #1
3180 PRINT# 1, A
3190 FOR I = 1 TO A
3200 PRINT M, A(I, 1) 32 10 PRINT#L A(L 2) 3220 PRINT #L, A(L 3) 3230 PRINT#L, A(I. 4)
3240 PRINT #I, A(I, 5) 3250 PRINT #1, A(I, 6) 3260 PRINT #L, A0, 7) 3270 PRINT #1, A(L 8)
3280 PRINT fl, A(I, 9) 3 290 PRINT # 1, A(I, 10) 3300 PRINT#L A(L 11) 3310 PRINT # 1, A(I,
12) 3320 NEXT 1
3330 PRINT #1, C
3340 PRINT #J, SYY
3350 PRINT #1, SXX
3360 PRINT#L SXY
3370 PRINT #I, XPRO
3380 PRINT #1, YPRO
3390 PRINT #I, H
3400 PRINT #1, K
3410 GOTO 1840
3420 LOCATE 8
3430 PRINT "Primero hay que archivar los resultados": PRINT
3440 PRINT "Si ya se archivaron oprimir Y"
3450 PRINT "Para archivar, oprimir A"
3460 SM$ = ""
3470 WHILE SM$ "": SM$ = INKEY$: WEND
3480 IF INSTR("aA", SM$) THEN GOTO 3120
3490 IF INSTR("yY"), SM$) THEN CHAIN
"COMPara"
2) ESTIMACIÓN DE LA DL50 DE VENENO DE
ESCORPIÓN
Datos
| Dosis |
Casos |
Positivos |
P. empíicos |
P. provisorios |
| 32.47 |
4 |
1 |
4.32 |
4.058452 |
| 60.31 |
5 |
2 |
4.74 |
4.832025 |
| 111.02 |
5 |
3 |
5.26 |
5.594392 |
| 204.37 |
4 |
4 |
0 |
6.356772 |
| 378.96 |
5 |
5 |
0 |
7.128242 |
Resultados
| |
Resultado Provisional |
Resultado Definitivo |
| Logaritmo de DL50 |
1.83878 |
1.836007 |
| Error standad |
|
.1131409 |
| DL50 |
68.98907 |
68.54998 |
| Regresión |
Y= .2896745 + 2.87673 X |
Y=.4635525 + 2.975779 X |
| Límite Superior 95% |
|
114.2256 |
| Límite Inferior 95% |
|
41.13875 |
Asimismo, con el programa se obtuvo el
siguiente gráfico:
Discusión
Uno de los primeros pasos en la
evaluación farmacológica de productos naturales y nuevos productos de síntesis es la
estimación de la Dosis Letal Media (DL50 )7,14,9. Sin embargo, muchas veces los cálculos
estadísticos resultan tediosos, más aun cuando los métodos disponibles demandan de un
consumo grande de tiempo del operador en los cálculos, incrementando la posibilidad de
generación de errores7. Surgió en ese contexto la necesidad de contar con un programa
informático que permitiera disminuir el tiempo de cálculo y que además permitiera
efectuar ajustes sucesivos, así como incluyera la evaluación estadística de los datos
experimentales obtenidos. Una necesidad adicional surge cuando es necesario comparar
potencias relativas de diferentes lotes de la misma substancia o comparar la potencia
tóxica de diferentes productos. Un requerimiento similar se presenta en las plantas de
fabricación farmacéutica y de productos biológicos, donde es necesario mantener una
potencia similar en los diferentes lotes fabricados a través del tiempo. En este caso
resulta de singular importancia el mantener el registro de los datos, a fin de poder
comparar dichas potencias sucesivamente en el tiempo contra el valor de potencia del
estándar previamente definido.
Sin embargo, pese al tiempo transcurrido,
en la actualidad no es fácil conseguir un programa que calcule el ajuste de datos
cualitativos y el antiguo ejercicio que se hizo hace tantos años sigue siendo una buena
herramienta de trabajo para los cálculos en nuestros laboratorios. La estructura del
programa refleja la evolución del primitivo, con una estrategia de no modificar lo que
funciona sino añadir los nuevos avances permitidos por el avance de la tecnología de las
computadoras personales. Incluso hay segmentos que no se utilizan pero que han quedado de
las versiones primitivas. Lo damos a conocer en su integridad, y sin hacer ningún
esfuerzo cosmético, no como un modelo a seguir o a copiar sino por que contiene algunas
ideas que pueden servir para elaborar programas más perfeccionados.
Ver
bibliografía
_________________________________________
1 Médico Cirujano, Doctor en Medicina Humana, Profesor
Principal, Sección Farmacología, Depto. Ciencias Fisiológicas, Universidad Peruana
Cayetano Heredia A.P. 4314, Lima 100, Perú
2 Médico Cirujano, Doctor en Farmacología, Profesor Principal, Sección
Farmacología, Depto. Ciencias Fisiológicas, Universidad Peruana Cayetano Heredia, Lima
Perú
3 Director General, Centro Nacional de Control de Calidad, Instituto Nacional
de Salud, Lima, Perú
|