[Python-es] Cambio de enteros a flotantes

Ricardo Cárdenes ricardo.cardenes en gmail.com
Mie Mar 15 03:14:57 EDT 2017


¡Ah! Perdona, no me había fijado en lo de GULP (tampoco lo conocía).

Si he entendido bien, tenemos un problema entonces. Por lo que veo, lo que
nos has pasado es un fichero "raw" de GULP y no se puede leer ese fichero
directamente. En el futuro quizá sería mejor que captures así:

  sudo ./gulp -i eth1 -d > fichero.dat

para que desencapsule la captura. Aunque se puede hacer después:

  gulp -i - -d < pocobe4_r19_v18_r20.dat > desencapsulado.dat

De todas maneras, eso tampoco te da los datos en bruto que estás
capturando, sino un fichero PCAP (que se puede leer, por ejemplo, con
wireshark), con información sobre los paquetes que has capturado, así que
aún habría que extraer la información de interés.

Aún así, algún problema hay con lo que nos has pasado, porque:

 sudo g/gulp -d -i - < pocobe4_r19_v18_r20.dat > salida

 0 packets captured
 ring buffer use: 0.0% of 100 MB

¿¿¿no encuentra ningún paquet??? y produce un fichero vacío.

A menos que, de alguna manera, realmente te las hayas arreglado para sacar
los datos en bruto (no parece el caso, según lo que pusiste arriba). Pero
entonces tenemos el asunto del fichero con un tamaño sospechoso.

2017-03-14 18:27 GMT-10:00 Rolando Paz <flxpaz en gmail.com>:

> Hola Ricardo
>
> Para obtener los datos yo utilizo GULP  http://staff.washington.edu/
> corey/gulp/
>
> Luego de instalar GULP en mi sistema, lo único que hago es lo siguiente:
>
> sudo ./gulp -i eth1 > pocobe4_r19_v18_r20.dat
>
> GULP captura los paquetes directamente desde la interfaz eth1 (en mi caso)
> al archivo .dat, hasta que el proceso GULP se destruya con CTRL+C.
>
> Rolando
>
> El 14 de marzo de 2017, 21:57, Ricardo Cárdenes <
> ricardo.cardenes en gmail.com> escribió:
>
>>
>>
>> 2017-03-14 14:18 GMT-10:00 Rolando Paz <flxpaz en gmail.com>:
>>
>>> Hola Ricardo
>>>
>>> Gracias por tu observación, resulta que los avances que he hecho con
>>> python los he logrado por pura deducción lógica. No tuve formación teórica
>>> al respecto; mi área profesional es otra. Perdona David por no entender.
>>>
>>> Entonces para que los valores internos de un archivo sean enteros de 32
>>> bits, el tamaño del archivo debe ser múltiplo de 4?
>>>
>>
>> Hola Rolando.
>>
>> El tamaño del archivo se da en bytes de (generalmente) 8 bits. Un entero
>> de 32 bits se compone, por tanto, de 4 bytes, así que si el fichero
>> contiene sólo la representación binaria de una secuencia de int32, tiene
>> (por fuerza) que tener un tamaño múltiplo de 4. Dado que no es el caso,
>> entonces sospechamos que hay algo más.
>>
>>
>>>
>>> Estoy seguro que mi diseño digital produce datos enteros con signo de 32
>>> bits de precisión, y que dentro de estos datos se encuentran potencias en
>>> función de la frecuencia en un tiempo dado , por lo que deduzco que cuando
>>> yo obtengo los datos con GULP, ese mismo tipo de datos grabo en mis
>>> archivos.
>>>
>>
>> ¿Nos puedes decir algo más sobre el proceso que se usa para adquirir los
>> datos y guardarlos? ¿Lo haces tú directamente usando algún programa de
>> adquisición?
>>
>>
>>>
>>> Saludos y gracias.
>>>
>>> Rolando
>>>
>>>
>>>
>>>
>>> El 14 de marzo de 2017, 17:58, Ricardo Cárdenes <
>>> ricardo.cardenes en gmail.com> escribió:
>>>
>>>> Rolando, concéntrate.
>>>>
>>>> David te está preguntando si conoces el formato del fichero, porque el
>>>> que has pasado no coincide con la premisa "colección de enteros de 32
>>>> bits", porque el tamaño del fichero no es múltiplo de 4.
>>>>
>>>> Evidentemente, lo último que has mandado es un array de enteros de 32
>>>> bits y su correspondiente en coma flotante de 32 bits (con la consiguiente
>>>> pérdida de precisión), pero no sabemos si los datos son *correctos*, por lo
>>>> que acabo de mencionar arriba.
>>>>
>>>> Saludos,
>>>> Ricardo
>>>>
>>>> 2017-03-14 12:16 GMT-10:00 Rolando Paz <flxpaz en gmail.com>:
>>>>
>>>>> Ejecuté este código solo para ver los valores
>>>>>
>>>>> import numpy as np
>>>>>
>>>>> array_int32 = np.fromfile('pocobe4_r19_v18_r20.dat', dtype=np.int32)
>>>>> print 'Data int32 signed:'
>>>>> print array_int32
>>>>> array_float32 = np.fromfile('pocobe4_r19_v18_r20.dat',
>>>>> dtype=np.int32).astype(np.float32)
>>>>> print 'Data float32:'
>>>>> print array_float32
>>>>>
>>>>> Y el resultado es:
>>>>>
>>>>> Data int32 signed:
>>>>> [-1582119980      262146           0 ...,           0           0
>>>>>            0]
>>>>> Data float32:
>>>>> [ -1.58211994e+09   2.62146000e+05   0.00000000e+00 ...,
>>>>> 0.00000000e+00
>>>>>    0.00000000e+00   0.00000000e+00]
>>>>>
>>>>> Creo que sí los convierte a flotantes???
>>>>>
>>>>> Saludos
>>>>>
>>>>> El 14 de marzo de 2017, 15:48, Rolando Paz <flxpaz en gmail.com>
>>>>> escribió:
>>>>>
>>>>>> Hola David
>>>>>>
>>>>>> Recién estoy aprendiendo sobre el tema. Me puedes explicar a que te
>>>>>> refieres con que la distribución de números es uniforme y porqué no debería
>>>>>> ser así?
>>>>>>
>>>>>> Saludos y gracias.
>>>>>>
>>>>>> Rolando
>>>>>>
>>>>>> El 14 de marzo de 2017, 12:45, Daπid <davidmenhur en gmail.com>
>>>>>> escribió:
>>>>>>
>>>>>>> Creo que sigue habiendo algo mal. La distribución de números es
>>>>>>> uniforme en todo el rango de int32.
>>>>>>>
>>>>>>> 2017-03-14 18:11 GMT+01:00 Rolando Paz <flxpaz en gmail.com>:
>>>>>>> > Hola amigos
>>>>>>> >
>>>>>>> > Con la ayuda de un amigo Sven Marnach hice esto:
>>>>>>> >
>>>>>>> > import numpy as np
>>>>>>> >
>>>>>>> > array = np.fromfile('pocobe4_r19_v18_r20.dat',
>>>>>>> > dtype=np.int32).astype(np.float32)
>>>>>>> > with open("prueba_out", "wb") as prueba_out:
>>>>>>> >     prueba_out.write(array.tostring())
>>>>>>> >
>>>>>>> > Ahora obtengo un archivo binario.
>>>>>>> >
>>>>>>> > Que opinan?
>>>>>>> >
>>>>>>> > El 14 de marzo de 2017, 9:12, Kiko <kikocorreoso en gmail.com>
>>>>>>> escribió:
>>>>>>> >>
>>>>>>> >>
>>>>>>> >>
>>>>>>> >> El 14 de marzo de 2017, 16:00, Daπid <davidmenhur en gmail.com>
>>>>>>> escribió:
>>>>>>> >>>
>>>>>>> >>> Lo he probado con el adjunto, y parece que lo que tienes no son
>>>>>>> >>> objetos de 32 bits, porque el tamaño no es múltiplo. Así que o
>>>>>>> tienes
>>>>>>> >>> otro tipo de datos (si fueran 16 bits tendrías casi 11 millones
>>>>>>> de
>>>>>>> >>> números), o hay una cabecera. No creo que sean 8 o 16 bits
>>>>>>> porque la
>>>>>>> >>> distribución de valores es completamente uniforme, a menos que
>>>>>>> sean
>>>>>>> >>> datos aleatorios.
>>>>>>> >>>
>>>>>>> >>> genfromtxt y amigos te sirven para leer ficheros de texto, no
>>>>>>> binarios.
>>>>>>> >>
>>>>>>> >>
>>>>>>> >> Mi culpa. He leído los correos en diagonal...
>>>>>>> >>
>>>>>>> >>>
>>>>>>> >>>
>>>>>>> >>> 2017-03-14 15:34 GMT+01:00 Rolando Paz <flxpaz en gmail.com>:
>>>>>>> >>> > Gracias Kiko, lo intentare.
>>>>>>> >>> >
>>>>>>> >>> > David al ejecutar el pequeño script sobre mi archivo binario,
>>>>>>> obtengo
>>>>>>> >>> > un
>>>>>>> >>> > archivo binario (supongo de flotantes) pero solo tiene cuatro
>>>>>>> >>> > valores...
>>>>>>> >>> >
>>>>>>> >>> > Adjunto el contenido de cada archivo usando ghex.
>>>>>>> >>> >
>>>>>>> >>> > Que opinas?
>>>>>>> >>> >
>>>>>>> >>> > Saludos
>>>>>>> >>> >
>>>>>>> >>> >
>>>>>>> >>> > 2017-03-14 8:19 GMT-06:00 Daπid <davidmenhur en gmail.com>:
>>>>>>> >>> >>
>>>>>>> >>> >> 2017-03-14 14:41 GMT+01:00 Rolando Paz <flxpaz en gmail.com>:
>>>>>>> >>> >> > array = np.fromstring("data", dtype=np.int32).astype(np.floa
>>>>>>> t32)
>>>>>>> >>> >>
>>>>>>> >>> >> Te sobran las comillas en "data".
>>>>>>> >>> >> _______________________________________________
>>>>>>> >>> >> Python-es mailing list
>>>>>>> >>> >> Python-es en python.org
>>>>>>> >>> >> https://mail.python.org/mailman/listinfo/python-es
>>>>>>> >>> >
>>>>>>> >>> >
>>>>>>> >>> >
>>>>>>> >>> > _______________________________________________
>>>>>>> >>> > Python-es mailing list
>>>>>>> >>> > Python-es en python.org
>>>>>>> >>> > https://mail.python.org/mailman/listinfo/python-es
>>>>>>> >>> >
>>>>>>> >>> _______________________________________________
>>>>>>> >>> Python-es mailing list
>>>>>>> >>> Python-es en python.org
>>>>>>> >>> https://mail.python.org/mailman/listinfo/python-es
>>>>>>> >>
>>>>>>> >>
>>>>>>> >>
>>>>>>> >> _______________________________________________
>>>>>>> >> Python-es mailing list
>>>>>>> >> Python-es en python.org
>>>>>>> >> https://mail.python.org/mailman/listinfo/python-es
>>>>>>> >>
>>>>>>> >
>>>>>>> >
>>>>>>> > _______________________________________________
>>>>>>> > Python-es mailing list
>>>>>>> > Python-es en python.org
>>>>>>> > https://mail.python.org/mailman/listinfo/python-es
>>>>>>> >
>>>>>>> _______________________________________________
>>>>>>> Python-es mailing list
>>>>>>> Python-es en python.org
>>>>>>> https://mail.python.org/mailman/listinfo/python-es
>>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> Python-es mailing list
>>>>> Python-es en python.org
>>>>> https://mail.python.org/mailman/listinfo/python-es
>>>>>
>>>>>
>>>>
>>>> _______________________________________________
>>>> Python-es mailing list
>>>> Python-es en python.org
>>>> https://mail.python.org/mailman/listinfo/python-es
>>>>
>>>>
>>>
>>> _______________________________________________
>>> Python-es mailing list
>>> Python-es en python.org
>>> https://mail.python.org/mailman/listinfo/python-es
>>>
>>>
>>
>> _______________________________________________
>> Python-es mailing list
>> Python-es en python.org
>> https://mail.python.org/mailman/listinfo/python-es
>>
>>
>
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> https://mail.python.org/mailman/listinfo/python-es
>
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20170314/bd19404f/attachment.html>


Más información sobre la lista de distribución Python-es