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