[AstroPy] How can I create a VOtable from a python list?

Susana Sanchez Exposito sse@iaa...
Wed Mar 6 10:19:38 CST 2013


Hi all and thanks for the answers,

I realized in
/usr/local/lib/python2.6/dist-packages/astropy/io/votable/tree.py the
way to pass the mask in the line 2672 is :

new_table.array = ma.array(np.asarray(table), mask=table.mask)

If you change this line for this:
new_table.array = ma.array(np.asarray(table), mask=ma.getmaskarray(table))

The error disappears. But then, when you try to save the table in a
xml file with votable.to_xml("table.xml"), you get this error:
/usr/local/lib/python2.6/dist-packages/astropy/utils/xml/writer.pyc in
xml_escape_cdata(s)
     14     Escapes &, < and > in an XML CDATA string.
     15     """
---> 16     s = s.replace(u"&", u"&amp;")
     17     s = s.replace(u"<", u"&lt;")
     18     s = s.replace(u">", u"&gt;")

UnicodeDecodeError: 'ascii' codec can't decode byte 0x8d in position
0: ordinal not in range(128)



Susana.



2013/3/6 Michael Droettboom <mdroe@stsci.edu>:
> 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@scipy.org
>> http://mail.scipy.org/mailman/listinfo/astropy
>
> _______________________________________________
> AstroPy mailing list
> AstroPy@scipy.org
> http://mail.scipy.org/mailman/listinfo/astropy



-- 
Susana Sánchez Expósito

Instituto de Astrofísica de Andalucía   IAA (CSIC)
Camino Bajo de Huétor, 50. Granada E-18008
Tel:(+34) 958 121 311 / (+34) 958 230 618
Fax:(+34) 958 814 530
e-mail: sse@iaa.es


More information about the AstroPy mailing list