def loopuserdef(c1: Dict[str, Any]) -> xarray.DataArray:
wmol = np.atleast_2d(c1['<STR_LIT>'])<EOL>P = np.atleast_1d(c1['<STR_LIT:p>'])<EOL>T = np.atleast_1d(c1['<STR_LIT:t>'])<EOL>time = np.atleast_1d(c1['<STR_LIT:time>'])<EOL>assert wmol.shape[<NUM_LIT:0>] == len(P) == len(T) == len(time), '<STR_LIT>'<EOL>N = len(P)<EOL><INDENT><NUM_LIT:3>-D array indexed by metadata<EOL><DEDENT>TR = xarray.Dataset(coords={'<STR_LIT:time>': time, '<STR_LIT>': None, '<STR_LIT>': None})<EOL>for i in range(N):<EOL><INDENT>c = c1.copy()<EOL>c['<STR_LIT>'] = wmol[i, :]<EOL>c['<STR_LIT:p>'] = P[i]<EOL>c['<STR_LIT:t>'] = T[i]<EOL>c['<STR_LIT:time>'] = time[i]<EOL>TR = TR.merge(golowtran(c))<EOL><DEDENT>return TR<EOL>
golowtran() is for scalar parameters only
(besides vector of wavelength, which Lowtran internally loops over)

wmol, p, t must all be vector(s) of same length