Exemplo n.º 1
0
def from_xml_2(cls, ui_holder, xml_root, prefix=None):
    mi = module_xpath(xml_root, '//workflow/skymaker', False)
    apply_mock_image = mi is not None
    params = {'mock_image-apply_mock_image': apply_mock_image}
    if apply_mock_image:

        # Find the images and setup the management form.
        imgs = list(module_xpath_iterate(xml_root, '//skymaker/images/item', False))
        params[prefix + '-TOTAL_FORMS'] = len(imgs)
        params[prefix + '-INITIAL_FORMS'] = len(imgs)
        params[prefix + '-MAX_NUM_FORMS'] = 1000

        # Process each image.
        for ii, img in enumerate(imgs):
            pre = prefix + '-' + str(ii) + '-'
            for field in img:
                tag = strip_namespace(field.tag)
                if tag == 'mag_field':
                    id, ext = field.text.rsplit('_', 1)
                    filter = datasets.band_pass_filter_find_from_xml(id)
                    if filter is not None:
                        params[pre + tag] = str(filter.id) + '_' + ext
                else:
                    params[pre + tag] = field.text if field.text != 'None' else ''

    # Create the class.
    return cls(ui_holder, params, prefix=prefix)
Exemplo n.º 2
0
def from_xml_2(cls, ui_holder, xml_root, prefix=None):
    sed = module_xpath(xml_root, '//workflow/sed', text=False)
    apply_sed = sed is not None
    params = {prefix+'-apply_sed': apply_sed}
    if apply_sed:
        sspm_name = module_xpath(xml_root, '//sed/single-stellar-population-model')
        sspm = datasets.stellar_model_find_from_xml(sspm_name)
        if sspm is not None:
            params.update({prefix+'-single_stellar_population_model': sspm.id})
        bp_filters = []
        for filter_item in module_xpath_iterate(xml_root, '//filter/bandpass-filters/item', text=False):
            filter_id = filter_item.text
            filter_extension_list = filter_item.get('selected').split(',')
            filter = datasets.band_pass_filter_find_from_xml(filter_id)
            if filter is not None:
                for filter_extension in filter_extension_list:
                    bp_filters.append(str(filter.id) + '_' + filter_extension)
        if len(bp_filters) > 0:
            params.update({prefix+'-band_pass_filters': bp_filters})
        dust = module_xpath(xml_root, '//dust/model')
        apply_dust = dust is not None
        if apply_dust:
            dust_model = datasets.dust_model_find_from_xml(dust)
            if dust_model is not None:
                params.update({prefix+'-apply_dust': True})
                params.update({prefix+'-select_dust_model': dust_model.id})
            else:
                params.update({prefix+'-apply_dust': False})
        else:
            params.update({prefix+'-apply_dust': False})
    return cls(ui_holder, params, prefix=prefix)
Exemplo n.º 3
0
 def _map_elems(cls, xml_root, data_set):
     for elem in module_xpath_iterate(xml_root, '//fields/item', text=False):
         label = elem.get('label')
         name = elem.text
         data_set_property = datasets.data_set_property_from_xml(data_set, label, name)
         if data_set_property is not None:
             yield data_set_property
Exemplo n.º 4
0
def from_xml_2(cls, ui_holder, xml_root, prefix=None):
    simulation_name = module_xpath(xml_root, '//light-cone/simulation')
    galaxy_model_name = module_xpath(xml_root, '//light-cone/galaxy-model')
    simulation = datasets.simulation_from_xml(simulation_name)
    galaxy_model = datasets.galaxy_model_from_xml(galaxy_model_name)
    data_set = datasets.dataset_find_from_xml(simulation_name, galaxy_model_name)
    geometry = module_xpath(xml_root, '//light-cone/geometry')
    simulation_id = None
    if simulation is not None: simulation_id = simulation.id
    galaxy_model_id = None
    if galaxy_model is not None: galaxy_model_id = galaxy_model.id
    if not (geometry in [Form.CONE, Form.BOX]):
        geometry = None
    params = {
        prefix+'-catalogue_geometry': geometry,
        prefix+'-galaxy_model': galaxy_model_id,
        prefix+'-dark_matter_simulation': simulation_id,
        }

    if geometry == Form.BOX:

        redshift = module_xpath(xml_root, '//light-cone/redshift')
        snapshot = datasets.snapshot_from_xml(data_set, redshift)
        if snapshot is not None:
            params.update({prefix+'-snapshot':snapshot.id})
        box_size = module_xpath(xml_root, '//light-cone/query-box-size')
        params.update({prefix+'-box_size': box_size})
        rng_seed_param = module_xpath(xml_root, '//light-cone/rng-seed')
        rng_seed = rng_seed_param if rng_seed_param else ''
        params.update({prefix + '-rng_seed': rng_seed})


    else: ## == Form.CONE

        light_cone_type = module_xpath(xml_root, '//light-cone/box-repetition')
        num_cones = module_xpath(xml_root, '//light-cone/num-cones')
        redshift_min = module_xpath(xml_root, '//light-cone/redshift-min')
        redshift_max = module_xpath(xml_root, '//light-cone/redshift-max')
        ra_max = module_xpath(xml_root, '//light-cone/ra-max')
        dec_max = module_xpath(xml_root, '//light-cone/dec-max')
        if light_cone_type == 'random':
            rng_seeds = []
            rng_seeds_params = [elem for elem in module_xpath_iterate(xml_root, '//light-cone/rng-seeds/*', False)]
            if rng_seeds_params:
                rng_seeds_dict = dict((rng_seed.tag.split('}')[1], rng_seed.text) for rng_seed in rng_seeds_params)
                rng_seeds = rng_seeds_dict
            params.update({prefix + '-rng_seeds': rng_seeds})
        params.update({
            prefix+'-light_cone_type': light_cone_type,
            prefix+'-number_of_light_cones': num_cones,
            prefix+'-redshift_min': redshift_min,
            prefix+'-redshift_max': redshift_max,
            prefix+'-ra_opening_angle': ra_max,
            prefix+'-dec_opening_angle': dec_max,
            })
    params.update({prefix+'-output_properties': [dsp.id for dsp in Form._map_elems(xml_root, data_set)]})
    return cls(ui_holder, params, prefix=prefix)
Exemplo n.º 5
0
 def _map_elems(cls, xml_root):
     for elem in module_xpath_iterate(xml_root, '//votable/fields/item', text=False):
         label = elem.get('label')
         units = elem.get('units')
         name  = elem.text
         yield {'label': label, 'units': units, 'name': name}