NCAS-CMS / NCAS-CMS/cf-python

Is it possible to get a domain summary (aka bounding box) in a simpler way that the following?

Abierto
#482 9 comentarios 1 reacción 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

question
Lenguaje dominante
Python
Estrellas
150
Forks
23
Merge medio
1 d 11 h
PR fusionados (30 d)
2

Descripción

 def domain_summary(f):
        """ For a given field and it's domain, get a domain summary """
        #FIXME: should be outer edge of bounds, and I am not sure about the coords and ancils, is that sufficient?
        coords = [serialise(cf.Data.concatenate([b.min(), b.max()])) for b in [a.data for k,a in f.domain.dimension_coordinates().items()]]
        ancils = [serialise(cf.Data.concatenate([b.min(), b.max()])) for b in [a.data for k,a in f.domain.auxiliary_coordinates().items()]] 
        bbox = coords+ancils
        methods = get_cell_methods(f)
        return bbox, methods

In doing this I'm making use of the following stub for serialising a data object, e.g. to pass to another application using json (is there a better way to do this)?

def serialise_data(o):
    units = str(o.Units)
    values = o.array.squeeze()
    shape = o.array.shape
    if len(values) == 1:
        values = float(values[0])
    else:
        values = values.tolist()
    return {'units': units, 'values': values, 'shape': shape}

def serialise(object):
    methods = {
        "<class 'cf.data.data.Data'>": serialise_data
    }
    otype = str(type(object))
    if otype in methods:
        return methods[otype](object)
    else:
        return ValueError(f'Cannot serialise {otype}')

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

Comienza examinando la función domain_summary y su uso de dimension_coordinates(), auxiliary_coordinates(), los métodos de cell y el stub serialise_data. Aclara con los mantenedores del proyecto cuál debe ser el contenido del bounding box y su representación en JSON antes de cambiar la API; el trabajo estará terminado cuando exista una forma más sencilla y acordada de obtener y serializar el resumen.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
python
Área
data
Tipo de issue
Nueva funcionalidad
Dificultad
5/5
Tiempo estimado
Más de una semana
Estado de actividad
Estancado
Claridad
Necesita aclaración
Aptitud para principiantes
25/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.