<jupyter_start><jupyter_text>Algoritmo calcolo FA<jupyter_code>#Calcolo Amplificazione FA intervalli (definibili da utente) default 0.1 - 0.5 & 0.4 - 0.8 & 0.7 - 1.1
#Calcola il rapporto tra gli integrali come da Indirizzi e Criteri MS
#possibile inserire in modo dinamico i limiti dell'integrazione
#lavora contemporaneamente su un numero indefinito di spettri
#accetta file di output da Strata formato .csv
#versione 01/01/2018
import os
import numpy as np
from pandas import DataFrame
import scipy.stats as stats
import pylab as pl
import math
import funzioni
from funzioni import FA
from funzioni import It
a = 'C:\DOTTORATO\MICROZONAZIONE_SISMICA\_Python\INTEGRALE_FH\FromStrataCSV' #input(Inserisci Percorso File: ) - Persorso file
b = '.csv'		# input('Inserisci Estensione File: ') - Estensione file
doelabo = [] 	# Creo un array per i file su i quali devo eseguire i calcoli
nodoelabo = [] 	# Creo un array per i file su i quali NON devo eseguire i calcoli

def leggifile(direct,estens):
    for f in os.listdir(direct): 	# Iterazione su tutti i file della cartella
        if f.endswith(estens): 		# Verifico l'estensione corretta
            doelabo.append(f)
        else:
            nodoelabo.append(f)

leggifile(a,b)
file_doelabo_1 = os.path.join(os.path.abspath(a),doelabo[1])
file_doelabo_0 = os.path.join(os.path.abspath(a),doelabo[0])
for file in nodoelabo:
				if file.endswith('.strata'):
					print 'Calcolo FA dal file: %s'% file
print 'il file che contiene gli spettri di input è: %s'% doelabo[1]
print 'il file che contiene gli spettri di output è: %s'% doelabo[0]
			
zin = open(file_doelabo_1,'r' ).readlines()				# legge tutti i record
zin = [ i.strip().split(',') for i in zin[3:] ]		# legge tutti i record
zin = np.array( zin, dtype=np.float )				# Dichiaro la tipologia dei dati
zin = DataFrame(zin)								# Costruisco il dataframe
zout = open(file_doelabo_0,'r' ).readlines()			# legge tutti i record
zout = [ i.strip().split(',') for i in zout[3:] ]	# legge tutti i record
zout = np.array( zout, dtype=np.float )
zout = DataFrame(zout)	
naccel = len(zin.columns) - 2 	# Difinisce il numero di Accelerogrammi per calcoli
naccel2 = len(zin.columns) - 3 	# Difinisce il numero di Accelerogrammi per output stampe
alimit = [0.1,0.4,0.7]			# Difinisce i limiti inferiori di calcolo FA
blimit = [0.5,0.8,1.1]			# Difinisce i limiti superiori di calcolo FA

Fhi=[] # Popolato dalla chiamata FA.calcolostrata

FA.calcolostrata(Fhi,zin,zout,alimit,blimit,naccel)

print '****'
print 'FA calcolati per gli intervalli richiesti'
print 'Sono stati calcolati n: %s spettri' % naccel2
print 'Per ognuno n: %s FA' % str(len(alimit))
print '****   ****'
medial = input('Eseguo la media log ? y/n')
grafic = input('Eseguo grafico stat ? y/n')

if medial == 'y': 			# Esegue la media log dei valori di FA chiamando 'Iterazione' e 'calcolostrata'
	print 'eseguo la media log'
	It.iterazione(Fhi,alimit)

if grafic == 'y': 			# Creo n° grafici con Hist dei valori di FA
	i = 0
	while i < len(alimit):
		FhIint = []
		
		for value in range(len(alimit)):
			a = i
			while a < len(Fhi):
				FhIint.append(Fhi[a])
				a = a + len(alimit)
		FhIint.sort()	
		pl.hist(FhIint,normed=False,bins=50)#come conviende stabilire il n°di bins?
		pl.xlabel('FA (intervallo %s)'% str(i+1))
		pl.title(doelabo[0]) 
		pl.savefig('FA_intervallo_' + str(i+1)+'.jpg')
		pl.close()
		i = i + 1<jupyter_output>Eseguo la media log ? y/n
{'fraction_non_alphanumeric': 0.11792177466433158, 'fraction_numerical': 0.015469935785172213, 'mean_word_length': 3.988355167394469, 'pattern_counts': {'":': 0, '<': 6, '<?xml version=': 0, '>': 4, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '1', 'dir': 'jupyter-structured-clean-dedup', 'id': '546131', 'license': 'Apache-2.0', 'n_tokens_mistral': 1468, 'n_tokens_neox': 1383, 'n_words': 398, 'path': 'calcoloFA.ipynb', 'repo_name': 'GEOstudio80/calcoloFA', 'size': '3426'}