[AstroPy] extracting column names from VOtable

Susana Sanchez susanasanche at gmail.com
Mon Feb 25 11:45:03 EST 2013

2013/2/25 Erik Tollerud <erik.tollerud at gmail.com>:
> Ah, I see that - I didn't read to the bottom of your original post!
> Odd, I would have thought that would work.  But as loks as the [f.name
> for f in table.fields] method works, I guess it's fine.
> Is the VOTable that's doing this somewhere publicly available?  It
> might be useful if someone wants to check if this is a bug or
> something...

Yes, it is publicly available in the VO service "AMIGA catalogue",
http://amiga.iaa.es/amigasearch. Attached you can find the votable
that I was using. I got it from this VO service through TOPCAT.

> On Mon, Feb 25, 2013 at 11:18 AM, Susana Sanchez <susanasanche at gmail.com> wrote:
>> Thanks Erik,
>> The first way you say ([f.name for f in table.fields]) it is just what
>> I am looking for, but the alternative way, using the dtype array
>> (table.array.dtype.names), does not give the same things. In those
>> cases when the votable fields contain 'ID' and 'name', the
>> table.array.dtype.names gives the values in 'ID' but not in 'name'.
>> 2013/2/25 Erik Tollerud <erik.tollerud at gmail.com>:
>>> This is probably the easiest way:
>>> [f.name for f in table.fields]
>>> ``table.fields`` is a list of `astropy.io.votable.tree.Field` objects, and
>>> those objects have all the information about the columns (including
>>> things like units).
>>> An alternative is to use `array` to get the numpy array from the
>>> votable, and the `dtype` has the column names.  I.e.,
>>> ``table.array.dtype.names`` should give the same thing.  That won't
>>> include extra VO information like units and such, though.
>>> On Mon, Feb 25, 2013 at 6:26 AM, Susana Sanchez <susanasanche at gmail.com> wrote:
>>>> Hi all,
>>>> Probably this is a newbie question, but how can I extract the names of
>>>> the columns from the VOtable with the Astropy library?
>>>> I want to show the VOTable data in a nice way, using the Qt library,
>>>> so I need to extract the names of the columns and the data from a
>>>> VOTable. I have tried it using the Numpy record array associated to
>>>> the votable, see code below.  But I have problems when the votable
>>>> fields have 'ID' and also 'name'. I am wondering if there is a better
>>>> way to find the column names.
>>>> I would be very gratefully, If anyone can help me or give me any hint.
>>>> Thanks,
>>>> Susana.
>>>> table = parse_single_table("/home/susana/Documents/examples/tables/cig22.xml",pedantic=False)
>>>> data = table.array
>>>> dtype_a=data.dtype
>>>> column_names=[]
>>>> for k,v in dtype_a.fields.iteritems():
>>>>     column_names.append(k)
>>>> _______________________________________________
>>>> AstroPy mailing list
>>>> AstroPy at scipy.org
>>>> http://mail.scipy.org/mailman/listinfo/astropy
>>> --
>>> Erik
> --
> Erik
-------------- next part --------------
A non-text attachment was scrubbed...
Name: cig22.xml
Type: text/xml
Size: 11381 bytes
Desc: not available
URL: <http://mail.python.org/pipermail/astropy/attachments/20130225/31ab37ce/attachment.xml>

More information about the AstroPy mailing list