<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def from_etree(root):
 """ Load up the coords, if present, for initializing with the Voevent. .. note:: Current implementation is quite slack with regard to co-ordinate systems - it is assumed that, for purposes of searching the database using spatial queries, the FK5 / ICRS reference systems and and geocentric/barycentric reference frames are sufficiently similar that we can just take the RA/Dec and insert it 'as-is' into the database. This is partly justified on the assumption that anyone in need of ultra-high precision co-ordinates will need to take account of mission specific properties anyway (e.g. position of GAIA at time of detection) and so will only be using the spatial query for a coarse search, then parsing packets to determine precise locations. """


        acceptable_coord_systems = (
            vp.definitions.sky_coord_system.utc_fk5_geo,
            vp.definitions.sky_coord_system.utc_fk5_topo,
            vp.definitions.sky_coord_system.utc_icrs_geo,
            vp.definitions.sky_coord_system.utc_icrs_topo,
            vp.definitions.sky_coord_system.tdb_fk5_bary,
            vp.definitions.sky_coord_system.tdb_icrs_bary,
        )

        position_list = []
        astrocoords = root.xpath(
            'WhereWhen/ObsDataLocation/ObservationLocation/AstroCoords'
        )
        if astrocoords:
            for idx, entry in enumerate(astrocoords):
                posn = vp.get_event_position(root,idx)
                if posn.system not in acceptable_coord_systems:
                    raise NotImplementedError(
                        "Loading position from coord-sys "
                        "is not yet implemented: {} ".format(
                            posn.system
                        )
                    )
                if posn.units != vp.definitions.units.degrees:
                    raise NotImplementedError(
                        "Loading positions in formats other than degrees "
                        "is not yet implemented."
                    )
                try:
                    isotime = vp.get_event_time_as_utc(root,idx)
                except:
                    logger.warning(
                        "Error pulling event time for ivorn {}, "
                        "setting to NULL".format(root.attrib['ivorn'])
                    )
                    isotime = None

                position_list.append(
                    Coord(ra = posn.ra,
                          dec = posn.dec,
                          error = posn.err,
                          time = isotime)
                )
        return position_list