From d1df91b1bfae5eb28674dde27f37aa236501eccd Mon Sep 17 00:00:00 2001 From: "Heneka, Dr. Caroline" <caroline.heneka@uni-hamburg.de> Date: Wed, 2 Mar 2022 09:46:09 +0000 Subject: [PATCH] Upload New File --- spectral_classifier_full/fits_to_csv.ipynb | 199 +++++++++++++++++++++ 1 file changed, 199 insertions(+) create mode 100644 spectral_classifier_full/fits_to_csv.ipynb diff --git a/spectral_classifier_full/fits_to_csv.ipynb b/spectral_classifier_full/fits_to_csv.ipynb new file mode 100644 index 0000000..26c4490 --- /dev/null +++ b/spectral_classifier_full/fits_to_csv.ipynb @@ -0,0 +1,199 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 62, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Länge der Liste wavelength ist: 3267\n", + "Länge der Liste wavelength ist: 2690\n", + "Länge der Liste wavelength ist: 3483\n", + "Länge der Liste wavelength ist: 3521\n", + "0.36363636363636365% waren nicht erfolgreich bei der Klasse:AGN\n", + "1000 CSV-Dateien angelegt.\n", + "Länge der Liste wavelength ist: 3521\n", + "Länge der Liste wavelength ist: 3502\n", + "Länge der Liste wavelength ist: 3511\n", + "Länge der Liste wavelength ist: 3521\n", + "Länge der Liste wavelength ist: 3493\n", + "Länge der Liste wavelength ist: 3519\n", + "Länge der Liste wavelength ist: 3506\n", + "Länge der Liste wavelength ist: 3477\n", + "Länge der Liste wavelength ist: 3487\n", + "Länge der Liste wavelength ist: 3486\n", + "Länge der Liste wavelength ist: 3503\n", + "Länge der Liste wavelength ist: 3470\n", + "Länge der Liste wavelength ist: 3513\n", + "Länge der Liste wavelength ist: 3503\n", + "Länge der Liste wavelength ist: 3470\n", + "Länge der Liste wavelength ist: 3503\n", + "Länge der Liste wavelength ist: 3467\n", + "Länge der Liste wavelength ist: 3469\n", + "Länge der Liste wavelength ist: 3494\n", + "Länge der Liste wavelength ist: 3461\n", + "Länge der Liste wavelength ist: 3423\n", + "Länge der Liste wavelength ist: 3507\n", + "Länge der Liste wavelength ist: 3433\n", + "Länge der Liste wavelength ist: 3487\n", + "Länge der Liste wavelength ist: 3484\n", + "Länge der Liste wavelength ist: 3470\n", + "Länge der Liste wavelength ist: 3469\n", + "Länge der Liste wavelength ist: 3447\n", + "Länge der Liste wavelength ist: 3447\n", + "Länge der Liste wavelength ist: 3511\n", + "2.727272727272727% waren nicht erfolgreich bei der Klasse:galaxy\n", + "1000 CSV-Dateien angelegt.\n", + "Länge der Liste wavelength ist: 3516\n", + "Länge der Liste wavelength ist: 3495\n", + "Länge der Liste wavelength ist: 3116\n", + "0.27272727272727276% waren nicht erfolgreich bei der Klasse:QSO\n", + "1000 CSV-Dateien angelegt.\n", + "Länge der Liste wavelength ist: 3461\n", + "Länge der Liste wavelength ist: 3472\n", + "Länge der Liste wavelength ist: 3475\n", + "Länge der Liste wavelength ist: 3468\n", + "Länge der Liste wavelength ist: 3444\n", + "Länge der Liste wavelength ist: 3469\n", + "Länge der Liste wavelength ist: 3439\n", + "Länge der Liste wavelength ist: 3459\n", + "Länge der Liste wavelength ist: 3424\n", + "Länge der Liste wavelength ist: 3431\n", + "Länge der Liste wavelength ist: 3521\n", + "Länge der Liste wavelength ist: 3441\n", + "Länge der Liste wavelength ist: 3515\n", + "Länge der Liste wavelength ist: 3237\n", + "1.2727272727272727% waren nicht erfolgreich bei der Klasse:star\n", + "1000 CSV-Dateien angelegt.\n" + ] + } + ], + "source": [ + "import numpy as np\n", + "from astropy.io import fits\n", + "import matplotlib.pyplot as plt\n", + "from astropy.wcs import WCS\n", + "import os\n", + "import csv\n", + "\n", + "########## Input ##########\n", + "\n", + "fits_path = 'F:\\\\data\\\\spectral_fits_big\\\\'\n", + "data_path = 'F:\\\\data\\\\'\n", + "\n", + "samples_per_class = 10000\n", + "\n", + "smallest_wavelength = 4000 # in Angström\n", + "biggest_wavelength = 9000 \n", + "\n", + "########## Program ##########\n", + "\n", + "\n", + "# Funktion zum transponieren von Listen\n", + "def transpose_list(list1):\n", + " numpy_array = np.array(list1)\n", + " transposed = numpy_array.T\n", + " return transposed.tolist()\n", + "\n", + "\n", + "# Über alle fits-Dateien iterieren\n", + "all_flux = []\n", + "\n", + "for directory in os.listdir(fits_path):\n", + " \n", + " count_failed=0\n", + " count_added=0\n", + " \n", + " for filename in os.listdir(fits_path + directory + '\\\\'):\n", + " \n", + " path = fits_path + '\\\\' + directory + '\\\\' + filename\n", + " \n", + " # fits-Dateien öffnen und wavelength + flux einlesen\n", + " hdul = fits.open(path)\n", + " data = hdul[1].data\n", + " flux = data['flux']\n", + " wavelength = 10**data['loglam']\n", + " hdul.close()\n", + " \n", + " # first und last Index finden\n", + " for i in range(len(wavelength)):\n", + " if wavelength[i]>smallest_wavelength:\n", + " first_index = i\n", + " break\n", + "\n", + " for i in range(len(wavelength)):\n", + " if wavelength[i]>biggest_wavelength:\n", + " last_index = i\n", + " break\n", + "\n", + " # wavenlength und flux Listen schneiden\n", + " wavelength = wavelength[first_index:last_index]\n", + " flux = flux[first_index:last_index]\n", + " \n", + " if len(wavelength) == 3522 and count_added < samples_per_class:\n", + " all_flux.append(flux) \n", + " count_added += 1 \n", + "\n", + " if len(wavelength) != 3522:\n", + " print(\"Länge der Liste wavelength ist: \" + str(len(wavelength)))\n", + " count_failed += 1 \n", + " \n", + " print(str(count_failed/11000*100) + \"% waren nicht erfolgreich bei der Klasse:\" + directory)\n", + " print(str(count_added) + \" CSV-Dateien angelegt.\")\n", + " \n", + "# Liste mit Einträgen der ersten Zeile in der csv Datei erstellen\n", + "row_labels = ['wavelength']\n", + "for i in range(1000):\n", + " row_labels.append('AGN{} flux'.format(i+1))\n", + "for i in range(1000):\n", + " row_labels.append('galaxy{} flux'.format(i+1))\n", + "for i in range(1000):\n", + " row_labels.append('QSO{} flux'.format(i+1))\n", + "for i in range(1000):\n", + " row_labels.append('star{} flux'.format(i+1)) \n", + "\n", + "# Daten in csv-Datei abspeichern\n", + "file = open(data_path + 'spectral_data_big.csv', 'w') \n", + "with file:\n", + " writer = csv.writer(file, delimiter=',', lineterminator='\\n')\n", + " writer.writerow(row_labels)\n", + " \n", + " all_flux_transposed = transpose_list(all_flux)\n", + " \n", + " for i in range(len(all_flux_transposed)):\n", + " writer.writerow([wavelength[i]] + all_flux_transposed[i])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "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.8.5" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} -- GitLab