Esempio n. 1
0
    def getTechMDXmlDataForParameterSets(self,
                                         experiment,
                                         parameterSets,
                                         type="experiment"):
        _xmlData = xmlData()
        paramObj = ExperimentParameter
        if type == "experiment":
            elementName = "experiment"
            paramObj = ExperimentParameter
        elif type == "dataset":
            elementName = "dataset"
            paramObj = DatasetParameter
        else:
            elementName = "datafile"
            paramObj = DatafileParameter

        for parameterSet in parameterSets:
            parameters = paramObj.objects.filter(
                parameterset=parameterSet).select_related('name')

            metadataDict = {}
            for parameter in parameters:
                # print parameter.name
                if parameter.name.data_type is ParameterName.NUMERIC:
                    store_metadata_value(
                        metadataDict, parameter.name.name,
                        str(parameter.numerical_value) or 'None')

                elif parameter.name.data_type is ParameterName.FILENAME and \
                        parameter.name.units.startswith('image') and \
                        self.export_images == True:

                    # encode image as b64
                    file_path = abspath(
                        join(experiment.get_or_create_directory(),
                             parameter.string_value))
                    try:
                        store_metadata_value(metadataDict, parameter.name.name,
                                             b64encode(open(file_path).read()))
                    except:
                        logger.exception('b64encoding failed: %s' % file_path)
                else:
                    try:
                        store_metadata_value(
                            metadataDict, parameter.name.name,
                            parameter.string_value.strip() or 'None')
                    except AttributeError:
                        store_metadata_value(metadataDict, parameter.name.name,
                                             'None')

            _xmlData.add_xsdAny_(
                self.createXmlDataContentForParameterSets(
                    elementName=elementName,
                    schemaURI=parameterSet.schema.namespace,
                    metadataDict=metadataDict))

        return _xmlData
Esempio n. 2
0
    def getTechMDXmlDataForParameterSets(self, experiment, parameterSets, type="experiment"):
        _xmlData = xmlData()
        paramObj = ExperimentParameter
        if type == "experiment":
            elementName = "experiment"
            paramObj = ExperimentParameter
        elif type == "dataset":
            elementName = "dataset"
            paramObj = DatasetParameter
        else:
            elementName = "datafile"
            paramObj = DatafileParameter


        for parameterSet in parameterSets:
            parameters = paramObj.objects.filter(parameterset=parameterSet).select_related('name')

            metadataDict = {}
            for parameter in parameters:
                # print parameter.name
                if parameter.name.data_type is ParameterName.NUMERIC:
                    store_metadata_value(metadataDict, parameter.name.name,
                                 str(parameter.numerical_value) or 'None')

                elif parameter.name.data_type is ParameterName.FILENAME and \
                        parameter.name.units.startswith('image') and \
                        self.export_images == True:

                    # encode image as b64
                    file_path = abspath(join(experiment.get_or_create_directory(), parameter.string_value))
                    try:
                        store_metadata_value(metadataDict, parameter.name.name,
                                     b64encode(open(file_path).read()))
                    except:
                        logger.exception('b64encoding failed: %s' % file_path)
                else:
                    try:
                        store_metadata_value(metadataDict, parameter.name.name,
                                     parameter.string_value.strip() or 'None')
                    except AttributeError:
                        store_metadata_value(metadataDict, parameter.name.name, 'None')

            _xmlData.add_xsdAny_(self.createXmlDataContentForParameterSets(
                elementName=elementName,
                schemaURI=parameterSet.schema.namespace,
                metadataDict=metadataDict))

        return _xmlData
Esempio n. 3
0
    def characters(self, chars):
        if self.processExperimentStruct:

            # handle the different experiment fields
            if self.grabTitle:
                self.metsObject.title = chars
            elif self.grabExperimentUrl:
                self.metsObject.url = chars
            elif self.grabAbstract:
                self.metsObject.description += chars
            elif self.grabMightBeAuthor:
                self.mightBeAuthor = chars
            elif self.grabStartTime:
                self.metsObject.start_time = chars
            elif self.grabEndTime:
                self.metsObject.end_time = chars

            # if it's really an author, add the mightBeAuthor into the
            # experiment's author list
            elif self.grabRoleTerm and chars == 'author':
                self.metsObject.authors.append(self.mightBeAuthor)

        elif self.grabInstitution:
            self.institution = chars

        elif self.processDatasetStruct:
            if self.grabTitle:
                self.metsObject.title = chars

        elif self.customHandler is not None:
            self.customHandler.characters(chars)

        elif chars.strip() != '' and self.parameterName is not None and \
                self.processMetadata:
            # save the parameter values in the temporary metadata dictionary
            store_metadata_value(self.tempMetadataHolder,
                                 self.parameterName, chars)
Esempio n. 4
0
    def characters(self, chars):
        if self.processExperimentStruct:

            # handle the different experiment fields
            if self.grabTitle:
                self.metsObject.title = chars
            elif self.grabExperimentUrl:
                self.metsObject.url = chars
            elif self.grabAbstract:
                self.metsObject.description += chars
            elif self.grabMightBeAuthor:
                self.mightBeAuthor = chars
            elif self.grabStartTime:
                self.metsObject.start_time = chars
            elif self.grabEndTime:
                self.metsObject.end_time = chars

            # if it's really an author, add the mightBeAuthor into the
            # experiment's author list
            elif self.grabRoleTerm and chars == 'author':
                self.metsObject.authors.append(self.mightBeAuthor)

        elif self.grabInstitution:
            self.institution = chars

        elif self.processDatasetStruct:
            if self.grabTitle:
                self.metsObject.title = chars

        elif self.customHandler is not None:
            self.customHandler.characters(chars)

        elif chars.strip() != '' and self.parameterName is not None and \
                self.processMetadata:
            # save the parameter values in the temporary metadata dictionary
            store_metadata_value(self.tempMetadataHolder,
                                 self.parameterName, chars)