Skip to content
Snippets Groups Projects
Commit 06b1825d authored by joshuaroschlaub's avatar joshuaroschlaub
Browse files

update

parent a308f7b0
No related branches found
No related tags found
No related merge requests found
Showing
with 32331 additions and 21531 deletions
This diff is collapsed.
{
"cells": [],
"metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}
notebooks/spectral_classifier_big/accuracy_graph_v2.png

13.8 KiB | W: | H:

notebooks/spectral_classifier_big/accuracy_graph_v2.png

18.3 KiB | W: | H:

notebooks/spectral_classifier_big/accuracy_graph_v2.png
notebooks/spectral_classifier_big/accuracy_graph_v2.png
notebooks/spectral_classifier_big/accuracy_graph_v2.png
notebooks/spectral_classifier_big/accuracy_graph_v2.png
  • 2-up
  • Swipe
  • Onion skin
%% Cell type:code id: tags:
``` python
import numpy as np
from astropy.io import fits
import matplotlib.pyplot as plt
from astropy.wcs import WCS
import os
import csv
########## Input ##########
fits_path = 'F:\\data\\spectral_fits_big\\'
data_path = 'F:\\data\\'
samples_per_class = 10000
smallest_wavelength = 4000 # in Angström
biggest_wavelength = 9000
########## Program ##########
# Funktion zum transponieren von Listen
def transpose_list(list1):
numpy_array = np.array(list1)
transposed = numpy_array.T
return transposed.tolist()
# Über alle fits-Dateien iterieren
all_flux = []
for directory in os.listdir(fits_path):
count_failed=0
count_added=0
for filename in os.listdir(fits_path + directory + '\\'):
path = fits_path + '\\' + directory + '\\' + filename
# fits-Dateien öffnen und wavelength + flux einlesen
hdul = fits.open(path)
data = hdul[1].data
flux = data['flux']
wavelength = 10**data['loglam']
hdul.close()
# first und last Index finden
for i in range(len(wavelength)):
if wavelength[i]>smallest_wavelength:
first_index = i
break
for i in range(len(wavelength)):
if wavelength[i]>biggest_wavelength:
last_index = i
break
# wavenlength und flux Listen schneiden
wavelength = wavelength[first_index:last_index]
flux = flux[first_index:last_index]
if len(wavelength) == 3522 and count_added < samples_per_class:
all_flux.append(flux)
count_added += 1
if len(wavelength) != 3522:
print("Länge der Liste wavelength ist: " + str(len(wavelength)))
count_failed += 1
print(str(count_failed/11000*100) + "% waren nicht erfolgreich bei der Klasse:" + directory)
print(str(count_added) + " CSV-Dateien angelegt.")
# csv-Datei erstellen und erste Zeile schreiben
# Liste mit Einträgen der ersten Zeile in der csv Datei erstellen
row_labels = ['wavelength']
for i in range(1000):
row_labels.append('AGN{} flux'.format(i+1))
for i in range(1000):
row_labels.append('galaxy{} flux'.format(i+1))
for i in range(1000):
row_labels.append('QSO{} flux'.format(i+1))
for i in range(1000):
row_labels.append('star{} flux'.format(i+1))
# Daten in csv-Datei abspeichern
file = open(data_path + 'spectral_data_big.csv', 'w')
with file:
writer = csv.writer(file, delimiter=',', lineterminator='\n')
writer.writerow(row_labels)
all_flux_transposed = transpose_list(all_flux)
for i in range(len(all_flux_transposed)):
writer.writerow([wavelength[i]] + all_flux_transposed[i])
```
%% Output
Länge der Liste wavelength ist: 3267
Länge der Liste wavelength ist: 2690
Länge der Liste wavelength ist: 3483
Länge der Liste wavelength ist: 3521
0.36363636363636365% waren nicht erfolgreich bei der Klasse:AGN
1000 CSV-Dateien angelegt.
Länge der Liste wavelength ist: 3521
Länge der Liste wavelength ist: 3502
Länge der Liste wavelength ist: 3511
Länge der Liste wavelength ist: 3521
Länge der Liste wavelength ist: 3493
Länge der Liste wavelength ist: 3519
Länge der Liste wavelength ist: 3506
Länge der Liste wavelength ist: 3477
Länge der Liste wavelength ist: 3487
Länge der Liste wavelength ist: 3486
Länge der Liste wavelength ist: 3503
Länge der Liste wavelength ist: 3470
Länge der Liste wavelength ist: 3513
Länge der Liste wavelength ist: 3503
Länge der Liste wavelength ist: 3470
Länge der Liste wavelength ist: 3503
Länge der Liste wavelength ist: 3467
Länge der Liste wavelength ist: 3469
Länge der Liste wavelength ist: 3494
Länge der Liste wavelength ist: 3461
Länge der Liste wavelength ist: 3423
Länge der Liste wavelength ist: 3507
Länge der Liste wavelength ist: 3433
Länge der Liste wavelength ist: 3487
Länge der Liste wavelength ist: 3484
Länge der Liste wavelength ist: 3470
Länge der Liste wavelength ist: 3469
Länge der Liste wavelength ist: 3447
Länge der Liste wavelength ist: 3447
Länge der Liste wavelength ist: 3511
2.727272727272727% waren nicht erfolgreich bei der Klasse:galaxy
1000 CSV-Dateien angelegt.
Länge der Liste wavelength ist: 3516
Länge der Liste wavelength ist: 3495
Länge der Liste wavelength ist: 3116
0.27272727272727276% waren nicht erfolgreich bei der Klasse:QSO
1000 CSV-Dateien angelegt.
Länge der Liste wavelength ist: 3461
Länge der Liste wavelength ist: 3472
Länge der Liste wavelength ist: 3475
Länge der Liste wavelength ist: 3468
Länge der Liste wavelength ist: 3444
Länge der Liste wavelength ist: 3469
Länge der Liste wavelength ist: 3439
Länge der Liste wavelength ist: 3459
Länge der Liste wavelength ist: 3424
Länge der Liste wavelength ist: 3431
Länge der Liste wavelength ist: 3521
Länge der Liste wavelength ist: 3441
Länge der Liste wavelength ist: 3515
Länge der Liste wavelength ist: 3237
1.2727272727272727% waren nicht erfolgreich bei der Klasse:star
1000 CSV-Dateien angelegt.
%% Cell type:code id: tags:
``` python
```
......
%% Cell type:code id:6e2b226d tags:
``` python
import numpy as np
from astropy.io import fits
import matplotlib.pyplot as plt
from astropy.wcs import WCS
import os
import csv
########## Input ##########
fits_path = 'F:\\data\\spectral_fits\\'
data_path = 'F:\\data\\'
samples_per_class = 1000
smallest_wavelength = 4000 # in Angström
biggest_wavelength = 9000
########## Program ##########
all_flux = []
for directory in os.listdir(fits_path):
count_failed=0
count_added=0
for filename in os.listdir(fits_path + directory + '\\'):
path = fits_path + '\\' + directory + '\\' + filename
# fits-Dateien öffnen und wavelength + flux einlesen
hdul = fits.open(path)
data = hdul[1].data
flux = data['flux']
wavelength = 10**data['loglam']
hdul.close()
# first und last Index finden
for i in range(len(wavelength)):
if wavelength[i]>smallest_wavelength:
first_index = i
break
for i in range(len(wavelength)):
if wavelength[i]>biggest_wavelength:
last_index = i
break
# wavenlength und flux Listen schneiden
wavelength = wavelength[first_index:last_index]
flux = flux[first_index:last_index]
if len(wavelength) == 3522 and count_added < samples_per_class:
all_flux.append(flux)
count_added += 1
if len(wavelength) != 3522:
print("Länge der Liste wavelength ist: " + str(len(wavelength)))
count_failed += 1
print(str(count_failed/1000*100) + "% waren nicht erfolgreich bei der Klasse:" + directory)
# Numpy Arrays mit Daten füllen
data = np.array(all_flux)
labels = np.zeros(shape=(4000,), dtype='int')
for i in range(4):
for t in range(samples_per_class):
labels[i*1000+t] = i
wavelengths = np.array(wavelength)
# Numpy arrays in .npy Dateien speichern
np.save(data_path + "data.npy", data)
np.save(data_path + "labels.npy", labels)
np.save(data_path + "wavelengths.npy", wavelengths)
```
%% Output
Länge der Liste wavelength ist: 3267
Länge der Liste wavelength ist: 2690
Länge der Liste wavelength ist: 3483
Länge der Liste wavelength ist: 3521
0.4% waren nicht erfolgreich bei der Klasse:AGN
Länge der Liste wavelength ist: 3521
Länge der Liste wavelength ist: 3502
Länge der Liste wavelength ist: 3511
Länge der Liste wavelength ist: 3521
Länge der Liste wavelength ist: 3493
Länge der Liste wavelength ist: 3519
Länge der Liste wavelength ist: 3506
Länge der Liste wavelength ist: 3477
Länge der Liste wavelength ist: 3487
Länge der Liste wavelength ist: 3486
Länge der Liste wavelength ist: 3503
Länge der Liste wavelength ist: 3470
Länge der Liste wavelength ist: 3513
Länge der Liste wavelength ist: 3503
Länge der Liste wavelength ist: 3470
Länge der Liste wavelength ist: 3503
Länge der Liste wavelength ist: 3467
Länge der Liste wavelength ist: 3469
Länge der Liste wavelength ist: 3494
Länge der Liste wavelength ist: 3461
Länge der Liste wavelength ist: 3423
Länge der Liste wavelength ist: 3507
Länge der Liste wavelength ist: 3433
Länge der Liste wavelength ist: 3487
Länge der Liste wavelength ist: 3484
Länge der Liste wavelength ist: 3470
Länge der Liste wavelength ist: 3469
Länge der Liste wavelength ist: 3447
Länge der Liste wavelength ist: 3447
Länge der Liste wavelength ist: 3511
3.0% waren nicht erfolgreich bei der Klasse:galaxy
Länge der Liste wavelength ist: 3516
Länge der Liste wavelength ist: 3495
Länge der Liste wavelength ist: 3116
0.3% waren nicht erfolgreich bei der Klasse:QSO
Länge der Liste wavelength ist: 3461
Länge der Liste wavelength ist: 3472
Länge der Liste wavelength ist: 3475
Länge der Liste wavelength ist: 3468
Länge der Liste wavelength ist: 3444
Länge der Liste wavelength ist: 3469
Länge der Liste wavelength ist: 3439
Länge der Liste wavelength ist: 3459
Länge der Liste wavelength ist: 3424
Länge der Liste wavelength ist: 3431
Länge der Liste wavelength ist: 3521
Länge der Liste wavelength ist: 3441
Länge der Liste wavelength ist: 3515
Länge der Liste wavelength ist: 3237
1.4000000000000001% waren nicht erfolgreich bei der Klasse:star
%% Cell type:code id:85504e55 tags:
``` python
```
notebooks/spectral_classifier_big/loss_graph_v2.png

12.8 KiB | W: | H:

notebooks/spectral_classifier_big/loss_graph_v2.png

16.4 KiB | W: | H:

notebooks/spectral_classifier_big/loss_graph_v2.png
notebooks/spectral_classifier_big/loss_graph_v2.png
notebooks/spectral_classifier_big/loss_graph_v2.png
notebooks/spectral_classifier_big/loss_graph_v2.png
  • 2-up
  • Swipe
  • Onion skin
No preview for this file type
This diff is collapsed.
This diff is collapsed.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment