Skip to content

Iterating over Ephem table #437

@phtnnz

Description

@phtnnz

High-level problem description
When iterating over the rows of an Ephem table, a QTable length=1 object is returned, Accessing a particular field/column of the row then results in a single element array, not a scalar

What did you do?

    qt = QTable()
    qt["Obstime"]   = Time("2000-01-01 00:00")
    qt["RA"]        = 0 * u.hourangle
    qt["DEC"]       = 0 * u.degree
    qt.add_row([ Time("2026-01-01"), 10*u.hourangle,  12.34*u.deg ])
    qt.add_row([ Time("2026-01-02"), 12*u.hourangle, -56.78*u.deg ])

    ic(qt)
    ic(qt["RA"][0])
    for row in qt:
        ic(row)
        ic(row["RA"])

    eph = Ephem.from_table(qt)
    ic(eph)
    ic(eph["RA"][0])
    for row in eph:
        ic(row)
        ic(row["RA"])

What did you expect?
Output of the underlying table (qt or eph._table):

ic| qt: <QTable length=2>
                Obstime             RA      DEC  
                                hourangle   deg  
                  Time           float64  float64
        ----------------------- --------- -------
        2026-01-01 00:00:00.000      10.0   12.34
        2026-01-02 00:00:00.000      12.0  -56.78
ic| qt["RA"][0]: <Quantity 10. hourangle>
ic| row: <Row index=0>
                 Obstime             RA      DEC  
                                 hourangle   deg  
                   Time           float64  float64
         ----------------------- --------- -------
         2026-01-01 00:00:00.000      10.0   12.34
ic| row["RA"]: <Quantity 10. hourangle>
ic| row: <Row index=1>
                 Obstime             RA      DEC  
                                 hourangle   deg  
                   Time           float64  float64
         ----------------------- --------- -------
         2026-01-02 00:00:00.000      12.0  -56.78
ic| row["RA"]: <Quantity 12. hourangle>

What did really happen?
Output for Ephem:

ic| eph: <QTable length=2>
                 Obstime             RA      DEC  
                                 hourangle   deg  
                   Time           float64  float64
         ----------------------- --------- -------
         2026-01-01 00:00:00.000      10.0   12.34
         2026-01-02 00:00:00.000      12.0  -56.78
ic| eph["RA"][0]: <Quantity 10. hourangle>
ic| row: <QTable length=1>
                 Obstime             RA      DEC  
                                 hourangle   deg  
                   Time           float64  float64
         ----------------------- --------- -------
         2026-01-01 00:00:00.000      10.0   12.34
ic| row["RA"]: <Quantity [10.] hourangle>
ic| row: <QTable length=1>
                 Obstime             RA      DEC  
                                 hourangle   deg  
                   Time           float64  float64
         ----------------------- --------- -------
         2026-01-02 00:00:00.000      12.0  -56.78
ic| row["RA"]: <Quantity [12.] hourangle>

When directly accessing a column/row like ["RA"][0] a scalar is returned as expected.

Provide information on your environment:
Windows 10, Python 3.12.3
sbpy version: 0.5.0
astropy version: 7.1.1
numpy version: 2.3.4

Metadata

Metadata

Assignees

No one assigned

    Labels

    potential bugautomated label to indicate issue reports

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions