Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
M
ML-for-Astro-tutorial-Sternwarte
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Requirements
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Test cases
Artifacts
Deploy
Releases
Package registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue analytics
Insights
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Heneka, Dr. Caroline
ML-for-Astro-tutorial-Sternwarte
Commits
d1df91b1
Commit
d1df91b1
authored
Mar 2, 2022
by
Heneka, Dr. Caroline
Browse files
Options
Downloads
Patches
Plain Diff
Upload New File
parent
a5d7eef7
Branches
Branches containing commit
No related tags found
No related merge requests found
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
spectral_classifier_full/fits_to_csv.ipynb
+199
-0
199 additions, 0 deletions
spectral_classifier_full/fits_to_csv.ipynb
with
199 additions
and
0 deletions
spectral_classifier_full/fits_to_csv.ipynb
0 → 100644
+
199
−
0
View file @
d1df91b1
{
"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
}
%% 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.
"
)
# 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
```
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment