diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..4486d3ab0ccd86eefd99deb2adaa117f66b72cad
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+data/
+.ipynb_checkpoints/
+src/
diff --git a/amplitude.png b/amplitude.png
deleted file mode 100644
index 2c86334c30a44a592ad9106747ee1b39d37ad838..0000000000000000000000000000000000000000
Binary files a/amplitude.png and /dev/null differ
diff --git a/calibracion.ipynb b/calibracion.ipynb
new file mode 100644
index 0000000000000000000000000000000000000000..53083b2bacb19c6d39b4222788da6caac2fe67dc
--- /dev/null
+++ b/calibracion.ipynb
@@ -0,0 +1,476 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "id": "a4d202eb-9d92-4857-b2af-aba670f9090b",
+ "metadata": {},
+ "source": [
+ "# Análisis de Datos Racimo Tormenta"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "52bc4c5f-1baf-4e8f-8a1d-0b0e51fa8695",
+ "metadata": {},
+ "source": [
+ "Notebook para el análisis de datos del proyecto racimo tormenta"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "d277a53c-cccc-4996-8944-620130575372",
+ "metadata": {},
+ "source": [
+ "## Librerias "
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "e96a3270-365f-4f90-9d5a-d2673f176f11",
+ "metadata": {},
+ "source": [
+ "Importar las librerias necesarias para el análisis e interacciones de los datos"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "5d4d6478-6b92-46a4-a849-7fc4d5a3b119",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import numpy as np\n",
+ "import matplotlib.pylab as plt\n",
+ "import scipy\n",
+ "from scipy import stats\n",
+ "from scipy.fftpack import fftfreq, irfft, rfft\n",
+ "import sys\n",
+ "import os\n",
+ "from matplotlib import cm\n",
+ "from matplotlib.colors import ListedColormap, LinearSegmentedColormap\n",
+ "import math\n",
+ "import datetime as datetime\n",
+ "import time\n",
+ "import matplotlib.dates as md\n",
+ "\n",
+ "%matplotlib inline\n",
+ "sys.getdefaultencoding()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "97659221-fc8b-4e1a-b6d9-2ef11fd5410c",
+ "metadata": {},
+ "source": [
+ "## Descargar datos "
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "50ba171a-6d09-4d7a-90ff-b76ce313b09d",
+ "metadata": {},
+ "source": [
+ "Ir a https://dataverse.redclara.net/dataverseuser.xhtml?selectTab=apiTokenTab y copiar el **API Token** para definirlo en el siguiente campo"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "89723f93-88a1-4bd4-ac98-76a5d4e75c48",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "%env API_TOKEN=42401228-20ba-4de1-a889-6aa8ccd89087"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "bf02c4eb-bfed-478e-8315-2ca2bfbe6470",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "%env SERVER_URL=https://dataverse.redclara.net\n",
+ "%env PERSISTENT_ID=doi:10.21348/FK2/EIQEXC\n",
+ "%env VERSION=DRAFT \n",
+ "!curl -L -O -J -H \"X-Dataverse-key:$API_TOKEN\" $SERVER_URL/api/access/dataset/:persistentId/?persistentId=$PERSISTENT_ID"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "52c1b78f-5325-4a21-9933-d25cf8e927ab",
+ "metadata": {},
+ "source": [
+ "Descomprimir archivo de datos"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "0c7d3e5e-31fe-42b7-be08-e9c9f793a7da",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "!unzip dataverse_files.zip\n",
+ "!rm dataverse_files.zip\n",
+ "!rm MANIFEST.TXT"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "960fdf13-2b85-4fca-a1fb-ed0aa016e468",
+ "metadata": {},
+ "source": [
+ "## Calibración del detector"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "3b8b509b-c69e-4c8d-98e2-6f9d7cc825c3",
+ "metadata": {},
+ "source": [
+ "Calibración de las mediciones del detector"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "440109c1-3272-4702-9a0c-fd5e2b8e6b1d",
+ "metadata": {},
+ "source": [
+ "### Vista preliminar de los datos de calibración"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "4ed58223-c091-4de4-b9c7-2cf4b3dd674f",
+ "metadata": {},
+ "source": [
+ "Cargar datos en formato *array numpy*"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "78a31578-66f3-4363-80b4-856aabede298",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "data = np.loadtxt('data/Lighting_2021_04_13_00_4.dat', comments='#')"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "7c03fdf2-6a4a-4d30-87e3-3b025a43f6c1",
+ "metadata": {},
+ "source": [
+ "Describir datos "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "6733522b-ab2c-4b49-841a-a45bc4dfd377",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from scipy import stats\n",
+ "stats.describe(data)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "c754f55c-22ff-46b9-a414-7fa07a4497d6",
+ "metadata": {},
+ "source": [
+ "### Amplitud y frecuencia de la señal"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "badb8819-ef05-4e8c-867c-8b4a03f554d2",
+ "metadata": {},
+ "source": [
+ "Función para graficar amplitud y frecuencia."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "05f9f0b6-dd57-4e7e-92ca-4718cf85808e",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def Lightning_Analysis(data, dt, Np):\n",
+ " \n",
+ " mean = np.mean(data[:,1])\n",
+ " sigma = np.std(data[:,1])\n",
+ " peaks = []\n",
+ " MTFt = [] # Multiple-termination flash (MTF) relative times\n",
+ " MTSt = [] # Multiple.termination stroke (MTS) relative times\n",
+ " MTSv = []\n",
+ " T_count = 0 # Terminations counter\n",
+ " MTFc = 1 # MTF counter\n",
+ " MTSc = 0 # MTS counter\n",
+ " \n",
+ " \n",
+ " N = len(data)\n",
+ " \n",
+ " MTSw = 1e-3 # time window for differentiating MTF and MTS events\n",
+ " \n",
+ " threshold = mean + 5*sigma # Peak threshold\n",
+ " \n",
+ " # Termination identification\n",
+ " for i in range(N):\n",
+ " if (data[i,1] > threshold):\n",
+ " T_count += 1\n",
+ " peaks.append(i)\n",
+ " t1 = data[i,0]\n",
+ " \n",
+ " if T_count > 1:\n",
+ " Td = t1 - t0\n",
+ " if Td > MTSw:\n",
+ " MTFt.append(Td)\n",
+ " MTFc += 1\n",
+ " MTSv.append(MTSc)\n",
+ " MTSc = 0\n",
+ " else:\n",
+ " MTSt.append(Td)\n",
+ " MTSc += 1\n",
+ " t0 = t1\n",
+ " \n",
+ " print (u'Terminations above 5\\u03C3 = %d\\n' %T_count)\n",
+ " print (u'Number of strokes = %d\\n' %MTFc)\n",
+ " \n",
+ " s = data[:,1]\n",
+ " \n",
+ " Y = np.fft.fft(s)\n",
+ " N = len(Y)/2+1\n",
+ " fa = 1.0/dt\n",
+ "\n",
+ " X = np.linspace(0, fa/2, int(N), endpoint=True)\n",
+ " sfft = np.abs(Y[:int(N)])\n",
+ "\n",
+ " print('Sample Time = %.5f s' % dt)\n",
+ " print('Frequency = %.2f Hz' % fa)\n",
+ " \n",
+ " sfft = np.array(sfft)\n",
+ " pos = int(np.where(sfft[1:-1] == np.amax(sfft[1:-1]))[0])\n",
+ " frec_pico = 868.35 # X[pos+1]\n",
+ "\n",
+ " print (\"Maximum frequency = %.2f Hz\" %frec_pico)\n",
+ "\n",
+ " if T_count >= Np:\n",
+ " \n",
+ " # Signal plot\n",
+ "\n",
+ " plt.figure(figsize = (16,4))\n",
+ " plt.subplot(1,2,1)\n",
+ " plt.plot(data[:,0], data[:,1])\n",
+ " plt.axhline(threshold, color='red')\n",
+ " plt.xlabel('Time [s]', fontsize = 20)\n",
+ " plt.ylabel('Amplitude [ADC]', fontsize = 20)\n",
+ " plt.savefig(\"amplitude.png\", dpi=150)\n",
+ "\n",
+ " # Spectrum plotting\n",
+ "\n",
+ " plt.subplot(1,2,2)\n",
+ " plt.axvline(frec_pico, color='red')\n",
+ " plt.loglog(X, sfft)\n",
+ " plt.xlabel('Frequency [Hz]', fontsize = 20)\n",
+ " plt.axis([1e-1,1e5,1e1,1e7])\n",
+ " plt.grid()\n",
+ " plt.show()\n",
+ "\n",
+ " return frec_pico, peaks, MTFt, MTSt, T_count, MTFc, MTSv"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "4da5b0b2-97c4-455b-b9f9-028e817f3fa9",
+ "metadata": {},
+ "source": [
+ "Graficar "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "66982705-0db4-43d7-8bd0-22ec2ae7b907",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "dt = 10e-6 # sampling period\n",
+ "Np = 0. # filter signals per number of peaks above 5 sigma\n",
+ "\n",
+ "fp1, peaks1, MTFt, MTSt, pN1, MTFc, MTSc = Lightning_Analysis(data, dt, Np) # Returns maximum peak frequency and peak positions"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "eccbba23-922e-430b-816b-41ca7212cae5",
+ "metadata": {},
+ "source": [
+ "### Escalar señal y enfocar"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "c15cc352-a82b-404d-9a47-09860ae25950",
+ "metadata": {},
+ "source": [
+ "Definir parámetros de escalado y foco"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "aaea4b8a-0639-479e-8f66-ad59fb179ac8",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "R1 = 0\n",
+ "R2 = 200\n",
+ "P = 5"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "5a59c5cb-19db-4872-9046-6f0471498da0",
+ "metadata": {},
+ "source": [
+ "Crear nuevo *array* de datos."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "0d8a87c1-5ab1-4e9f-b2d8-8d10572ebad8",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "newdata = data[R1:R2]*[1,P]"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "6abec110-ecf4-44e0-b88c-3a3a94b8b4aa",
+ "metadata": {},
+ "source": [
+ "Graficar señal escalada"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "53d02f88-4245-4b93-a2c4-7da1cb9c4448",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "dt = 10e-6 # sampling period\n",
+ "Np = 0. # filter signals per number of peaks above 5 sigma\n",
+ "\n",
+ "fp1, peaks1, MTFt, MTSt, pN1, MTFc, MTSc = Lightning_Analysis(newdata, dt, Np) # Returns maximum peak frequency and peak positions"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "6cd50a1f-6003-4002-a1aa-f98af31ffcab",
+ "metadata": {},
+ "source": [
+ "### Publicar nuevos datos en dataverse"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "78c305e5-7806-432c-8ba6-f179d1f6d863",
+ "metadata": {},
+ "source": [
+ "Conectar a dataverse"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "c365000c-82c3-4972-aa80-ad7d76801b43",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from dataverse import Connection\n",
+ "\n",
+ "API_TOKEN = os.environ['API_TOKEN']\n",
+ "host = 'dataverse.redclara.net' # All clients >4.0 are supported\n",
+ "# Conexión a repositorio\n",
+ "connection = Connection(host, API_TOKEN)\n",
+ "# Selección de dataverse a user (storm para Racimo Tormenta)\n",
+ "dataverse = connection.get_dataverse('storm')"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "2f189374-3ad4-4bfc-a11a-67f2c8a0e6eb",
+ "metadata": {},
+ "source": [
+ "Guardar *array* en nuevo archivo"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "ae9b7fd8-9850-4d7e-ab2e-0397c266416b",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "np.savetxt('data/Lighting_2021_04_13_00_4-'+connection.token+'.dat', newdata)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "0a1f7583-ad98-4aba-a67e-518af2319572",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "dataset = dataverse.get_dataset_by_title('Lighting_2021_04_13')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "71796740-f56e-4dfa-8d8e-4fac88d4a762",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "dataset.upload_filepath('data/Lighting_2021_04_13_00_4-'+connection.token+'.dat')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "e1d125e8-8bf1-464b-b012-cc648cc8691d",
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.7.3"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}