Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| import pandas as pd | |
| import math | |
| def add_variables(M, L1, L2, LS, A, z, n): | |
| r_m = [] | |
| r_l1 = [] | |
| r_l2 = [] | |
| r_ls = [] | |
| if L2 == 0: | |
| if LS == 0: | |
| raise Exception('Error! L2 and LS cannot be both 0, please input again!') | |
| else: | |
| for m in range(math.ceil(2*A / M) + 1): | |
| for l1 in range(math.ceil(2*A / L1) + 1): | |
| for ls in range(math.ceil(2*A / LS) + 1): | |
| total_mass = M * m + L1 * l1 + LS * ls | |
| if (z * A - n <= total_mass <= z * A + n) and ls < m: | |
| r_m.append(m) | |
| r_l1.append(l1) | |
| r_l2.append(None) | |
| r_ls.append(ls) | |
| results = { | |
| 'M': r_m, | |
| 'L1': r_l1, | |
| 'L2': r_l2, | |
| 'LS': r_ls, | |
| } | |
| df = pd.DataFrame(results) | |
| print("符合 {} =< {}*m+{}*l1+{}*ls <= {} 并 LS < M 的所有自然数解有{}组,分别为:" | |
| .format(A - n, M, L1, LS, A + n, len(r_m))) | |
| print(df.to_markdown(tablefmt="grid")) | |
| df.to_csv("result.csv", index=False) | |
| else: | |
| if LS == 0: | |
| for m in range(math.ceil(2*A / M) + 1): | |
| for l1 in range(math.ceil(2*A / L1) + 1): | |
| for l2 in range(math.ceil(2*A / L2) + 1): | |
| total_mass = M * m + L1 * l1 + L2 * l2 | |
| if z * A - n <= total_mass <= z * A + n: | |
| r_m.append(m) | |
| r_l1.append(l1) | |
| r_l2.append(l2) | |
| r_ls.append(None) | |
| results = { | |
| 'M': r_m, | |
| 'L1': r_l1, | |
| 'L2': r_l2, | |
| 'LS': r_ls, | |
| } | |
| df = pd.DataFrame(results) | |
| print("符合 {} =< {}*m+{}*l1+{}*l2 <= {} 的所有自然数解有{}组,分别为:" | |
| .format(A - n, M, L1, L2, A + n, len(r_m))) | |
| print(df.to_markdown(tablefmt="grid")) | |
| df.to_csv("result.csv", index=False) | |
| else: | |
| for m in range(math.ceil(2*A / M) + 1): | |
| for l1 in range(math.ceil(2*A / L1) + 1): | |
| for l2 in range(math.ceil(2*A / L2) + 1): | |
| for ls in range(math.ceil(2*A / LS) + 1): | |
| total_mass = M * m + L1 * l1 + L2 * l2 + LS * ls | |
| if (z * A - n <= total_mass <= z * A + n) and ls < m: | |
| r_m.append(m) | |
| r_l1.append(l1) | |
| r_l2.append(l2) | |
| r_ls.append(ls) | |
| results = { | |
| 'M': r_m, | |
| 'L1': r_l1, | |
| 'L2': r_l2, | |
| 'LS': r_ls, | |
| } | |
| df = pd.DataFrame(results) | |
| print("符合 {} =< {}*m+{}*l1+{}*l2+{}*ls <= {} 并 LS < M 的所有自然数解有{}组,分别为:" | |
| .format(A - n, M, L1, L2, LS, A + n, len(r_m))) | |
| print(df.to_markdown(tablefmt="grid")) | |
| df.to_csv("result.csv", index=False) | |
| return df, "result.csv" | |
| iface = gr.Interface( | |
| fn=add_variables, | |
| inputs=["number", "number", "number", "number", "number", "number", "number"], | |
| outputs=["dataframe",'file'], | |
| title="MS", | |
| description="输入:|-M: 金属| -L1: 配体1 | -L2: 配体2 | -LS: 含S配体的相对分子质量 | -A: 质谱上对应的分子量 | -z: 电荷 |" | |
| ) | |
| iface.launch(share=True) | |