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) | |