import numpy as np
from astropy.io import fits
from astropy.io.fits import getdata, getheader
from astropy.table import Table, Column, vstack
import sys
import astropy.units as u
import time
import math
import scoop
from scoop import utils
from progress.bar import Bar
from ukidss_series import run_ukidss_rgb


def ukidss_rgb(args):
    result_fits = chunks(args)
    nrows = len(result_fits)
    for pos_line, i in zip(result_fits, range(nrows)):
         pos = pos_line.split('\n')[0].split(' ')
         ra = float(pos[0])
         dec = float(pos[1])
         run_ukidss_rgb(ra, dec, 30.0, 'images/', 'out_color_images')


def chunks(args):
    result_fits = open(args[2])
    result_fits = result_fits.readlines()
    chunk = len(result_fits) // args[1]
    result_fits = np.array(result_fits)
    chunck_list = [result_fits[i:min(i + chunk, len(result_fits))] for i in range(0, len(result_fits), chunk)]
    if len(chunck_list) > args[0]:
       return chunck_list[args[0]]
    else:
       return []
    #print(chunk, len(result_fits), args)
    #return [result_fits[i:min(i + chunk, len(result_fits))] for i in range(0, len(result_fits), chunk)][args[0]]



if __name__ == '__main__':
    task = sys.argv[1]
    proc_n = int(sys.argv[2])
    file_list = sys.argv[3]
    #outpath = sys.argv[4]
    proc_ids = range(proc_n)
    args = zip(proc_ids, [proc_n] * proc_n, [file_list]
               * proc_n, [task] * proc_n)
    returnValues = list(
       scoop.futures.map_as_completed(ukidss_rgb, args))


'''
python3 -m scoop -n 5 make_rgb_ukidss_parallel.py ukidss_rgb 5 ukidss_frame_positions.txt > table_ukidss_rgb.log 2>&1
'''
