Skip to content

Commit 6ee4626

Browse files
committed
fixes
2 parents 36c4db3 + 9ffee2e commit 6ee4626

File tree

3 files changed

+32
-40
lines changed

3 files changed

+32
-40
lines changed

analysis.py

Lines changed: 31 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,55 +1,47 @@
1+
import numpy as np
12
import matplotlib.pyplot as plt
23
import json
34

45
def analyze_data(data):
56
numbers = data.get("numbers", [])
6-
77
if not numbers:
8-
return {"error": "No numbers provided for analysis"}
8+
return {"error": "No numbers provided"}
99

10-
average = sum(numbers) / len(numbers)
11-
12-
result = {
13-
"average": average,
14-
"category": "High" if average > 50 else "Low",
15-
"input_size": len(numbers),
10+
arr = np.array(numbers)
11+
mean = arr.mean()
12+
median = np.median(arr)
13+
std_dev = arr.std()
14+
# Possibly detect outliers
15+
outliers = arr[np.abs(arr - mean) > 2 * std_dev]
16+
17+
return {
18+
"mean": mean,
19+
"median": median,
20+
"std_dev": std_dev,
21+
"outliers": outliers.tolist()
1622
}
17-
return result
1823

1924
def visualize_analysis(result, filename="./output/analysis_visualization.png"):
20-
# Extract values
21-
average = result["average"]
22-
category = result["category"]
23-
input_size = result["input_size"]
24-
25-
# Visualization
26-
plt.figure(figsize=(8, 5))
27-
28-
# Bar chart for numeric values
29-
metrics = ["Average", "Input Size"]
30-
values = [average, input_size]
31-
colors = ["blue", "green"]
32-
33-
plt.bar(metrics, values, color=colors, alpha=0.7)
34-
35-
# Add titles and labels
36-
plt.title(f"Data Analysis Visualization(METACALL)\nCategory: {category}", fontsize=14, pad=15)
37-
plt.xlabel("Metrics", fontsize=12)
38-
plt.ylabel("Values", fontsize=12)
39-
40-
# Add value labels on top of bars
41-
for i, value in enumerate(values):
42-
plt.text(i, value + 1, f"{value:.2f}", ha="center", va="bottom", fontsize=10)
43-
44-
# Grid for better readability
45-
plt.grid(axis="y", linestyle="--", alpha=0.7)
46-
47-
# Save the plot to a file
25+
mean = result["mean"]
26+
std_dev = result["std_dev"]
27+
outliers = result["outliers"]
28+
29+
fig, ax = plt.subplots(2, 1, figsize=(8, 8))
30+
31+
# Top subplot: bar chart
32+
metrics = ["Mean", "Standard Deviation"]
33+
values = [mean, std_dev]
34+
ax[0].bar(metrics, values, color=["blue", "red"])
35+
ax[0].set_title("Basic Statistics", fontsize=14)
36+
37+
# Bottom subplot: outliers
38+
ax[1].bar(range(len(outliers)), outliers, color="orange")
39+
ax[1].set_title("Detected Outliers", fontsize=14)
40+
4841
plt.tight_layout()
4942
plt.savefig(filename, dpi=300)
5043
plt.close()
51-
print(f"Visualization saved as {filename}")
52-
44+
print(f"Visualization saved as {filename}")
5345

5446
def process_message(message):
5547
try:

index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ app.use(express.json());
1616
app.use(express.urlencoded({ extended: false }));
1717

1818
const server = app.listen(port, () =>
19-
console.log(`ws server is listening on http://localhost:${port}`)
19+
console.log(`ws server is listening on ws://localhost:${port}`)
2020
);
2121

2222
const wss = new WebSocketServer({ server });

output/analysis_visualization.png

-85 KB
Binary file not shown.

0 commit comments

Comments
 (0)