[AstroPy] extracting column names from VOtable

Erik Tollerud erik.tollerud at gmail.com
Mon Feb 25 11:37:53 EST 2013


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...

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



More information about the AstroPy mailing list