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ú



back.gif (71 bytes) Regresar