Browse Source

appened experimental results

avadapal 1 year ago
parent
commit
5a96ad3b6a
1 changed files with 82 additions and 0 deletions
  1. 82 0
      repro/append-experiment-results.py

+ 82 - 0
repro/append-experiment-results.py

@@ -0,0 +1,82 @@
+import sys
+
+# Define a function to extract variables from the data file
+def extract_variables_from_file(file_path):
+    variables_list = []
+
+    with open(file_path, 'r') as file:
+        header = file.readline().strip()
+
+        for line in file:
+            columns = line.strip().split()
+            ds, op, is_optimized, heapsize, y, pm, y_err = columns
+
+            variables_dict = {
+                'DS': ds,
+                'OP': op,
+                'is_optimized': is_optimized,
+                'heapsize': heapsize,
+                'y': float(y),  # Convert 'y' to a float to handle averages
+                'pm': pm,
+                'y_err': float(y_err)  # Convert 'y_err' to a float to handle averages
+            }
+
+            variables_list.append(variables_dict)
+
+    return variables_list
+
+# Define a function to update the data based on input and add new rows if needed
+def update_data(file_path, ds, op, is_optimized, heapsize, y0):
+    extracted_variables = extract_variables_from_file(file_path)
+
+    # Find the row with matching 'DS', 'OP', 'is_optimized', and 'heapsize'
+    matching_row = None
+    for variables in extracted_variables:
+        if (variables['DS'] == ds and
+            variables['OP'] == op and
+            variables['is_optimized'] == is_optimized and
+            variables['heapsize'] == heapsize):
+            matching_row = variables
+            break
+
+    if matching_row:
+        # Update 'y' and 'y_err' based on 'y0'
+        matching_row['y'] = (matching_row['y'] + y0) / 2
+        matching_row['y_err'] = abs(matching_row['y'] - y0)
+    else:
+        # If no matching row found, add a new row
+        new_row = {
+            'DS': ds,
+            'OP': op,
+            'is_optimized': is_optimized,
+            'heapsize': heapsize,
+            'y': y0,
+            'pm': '±',
+            'y_err': 0  # Since it's a new row, we set y_err to 0
+        }
+        extracted_variables.append(new_row)
+
+    # Write the updated data back to the file
+    with open(file_path, 'w') as file:
+        header_line = "DS OP is_optimized heapsize y pm y-err\n"
+        file.write(header_line)
+
+        for variables in extracted_variables:
+            row = f"{variables['DS']} {variables['OP']} {variables['is_optimized']} {variables['heapsize']} {variables['y']} {variables['pm']} {variables['y_err']}\n"
+            file.write(row)
+
+# Check if the user provided the required input
+#if len(sys.argv) != 6:
+ #   print("Usage: python3 script.py <file_path> <DS> <OP> <is_optimized> <heapsize> <y0>")
+ #   sys.exit(1)
+
+# Get the input values from the command-line arguments
+file_path = sys.argv[1]
+ds = sys.argv[2]
+op = sys.argv[3]
+is_optimized = sys.argv[4]
+heapsize = sys.argv[5]
+y0 = float(sys.argv[6])  # Convert y0 to a float
+
+# Call the function to update the data based on input
+update_data(file_path, ds, op, is_optimized, heapsize, y0)