#!/usr/bin/python import argparse import numpy as np from kde_map_functions import plot_map, make_map parser = argparse.ArgumentParser(description='Программа для построение карты поверхностной плотности конкретного размера, параметра KDE и предельной звёздной величины') parser.add_argument("infile", type=str, help='Имя входного файла, содержащего координаты и звёздные величины звёзд') parser.add_argument("name", type=str, help="Название скопления (для заголовков графика)") parser.add_argument("delta", type=float, help="Величина параметра KDE в угловых минутах") parser.add_argument("maglim", type=float, help="Предельная звёздная величина звёзд, используемых в построении карты") parser.add_argument("step", type=float, help="Размер шага в угловых минутах для построения карты, укажите 0.1, 0.2 или 0.4 для размеров карты 30'x30', 60'x60' или 120'x120' соответственно") args = parser.parse_args() coord_in = args.infile clustername = args.name step = args.step delta = args.delta maglim = args.maglim xymag_columnsnum = (0, 1, 13) xymag = np.loadtxt(coord_in, comments='#', usecols=xymag_columnsnum) size = "{0}x{0}".format(int(300*step)) name = 'map_{3}_{0}_{1}_{2}.'.format(size, maglim, delta, clustername) sname = "Карта поверхностной плотности {0}:\nmaglim = {1}, h = {2}'".format(clustername, maglim, delta) xydens = make_map(xymag, delta, step, maglim, name+'txt') plot_map(xydens, name+'txt', name+'png', sname, show=True)
maxmags = [17, 18] deltas = [6, 7] #В колонках с этими номерами должны находиться соответсвующие величины xymag_columns = (0, 1, 13) print("""Выходные файлы будут выглядеть следующим образом: map_<имя скопления>_<размеры карты>_<предельная величина>_<параметр KDE>.[txt, png] Комбинированная карта (если требуется) будет в файле maps_<имя скопления>_<размеры карты>.png Построение займёт некоторое время (возможно даже много времени)...\n""") xymag = np.loadtxt(coord_in, comments='#', usecols=xymag_columns) for j in maxmags: for k in deltas: name = 'map_{3}_{0}_{1}_{2}.'.format(size, j, k, clustername) sname = "Карта поверхностной плотности {0}:\nmaglim = {1}m, h = {2}'".format(clustername, j, k) xydens = make_map(xymag, k, step, j, name+'txt') plot_map(xydens, name+'txt', name+'png', sname) if args.combine: fig, axes = plt.subplots(len(maxmags), len(deltas), subplot_kw={'xticks': [], 'yticks': []}) fig.subplots_adjust(left=0, bottom=0, right=1, top=1, wspace=0, hspace=0) img = [] for i in maxmags: for j in deltas: img.append(mpimg.imread('map_{3}_{0}_{1}_{2}.png'.format(size, i, j, clustername))) for ax, image in zip(axes.flat, img): ax.axis('off') ax.imshow(image) fig.savefig('maps_{}_{}.png'.format(clustername, size), dpi=300, frameon=False)
def make_and_plot_map(xymag, clustername, delta, maglim, step): size = "{0}x{0}".format(int(300*step)) name = 'map_{3}_{0}_{1}_{2}.'.format(size, maglim, delta, clustername) sname = "Карта поверхностной плотности {0}:\nmaglim = {1}, h = {2}'".format(clustername, maglim, delta) make_map(xymag, delta, step, maglim, name+'txt') plot_map(name+'txt', name+'png', sname, show=True)
import argparse import numpy as np import pandas as pd import matplotlib.pyplot as plt from kde_map_functions import plot_map from scipy.interpolate import griddata parser = argparse.ArgumentParser( description= 'Программа для построение карты поверхностной плотности по готовому файлу map_....txt' ) parser.add_argument("infile", type=str, help='Имя входного файла с x y z колонками') args = parser.parse_args() coord_in = args.infile spl = coord_in.split('_') clustername = spl[1] size = spl[2] step = int(size.split('x')[0]) / 300 delta = float(spl[-1].rsplit('.', 1)[0]) maglim = float(spl[3]) name = 'map_{3}_{0}_{1}_{2}.'.format(size, maglim, delta, clustername) in_file = name + 'txt' out_file = name + 'png' sname = "Карта поверхностной плотности {0}:\nmaglim = {1}, h = {2}'".format( clustername, maglim, delta) plot_map(in_file, out_file, sname)