bndl commited on
Commit
ed7ba6f
·
1 Parent(s): a3639a3

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +22 -32
app.py CHANGED
@@ -23,8 +23,8 @@ scaling_factors = {'PROPERTY: Calculated Density (g/cm$^3$)': (5.5, 13.7),
23
  'PROPERTY: HV': (107.0, 1183.0),
24
  'PROPERTY: YS (MPa)': (62.0, 3416.0)}
25
 
26
- input_mapping = {'PROPERTY: BCC/FCC/other': {'BCC': 0, 'FCC': 1, 'OTHER': 2, 'nan': 2},
27
- 'PROPERTY: Processing method': {'ANNEAL': 0, 'CAST': 1, 'OTHER': 2, 'POWDER': 3, 'WROUGHT': 4, 'nan': 2},
28
  'PROPERTY: Microstructure': {'B2': 0, 'B2+BCC': 1, 'B2+L12': 2, 'B2+Laves+Sec.': 3, 'B2+Sec.': 4, 'BCC': 5,
29
  'BCC+B2': 6, 'BCC+B2+FCC': 7, 'BCC+B2+FCC+Sec.': 8, 'BCC+B2+L12': 9, 'BCC+B2+Laves': 10,
30
  'BCC+B2+Sec.': 11, 'BCC+BCC': 12, 'BCC+BCC+HCP': 13, 'BCC+BCC+Laves': 14,
@@ -34,22 +34,22 @@ input_mapping = {'PROPERTY: BCC/FCC/other': {'BCC': 0, 'FCC': 1, 'OTHER': 2, 'na
34
  'FCC+BCC+B2': 28, 'FCC+BCC+B2+Sec.': 29, 'FCC+BCC+BCC': 30, 'FCC+BCC+Sec.': 31,
35
  'FCC+FCC': 32, 'FCC+HCP': 33, 'FCC+HCP+Sec.': 34, 'FCC+L12': 35, 'FCC+L12+B2': 36,
36
  'FCC+L12+Sec.': 37, 'FCC+Laves': 38, 'FCC+Laves(C14)': 39, 'FCC+Laves+Sec.': 40,
37
- 'FCC+Sec.': 41, 'L12+B2': 42, 'Laves(C14)+Sec.': 43, 'OTHER': 44, 'nan': 44},
38
- 'PROPERTY: Single/Multiphase': {'': 0, 'M': 1, 'S': 2, 'OTHER': 3, 'nan': 3}}
39
 
40
  unique_phase_elements = ['B2', 'BCC', 'FCC', 'HCP', 'L12', 'Laves', 'Laves(C14)', 'Laves(C15)', 'Sec.', 'OTHER']
41
 
42
  input_cols = {
43
  "PROPERTY: Alloy formula": "(PROPERTY: Alloy formula) "
44
- "Recommended alloy formula using proportions representation (i.e. Al0.25 Co1 Fe1 Ni1)",
45
  "PROPERTY: Single/Multiphase": "(PROPERTY: Single/Multiphase) "
46
- "Recommended between Single (S), Multiphase (M) and other (OTHER)",
47
  "PROPERTY: BCC/FCC/other": "(PROPERTY: BCC/FCC/other) "
48
- "Recommended microstructure between BCC, FCC and other ",
49
  "PROPERTY: Processing method": "(PROPERTY: Processing method) "
50
- "Recommended processing method (ANNEAL, CAST, POWDER, WROUGHT or OTHER)",
51
  "PROPERTY: Microstructure": "(PROPERTY: Microstructure) "
52
- "Recommended microstructure (SEC means the secondary/tertiary microstructure is not one of FCC, BCC, HCP, L12, B2, Laves, Laves (C14), Laves (C15))",
53
  }
54
 
55
  def process_microstructure(list_phases):
@@ -64,34 +64,25 @@ def write_logs(message, message_type="Prediction"):
64
  """
65
  Write logs
66
  """
67
- # with Repository(local_dir="data", clone_from=dataset_url, use_auth_token=WRITE_TOKEN).commit(commit_message="from private", blocking=False):
68
- # with open(dataset_path, "a") as csvfile:
69
- # writer = csv.DictWriter(csvfile, fieldnames=["name", "message", "time"])
70
- # writer.writerow(
71
- # {"name": message_type, "message": message, "time": str(datetime.now())}
72
- # )
73
- print(message)
74
  return
75
-
76
- def fit_outputs(x, hardness_target, ys_target):
77
- predictions = predict(x)[0]
78
- error_hardness = np.sqrt(np.square(predictions[0]-hardness_target))
79
- error_ys = np.sqrt(np.square(predictions[1]-ys_target))
80
- print(predictions, hardness_target, ys_target, error_hardness, error_ys)
81
- return error_hardness + error_ys
82
-
83
-
84
  def predict(x, request: gr.Request):
85
  """
86
  Predict the hardness and yield strength using the ML model. Input data is a dataframe
87
  """
88
- loaded_model = tf.keras.models.load_model("models/hardness_old.h5")
89
  print("summary is", loaded_model.summary())
90
  x = x.replace("", 0)
91
  x = np.asarray(x).astype("float32")
92
  y = loaded_model.predict(x)
93
  y_hardness = y[0][0]
94
- # y_ys = y[0][1]
95
  minimum_hardness, maximum_hardness = scaling_factors['PROPERTY: HV']
96
  minimum_ys, maximum_ys = scaling_factors['PROPERTY: YS (MPa)']
97
  print("Prediction is ", y)
@@ -100,9 +91,9 @@ def predict(x, request: gr.Request):
100
  print("MESSAGE")
101
  print(message)
102
  res = write_logs(message)
103
- interpret_fig_hardness, fig2 = utils.interpret(x)
104
- #interpret_fig_ys = utils.interpret(x, 1)
105
- return (np.round(y_hardness*(maximum_hardness-minimum_hardness)+minimum_hardness, 2), 12, interpret_fig_hardness)
106
 
107
 
108
  def predict_from_tuple(in1, in2, in3, in4, in5, request: gr.Request):
@@ -142,9 +133,8 @@ def predict_from_tuple(in1, in2, in3, in4, in5, request: gr.Request):
142
  input_df = pd.DataFrame.from_dict(input_dict)
143
  one_hot = utils.turn_into_one_hot(input_df, input_mapping)
144
  print("One hot columns are ", one_hot.columns)
145
- # return predict(input_df, request)
146
  return predict(one_hot, request)
147
-
148
 
149
  def predict_inverse(target_hardness, target_yield_strength, request: gr.Request):
150
 
 
23
  'PROPERTY: HV': (107.0, 1183.0),
24
  'PROPERTY: YS (MPa)': (62.0, 3416.0)}
25
 
26
+ input_mapping = {'PROPERTY: BCC/FCC/other': {'BCC': 0, 'FCC': 1, 'OTHER': 2},#, 'nan': 2},
27
+ 'PROPERTY: Processing method': {'ANNEAL': 0, 'CAST': 1, 'OTHER': 2, 'POWDER': 3, 'WROUGHT': 4},#, 'nan': 2},
28
  'PROPERTY: Microstructure': {'B2': 0, 'B2+BCC': 1, 'B2+L12': 2, 'B2+Laves+Sec.': 3, 'B2+Sec.': 4, 'BCC': 5,
29
  'BCC+B2': 6, 'BCC+B2+FCC': 7, 'BCC+B2+FCC+Sec.': 8, 'BCC+B2+L12': 9, 'BCC+B2+Laves': 10,
30
  'BCC+B2+Sec.': 11, 'BCC+BCC': 12, 'BCC+BCC+HCP': 13, 'BCC+BCC+Laves': 14,
 
34
  'FCC+BCC+B2': 28, 'FCC+BCC+B2+Sec.': 29, 'FCC+BCC+BCC': 30, 'FCC+BCC+Sec.': 31,
35
  'FCC+FCC': 32, 'FCC+HCP': 33, 'FCC+HCP+Sec.': 34, 'FCC+L12': 35, 'FCC+L12+B2': 36,
36
  'FCC+L12+Sec.': 37, 'FCC+Laves': 38, 'FCC+Laves(C14)': 39, 'FCC+Laves+Sec.': 40,
37
+ 'FCC+Sec.': 41, 'L12+B2': 42, 'Laves(C14)+Sec.': 43, 'OTHER': 44},#, 'nan': 44},
38
+ 'PROPERTY: Single/Multiphase': {'': 0, 'M': 1, 'S': 2, 'OTHER': 3}}#, 'nan': 3}}
39
 
40
  unique_phase_elements = ['B2', 'BCC', 'FCC', 'HCP', 'L12', 'Laves', 'Laves(C14)', 'Laves(C15)', 'Sec.', 'OTHER']
41
 
42
  input_cols = {
43
  "PROPERTY: Alloy formula": "(PROPERTY: Alloy formula) "
44
+ "Enter alloy formula using proportions representation (i.e. Al0.25 Co1 Fe1 Ni1)",
45
  "PROPERTY: Single/Multiphase": "(PROPERTY: Single/Multiphase) "
46
+ "Choose between Single (S), Multiphase (M) and other (OTHER)",
47
  "PROPERTY: BCC/FCC/other": "(PROPERTY: BCC/FCC/other) "
48
+ "Choose between BCC, FCC and other ",
49
  "PROPERTY: Processing method": "(PROPERTY: Processing method) "
50
+ "Choose your processing method (ANNEAL, CAST, POWDER, WROUGHT or OTHER)",
51
  "PROPERTY: Microstructure": "(PROPERTY: Microstructure) "
52
+ "Choose the microstructure (SEC means the secondary/tertiary microstructure is not one of FCC, BCC, HCP, L12, B2, Laves, Laves (C14), Laves (C15))",
53
  }
54
 
55
  def process_microstructure(list_phases):
 
64
  """
65
  Write logs
66
  """
67
+ with Repository(local_dir="data", clone_from=dataset_url, use_auth_token=WRITE_TOKEN).commit(commit_message="from private", blocking=False):
68
+ with open(dataset_path, "a") as csvfile:
69
+ writer = csv.DictWriter(csvfile, fieldnames=["name", "message", "time"])
70
+ writer.writerow(
71
+ {"name": message_type, "message": message, "time": str(datetime.now())}
72
+ )
 
73
  return
74
+
 
 
 
 
 
 
 
 
75
  def predict(x, request: gr.Request):
76
  """
77
  Predict the hardness and yield strength using the ML model. Input data is a dataframe
78
  """
79
+ loaded_model = tf.keras.models.load_model("hardness.h5")
80
  print("summary is", loaded_model.summary())
81
  x = x.replace("", 0)
82
  x = np.asarray(x).astype("float32")
83
  y = loaded_model.predict(x)
84
  y_hardness = y[0][0]
85
+ y_ys = y[0][1]
86
  minimum_hardness, maximum_hardness = scaling_factors['PROPERTY: HV']
87
  minimum_ys, maximum_ys = scaling_factors['PROPERTY: YS (MPa)']
88
  print("Prediction is ", y)
 
91
  print("MESSAGE")
92
  print(message)
93
  res = write_logs(message)
94
+ interpret_fig = utils.interpret(x)
95
+ return (round(y_hardness*(maximum_hardness-minimum_hardness)+minimum_hardness, 2), 12,
96
+ round(y_ys*(maximum_ys-minimum_ys)+minimum_ys, 2), 12, interpret_fig)
97
 
98
 
99
  def predict_from_tuple(in1, in2, in3, in4, in5, request: gr.Request):
 
133
  input_df = pd.DataFrame.from_dict(input_dict)
134
  one_hot = utils.turn_into_one_hot(input_df, input_mapping)
135
  print("One hot columns are ", one_hot.columns)
 
136
  return predict(one_hot, request)
137
+
138
 
139
  def predict_inverse(target_hardness, target_yield_strength, request: gr.Request):
140