<jupyter_start><jupyter_text>*Dark Energy Spectroscopic Instrument*  *Instrumento espectroscópico de energía oscura* Today, we continue the legacy of [Slipher](https://en.wikipedia.org/wiki/Vesto_Slipher), [Hubble](https://en.wikipedia.org/wiki/Edwin_Hubble), [Vera Rubin](https://en.wikipedia.org/wiki/Vera_Rubin) et al. with the DESI survey of *30 Million* galaxies.  That's a lot more than Hubble's original 24!  Hoy, continuamos el legado de [Slipher] (https://en.wikipedia.org/wiki/Vesto _Slipher), [Hubble] (https://en.wikipedia.org/wiki/Edwin_ Hubble), [Vera Rubin] (https://en.wikipedia.org/wiki/Vera_Rubin) et al. con el estudio DESI de *30 millones* de galaxias. ¡Eso es mucho más que los 24 originales de Hubble! ![title](images/kittpeak.jpg) To get this many galaxies, we need a telescope big enough to observe very faint galaxies.  With a 4m diameter mirror,  the Mayall Telescope at Kitt Peak is just right: Para obtener tantas galaxias, necesitamos un telescopio lo suficientemente grande para observar galaxias muy débiles. Con un espejo de 4 m de diámetro, el telescopio Mayall en Kitt Peak es perfecto: ![title](images/desi_mayall.jpg) As Hubble once did, we also need observers to run the telescope for us.  Within DESI, everyone gets a turn at this (whether you're an expert or not!).  Here's [Satya](https://satyagontcho.space/) in the control room showing us how Como hizo Hubble una vez, también necesitamos observadores que manejen el telescopio por nosotros. Dentro de DESI, todo el mundo tiene su turno en esto (¡seas un experto o no!). Aquí está [Satya] (https://satyagontcho.space/) en la sala de control mostrándonos cómo ![alt](images/satya.jpg) This might be you one day! Straight off the telescope, our data looks pretty unrecognizable: ¡Este podría ser usted algún día! Desde el telescopio, nuestros datos parecen bastante irreconocibles: ![title](images/spectra2D.png) Here you're seeing the light from 500 optical fibers (each collecting the light of one galaxy) packed onto a CCD. The horizontal arches correspond to a given wavelength, with the bright arches corresponding to bright sky lines - a complete nuisance!  The apparently random tracks are cosmic rays - detections of high energy particles generated within the atmosphere.  We need to carefully calibrate and clean these images to retrieve the galaxy light we really care about.  Let's assume some smart people have done this for us, and look at the cleaned images of the light of a few DESI galaxies.       Aquí está viendo la luz de 500 fibras ópticas (cada una recolectando la luz de una galaxia) empaquetadas en un CCD. Los arcos horizontales corresponden a una longitud de onda dada, y los arcos brillantes corresponden a líneas brillantes del cielo, ¡una completa molestia!Las pistas aparentemente aleatorias son rayos cósmicos, detecciones de partículas de alta energía generadas dentro de la atmósfera.Necesitamos calibrar y limpiar cuidadosamente estas imágenes para recuperar la luz de la galaxia que realmente nos importa. Supongamos que algunas personas inteligentes han hecho esto por nosotros y miremos las imágenes limpias de la luz de algunas galaxias DESI. We'll also look to add some markers that indicate the strong lines from Hydrogen (that we learnt about previously) in a few DESI Quasar spectra. También buscaremos agregar algunos marcadores que indiquen las líneas fuertes del hidrógeno (que aprendimos anteriormente) en algunos espectros DESI Quasar.<jupyter_code>def Rydberg(n, m):
    # Vacuum wavelengths of Hydrogen [nanometres], see the Intro.
    result = 1.096e-2 * (1. / n / n - 1. / m / m)
    return 1. / result
# Hydrogen Lyman-alpha line.
Lya        = 10. * Rydberg(1, 2)

# The Hydrogen Balmer series.
Balmers    = 10. * np.array([Rydberg(2, m) for m in np.arange(6, 3, -1)])
Balmers<jupyter_output><empty_output><jupyter_text>Now we're going to select a DESI galaxy type (we think of galaxies as difference _tracers_ of dark matter).  We'll start off with QSO, which will be explained later.  At the end of the notebook, you'll get the chance to select from the others.For your viewing pleasure, you have any of- MWS:  The Milky Way Survey, a subset of targets trying to catch stars and [white dwarves](www.en.wikipedia.org/wiki/White_dwarf).   - BGS:  The Bright Galaxy Survey, some of the brightest, and prettiest galaxies in the DESI survey. - LRG:  Luminous Red Galaxy, very red, very luminous (astronomers aren't usually that creative).  [Approx. 6Gyr old and weighing in with $10^{11}$ stars](https://academic.oup.com/mnras/article/377/2/787/1038423).  - ELG:  Emission line galaxy, with their own notebook: DesigningDESI.ipynb. Ahora vamos a seleccionar un tipo de galaxia DESI (pensamos en las galaxias como diferencia _trazadoras_ de materia oscura). Comenzaremos con QSO, que se explicará más adelante. Al final del cuaderno, tendrá la oportunidad de seleccionar entre los demás.Para su placer visual, tiene cualquiera de- MWS: The Milky Way Survey, un subconjunto de objetivos que intentan atrapar estrellas y [enanas blancas] (www.en.wikipedia.org/wiki/White_dwarf).- BGS: The Bright Galaxy Survey, algunas de las galaxias más brillantes y bonitas de la encuesta DESI.- LRG: Luminous Red Galaxy, muy rojo, muy luminoso (los astrónomos no suelen ser tan creativos). [Aprox. 6 años de edad y con estrellas de $10^{11}$] (https://academic.oup.com/mnras/article/377/2/787/1038423).- ELG: Emission line galaxy, con su propio cuaderno: DesigningDESI.ipynb.<jupyter_code># Replace ['qso'] with any of ['mws'], ['bgs'], ['lrg'], ['elg'], ['qso'] here. 
tracers     = ['qso']<jupyter_output><empty_output><jupyter_text>Ok, first we need to load the data we need.  The packages above are very useful for this.  Try and break it apart and see what's in there! Ok, primero necesitamos cargar los datos que necesitamos. Los paquetes anteriores son muy útiles para esto. Intenta romperloy mira lo que hay ahí!<jupyter_code># Here we create empty tables that we will fill with data on the redshift of galaxies, and their spectra.
redshifts   = Table()
spectra     = Table()

# DESI observes a "tile" of 5000 galaxies at a time.  We need to know the ID number for the tile corresponding to the targets we want.
tiles       = {'mws': 66003, 'bgs': 66003, 'elg': 67230, 'lrg': 68002, 'qso': 68002}

# Find all files in the student_andes directory that begin with e.g. zbest-.
rfiles      = glob.glob('student_andes/zbest-*')
sfiles      = glob.glob('student_andes/coadd-*')

for tracer in tracers:
  # Create the filename for this tracer and tile.
  rfile     = 'student_andes/zbest-{}-{}-20200315.fits'.format(tracer, tiles[tracer])    
  
  # Load the redshift information for this tile and tracer.  
  redshifts = vstack((redshifts, Table.read(rfile)))

  # Same thing, but for their spectra.
  sfile     = 'student_andes/coadd-{}-{}-20200315.fits'.format(tracer, tiles[tracer]) 
  spectra   = vstack((spectra, Table.read(sfile)))
    
print('Number of {} galaxies available: {:d}'.format(tracers[0], len(redshifts)))<jupyter_output>Number of qso galaxies available: 5<jupyter_text>Remember, in python everything is an object, so you have lots of ways to ask any given thing what it can do. Try writing 'rfiles?', 'print(rfiles)', 'rfiles.TAB' in a new cell to see what this object can do.  TAB means you finish with the TAB key, this will bring up a box telling you the available methods for the object - things you can ask for it to do.  E.g. rfiles.append, to which you can ask: 'rfiles.append?' and so on.  You can try the same thing with the redshifts Table, which will have many more options!   Recuerde, en Python todo es un objeto, por lo que tiene muchas formas de preguntarle a cualquier cosa qué puede hacer. Intente escribir 'rfiles?', 'Print (rfiles)', 'rfiles.TAB' en una nueva celda para ver qué puede hacer este objeto. TAB significa que terminas con la tecla TAB, esto abrirá un cuadro que te indicará los métodos disponibles para el objeto, cosas que puedes pedirle. P.ej. rfiles.append, al que puede preguntar: 'rfiles.append?' y así. Puedes probar lo mismo con la tabla de corrimientos al rojo, ¡que tendrá muchas más opciones! Let's see what we got on their redshifts.  We'll have five rows, one for each galaxy.  Their position on the sky, brightness at various wavelengths, type of galaxy, and their ID number. Veamos qué obtuvimos en sus corrimientos al rojo. Tendremos cinco filas, una para cada galaxia. Su posición en el cielo, brillo en varias longitudes de onda, tipo de galaxia y número de identificación.<jupyter_code>redshifts<jupyter_output><empty_output><jupyter_text>Now, we'll use the spectra Table to plot the galaxy light! Ahora, usaremos la tabla de espectros para trazar la luz de la galaxia.<jupyter_code>ngal       = 5

# Make the plots.
fig, axes  = plt.subplots(ngal, 2, figsize=(15., 3.5 * ngal))

for i, tid in enumerate(redshifts['TARGETID'][:ngal]):
  redshift = redshifts['Z'][i]

  # This plots a vertical line.  Here, to show lyman-alpha. 
  axes[i,1].axvline((1. + redshift) * Lya, c='cyan', alpha=0.5)

  # Plot the Balmer lines. 
  for balmer in Balmers:
    axes[i,1].axvline((1. + redshift) * balmer, c='magenta', alpha=0.5)      
    
  # Finally, plot the galaxy spectra!  
  axes[i,1].plot(spectra['WAVELENGTH'], spectra['TARGET{:d}'.format(tid)], lw=1)
  
  # Add a tile.
  axes[i,1].set_title('Target {} @ redshift {:.3f}]'.format(tid, redshift))

  # Set the axis limits. 
  axes[i,1].set_xlim(3.5e3, 1.e4)
  axes[i,1].set_ylim(bottom=-0.5)

  axes[i,1].set_ylabel('Flux')

  # Add a photo of each galaxy.
  url = cutout(axes[i,0], redshifts['TARGET_RA'][i], redshifts['TARGET_DEC'][i])

fig.suptitle('{} Tracers'.format(tracers[0].upper()), fontsize=18, y=0.91)<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.08981301726780423, 'fraction_numerical': 0.01583733524062532, 'mean_word_length': 4.443826473859844, 'pattern_counts': {'":': 0, '<': 20, '<?xml version=': 0, '>': 20, 'https://': 10, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '5', 'dir': 'jupyter-structured-clean-dedup', 'id': '333164', 'license': 'BSD-3-Clause', 'n_tokens_mistral': 3323, 'n_tokens_neox': 3094, 'n_words': 1298, 'path': 'Espanol/prep/DESI.ipynb', 'repo_name': 'gnizq64/DESI-HighSchool', 'size': '9787'}