Commit 2a10a1b5 authored by Alfonso's avatar Alfonso
Browse files

prova

parent 3cab195d
Loading
Loading
Loading
Loading
+18 −15
Original line number Diff line number Diff line
# va bene fare la media per ogni combinazione theta phi di energia?
# dato che divido per gli eventi detected va bene cosi o devo dividere per il totale
# dei generati e moltiplicare per l'area della sorgente?
import os
import astropy.io.fits as fits
import pandas as pd
@@ -18,26 +21,26 @@ def get_data(file_path):
        
        return energy, ratio_X, ratio_S

def write_raw_results(output_file, results):
    with open(output_file, "a") as f:
def write_raw_results(output, results):
    with open(output, "a") as f:
        for energy, ratio_X, ratio_S in results:
            f.write(f"{energy:.1f}\t{ratio_X:.3f}\t{ratio_S:.3f}\n")

# se vuoi i dati rough commenta questa funzione
def write_results(output_file):
    # Questa riga legge il file .dat e crea un DataFrame
    data = pd.read_csv(output_file, delim_whitespace=True, header=None, names=['energy', 'ratio_X', 'ratio_S'])
    # Calcola la media per ogni valore unico di energia
    result = data.groupby('energy').mean().reset_index()
    # Approssima i risultati alla terza cifra decimale
    result = result.round(3)
    # Scrive il risultato nel file di output
    result.to_csv(output_file, sep='\t', index=False, header=False)
#def write_results(output_file):
#    # Questa riga legge il file .dat e crea un DataFrame
#    data = pd.read_csv(output_file, delim_whitespace=True, header=None, names=['energy', 'ratio_X', 'ratio_S'])
#    # Calcola la media per ogni valore unico di energia
#    result = data.groupby('energy').mean().reset_index()
#    # Approssima i risultati alla terza cifra decimale
#    result = result.round(3)
#    # Scrive il risultato nel file di output
#    result.to_csv(output_file, sep='\t', index=False, header=False)

# Funzione che processa tutti i file .fits presenti nella folder
def process_folder_parallel(folder_path, output_file):
def process_folder_parallel(folder, output):
    # Crea una lista di file FITS trovati nella folder. Sorted per leggerli in ordine
    files = sorted([os.path.join(folder_path, file) for file in os.listdir(folder_path) if file.endswith(".fits")], key=os.path.getmtime)
    files = sorted([os.path.join(folder, file) for file in os.listdir(folder) if file.endswith(".fits")], key=os.path.getmtime)
    
    # Crea un pool di processi che permette di eseguire funzioni in parallelo.
    # Usa il metodo map() del pool per eseguire la funzione get_data() su ciascun file FITS in parallelo.
@@ -45,9 +48,9 @@ def process_folder_parallel(folder_path, output_file):
    with Pool() as pool:
        results = pool.map(get_data, files) # qui files è l'argomento che passi a get_data
    
    write_raw_results(output_file, results)
    write_raw_results(output, results)
    
    write_results(output_file)
    #write_results(output_file)

if __name__ == "__main__":
    folder = "/home/alfonso/Scrivania/THESEUS/xgis_m7-main/fits"