56 lines
2.4 KiB
Python
56 lines
2.4 KiB
Python
import pandas as pd
|
|
import os
|
|
import matplotlib.pyplot as plt
|
|
from PIL import Image
|
|
|
|
# 1. CONFIGURATION (Relative paths for portability)
|
|
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
|
|
# Strictly use the root results file generated by graficar_tsne_msi.py
|
|
CSV_PATH = os.path.join(BASE_DIR, "..", "msi_clusters_results.csv")
|
|
|
|
IMG_DIR = os.path.join(BASE_DIR, "..", "datos_para_ai")
|
|
OUTPUT_DIR = os.path.join(BASE_DIR, "..", "figures", "galleries")
|
|
os.makedirs(OUTPUT_DIR, exist_ok=True)
|
|
|
|
# 2. PROCESSING
|
|
if os.path.exists(CSV_PATH):
|
|
print(f"Loading results from: {CSV_PATH}")
|
|
df = pd.read_csv(CSV_PATH)
|
|
|
|
# Detect the correct column for ion image names
|
|
possible_cols = ['ion_image', 'ion', 'filename']
|
|
img_col = next((c for c in possible_cols if c in df.columns), None)
|
|
|
|
if not img_col:
|
|
print(f"Error: Could not find image column in {CSV_PATH}. Available: {df.columns.tolist()}")
|
|
else:
|
|
for cluster_id in sorted(df['cluster'].unique()):
|
|
print(f"Generating gallery for Cluster {cluster_id}...")
|
|
# Take a 3x3 sample of the cluster
|
|
cluster_ions = df[df['cluster'] == cluster_id][img_col].head(9).tolist()
|
|
|
|
fig, axes = plt.subplots(3, 3, figsize=(10, 10))
|
|
fig.suptitle(f"Cluster {cluster_id} - Ion Morphologies", fontsize=16)
|
|
|
|
for i, ax in enumerate(axes.flat):
|
|
if i < len(cluster_ions):
|
|
img_path = os.path.join(IMG_DIR, cluster_ions[i])
|
|
if os.path.exists(img_path):
|
|
img = Image.open(img_path)
|
|
# Using 'viridis' improves human visibility of low-concentration transport traces in the veins
|
|
ax.imshow(img, cmap='viridis')
|
|
ax.set_title(cluster_ions[i], fontsize=8)
|
|
else:
|
|
ax.text(0.5, 0.5, 'Image Not Found', ha='center', va='center', fontsize=6)
|
|
ax.axis('off')
|
|
|
|
plt.tight_layout()
|
|
# Standardized filename for consistency
|
|
plt.savefig(f"{OUTPUT_DIR}/Gallery_cluster_{cluster_id}.png")
|
|
plt.close()
|
|
|
|
print(f"\nGalleries successfully saved in: {OUTPUT_DIR}")
|
|
else:
|
|
print(f"Error: Missing required results file: {CSV_PATH}")
|
|
print("Please run 'python scripts_python/graficar_tsne_msi.py' first to generate results.")
|