Convert Excel To Xrdml High Quality

Converting an Excel file to the format (an XML-based format used primarily by Malvern PANalytical instruments) is a specialized process. Because XRDML contains specific metadata about instrument configuration and experimental parameters that a flat Excel spreadsheet lacks, you cannot simply "save as" XRDML.

import pandas as pd import xml.etree.ElementTree as ET from xml.dom import minidom def excel_to_xrdml(excel_path, output_xrdml_path, sample_name="Unknown Sample"): # 1. Read the Excel file df = pd.read_excel(excel_path) # Assume Column 0 is 2Theta and Column 1 is Intensity angles = df.iloc[:, 0].tolist() intensities = df.iloc[:, 1].tolist() start_angle = angles[0] end_angle = angles[-1] num_points = len(angles) # Convert lists to space-separated strings required by XML arrays intensities_str = " ".join(map(str, [int(x) for x in intensities])) # 2. Build the XRDML XML structure root = ET.Element("xrdMeasurement", "xmlns": "http://panalytical.com", "status": "Completed" ) # Add Sample Metadata sample = ET.SubElement(root, "sample") id_elem = ET.SubElement(sample, "id") id_elem.text = sample_name # Add Scan Metadata xrd_scan = ET.SubElement(root, "scan", "scanAxis": "Gonio", "status": "Completed" ) data_points = ET.SubElement(xrd_scan, "dataPoints") # Add 2Theta Positions positions = ET.SubElement(data_points, "positions", "axis": "2Theta", "unit": "deg") start_elem = ET.SubElement(positions, "startPosition") start_elem.text = f"start_angle:.4f" end_elem = ET.SubElement(positions, "endPosition") end_elem.text = f"end_angle:.4f" # Add Intensities Array intensities_elem = ET.SubElement(data_points, "intensities", "unit": "counts") intensities_elem.text = intensities_str # 3. Pretty print and save the XML file to maintain high-quality encoding xml_string = ET.tostring(root, encoding="utf-8") parsed_xml = minidom.parseString(xml_string) pretty_xml = parsed_xml.toprettyxml(indent=" ") with open(output_xrdml_path, "w", encoding="utf-8") as f: f.write(pretty_xml) print(f"Successfully converted excel_path to high-quality XRDML at output_xrdml_path") # Example Usage: # excel_to_xrdml("diffraction_data.xlsx", "output_result.xrdml", "Catalyst_Batch_A") Use code with caution. Step 4: Validating Your Converted File convert excel to xrdml high quality

When converting, ensure you do not lose "Metadata." High-quality XRDML files should ideally include the wavelength (e.g., Converting an Excel file to the format (an

df = pd.read_excel("pattern.xlsx") xrd = XRDML() xrd.angle = df.iloc[:, 0] # 2theta xrd.intensity = df.iloc[:, 1] # counts xrd.scan_step = 0.005 # derived from data xrd.wavelength = 1.5406 # Cu Kα xrd.save("output.xrdml", quality="high_precision") Read the Excel file df = pd