#!/usr/bin/env python3
# encoding: utf-8
################################################################################
# Created Date : Tuesday September 29th 2020                                   #
# Author: Jingxin Fu (jingxinfu.tj@dgmail.com)                                  #
# ----------                                                                   #
# Last Modified: Tuesday September 29th 2020 5:03:56 pm                        #
# Modified By: Jingxin Fu (jingxinfu.tj@gmail.com)                             #
# ----------                                                                   #
# Copyright (c) Jingxin Fu 2020                                                #
################################################################################


__doc__=""" 
""" 
import os 
import subprocess
import argparse
import scanpy as sc

if __name__ == "__main__":
    parser = argparse.ArgumentParser(
        description=__doc__, formatter_class=argparse.ArgumentDefaultsHelpFormatter)
    parser.add_argument(
        'rds', help="Use - for STDIN or path for seurat obj(*.rds file)")
    parser.add_argument('-o', '--output', required=True,
                        help='Specify path to write the results')
    parser.add_argument('--RNA', action='store_true',
                        help='Whether is store in the RNA slot')

    args = parser.parse_args()
    exec_path = os.path.abspath(os.path.dirname(__file__))
    print('==Convert RDS to Loom==')
    cmds = f"Rscript {exec_path}/seuratToloom.R {args.rds} -o {args.output}"
    if args.RNA:
        cmds = cmds+' --RNA'

    subprocess.run(cmds,shell=True)
    print('==Convert Loom to Adata==')
    if os.path.isfile(args.output+'.integrated.loom'):
        adata = sc.read_loom(args.output+'.integrated.loom')
        adata.raw = sc.read_loom(args.output+'.RNA.loom')
        
        print('==Remove integrated file==')
        subprocess.run(f"rm -f {args.output}.integrated.loom", shell=True)
    else:
        adata = sc.read_loom(args.output+'.RNA.loom')
        
    adata.write(args.output+'.h5ad')
    print('==Remove Loom file==')
    subprocess.run(f"rm -f {args.output}.RNA.loom", shell=True)
    print('==Finish==')
    
