[Python-es] Hola a todos // Software para Radiointerferometro

José Sabater Montes jsm en iaa.es
Vie Abr 4 13:38:54 CEST 2014


Hola Rolando,

Gracias por la explicación.

El 04/04/2014, a las 03:11, Rolando Paz <flxpaz en gmail.com> escribió:

> Gracias José Sabastizagal y Jose Sabater
> 
> Voy a presentar de una mejor forma el proyecto:
> 
> El interés surgió a raíz de conocer al grupo CASPER (https://casper.berkeley.edu/) Collaboration for Astronomy Signal Processing and Electronics Research, gracias al Doctor Stanley Kurtz del Centro de Radioastronomía y Astrofísica de la UNAM, México.
> 
> El grupo CASPER a diseñado tres tarjetas llamadas IBOB, BEE and ROACH. Ahora un grupo del surafrica del futuro SKA extendió el diseño con nuevos modelos de la ROACH.
> 
> Debido a que no cuento con financiamiento y son bastante costosas las tarjetas, logré conversar con Aaron Parson, uno de los fundadores de CASPER. Aaron amablemente me prestó una IBOB con dos tarjetas ADC llamadas ADC4x250-8. Cada una de estas tarjetas ADC4x250-8 tiene capacidad de 4 entradas simultaneas. 
> 
> https://casper.berkeley.edu/wiki/IBOB
> https://casper.berkeley.edu/wiki/ADC4x250-8
> 
> Estas tarjetas (IBOB, BEE....) tienen la capacidad de de ser programadas como espectrómetro, formador de haz o correlador. Solo son limitadas por los recursos propios de cada FPGA en cada tarjeta. 
> 
> En el inicio, la IBOB fue programada como un "pocketcorrelator", es decir que todo el procesamiento digital y las correlaciones cruzadas y autocorrelaciones se hacían en una sola IBOB. Claro que con la limitante de tener pocos canales espectrales.
> 
> Griffin Foster fue una de las personas que trabajo con este pocketcorrelator. Su software se encuentra aca:
> 
> https://casper.berkeley.edu/svn/trunk/projects/pocketcorrelator/poco-0.1.1/
> 
> Para poder utilizar este software con la IBOB, lo primero que se tiene que hacer es programar el FPGA de la IBOB, y esto se hace por medio de MATLAB. Adjunto el archivo modelo de MATLAB con el que se genera un archivo .bit. Este archivo .bit se envía al FPGA de la IBOB y queda programada para realizar la función de procesamiento digital y correlación. 
> 
> Todo esto ya lo hice, es decir que ya programé el FPGA con el archivo .bit para la correlación de 8 entradas. Luego realicé los primeros pasos de archivo doc que se encuentra aqui:
> 
> https://casper.berkeley.edu/svn/trunk/projects/pocketcorrelator/poco-0.1.1/docs/poco_user_guide
> 
> Pero al momento de realizar la obtención de los paquetes en formato MIRIAD, surge el siguiente problema:
> 
> Al ejecutar el script para inicializar la transmisión de datos de la IBOB:
> 
> rolando en rolando-MS-7815:~/ibob/poco011$ init_poco.py i8_c256.config 
> 
> Parsing config file i8_c256.config...OK
> 
> Writing override variables... OK
> 
> Connecting to iBOB... OK
> 
> se observa que todo estuvo bien.
> 
> Cuando ejecuto el siguiente comando para obtener los paquetes: sudo poco_rx_i8_c256.py i8_c256.config
> 
> rolando en rolando-MS-7815:~/ibob/poco011$ sudo poco_rx_i8_c256.py i8_c256.config 
> 
> Parsing config file i8_c256.config...OK
> Listening on port 7
> Expecting integration sizes of 18432 vectors, or 73728 bytes
> C2M Parameters:
> 	N Antennas: 8
> 	Bandwidth: 0.200000 GHz
> 	SDF: 0.000781 GHz
> 	Int Time: 0.747520 s
> 	Array location:  ['38:25:59.24', '-79:51:02.1']
> Recording Bandpass to file... OK
> Starting file: zen.uv.tmp
> Beginning RX thread...
> Expecting total dump size from each x engine: 65536 bytes
> ERR: Buffer is too small for header unpack
> ERR: could not unpack header
> Exception in thread Thread-1:
> Traceback (most recent call last):
>   File "/usr/lib/python2.7/threading.py", line 551, in __bootstrap_inner
>     self.run()
>   File "/usr/lib/python2.7/threading.py", line 504, in run
>     self.__target(*self.__args, **self.__kwargs)
>   File "/usr/local/bin/poco_rx_i8_c256.py", line 243, in _process_packets
>     last_offset = p['offset']
> TypeError: 'NoneType' object has no attribute '__getitem__'
> 
> surge este error.
> 
> El video en donde Griffin Foster presenta este instrumento se encuentra acá:
> 
> https://casper.berkeley.edu/presentations/workshop_october09/m4v/gfoster.m4v
> 
> Perdón por repetir todo de nuevo, pero ahora esta mejor explicado (creo).
> 
> José, cómo lograste deducir la configuración del correlador con saber los bytes?
> 
> "Por otro lado, 73728 bytes se corresponden con 18432 parámetros de 4 bytes. Y esto encaja con 256 canales, 2 polarizaciones y 8 antenas con sus cross-correlaciones (28 lineas de base + 8 cross-correlaciones = 36)”

Por las siguientes pistas:
 * En los datos que envías del error se dice lo de los 18432 parámetros de 4 bytes. 
 * El número de canales sería el resultado de dividir “Bandwidth" por “SDF”, 256. Además encaja con el c256 del nombre del script.
 * El número de antenas determina el número de visibilidades. Con N antenas se tienen N*(N-1)/2 líneas de base, si se añaden las autocorrelaciones (antes decía cross-correlaciones cuando debía decir autocorrelaciones) hay que sumarle N. Con 8 antenas se tienen las 28 líneas de base, y, si se añaden las autocorrelaciones son en total 36. 
 * Nos falta aún un factor 2 que yo atribuía a las diferentes polarizaciones, aunque ahora no estoy tan seguro de esa parte. ¿Es posible que sea la parte real y la compleja de la visibilidad?

Bueno, por eso y porque soy radioastrónomo (qué mal suena ahora que lo escribo) y parece una configuración razonable para un correlador.

> 
> Tengo duda sobre cómo debo configurar los puertos UDP en los script, ya que la IBOB solo se comunica por el puerto UPD 7.

Esperemos que alguno de los expertos de la lista pueda ayudar con esto. 

No puedo ayudar mucho por falta de tiempo pero me parece un proyecto muy interesante y lo iré siguiendo. ¡Mucha suerte! 

Un saludo,
Jose Sabater

> 
> Saludos
> 
> Rolando Paz


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