Пример #1
0
def _post(args: argparse.ArgumentParser) -> None:
    """Additional tasks."""
    if args.cubes and (args.position or args.reference or args.coordinate):
        # Load cubes
        for cube_file in args.cubes:
            # Cube
            args.log.info(f'Loading cube: {cube_file}')
            cube = spectral_cube.SpectralCube.read(cube_file)
            wcs = cube.wcs.sub(['longitude', 'latitude'])

            # Positions
            args.position_fn(args, wcs=wcs)

            # Extract spectra
            for position in args.pos:
                args.log.info(f'Loading spectra at: {position}')
                spec = Spectrum.from_cube(cube, position, vlsr=args.vlsr)

                # Filter molecules
                molec = spec.filter(args.molec)

                # Frequency range
                if args.freqrange is not None:
                    xlim = args.freqrange
                    suffix = f'{xlim[0].value:.2f}_{xlim[1].value:.2f}_'
                else:
                    xlim = None
                    suffix = ''

                # Plot
                suffix = (f'_spectrum_{molec.name}_'
                          f'{suffix}'
                          f'{position[0]}_{position[1]}.png')
                output = cube_file.stem + suffix
                output = args.outdir[0] / output
                spec.plot(output, molecule=molec, xlim=xlim)