Loading pyproject.toml +2 −1 Original line number Diff line number Diff line Loading @@ -52,7 +52,8 @@ dependencies = [ 'matplotlib>=3.7', 'astropy>=5.3', 'requests>=2.31', 'Pillow>=9.5' 'Pillow>=9.5', 'PyConsoleMenu>=1.0' ] [project.optional-dependencies] Loading src/galassify/galassify.py +28 −12 Original line number Diff line number Diff line Loading @@ -5,6 +5,7 @@ ####################################################### import sys import os from PyQt5 import QtWidgets from . import utils from . import gui Loading @@ -13,12 +14,27 @@ VERSION = '0.1.4' def main(): args = utils.getOptions(VERSION) selectedFiles, selectedGroups = utils.getFiles() if not len(sys.argv) > 1: selec = utils.load_menu() if selec == 0: utils.init_flag(); elif selec == 10: utils.example_flag('basic'); elif selec == 11: utils.example_flag('fits'); else: print(args.init) if args.init: utils.init_flag(); elif args.example != '': print(f"INFO:\t Create the {args.example} example files ") utils.example_flag(args.example); else: selectedFiles, selectedGroups = utils.getFiles() if len(selectedFiles) > 0: if args.list: print(selectedFiles.filename) else: print(f"INFO:\t {str(len(selectedFiles))} galaxies found in selected group(s).") df = selectedFiles # utils.expand_df(selectedFiles) Loading src/galassify/utils.py +99 −4 Original line number Diff line number Diff line import os import re import sys import glob import argparse from pathlib import Path import pandas as pd import pkg_resources from PyConsoleMenu import SelectorMenu import warnings from typing import Union Loading @@ -21,28 +24,37 @@ def getOptions(version): global VERSION parser = argparse.ArgumentParser(prog='GALAssify', description="GALAssify: Tool to manually classify galaxies.") parser.add_argument('--version', action='version', version='%(prog)s ' + version, help="Prints software version and exit.\n") parser.add_argument('-p', '--path', type=dir_path, default='img', parser.add_argument('--init',action='store_true',help='Generate a basic config file, and the basic folder structure.') parser.add_argument('--example', type=example_type, default='', help='Run a galassify (basic or fits) example.') parser.add_argument('-p', '--path', type=dir_path, default=getPackageResource('img'), help="Path to image files.\n") parser.add_argument('-c', '--config', type=dir_file, default='config', parser.add_argument('-c', '--config', type=dir_file, default=getPackageResource('config'), help="Config json file to load.\n") #parser.add_argument('-f', '--filename', nargs='+', # required=not('-p' in sys.argv # or '--path' in sys.argv # or '--version' in sys.argv), type=dir_file, # help="Image or list to classify. Not required if path or path + group are given.\n") parser.add_argument('-s', '--savefile', #required=not('--version' in sys.argv), default='output.csv', help="CSV file to load and export changes. If does not exists, a new one is created.\n") parser.add_argument("-l", "--list", action="store_true", help="List selected files only and exit.\n") parser.add_argument('-i', '--inputfile', default='galaxies.csv', type=dir_file, parser.add_argument('-i', '--inputfile', default=getPackageResource('files/galaxies.csv'), type=dir_file, help="""Galaxy database file in *.csv format. Minimum required columns: ['galaxy']. Recomended columns: ['group', 'galaxy', 'ra', 'dec', 'filename' and/or 'fits']""") parser.add_argument('group', metavar='GROUP', nargs='*', help="Group number. Selects images with name format: img_<group>_*.png\n") Loading @@ -51,6 +63,80 @@ def getOptions(version): return args def load_menu(): global select_option select_option = 3 options = ["INIT (--init):\t Generate a basic config file, and the basic folder structure.", "EXAMPLE (--example):\t Generate a files whit a galassify example", "EXIT"] menu = SelectorMenu(options, title='GALAssify: A tool to manually classify galaxies.') ans = menu.input() if ans.index==0: print(f"INFO:\t Input example files was created") select_option = 0 #return(0) elif ans.index==1: options_2 = ["BASIC (--example basic):\t Load the images example", "FITS (--example fits):\t Load the images fits example", "BACK"] menu_2 = SelectorMenu(options_2, title='GALAssify Example: Generate a files whit a galassify example') ans_2 = menu_2.input() if (ans_2.index==0): select_option = 10; #return(10) elif (ans_2.index==1): select_option = 11; #return(11) else: load_menu() return select_option def init_flag(): print(f"INFO:\t Input example files was created") try: os.system("mkdir files") os.system('cd files; echo "group,galaxy,ra,dec,filename" >> galaxies.csv') os.system('cd files; echo "group,galaxy,ra,dec,filename,fits" >> galaxies_fits.csv') os.system('cd files; echo "group,galaxy,filename,morphology,large,tiny,faceon,edgeon,star,calibration,recentre,duplicated,member,hiiregion,yes,no,comment" >> output.csv') os.system('cd files; echo "group,galaxy,filename,fits,fits_coords,morphology,large,tiny,faceon,edgeon,star,calibration,recentre,duplicated,member,hiiregion,yes,no,comment" >> output_fits.csv') os.system("mkdir img") os.system("cd img; mkdir fits; mkdir nog") except: pass print(f"RUN:\t 'galassify -i files/galaxies.csv -s files/output.csv -p img/' or 'galassify -i files/galaxies_fits.csv -s files/output_fits.csv -p img/'") def example_flag(type_example): if type_example == 'basic': try: os.system("mkdir files") os.system('cd files; echo "group,galaxy,filename,morphology,large,tiny,faceon,edgeon,star,calibration,recentre,duplicated,member,hiiregion,yes,no,comment" >> output.csv') os.system(f"cp '{getPackageResource('files/galaxies.csv')}' files/galaxies.csv") os.system("mkdir img") content=glob.glob(f"{getPackageResource('img/')}") content = [f for f in os.listdir(f"{getPackageResource('img/')}") if re.match(r'.*\.jpeg', f)] for element in content: elemet_dir = getPackageResource('img/'+element) os.system(f"cp '{elemet_dir}' img/{element}") except: pass print(f"RUN:\t galassify -i files/galaxies.csv -s files/output.csv -p img/ ") else: try: os.system("mkdir files") os.system('cd files; echo "group,galaxy,filename,fits,fits_coords,morphology,large,tiny,faceon,edgeon,star,calibration,recentre,duplicated,member,hiiregion,yes,no,comment" >> output_fits.csv') os.system(f"cp '{getPackageResource('files/galaxies_fits.csv')}' files/galaxies_fits.csv") os.system("mkdir img; cd img; mkdir fits") content=glob.glob(f"{getPackageResource('img/fits/')}") content = [f for f in os.listdir(f"{getPackageResource('img/fits/')}") if re.match(r'.*\.fits', f)] for element in content: elemet_dir = getPackageResource('img/fits/'+element) os.system(f"cp '{elemet_dir}' img/fits/{element}") except: pass print(f"RUN:\t galassify -i files/galaxies_fits.csv -s files/output_fits.csv -p img/fits/ ") def getVersion(): global VERSION return VERSION Loading Loading @@ -116,6 +202,15 @@ def getFiles(): # files = [] return selectedFiles, selectedGroups def example_type(type_text): if type_text == 'basic': return(type_text) elif type_text == 'fits': return(type_text) elif type_text == '': return(type_text) else: raise argparse.ArgumentTypeError(f"readable_example_type: {type_text} is not a valid example type.") def dir_path(path): d = Path(path) Loading Loading
pyproject.toml +2 −1 Original line number Diff line number Diff line Loading @@ -52,7 +52,8 @@ dependencies = [ 'matplotlib>=3.7', 'astropy>=5.3', 'requests>=2.31', 'Pillow>=9.5' 'Pillow>=9.5', 'PyConsoleMenu>=1.0' ] [project.optional-dependencies] Loading
src/galassify/galassify.py +28 −12 Original line number Diff line number Diff line Loading @@ -5,6 +5,7 @@ ####################################################### import sys import os from PyQt5 import QtWidgets from . import utils from . import gui Loading @@ -13,12 +14,27 @@ VERSION = '0.1.4' def main(): args = utils.getOptions(VERSION) selectedFiles, selectedGroups = utils.getFiles() if not len(sys.argv) > 1: selec = utils.load_menu() if selec == 0: utils.init_flag(); elif selec == 10: utils.example_flag('basic'); elif selec == 11: utils.example_flag('fits'); else: print(args.init) if args.init: utils.init_flag(); elif args.example != '': print(f"INFO:\t Create the {args.example} example files ") utils.example_flag(args.example); else: selectedFiles, selectedGroups = utils.getFiles() if len(selectedFiles) > 0: if args.list: print(selectedFiles.filename) else: print(f"INFO:\t {str(len(selectedFiles))} galaxies found in selected group(s).") df = selectedFiles # utils.expand_df(selectedFiles) Loading
src/galassify/utils.py +99 −4 Original line number Diff line number Diff line import os import re import sys import glob import argparse from pathlib import Path import pandas as pd import pkg_resources from PyConsoleMenu import SelectorMenu import warnings from typing import Union Loading @@ -21,28 +24,37 @@ def getOptions(version): global VERSION parser = argparse.ArgumentParser(prog='GALAssify', description="GALAssify: Tool to manually classify galaxies.") parser.add_argument('--version', action='version', version='%(prog)s ' + version, help="Prints software version and exit.\n") parser.add_argument('-p', '--path', type=dir_path, default='img', parser.add_argument('--init',action='store_true',help='Generate a basic config file, and the basic folder structure.') parser.add_argument('--example', type=example_type, default='', help='Run a galassify (basic or fits) example.') parser.add_argument('-p', '--path', type=dir_path, default=getPackageResource('img'), help="Path to image files.\n") parser.add_argument('-c', '--config', type=dir_file, default='config', parser.add_argument('-c', '--config', type=dir_file, default=getPackageResource('config'), help="Config json file to load.\n") #parser.add_argument('-f', '--filename', nargs='+', # required=not('-p' in sys.argv # or '--path' in sys.argv # or '--version' in sys.argv), type=dir_file, # help="Image or list to classify. Not required if path or path + group are given.\n") parser.add_argument('-s', '--savefile', #required=not('--version' in sys.argv), default='output.csv', help="CSV file to load and export changes. If does not exists, a new one is created.\n") parser.add_argument("-l", "--list", action="store_true", help="List selected files only and exit.\n") parser.add_argument('-i', '--inputfile', default='galaxies.csv', type=dir_file, parser.add_argument('-i', '--inputfile', default=getPackageResource('files/galaxies.csv'), type=dir_file, help="""Galaxy database file in *.csv format. Minimum required columns: ['galaxy']. Recomended columns: ['group', 'galaxy', 'ra', 'dec', 'filename' and/or 'fits']""") parser.add_argument('group', metavar='GROUP', nargs='*', help="Group number. Selects images with name format: img_<group>_*.png\n") Loading @@ -51,6 +63,80 @@ def getOptions(version): return args def load_menu(): global select_option select_option = 3 options = ["INIT (--init):\t Generate a basic config file, and the basic folder structure.", "EXAMPLE (--example):\t Generate a files whit a galassify example", "EXIT"] menu = SelectorMenu(options, title='GALAssify: A tool to manually classify galaxies.') ans = menu.input() if ans.index==0: print(f"INFO:\t Input example files was created") select_option = 0 #return(0) elif ans.index==1: options_2 = ["BASIC (--example basic):\t Load the images example", "FITS (--example fits):\t Load the images fits example", "BACK"] menu_2 = SelectorMenu(options_2, title='GALAssify Example: Generate a files whit a galassify example') ans_2 = menu_2.input() if (ans_2.index==0): select_option = 10; #return(10) elif (ans_2.index==1): select_option = 11; #return(11) else: load_menu() return select_option def init_flag(): print(f"INFO:\t Input example files was created") try: os.system("mkdir files") os.system('cd files; echo "group,galaxy,ra,dec,filename" >> galaxies.csv') os.system('cd files; echo "group,galaxy,ra,dec,filename,fits" >> galaxies_fits.csv') os.system('cd files; echo "group,galaxy,filename,morphology,large,tiny,faceon,edgeon,star,calibration,recentre,duplicated,member,hiiregion,yes,no,comment" >> output.csv') os.system('cd files; echo "group,galaxy,filename,fits,fits_coords,morphology,large,tiny,faceon,edgeon,star,calibration,recentre,duplicated,member,hiiregion,yes,no,comment" >> output_fits.csv') os.system("mkdir img") os.system("cd img; mkdir fits; mkdir nog") except: pass print(f"RUN:\t 'galassify -i files/galaxies.csv -s files/output.csv -p img/' or 'galassify -i files/galaxies_fits.csv -s files/output_fits.csv -p img/'") def example_flag(type_example): if type_example == 'basic': try: os.system("mkdir files") os.system('cd files; echo "group,galaxy,filename,morphology,large,tiny,faceon,edgeon,star,calibration,recentre,duplicated,member,hiiregion,yes,no,comment" >> output.csv') os.system(f"cp '{getPackageResource('files/galaxies.csv')}' files/galaxies.csv") os.system("mkdir img") content=glob.glob(f"{getPackageResource('img/')}") content = [f for f in os.listdir(f"{getPackageResource('img/')}") if re.match(r'.*\.jpeg', f)] for element in content: elemet_dir = getPackageResource('img/'+element) os.system(f"cp '{elemet_dir}' img/{element}") except: pass print(f"RUN:\t galassify -i files/galaxies.csv -s files/output.csv -p img/ ") else: try: os.system("mkdir files") os.system('cd files; echo "group,galaxy,filename,fits,fits_coords,morphology,large,tiny,faceon,edgeon,star,calibration,recentre,duplicated,member,hiiregion,yes,no,comment" >> output_fits.csv') os.system(f"cp '{getPackageResource('files/galaxies_fits.csv')}' files/galaxies_fits.csv") os.system("mkdir img; cd img; mkdir fits") content=glob.glob(f"{getPackageResource('img/fits/')}") content = [f for f in os.listdir(f"{getPackageResource('img/fits/')}") if re.match(r'.*\.fits', f)] for element in content: elemet_dir = getPackageResource('img/fits/'+element) os.system(f"cp '{elemet_dir}' img/fits/{element}") except: pass print(f"RUN:\t galassify -i files/galaxies_fits.csv -s files/output_fits.csv -p img/fits/ ") def getVersion(): global VERSION return VERSION Loading Loading @@ -116,6 +202,15 @@ def getFiles(): # files = [] return selectedFiles, selectedGroups def example_type(type_text): if type_text == 'basic': return(type_text) elif type_text == 'fits': return(type_text) elif type_text == '': return(type_text) else: raise argparse.ArgumentTypeError(f"readable_example_type: {type_text} is not a valid example type.") def dir_path(path): d = Path(path) Loading