Named Jacobian

For a function that maps a named tuple to another named tuple, is it possible to get a named Jacobian?
Either as a named range or a DataFrame with 3 columns: Input_Var, Output_Var, Derivative

I could take the ForwardDiff.jacobian output and do something like

   DataFrame( hcat(  input_variable_names,  Jacobian ), output_variable_names )

but it would be nice to have the names attached automatically.

Maybe see if NamedArrays works with ForwardDiff?

What I do though is use a custom struct to store what I need for a model, then write functions to convert from struct to vector and back again. All the optimization happens with vectors and I convert back to the struct as quickly as possible.

Thanks Peter. That’s roughly what I’m doing with the line above. Converting the Jacobian Matrix to a more structured DataFrame.
Hope you had a good Christmas and New Years:)

f(x)    = 2x[1,1] + 3x[2,2]
d       = DataFrame( A = [0.0,0.0], B = [0.0,0.0] )
M       = Matrix( d )

FiniteDiff.finite_difference_gradient!( M, f, M )

Given that I can set values in a DataFrame like this d[:,:] = M

Could FiniteDiff be enhanced to allow the output to be taken from and written into the DataFrame? e.g.

FiniteDiff.finite_difference_gradient!( d[:,:], f, d )