def get_geocoords(infile, lat='lat', lon='lon'):

    df = EcoFOCI_netCDF(infile)
    nchandle = df._getnchandle_()

    data = {}
    
    for j, v in enumerate([lat, lon]):
        data[v] = nchandle.variables[v][:]

    df.close()
        
    return (data)
def from_netcdf_1dsplice(infile, height_ind, lat_ind, lon_ind):
    """ Uses ncreadfile_dic which returns a dictionary of all data from netcdf"""

    ###nc readin/out
    df = EcoFOCI_netCDF(infile)
    nchandle = df._getnchandle_()

    params = df.get_vars() #gets all of them

    print "Parameters available: " 
    #print params
    
    ncdata = ncreadfile_dic_slice(nchandle, params, height_ind=height_ind, lat_ind=lat_ind, lon_ind=lon_ind)
    df.close()
    
    return ncdata
parser.add_argument('sourcefile',
                    metavar='sourcefile',
                    type=str,
                    help='path to .nc files')
parser.add_argument('add_dsg_idvar',
                    metavar='add_dsg_idvar',
                    type=str,
                    help='name of dsg style id variable')

args = parser.parse_args()

"---"
df = EcoFOCI_netCDF(args.sourcefile)
global_atts = df.get_global_atts()
vars_dic = df.get_vars()
nchandle = df._getnchandle_()
data = df.ncreadfile_dic()

try:
    nchandle.createDimension('id_strlen', 5)
    nchandle.createVariable('profileid',
                            'S1',
                            dimensions=('record_number', 'id_strlen'))
    nchandle.variables['profileid'].cf_role = args.add_dsg_idvar
    nchandle.variables['profileid'].long_name = 'profile_id'

except:
    print "{0} - not added".format(args.add_dsg_idvar)

#fill with default values
profileid = args.sourcefile.split('/')[-1].split('.nc')[0].split('_')[1]
    

def repl_var(nchandle, var_name, val=1e35):
    nchandle.variables[var_name][:] = np.ones_like(nchandle.variables[var_name][:]) * float(val)
    return

"""------------------------------- MAIN--------------------------------------------"""

parser = argparse.ArgumentParser(description='Replace EPIC Variable with 1e35 for all depths')
parser.add_argument('sourcefile', metavar='sourcefile', type=str, 
    help='complete path to netcdf file')
parser.add_argument('user_var', metavar='user_var', type=str, 
    help='EPIC Key Code or variable name')
parser.add_argument('Value', metavar='Value', type=str, 
    help='replacement value')

args = parser.parse_args()

###nc readin
ncfile = args.sourcefile
df = EcoFOCI_netCDF(ncfile)
global_atts = df.get_global_atts()
vars_dic = df.get_vars()
data = df.ncreadfile_dic()

print ncfile.split('/')[-1]
repl_var(df._getnchandle_(), args.user_var, val=args.Value)

df.close()
        #converttime to datetime
        data_dati = EPIC2Datetime(ncdata['time'], ncdata['time2'])
        data_dati = np.array(data_dati)

        time_ind = (data_dati >= datetime.datetime.strptime(args.trim_bounds[0],'%Y-%m-%dT%H:%M:%S')) & \
                                (data_dati <= datetime.datetime.strptime(args.trim_bounds[1],'%Y-%m-%dT%H:%M:%S')) 

        #create new netcdf file
        ncinstance = NetCDF_Trimmed_2D(savefile=(args.sourcefile).replace('.nc','.trimmed_missing.nc'))
        ncinstance.file_create()
        ncinstance.sbeglobal_atts(raw_data_file=global_atts['DATA_CMNT'], Station_Name=global_atts['MOORING'], 
                                    Water_Depth=global_atts['WATER_DEPTH'], Inst_Type=global_atts['INST_TYPE'],
                                    Water_Mass=global_atts['WATER_MASS'], Experiment=global_atts['EXPERIMENT'],
                                    Project=global_atts['PROJECT'])
        ncinstance.dimension_init(time_len=len(ncdata['time'][time_ind]),depth_len=len(ncdata['depth']))
        ncinstance.variable_init(df._getnchandle_())

        ncinstance.add_coord_data(depth=ncdata['depth'], latitude=ncdata[lat], longitude=ncdata[lon],
                                         time1=ncdata['time'][time_ind], time2=ncdata['time2'][time_ind])
        ncinstance.add_data(data=ncdata, trim_index=time_ind)    
        ncinstance.add_history('Data Trimmed')
       
        ncinstance.close()

    elif args.isProfile:
        sys.exit("Profiles rarely can be trimmed by date unless prawler or glider - exiting")

    else:

        df = EcoFOCI_netCDF( args.sourcefile )
        global_atts = df.get_global_atts()