Spaces:
Sleeping
Sleeping
import json | |
def transform_value(key, value): | |
if isinstance(value, dict): | |
if 'Value' in value and 'Unit' in value: | |
value_type = "str" if isinstance(value['Value'], str) else "float" | |
return { | |
"key": key, | |
"type": "dict", | |
"value": [ | |
{"key": "Value", "type": value_type, "value": value['Value']}, | |
{"key": "Unit", "type": "str", "value": value['Unit']} | |
] | |
} | |
else: | |
return { | |
"key": key, | |
"type": "dict", | |
"value": [transform_value(k, v) for k, v in value.items()] | |
} | |
elif isinstance(value, list): | |
return { | |
"key": key, | |
"type": "list", | |
"value": [transform_value("", item) for item in value] | |
} | |
elif isinstance(value, str): | |
return { | |
"key": key, | |
"type": "str", | |
"value": value | |
} | |
else: | |
raise ValueError(f"Unsupported value type: {type(value)}") | |
def my_json_to_kadi(data): | |
return [transform_value(key, value) for key, value in data.items()] | |
# Print the output JSON in a formatted way | |
# Example JSON input | |
input_json = { | |
"Material": { | |
"Name": "LLTO", | |
"Composition": "(Li,La)TiO-type", | |
"Type": "Perovskite-type", | |
"Properties": { | |
"Ionic Conductivity": {"Value": "10^-3", "Unit": "S cm^-1"}, | |
"Chemical Stability": "", | |
"Dendrite Formation Risk": "", | |
"Operating Voltage": "", | |
"Flexibility": "", | |
"Processing": "" | |
} | |
}, | |
"Performance": { | |
"Specific Capacity": {"Value": "", "Unit": ""}, | |
"Energy Density": {"Value": "", "Unit": ""}, | |
"Capacity Retention": "", | |
"Operating Temperature": {"Value": "Room temperature", "Unit": ""} | |
}, | |
"Usage": { | |
"Battery Type": "", | |
"Benefits": [] | |
} | |
} | |
# input_json = { | |
# "Doctor_Patient_Discussion": { | |
# "Initial_Observation": { | |
# "Symptoms": [ | |
# "pale", | |
# "sore throat", | |
# "running a temperature" | |
# ], | |
# "Initial_Assessment": "You\u2019ve moderate fever." | |
# }, | |
# "Medical_Examination": { | |
# "Temperature": "99.8", | |
# "Blood_Pressure": "fine", | |
# "Doctor_Assessment": "few symptoms of malaria", | |
# "Diagnosis": "few symptoms of malaria" | |
# }, | |
# "Treatment_Plan": { | |
# "Prescription": [ | |
# "three medicines", | |
# "a syrup" | |
# ] | |
# } | |
# } | |
# } | |
# input_json = { | |
# "Doctor_Patient_Discussion": { | |
# "Initial_Observation": { | |
# "Symptoms": [ | |
# "pale", | |
# "sore throat", | |
# "running a temperature" | |
# ], | |
# "Initial_Assessment": "You\u2019ve moderate fever." | |
# }, | |
# "Medical_Examination": { | |
# "Temperature": "99.8", | |
# "Blood_Pressure": "fine", | |
# "Doctor_Assessment": "few symptoms of malaria", | |
# "Diagnosis": "few symptoms of malaria" | |
# }, | |
# "Treatment_Plan": { | |
# "Prescription": [ | |
# "three medicines", | |
# "a syrup" | |
# ] | |
# } | |
# } | |
# } | |
input_json = { | |
"Experiment": { | |
"Material": "LATP powders", | |
"SynthesisRoute": "modified sol-gel synthesis route described by (Bucharsky et al., 2015)", | |
"Precursors": [ | |
{ | |
"Name": "lithium acetate Li(C2H3O2) ⋅2H2O", | |
"Purity": "purity ≥ 99 %", | |
"Supplier": "Alfa Aesar GmbH & Co KG", | |
"Location": "Germany" | |
}, | |
{ | |
"Name": "aluminum nitrate Al(NO3)3 ⋅9H2O", | |
"Purity": "purity ≥ 98.5 %", | |
"Supplier": "Merck KGaA", | |
"Location": "Germany" | |
}, | |
{ | |
"Name": "titanium-isopropoxide Ti[OCH(CH3)2]4", | |
"Purity": "purity ≥ 98 %", | |
"Supplier": "Merck KGaA", | |
"Location": "Germany" | |
} | |
], | |
"Procedure": [ | |
{ | |
"Step": "Dissolve lithium acetate and aluminum nitrate in distilled water under constant stirring." | |
}, | |
{ | |
"Step": "Add titanium-isopropoxide dropwise to the solution." | |
}, | |
{ | |
"Step": "Add phosphoric acid slowly through a drip funnel to form a gel." | |
}, | |
{ | |
"Step": "Dry the gel at room temperature for 24 h." | |
} | |
], | |
"HeatTreatment": [ | |
{ | |
"Step": "First, heat treat samples at 400°C for 6 h to achieve precursor formation and eliminate reaction gases." | |
}, | |
{ | |
"Step": "Second, process samples at 900°C for 8 h to complete the reaction to crystalline LATP." | |
} | |
], | |
"BatchVariations": [ | |
{ | |
"Description": "Prepare one batch with all precursors in stoichiometric quantities (marked as 0.0 wt%)." | |
}, | |
{ | |
"Description": "Explore different batches with either an excess up to +7.5 wt% or a deficiency up to -15.0 wt% of phosphoric acid compared to the stoichiometric composition." | |
} | |
], | |
"Processing": [ | |
{ | |
"Step": "Process the obtained powders in a planetary ball mill." | |
}, | |
{ | |
"Step": "Form pellets by uniaxial pressing and then further densify by cold isostatic pressing at 400 MPa." | |
}, | |
{ | |
"Step": "All pressed samples have a green density of approximately 62% relative density." | |
} | |
], | |
"Sintering": { | |
"TemperatureRange": "850 to 1,050°C", | |
"IsothermalSinteringTime": "30 to 540 min", | |
"Cooling": "Cool down to room temperature in furnace", | |
"DensityDetermination": "Determine densities by Archimedes’ method" | |
}, | |
"IonicConductivityMeasurements": { | |
"Method": "Impedance analysis", | |
"Conditions": "At room temperature over the frequency range from 0.1 Hz to 1 MHz with an AC amplitude of 50 mV in the frequency response analyzer (AMTEK GmbH, VersaSTAT 4, Pennsylvania, United States)", | |
"Reference": "For further details of the experimental part please refer to our previous work (Schiffmann et al., 2021)" | |
} | |
} | |
} | |
if __name__ == "__main__": | |
# Transform the input JSON | |
# output_json = transform_json2kadi(input_json) | |
from kadi_apy.lib.conversion import json_to_kadi | |
output_json = json_to_kadi(input_json) | |
# Print the output JSON | |
print(json.dumps(output_json, indent=2)) |