def objectToRow(obj, row, attrDict, extraLabels={}): """ This function will convert an EMObject into a XmippMdRow. Params: obj: the EMObject instance (input) row: the XmippMdRow instance (output) attrDict: dictionary with the map between obj attributes(keys) and row MDLabels in Xmipp (values). extraLabels: a list with extra labels that could be included as _xmipp_labelName """ if obj.isEnabled(): enabled = True else: enabled = False row.setValue(md.RLN_IMAGE_ENABLED, enabled) for attr, label in attrDict.iteritems(): if hasattr(obj, attr): valueType = md.label2Python(label) row.setValue(label, valueType(getattr(obj, attr).get())) attrLabels = attrDict.values() for label in extraLabels: attrName = '_' + md.label2Str(label) if label not in attrLabels and hasattr(obj, attrName): value = obj.getAttributeValue(attrName) row.setValue(label, value)