[AstroPy] How can I create a VOtable from a python list?
Michael Droettboom
mdroe at stsci.edu
Wed Mar 6 09:08:41 EST 2013
The general approach you're taking here -- to create a Table and then
convert it to a VOTable -- is the right one here. The Table class has a
much richer set of things it can convert to and from (it's sort of our
"hub" class for everything that's table like).
However, I don't believe it supports construction from a list in the way
you're trying. There is a doc page about constructing a table here,
that may be helpful:
https://astropy.readthedocs.org/en/v0.2/table/construct_table.html
That said, I tried to convert your example to the form where the Table
is constructed from a Numpy structured array, and still ran into the
same exception:
from astropy import table
from astropy.io import votable
import numpy as np
x = np.array(
[("CIG12",1.2345,0,2,999,"COMMENT"),
("CIG122",1.23452,0,2,9992,"COMMENT2")],
dtype=[('a', str), ('b', float), ('c', int), ('d', int), ('e', int), ('f', str)])
print x.dtype
t = table.Table(x)
votable = votable.tree.VOTableFile.from_table(t)
So maybe we're both still doing something wrong. I've Cc'd Tom
Aldcroft, the primary author of the Table class, as he might have more
insight.
Mike
On 03/04/2013 06:43 AM, Susana Sanchez wrote:
> Hello all,
>
> How can I create a VOtable from a list (a python list) of rows using astropy?
>
> Reading the documentation, I found the method "from_table" of the
> class VOTableFile, this method needs as argument an instance of the
> class astropy.table.table.Table, so I did the following:
>
> t=astropy.table.table.Table([["CIG12",1.2345,0,2,999,"COMMENT"],["CIG122",1.23452,0,2,9992,"COMMENT2"]])
> votable = VOTableFile()
> votable.from_table(t)
>
>
> But here I got this error:
>
> /usr/local/lib/python2.6/dist-packages/numpy/ma/core.pyc in
> __new__(cls, data, mask, dtype, copy, subok, ndmin, fill_value,
> keep_mask, hard_mask, shrink, **options)
> 2692 # Or assume it's a sequence of bool/int
>
> 2693 except TypeError:
> -> 2694 mask = np.array([tuple([m] * len(mdtype)) for
> m in mask],
> 2695 dtype=mdtype)
> 2696 # Make sure the mask and the data have the same shape
>
> TypeError: 'NoneType' object is not iterable
>
>
> Reading the error message, I thought it could be related with the
> mask, so I tried to create the mask of the table t (with the method
> t.create_mask()), and then to build the VOTableFile from this table,
> but I got the same error.
>
> I would be very gratefully, If anyone can help me or give me any hint.
>
> Thanks,
> Susana.
> _______________________________________________
> AstroPy mailing list
> AstroPy at scipy.org
> http://mail.scipy.org/mailman/listinfo/astropy
More information about the AstroPy
mailing list