Skip to contents

Prepare input data structure for peak fitting

Usage

make_fit_input(
  spectra,
  omega0_start,
  omega0_plus,
  omega0_minus = omega0_plus,
  omega0_trunc = NULL,
  r2_start = NULL,
  m0_start = NULL,
  m0_region = (omega0_plus + omega0_minus)/2,
  p0_start = 0,
  p1_start = 0,
  omega0_group = NULL,
  r2_group = NULL,
  m0_group = NULL,
  p0_group = 0,
  p1_group = 0,
  omega0_comb = NULL,
  omega0_comb_start = NULL,
  omega0_comb_group = NULL,
  coupling_comb = NULL,
  resonance_names = NULL,
  nucleus_names = NULL,
  field_offsets = numeric(),
  field_start = numeric(),
  field_group = 0,
  fheader = NULL
)

Arguments

spectra

list of spectra or data frame with ppm and intensity columns

omega0_start

starting omega0 values

omega0_plus

positive omega0 bounds

omega0_minus

negative omega0 bounds

omega0_trunc

optional truncation bounds for omega0

r2_start

starting r2 values

m0_start

starting m0 values

m0_region

region for m0 estimation

p0_start

starting zero-order phase values

p1_start

starting first-order phase values

omega0_group

grouping for omega0 values

r2_group

grouping for r2 values

m0_group

grouping for m0 values

p0_group

grouping for p0 values

p1_group

grouping for p1 values

omega0_comb

list of omega0 combination matrices

omega0_comb_start

starting omega0 combination values

omega0_comb_group

grouping for omega0 combinations

coupling_comb

list of coupling combination matrices

resonance_names

optional resonance names

nucleus_names

optional nucleus names

field_offsets

matrix of field offsets

field_start

starting field values

field_group

grouping for field values

fheader

optional fheader matrix when spectra is a data frame

Value

A `fit_input` `list` containing `spec_data`, parameter lists (`start_list`, `group_list`, `comb_list`), parameter bounds (`lower_list`, `upper_list`), naming metadata, and `num_points`.

Examples

spec_file <- system.file("extdata", "t1", "1.ft2", package = "fitnmr")
spec <- read_nmrpipe(spec_file, dim_order = "hx")
fit_input <- make_fit_input(
  list(spec),
  omega0_start = matrix(c(8.5400, 119.76), nrow = 2),
  omega0_plus = c(0.075, 0.75),
  r2_start = 4,
  m0_start = 1e9
)
str(fit_input)
#> List of 10
#>  $ spec_data      :List of 1
#>   ..$ :List of 10
#>   .. ..$ ref_freq       : num [1:2] 800 81
#>   .. ..$ omega_eval     :List of 2
#>   .. .. ..$ : num [1:20] 8.61 8.6 8.6 8.59 8.58 ...
#>   .. .. ..$ : num [1:13] 120 120 120 120 120 ...
#>   .. ..$ omega_contigous:List of 2
#>   .. .. ..$ HN : num [1:20] 8.61 8.6 8.6 8.59 8.58 ...
#>   .. .. ..$ N15: num [1:13] 120 120 120 120 120 ...
#>   .. ..$ spec_p1_frac   :List of 2
#>   .. .. ..$ : num [1:20] 0.245 0.245 0.246 0.246 0.247 ...
#>   .. .. ..$ : num [1:13] 0.453 0.457 0.461 0.465 0.469 ...
#>   .. ..$ spec_nd_idx    : int [1:260, 1:2] 1 2 3 4 5 6 7 8 9 10 ...
#>   .. ..$ spec_int       : num [1:260] 612 651 848 787 749 ...
#>   .. ..$ spec_offset    : int 0
#>   .. ..$ fit_func       :List of 2
#>   .. .. ..$ :List of 2
#>   .. .. .. ..$ formulas:List of 5
#>   .. .. .. .. ..$ func       :  expression((aq * ((end - off) * pi * cos(end * pi) - exp(aq * ((0+1i) *  omega - (0+1i) * omega0 + r2)) * (end - | __truncated__
#>   .. .. .. .. ..$ domega0    :  expression((aq^2 * (-(0+1i) * (end - off) * pi * ((end - off)^2 * pi^2 -  aq^2 * (-omega + omega0 + (0+1i) * r2)^| __truncated__
#>   .. .. .. .. ..$ dr2        :  expression((aq^2 * ((end - off) * pi * ((end - off)^2 * pi^2 - aq^2 * (-omega +  omega0 + (0+1i) * r2)^2 + 2 * aq| __truncated__
#>   .. .. .. .. ..$ value      :function (omega, omega0, r2, aq, end, off)  
#>   .. .. .. .. ..$ value_deriv:function (omega, omega0, r2, aq, end, off)  
#>   .. .. .. ..$ data    :List of 3
#>   .. .. .. .. ..$ aq : num 0.0639
#>   .. .. .. .. ..$ off: num 0.5
#>   .. .. .. .. ..$ end: num 1
#>   .. .. ..$ :List of 2
#>   .. .. .. ..$ formulas:List of 5
#>   .. .. .. .. ..$ func       :  expression((aq * ((end - off) * pi * cos(end * pi) - exp(aq * ((0+1i) *  omega - (0+1i) * omega0 + r2)) * (end - | __truncated__
#>   .. .. .. .. ..$ domega0    :  expression((aq^2 * (-(0+1i) * (end - off) * pi * ((end - off)^2 * pi^2 -  aq^2 * (-omega + omega0 + (0+1i) * r2)^| __truncated__
#>   .. .. .. .. ..$ dr2        :  expression((aq^2 * ((end - off) * pi * ((end - off)^2 * pi^2 - aq^2 * (-omega +  omega0 + (0+1i) * r2)^2 + 2 * aq| __truncated__
#>   .. .. .. .. ..$ value      :function (omega, omega0, r2, aq, end, off)  
#>   .. .. .. .. ..$ value_deriv:function (omega, omega0, r2, aq, end, off)  
#>   .. .. .. ..$ data    :List of 3
#>   .. .. .. .. ..$ aq : num 0.0329
#>   .. .. .. .. ..$ off: num 0.5
#>   .. .. .. .. ..$ end: num 1
#>   .. ..$ peak_omega_eval:List of 2
#>   .. .. ..$ : num [1:20] 8.61 8.6 8.6 8.59 8.58 ...
#>   .. .. ..$ : num [1:13] 120 120 120 120 120 ...
#>   .. .. ..- attr(*, "dim")= int [1:2] 2 1
#>   .. ..$ peak_1d_sign   :List of 2
#>   .. .. ..$ : int [1:20] 1 1 1 1 1 1 1 1 1 1 ...
#>   .. .. ..$ : int [1:13] 1 1 1 1 1 1 1 1 1 1 ...
#>   .. .. ..- attr(*, "dim")= int [1:2] 2 1
#>  $ start_list     :List of 7
#>   ..$ omega0     : num [1:2, 1, 1] 8.54 119.76
#>   ..$ r2         : num [1:2, 1, 1] 4 4
#>   ..$ m0         : num [1, 1] 1e+09
#>   ..$ p0         : num [1:2, 1, 1] 0 0
#>   ..$ p1         : num [1:2, 1, 1] 0 0
#>   ..$ omega0_comb: num(0) 
#>   ..$ field      : num[0 , 1] 
#>  $ group_list     :List of 7
#>   ..$ omega0     : int [1:2, 1, 1] 1 2
#>   ..$ r2         : int [1:2, 1, 1] 1 2
#>   ..$ m0         : int [1, 1] 1
#>   ..$ p0         : int [1:2, 1, 1] 0 0
#>   ..$ p1         : int [1:2, 1, 1] 0 0
#>   ..$ omega0_comb: int(0) 
#>   ..$ field      : int[0 , 1] 
#>  $ comb_list      :List of 2
#>   ..$ omega0  :List of 2
#>   .. ..$ : NULL
#>   .. ..$ : NULL
#>   .. ..- attr(*, "dim")= int [1:3] 2 1 1
#>   ..$ coupling:List of 2
#>   .. ..$ : NULL
#>   .. ..$ : NULL
#>   .. ..- attr(*, "dim")= int [1:3] 2 1 1
#>  $ resonance_names: NULL
#>  $ nucleus_names  : NULL
#>  $ field_offsets  : num[0 , 1] 
#>  $ lower_list     :List of 7
#>   ..$ omega0     : num [1:2, 1, 1] 8.46 119.01
#>   ..$ r2         : num [1:2, 1, 1] 0 0
#>   ..$ m0         : num [1, 1] -Inf
#>   ..$ p0         : num [1:2, 1, 1] -Inf -Inf
#>   ..$ p1         : num [1:2, 1, 1] -Inf -Inf
#>   ..$ omega0_comb: num(0) 
#>   ..$ field      : num[0 , 1] 
#>  $ upper_list     :List of 7
#>   ..$ omega0     : num [1:2, 1, 1] 8.61 120.51
#>   ..$ r2         : num [1:2, 1, 1] Inf Inf
#>   ..$ m0         : num [1, 1] Inf
#>   ..$ p0         : num [1:2, 1, 1] Inf Inf
#>   ..$ p1         : num [1:2, 1, 1] Inf Inf
#>   ..$ omega0_comb: num(0) 
#>   ..$ field      : num[0 , 1] 
#>  $ num_points     : int 260