示例#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)
示例#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)