Module RNA

Module RNA

Search:
Group by:

Types

Flt_Or_Dbl = cdouble
VrnaCallbackFreeAuxdata = proc (data: pointer) {.
cdecl
.}
VrnaCallbackRecursionStatus = proc (status: cuchar; data: pointer) {.
cdecl
.}
VrnaParamS = object
  id*: cint
  stack*: array[7 + 1, array[7 + 1, cint]]
  hairpin*: array[31, cint]
  bulge*: array[30 + 1, cint]
  internalLoop*: array[30 + 1, cint]
  mismatchExt*: array[7 + 1, array[5, array[5, cint]]]
  mismatchI*: array[7 + 1, array[5, array[5, cint]]]
  mismatch1nI*: array[7 + 1, array[5, array[5, cint]]]
  mismatch23I*: array[7 + 1, array[5, array[5, cint]]]
  mismatchH*: array[7 + 1, array[5, array[5, cint]]]
  mismatchM*: array[7 + 1, array[5, array[5, cint]]]
  dangle5*: array[7 + 1, array[5, cint]]
  dangle3*: array[7 + 1, array[5, cint]]
  int11*: array[7 + 1, array[7 + 1, array[5, array[5, cint]]]]
  int21*: array[7 + 1, array[7 + 1, array[5, array[5, array[5, cint]]]]]
  int22*: array[7 + 1, array[7 + 1, array[5, array[5, array[5, array[5, cint]]]]]]
  ninio*: array[5, cint]
  lxc*: cdouble
  mLbase*: cint
  mLintern*: array[7 + 1, cint]
  mLclosing*: cint
  terminalAU*: cint
  duplexInit*: cint
  tetraloopE*: array[200, cint]
  tetraloops*: array[1401, char]
  triloopE*: array[40, cint]
  triloops*: array[241, char]
  hexaloopE*: array[40, cint]
  hexaloops*: array[1801, char]
  tripleC*: cint
  multipleCA*: cint
  multipleCB*: cint
  gquad*: array[7 + 1, array[45 + 1, cint]]
  temperature*: cdouble
  modelDetails*: VrnaMdT
VrnaParamT = VrnaParamS
VrnaExpParamS = object
  id*: cint
  expstack*: array[7 + 1, array[7 + 1, cdouble]]
  exphairpin*: array[31, cdouble]
  expbulge*: array[30 + 1, cdouble]
  expinternal*: array[30 + 1, cdouble]
  expmismatchExt*: array[7 + 1, array[5, array[5, cdouble]]]
  expmismatchI*: array[7 + 1, array[5, array[5, cdouble]]]
  expmismatch23I*: array[7 + 1, array[5, array[5, cdouble]]]
  expmismatch1nI*: array[7 + 1, array[5, array[5, cdouble]]]
  expmismatchH*: array[7 + 1, array[5, array[5, cdouble]]]
  expmismatchM*: array[7 + 1, array[5, array[5, cdouble]]]
  expdangle5*: array[7 + 1, array[5, cdouble]]
  expdangle3*: array[7 + 1, array[5, cdouble]]
  expint11*: array[7 + 1, array[7 + 1, array[5, array[5, cdouble]]]]
  expint21*: array[7 + 1, array[7 + 1, array[5, array[5, array[5, cdouble]]]]]
  expint22*: array[7 + 1,
                  array[7 + 1, array[5, array[5, array[5, array[5, cdouble]]]]]]
  expninio*: array[5, array[30 + 1, cdouble]]
  lxc*: cdouble
  expMLbase*: cdouble
  expMLintern*: array[7 + 1, cdouble]
  expMLclosing*: cdouble
  expTermAU*: cdouble
  expDuplexInit*: cdouble
  exptetra*: array[40, cdouble]
  exptri*: array[40, cdouble]
  exphex*: array[40, cdouble]
  tetraloops*: array[1401, char]
  expTriloop*: array[40, cdouble]
  triloops*: array[241, char]
  hexaloops*: array[1801, char]
  expTripleC*: cdouble
  expMultipleCA*: cdouble
  expMultipleCB*: cdouble
  expgquad*: array[7 + 1, array[45 + 1, cdouble]]
  kT*: cdouble
  pfScale*: cdouble
  temperature*: cdouble
  alpha*: cdouble
  modelDetails*: VrnaMdT
VrnaExpParamT = VrnaExpParamS
VrnaHcT = VrnaHcS
VrnaHcUpT = VrnaHcUpS
VrnaCallbackHcEvaluate = proc (iIdx: cint; jIdx: cint; kIdx: cint; lIdx: cint; d: char;
                            data: pointer): char {.
cdecl
.}
VrnaHcS = object
  matrix*: cstring
  upExt*: ptr cint
  upHp*: ptr cint
  upInt*: ptr cint
  upMl*: ptr cint
  f*: ptr VrnaCallbackHcEvaluate
  data*: pointer
  freeData*: ptr VrnaCallbackFreeAuxdata
VrnaHcUpS = object
  position*: cint
  options*: char
VrnaBasepairS = object
  i*: cint
  j*: cint
VrnaPlistS = object
  i*: cint
  j*: cint
  p*: cfloat
  typ*: cint
VrnaCpairS = object
  i*: cint
  j*: cint
  mfe*: cint
  p*: cfloat
  hue*: cfloat
  sat*: cfloat
VrnaColorS = object
  hue*: cfloat
  sat*: cfloat
  bri*: cfloat
VrnaDataLinearS = object
  position*: cuint
  value*: cfloat
  color*: VrnaColorS
VrnaSectS = object
  i*: cint
  j*: cint
  ml*: cint
VrnaBpStackS = object
  i*: cuint
  j*: cuint
PuContrib = object
  h*: ptr ptr cdouble
  i*: ptr ptr cdouble
  m*: ptr ptr cdouble
  e*: ptr ptr cdouble
  length*: cint
  w*: cint
interact = object
  pi*: ptr cdouble
  gi*: ptr cdouble
  gikjl*: cdouble
  gikjlWo*: cdouble
  i*: cint
  k*: cint
  j*: cint
  l*: cint
  length*: cint
PuOut = object
  len*: cint
  uVals*: cint
  contribs*: cint
  header*: cstringArray
  uValues*: ptr ptr cdouble
Constrain = object
  indx*: ptr cint
  ptype*: cstring
DuplexT = object
  i*: cint
  j*: cint
  `end`*: cint
  structure*: cstring
  energy*: cdouble
  energyBacktrack*: cdouble
  openingBacktrackX*: cdouble
  openingBacktrackY*: cdouble
  offset*: cint
  dG1*: cdouble
  dG2*: cdouble
  ddG*: cdouble
  tb*: cint
  te*: cint
  qb*: cint
  qe*: cint
Folden = object
  k*: cint
  energy*: cint
  next*: pointer
SnoopT = object
  i*: cint
  j*: cint
  u*: cint
  structure*: cstring
  energy*: cfloat
  duplexEl*: cfloat
  duplexEr*: cfloat
  loopE*: cfloat
  loopD*: cfloat
  pscd*: cfloat
  psct*: cfloat
  pscg*: cfloat
  duplexOl*: cfloat
  duplexOr*: cfloat
  duplexOt*: cfloat
  fullStemEnergy*: cfloat
DupVar = object
  i*: cint
  j*: cint
  `end`*: cint
  pkHelix*: cstring
  structure*: cstring
  energy*: cdouble
  offset*: cint
  dG1*: cdouble
  dG2*: cdouble
  ddG*: cdouble
  tb*: cint
  te*: cint
  qb*: cint
  qe*: cint
  inactive*: cint
  processed*: cint
VrnaFcTypeE = enum
  VRNA_FC_TYPE_SINGLE, VRNA_FC_TYPE_COMPARATIVE
VrnaFcS = object
  typ*: VrnaFcTypeE
  length*: cuint
  cutpoint*: cint
  strand_number*: ptr cuint
  hc*: ptr VrnaHcT
  matrices*: ptr VrnaMxMfeT
  expMatrices*: ptr VrnaMxPfT
  params*: ptr VrnaParamT
  expParams*: ptr VrnaExpParamT
  iindx*: ptr cint
  jindx*: ptr cint
  statCb*: ptr VrnaCallbackRecursionStatus
  auxdata*: pointer
  freeAuxdata*: ptr VrnaCallbackFreeAuxdata
  domainsStruc*: pointer
  domainsUp*: pointer
  auxGrammar*: pointer
  sequence*: cstring
  sequenceEncoding*: ptr cshort
  sequenceEncoding2*: ptr cshort
  ptype*: cstring
  ptypePfCompat*: cstring
  sc*: pointer
  sequences*: cstringArray
  nSeq*: cuint
  consSeq*: cstring
  s_cons*: ptr cshort
  s*: ptr ptr cshort
  s5*: ptr ptr cshort
  s3*: ptr ptr cshort
  ss*: cstringArray
  a2s*: ptr ptr cushort
  pscore*: ptr cint
  pscorePfCompat*: ptr cshort
  scs*: ptr pointer
  oldAliEn*: cint
  maxD1*: cuint
  maxD2*: cuint
  referencePt1*: ptr cshort
  referencePt2*: ptr cshort
  referenceBPs1*: ptr cuint
  referenceBPs2*: ptr cuint
  bpdist*: ptr cuint
  mm1*: ptr cuint
  mm2*: ptr cuint
  windowSize*: cint
  ptypeLocal*: cstringArray
VrnaMxMfeT = MxMfeS
VrnaMxPfT = MxPfS
MxTypeE = enum
  VRNA_MX_DEFAULT, VRNA_MX_WINDOW, VRNA_MX_2DFOLD
MfeDefaultInner = object
  c*: ptr cint
  f5*: ptr cint
  f3*: ptr cint
  fc*: ptr cint
  fML*: ptr cint
  fM1*: ptr cint
  fM2*: ptr cint
  ggg*: ptr cint
  Fc*: cint
  FcH*: cint
  FcI*: cint
  FcM*: cint
MfeWindowInner = object
  cLocal*: ptr ptr cint
  f3Local*: ptr cint
  fML_local*: ptr ptr cint
  gggLocal*: ptr ptr cint
Mfe2DFoldInner = object
  e_F5*: ptr ptr ptr cint
  lMinF5*: ptr ptr cint
  lMaxF5*: ptr ptr cint
  kMinF5*: ptr cint
  kMaxF5*: ptr cint
  e_F3*: ptr ptr ptr cint
  lMinF3*: ptr ptr cint
  lMaxF3*: ptr ptr cint
  kMinF3*: ptr cint
  kMaxF3*: ptr cint
  e_C*: ptr ptr ptr cint
  lMinC*: ptr ptr cint
  lMaxC*: ptr ptr cint
  kMinC*: ptr cint
  kMaxC*: ptr cint
  e_M*: ptr ptr ptr cint
  lMinM*: ptr ptr cint
  lMaxM*: ptr ptr cint
  kMinM*: ptr cint
  kMaxM*: ptr cint
  e_M1*: ptr ptr ptr cint
  lMinM1*: ptr ptr cint
  lMaxM1*: ptr ptr cint
  kMinM1*: ptr cint
  kMaxM1*: ptr cint
  e_M2*: ptr ptr ptr cint
  lMinM2*: ptr ptr cint
  lMaxM2*: ptr ptr cint
  kMinM2*: ptr cint
  kMaxM2*: ptr cint
  e_Fc*: ptr ptr cint
  lMinFc*: ptr cint
  lMaxFc*: ptr cint
  kMinFc*: cint
  kMaxFc*: cint
  e_FcH*: ptr ptr cint
  lMinFcH*: ptr cint
  lMaxFcH*: ptr cint
  kMinFcH*: cint
  kMaxFcH*: cint
  e_FcI*: ptr ptr cint
  lMinFcI*: ptr cint
  lMaxFcI*: ptr cint
  kMinFcI*: cint
  kMaxFcI*: cint
  e_FcM*: ptr ptr cint
  lMinFcM*: ptr cint
  lMaxFcM*: ptr cint
  kMinFcM*: cint
  kMaxFcM*: cint
  e_F5Rem*: ptr cint
  e_F3Rem*: ptr cint
  e_C_rem*: ptr cint
  e_M_rem*: ptr cint
  e_M1Rem*: ptr cint
  e_M2Rem*: ptr cint
  e_FcRem*: cint
  e_FcH_rem*: cint
  e_FcI_rem*: cint
  e_FcM_rem*: cint
  n_F5*: ptr ptr ptr culong
  n_C*: ptr ptr ptr culong
  n_M*: ptr ptr ptr culong
  n_M1*: ptr ptr ptr culong
MfeUnion = object {.
union
.} default*: MfeDefaultInner window*: MfeWindowInner fold2d*: Mfe2DFoldInner
MxMfeS = object
  typ*: MxTypeE
  length*: cuint
  union*: MfeUnion
PfUnion = object {.
union
.} default*: PfDefaultInner fold2d*: Pf2DFoldInner
MxPfS = object
  typ*: MxTypeE
  length*: cuint
  scale*: ptr Flt_Or_Dbl
  expMLbase*: ptr Flt_Or_Dbl
  union*: PfUnion
PfDefaultInner = object
  q*: ptr Flt_Or_Dbl
  qb*: ptr Flt_Or_Dbl
  qm*: ptr Flt_Or_Dbl
  qm1*: ptr Flt_Or_Dbl
  probs*: ptr Flt_Or_Dbl
  q1k*: ptr Flt_Or_Dbl
  qln*: ptr Flt_Or_Dbl
  g*: ptr Flt_Or_Dbl
  qo*: Flt_Or_Dbl
  qm2*: ptr Flt_Or_Dbl
  qho*: Flt_Or_Dbl
  qio*: Flt_Or_Dbl
  qmo*: Flt_Or_Dbl
Pf2DFoldInner = object
  q*: ptr ptr ptr Flt_Or_Dbl
  lMinQ*: ptr ptr cint
  lMaxQ*: ptr ptr cint
  kMinQ*: ptr cint
  kMaxQ*: ptr cint
  q_B*: ptr ptr ptr Flt_Or_Dbl
  lMinQ_B*: ptr ptr cint
  lMaxQ_B*: ptr ptr cint
  kMinQ_B*: ptr cint
  kMaxQ_B*: ptr cint
  q_M*: ptr ptr ptr Flt_Or_Dbl
  lMinQ_M*: ptr ptr cint
  lMaxQ_M*: ptr ptr cint
  kMinQ_M*: ptr cint
  kMaxQ_M*: ptr cint
  q_M1*: ptr ptr ptr Flt_Or_Dbl
  lMinQ_M1*: ptr ptr cint
  lMaxQ_M1*: ptr ptr cint
  kMinQ_M1*: ptr cint
  kMaxQ_M1*: ptr cint
  q_M2*: ptr ptr ptr Flt_Or_Dbl
  lMinQ_M2*: ptr ptr cint
  lMaxQ_M2*: ptr ptr cint
  kMinQ_M2*: ptr cint
  kMaxQ_M2*: ptr cint
  q_c*: ptr ptr Flt_Or_Dbl
  lMinQ_c*: ptr cint
  lMaxQ_c*: ptr cint
  kMinQ_c*: cint
  kMaxQ_c*: cint
  q_cH*: ptr ptr Flt_Or_Dbl
  lMinQ_cH*: ptr cint
  lMaxQ_cH*: ptr cint
  kMinQ_cH*: cint
  kMaxQ_cH*: cint
  q_cI*: ptr ptr Flt_Or_Dbl
  lMinQ_cI*: ptr cint
  lMaxQ_cI*: ptr cint
  kMinQ_cI*: cint
  kMaxQ_cI*: cint
  q_cM*: ptr ptr Flt_Or_Dbl
  lMinQ_cM*: ptr cint
  lMaxQ_cM*: ptr cint
  kMinQ_cM*: cint
  kMaxQ_cM*: cint
  q_rem*: ptr Flt_Or_Dbl
  q_B_rem*: ptr Flt_Or_Dbl
  q_M_rem*: ptr Flt_Or_Dbl
  q_M1Rem*: ptr Flt_Or_Dbl
  q_M2Rem*: ptr Flt_Or_Dbl
  q_cRem*: Flt_Or_Dbl
  q_cH_rem*: Flt_Or_Dbl
  q_cI_rem*: Flt_Or_Dbl
  q_cM_rem*: Flt_Or_Dbl
VrnaFoldCompoundT = VrnaFcS
VrnaBasepairT = VrnaBasepairS
VrnaPlistT = VrnaPlistS
VrnaBpStackT = VrnaBpStackS
VrnaCpairT = VrnaCpairS
VrnaSectT = VrnaSectS
VrnaDataLinT = VrnaDataLinearS
VrnaColorT = VrnaColorS
VrnaUdT = VrnaUnstructuredDomainS
VrnaUdMotifT = VrnaUnstructuredDomainMotifS
VrnaCallbackUdEnergy = proc (vc: ptr VrnaFoldCompoundT; iIdx: cint; jIdx: cint;
                          loopType: cuint; data: pointer): cint {.
cdecl
.}
VrnaCallbackUdExpEnergy = proc (vc: ptr VrnaFoldCompoundT; iIdx: cint; jIdx: cint;
                             loopType: cuint; data: pointer): Flt_Or_Dbl {.
cdecl
.}
VrnaCallbackUdProduction = proc (vc: ptr VrnaFoldCompoundT; data: pointer) {.
cdecl
.}
VrnaCallbackUdExpProduction = proc (vc: ptr VrnaFoldCompoundT; data: pointer) {.
cdecl
.}
VrnaCallbackUdProbsAdd = proc (vc: ptr VrnaFoldCompoundT; iIdx: cint; jIdx: cint;
                            loopType: cuint; expEnergy: Flt_Or_Dbl; data: pointer) {.
cdecl
.}
VrnaCallbackUdProbsGet = proc (vc: ptr VrnaFoldCompoundT; iIdx: cint; jIdx: cint;
                            loopType: cuint; motif: cint; data: pointer): Flt_Or_Dbl {.
cdecl
.}
VrnaUnstructuredDomainS = object
  uniqMotifCount*: cint
  uniqMotifSize*: ptr cuint
  motifCount*: cint
  motif*: cstringArray
  motifSize*: ptr cuint
  motifEn*: ptr cdouble
  motifType*: ptr cuint
  prodCb*: ptr VrnaCallbackUdProduction
  expProdCb*: ptr VrnaCallbackUdExpProduction
  energyCb*: ptr VrnaCallbackUdEnergy
  expEnergyCb*: ptr VrnaCallbackUdExpEnergy
  data*: pointer
  freeData*: ptr VrnaCallbackFreeAuxdata
  probsAdd*: ptr VrnaCallbackUdProbsAdd
  probsGet*: ptr VrnaCallbackUdProbsGet
VrnaUnstructuredDomainMotifS = object
  start*: cint
  number*: cint
VrnaScT = VrnaScS
VrnaCallbackScEnergy = proc (iIdx: cint; jIdx: cint; kIdx: cint; lIdx: cint; d: char;
                          data: pointer): cint {.
cdecl
.}
VrnaCallbackScExpEnergy = proc (iIdx: cint; jIdx: cint; kIdx: cint; lIdx: cint; d: char;
                             data: pointer): Flt_Or_Dbl {.
cdecl
.}
VrnaCallbackScBacktrack = proc (iIdx: cint; jIdx: cint; kIdx: cint; lIdx: cint; d: char;
                             data: pointer): ptr VrnaBasepairT {.
cdecl
.}
VrnaScS = object
  energyUp*: ptr ptr cint
  energyBp*: ptr cint
  expEnergyUp*: ptr ptr Flt_Or_Dbl
  expEnergyBp*: ptr Flt_Or_Dbl
  energyStack*: ptr cint
  expEnergyStack*: ptr Flt_Or_Dbl
  f*: ptr VrnaCallbackScEnergy
  bt*: ptr VrnaCallbackScBacktrack
  expF*: ptr VrnaCallbackScExpEnergy
  data*: pointer
  freeData*: ptr VrnaCallbackFreeAuxdata
VrnaScMotifT = VrnaScMotifS
VrnaScMotifS = object
  i*: cint
  j*: cint
  k*: cint
  l*: cint
  number*: cint
Parset = enum
  UNKNOWN = -1, QUIT, S, S_H, HP, HP_H, B, B_H, IL, IL_H, MMH, MMH_H, MMI, MMI_H, MMI1N, MMI1N_H,
  MMI23, MMI23_H, MMM, MMM_H, MME, MME_H, D5, D5_H, D3, D3_H, INT11, INT11_H, INT21, INT21_H,
  INT22, INT22_H, ML, TL, TRI, HEX, NIN, MISC
ProgressCallback = proc (iteration: cint; score: cdouble; epsilon: ptr cdouble) {.
cdecl
.}
VrnaMdS = object
  temperature*: cdouble
  betaScale*: cdouble
  dangles*: cint
  specialHp*: cint
  noLP*: cint
  noGU*: cint
  noGUclosure*: cint
  logML*: cint
  circ*: cint
  gquad*: cint
  canonicalBPonly*: cint
  uniqML*: cint
  energySet*: cint
  backtrack*: cint
  backtrackType*: char
  computeBpp*: cint
  nonstandards*: array[64, char]
  maxBpSpan*: cint
  minLoopSize*: cint
  windowSize*: cint
  oldAliEn*: cint
  ribo*: cint
  cvFact*: cdouble
  ncFact*: cdouble
  sfact*: cdouble
  rtype*: array[8, cint]
  alias*: array[20 + 1, cshort]
  pair*: array[20 + 1, array[20 + 1, cint]]
VrnaMdT = VrnaMdS
VrnaSolTwoDt = object
  kappa*: cint
  lambda*: cint
  energy*: cfloat
  structure*: cstring
VrnaSolTwoD_pfT = object
  kappa*: cint
  lambda*: cint
  partitionFunction*: float
VrnaHxT = VrnaHxS
VrnaHxS = object
  start*: cuint
  `end`*: cuint
  length*: cuint
  up5*: cuint
  up3*: cuint
VrnaSuboptSolutionT = VrnaSuboptSolS
VrnaSuboptCallback = proc (stucture: cstring; energy: cfloat; data: pointer) {.
cdecl
.}
VrnaSuboptSolS = object
  energy*: cfloat
  structure*: cstring
VrnaDimerPfS = object
  f0ab*: cdouble
  fab*: cdouble
  fcAB*: cdouble
  fa*: cdouble
  fb*: cdouble
VrnaDimerPfT = VrnaDimerPfS
VrnaDimerConcS = object
  a0*: cdouble
  b0*: cdouble
  aBc*: cdouble
  aAc*: cdouble
  bBc*: cdouble
  ac*: cdouble
  bc*: cdouble
VrnaDimerConcT = VrnaDimerConcS
VrnaPinfoT = VrnaPinfoS
VrnaPinfoS = object
  i*: cuint
  j*: cuint
  p*: cfloat
  ent*: cfloat
  bp*: array[8, cshort]
  comp*: char
VrnaCmdT = VrnaCommandS
VrnaCommandE = enum
  VRNA_CMD_ERROR = -1, VRNA_CMD_LAST = 0, VRNA_CMD_HC, VRNA_CMD_SC, VRNA_CMD_MOTIF,
  VRNA_CMD_UD, VRNA_CMD_SD
VrnaCommandS = object
  `type`*: VrnaCommandE
  data*: pointer
VrnaPathT = VrnaPathS
VrnaPathS = object
  en*: cdouble
  s*: cstring
VrnaCallbackGrRuleAux = proc (vc: ptr VrnaFoldCompoundT; iIdx: cint; jIdx: cint;
                           data: pointer) {.
cdecl
.}
VrnaCallbackGrFreeAuxdata = proc (data: pointer) {.
cdecl
.}
VrnaGrAuxT = VrnaGrAuxS
VrnaGrAuxS = object
  cbAuxF*: ptr VrnaCallbackGrRuleAux
  cbAuxC*: ptr VrnaCallbackGrRuleAux
  cbAuxM*: ptr VrnaCallbackGrRuleAux
  cbAuxM1*: ptr VrnaCallbackGrRuleAux
  cbAux*: ptr VrnaCallbackGrRuleAux
  auxdata*: pointer
  freeAuxdata*: ptr VrnaCallbackGrFreeAuxdata
PostorderList = object
  `type`*: cint
  weight*: cint
  father*: cint
  sons*: cint
  leftmostleaf*: cint
Tree = object
  postorderList*: ptr PostorderList
  keyroots*: ptr cint
SwString = object
  `type`*: cint
  sign*: cint
  weight*: cfloat
StructEn = object
  energy*: cint
  structure*: ptr cshort
Move_Type = enum
  GRADIENT, FIRST, ADAPTIVE
Coordinate = object
  x*: cfloat
  y*: cfloat
VrnaDotplotAuxdataT = object
  comment*: cstring
  title*: cstring
  top*: ptr ptr VrnaDataLinT
  topTitle*: cstringArray
  bottom*: ptr ptr VrnaDataLinT
  bottomTitle*: cstringArray
  left*: ptr ptr VrnaDataLinT
  leftTitle*: cstringArray
  right*: ptr ptr VrnaDataLinT
  rightTitle*: cstringArray
VrnaSdT = VrnaStructuredDomainsS
VrnaStructuredDomainsS = object
VrnaUnitEnergyE = enum
  VRNA_UNIT_J, VRNA_UNIT_KJ, VRNA_UNIT_CAL_IT, VRNA_UNIT_DACAL_IT,
  VRNA_UNIT_KCAL_IT, VRNA_UNIT_CAL, VRNA_UNIT_DACAL, VRNA_UNIT_KCAL,
  VRNA_UNIT_G_TNT, VRNA_UNIT_KG_TNT, VRNA_UNIT_T_TNT, VRNA_UNIT_EV, VRNA_UNIT_WH,
  VRNA_UNIT_KWH
VrnaUnitTemperatureE = enum
  VRNA_UNIT_K, VRNA_UNIT_DEG_C, VRNA_UNIT_DEG_F, VRNA_UNIT_DEG_R, VRNA_UNIT_DEG_N,
  VRNA_UNIT_DEG_DE, VRNA_UNIT_DEG_RE, VRNA_UNIT_DEG_RO

Vars

editBacktrack: cint
alignedLine: array[4, cstring]
costMatrix: cint
lxc37: cdouble
stack37: array[7 + 1, array[7 + 1, cint]]
stackdH: array[7 + 1, array[7 + 1, cint]]
entropies: array[7 + 1, array[7 + 1, cint]]
hairpin37: array[31, cint]
hairpindH: array[31, cint]
bulge37: array[31, cint]
bulgedH: array[31, cint]
internalLoop37: array[31, cint]
internalLoopdH: array[31, cint]
internal2Energy: cint
oldMismatch37: array[7 + 1, array[5, array[5, cint]]]
mismatchI37: array[7 + 1, array[5, array[5, cint]]]
mismatchIdH: array[7 + 1, array[5, array[5, cint]]]
mismatch1nI37: array[7 + 1, array[5, array[5, cint]]]
mismatch23I37: array[7 + 1, array[5, array[5, cint]]]
mismatch1nIdH: array[7 + 1, array[5, array[5, cint]]]
mismatch23IdH: array[7 + 1, array[5, array[5, cint]]]
mismatchH37: array[7 + 1, array[5, array[5, cint]]]
mismatchM37: array[7 + 1, array[5, array[5, cint]]]
mismatchHdH: array[7 + 1, array[5, array[5, cint]]]
mismatchMdH: array[7 + 1, array[5, array[5, cint]]]
mismatchExt37: array[7 + 1, array[5, array[5, cint]]]
mismatchExtdH: array[7 + 1, array[5, array[5, cint]]]
dangle537: array[7 + 1, array[5, cint]]
dangle337: array[7 + 1, array[5, cint]]
dangle3DH: array[7 + 1, array[5, cint]]
dangle5DH: array[7 + 1, array[5, cint]]
int1137: array[7 + 1, array[7 + 1, array[5, array[5, cint]]]]
int11DH: array[7 + 1, array[7 + 1, array[5, array[5, cint]]]]
int2137: array[7 + 1, array[7 + 1, array[5, array[5, array[5, cint]]]]]
int21DH: array[7 + 1, array[7 + 1, array[5, array[5, array[5, cint]]]]]
int2237: array[7 + 1, array[7 + 1, array[5, array[5, array[5, array[5, cint]]]]]]
int22DH: array[7 + 1, array[7 + 1, array[5, array[5, array[5, array[5, cint]]]]]]
mlBase37: cint
mlBasedH: cint
mlClosing37: cint
mlClosingdH: cint
mlIntern37: cint
mlInterndH: cint
tripleC37: cint
tripleCdH: cint
multipleCA37: cint
multipleCAdH: cint
multipleCB37: cint
multipleCBdH: cint
MAX_NINIO: cint
ninio37: cint
niniodH: cint
terminalAU37: cint
terminalAUdH: cint
duplexInit37: cint
duplexInitdH: cint
tetraloops: ptr char
tetraloop37: ptr cint
tetraloopdH: ptr cint
triloops: ptr char
triloop37: ptr cint
triloopdH: ptr cint
hexaloops: ptr char
hexaloop37: ptr cint
hexaloopdH: ptr cint
gQuadAlpha37: cint
gQuadAlphadH: cint
gQuadBeta37: cint
gQuadBetadH: cint
tmeasure: cdouble
cutPoint: cint
eosDebug: cint
symbolset: cstring
finalCost: cfloat
giveUp: cint
invVerbose: cint
mirnatog: cint
f_monomer: array[2, cdouble]
plexHits: ptr DupVar
plexHitsArrayLength: cint
numberOfHits: cint
verbose: cint
rnaPlotType: cint
loopSize: array[Struc, cint]
helixSize: array[Struc, cint]
loopDegree: array[Struc, cint]
loops: cint
unpaired: cint
pairs: cint
cvFact: cdouble
ncFact: cdouble
snoopSuboptSorted: cint
printEnergy: cdouble
suboptSorted: cint
densityOfStates: array[1000 + 1, cint]
xsubi: array[3, cushort]

Consts

rnaLib = "libRNA.so"
VRNA_STATUS_MFE_PRE = 1
VRNA_STATUS_MFE_POST = 2
VRNA_STATUS_PF_PRE = 3
VRNA_STATUS_PF_POST = 4
VRNA_PLIST_TYPE_BASEPAIR = 0
VRNA_PLIST_TYPE_GQUAD = 1
VRNA_PLIST_TYPE_H_MOTIF = 2
VRNA_PLIST_TYPE_I_MOTIF = 3
VRNA_PLIST_TYPE_UD_MOTIF = 4
VRNA_GQUAD_MAX_STACK_SIZE = 7
VRNA_GQUAD_MIN_STACK_SIZE = 2
VRNA_GQUAD_MAX_LINKER_LENGTH = 15
VRNA_GQUAD_MIN_LINKER_LENGTH = 1
VRNA_GQUAD_MIN_BOX_SIZE = 11
VRNA_GQUAD_MAX_BOX_SIZE = 73
VRNA_OPTION_DEFAULT = 0
VRNA_OPTION_MFE = 1
VRNA_OPTION_PF = 2
VRNA_OPTION_HYBRID = 4
VRNA_OPTION_EVAL_ONLY = 8
VRNA_OPTION_WINDOW = 16
VRNA_CONSTRAINT_NO_HEADER = 0
VRNA_CONSTRAINT_DB = 16384
VRNA_CONSTRAINT_DB_ENFORCE_BP = 32768
VRNA_CONSTRAINT_DB_PIPE = 65536
VRNA_CONSTRAINT_DB_DOT = 131072
VRNA_CONSTRAINT_DB_X = 262144
VRNA_CONSTRAINT_DB_ANG_BRACK = 524288
VRNA_CONSTRAINT_DB_RND_BRACK = 1048576
VRNA_CONSTRAINT_DB_INTRAMOL = 2097152
VRNA_CONSTRAINT_DB_INTERMOL = 4194304
VRNA_CONSTRAINT_DB_GQUAD = 8388608
VRNA_CONSTRAINT_DB_DEFAULT = 16728064
VRNA_CONSTRAINT_CONTEXT_EXT_LOOP = 0x00000001
VRNA_CONSTRAINT_CONTEXT_HP_LOOP = 0x00000002
VRNA_CONSTRAINT_CONTEXT_INT_LOOP = 0x00000004
VRNA_CONSTRAINT_CONTEXT_INT_LOOP_ENC = 0x00000008
VRNA_CONSTRAINT_CONTEXT_MB_LOOP = 0x00000010
VRNA_CONSTRAINT_CONTEXT_MB_LOOP_ENC = 0x00000020
VRNA_CONSTRAINT_CONTEXT_ENFORCE = 0x00000040
VRNA_CONSTRAINT_CONTEXT_NO_REMOVE = 0x00000080
VRNA_CONSTRAINT_CONTEXT_ALL_LOOPS = 63
VRNA_CONVERT_OUTPUT_ALL = 1
VRNA_CONVERT_OUTPUT_HP = 2
VRNA_CONVERT_OUTPUT_STACK = 4
VRNA_CONVERT_OUTPUT_MM_HP = 8
VRNA_CONVERT_OUTPUT_MM_INT = 16
VRNA_CONVERT_OUTPUT_MM_INT_1N = 32
VRNA_CONVERT_OUTPUT_MM_INT_23 = 64
VRNA_CONVERT_OUTPUT_MM_MULTI = 128
VRNA_CONVERT_OUTPUT_MM_EXT = 256
VRNA_CONVERT_OUTPUT_DANGLE5 = 512
VRNA_CONVERT_OUTPUT_DANGLE3 = 1024
VRNA_CONVERT_OUTPUT_INT_11 = 2048
VRNA_CONVERT_OUTPUT_INT_21 = 4096
VRNA_CONVERT_OUTPUT_INT_22 = 8192
VRNA_CONVERT_OUTPUT_BULGE = 16384
VRNA_CONVERT_OUTPUT_INT = 32768
VRNA_CONVERT_OUTPUT_ML = 65536
VRNA_CONVERT_OUTPUT_MISC = 131072
VRNA_CONVERT_OUTPUT_SPECIAL_HP = 262144
VRNA_CONVERT_OUTPUT_VANILLA = 524288
VRNA_CONVERT_OUTPUT_NINIO = 1048576
VRNA_CONVERT_OUTPUT_DUMP = 2097152
VRNA_OPTION_MULTILINE = 32
VRNA_CONSTRAINT_MULTILINE = 32
VRNA_FILE_FORMAT_MSA_CLUSTAL = 1
VRNA_FILE_FORMAT_MSA_STOCKHOLM = 2
VRNA_FILE_FORMAT_MSA_FASTA = 4
VRNA_FILE_FORMAT_MSA_MAF = 8
VRNA_FILE_FORMAT_MSA_DEFAULT = 15
VRNA_FILE_FORMAT_MSA_NOCHECK = 4096
VRNA_FILE_FORMAT_MSA_UNKNOWN = 8192
VRNA_MODEL_DEFAULT_TEMPERATURE = 37.0
VRNA_MODEL_DEFAULT_PF_SCALE = -1
VRNA_MODEL_DEFAULT_BETA_SCALE = 1.0
VRNA_MODEL_DEFAULT_DANGLES = 2
VRNA_MODEL_DEFAULT_SPECIAL_HP = 1
VRNA_MODEL_DEFAULT_NO_LP = 0
VRNA_MODEL_DEFAULT_NO_GU = 0
VRNA_MODEL_DEFAULT_NO_GU_CLOSURE = 0
VRNA_MODEL_DEFAULT_CIRC = 0
VRNA_MODEL_DEFAULT_GQUAD = 0
VRNA_MODEL_DEFAULT_CANONICAL_BP = 0
VRNA_MODEL_DEFAULT_UNIQ_ML = 0
VRNA_MODEL_DEFAULT_ENERGY_SET = 0
VRNA_MODEL_DEFAULT_BACKTRACK = 1
VRNA_MODEL_DEFAULT_BACKTRACK_TYPE = 'F'
VRNA_MODEL_DEFAULT_COMPUTE_BPP = 1
VRNA_MODEL_DEFAULT_MAX_BP_SPAN = -1
VRNA_MODEL_DEFAULT_WINDOW_SIZE = -1
VRNA_MODEL_DEFAULT_LOG_ML = 0
VRNA_MODEL_DEFAULT_ALI_OLD_EN = 0
VRNA_MODEL_DEFAULT_ALI_RIBO = 0
VRNA_MODEL_DEFAULT_ALI_CV_FACT = 1.0
VRNA_MODEL_DEFAULT_ALI_NC_FACT = 1.0
RNA_UP_MODE_1 = 1
RNA_UP_MODE_2 = 2
RNA_UP_MODE_3 = 4
VRNA_OBJECTIVE_FUNCTION_QUADRATIC = 0
VRNA_OBJECTIVE_FUNCTION_ABSOLUTE = 1
VRNA_MINIMIZER_DEFAULT = 0
VRNA_MINIMIZER_CONJUGATE_FR = 1
VRNA_MINIMIZER_CONJUGATE_PR = 2
VRNA_MINIMIZER_VECTOR_BFGS = 3
VRNA_MINIMIZER_VECTOR_BFGS2 = 4
VRNA_MINIMIZER_STEEPEST_DESCENT = 5
VRNA_PLOT_TYPE_SIMPLE = 0
VRNA_PLOT_TYPE_NAVIEW = 1
VRNA_PLOT_TYPE_CIRCULAR = 2
VRNA_PLOT_PROBABILITIES_BP = 1
VRNA_PLOT_PROBABILITIES_ACC = 2
VRNA_PLOT_PROBABILITIES_UD = 4
VRNA_PLOT_PROBABILITIES_UD_LIN = 8
VRNA_PLOT_PROBABILITIES_SD = 16
VRNA_PLOT_PROBABILITIES_SC_MOTIF = 32
VRNA_PLOT_PROBABILITIES_SC_UP = 64
VRNA_PLOT_PROBABILITIES_SC_BP = 128
VRNA_PLOT_PROBABILITIES_DEFAULT = 57
STRUC = 2000
MISMATCH = 3
FILENAME_MAX_LENGTH = 80
FILENAME_ID_LENGTH = 42
MaxDos = 1000
VRNA_UNSTRUCTURED_DOMAIN_EXT_LOOP = 1
VRNA_UNSTRUCTURED_DOMAIN_HP_LOOP = 2
VRNA_UNSTRUCTURED_DOMAIN_INT_LOOP = 4
VRNA_UNSTRUCTURED_DOMAIN_MB_LOOP = 8
VRNA_UNSTRUCTURED_DOMAIN_MOTIF = 16
VRNA_UNSTRUCTURED_DOMAIN_ALL_LOOPS = 15
VRNA_INPUT_ERROR = 1
VRNA_INPUT_QUIT = 2
VRNA_INPUT_MISC = 4
VRNA_INPUT_FASTA_HEADER = 8
VRNA_INPUT_SEQUENCE = 16
VRNA_INPUT_CONSTRAINT = 32
VRNA_INPUT_NO_TRUNCATION = 256
VRNA_INPUT_NO_REST = 512
VRNA_INPUT_NO_SPAN = 1024
VRNA_INPUT_NOSKIP_BLANK_LINES = 2048
VRNA_INPUT_BLANK_LINE = 4096
VRNA_INPUT_NOSKIP_COMMENTS = 128
VRNA_INPUT_COMMENT = 8192

Procs

proc foldCompound(sequence: cstring; mdP: ptr VrnaMdT; options: cuint): ptr VrnaFoldCompoundT {.
cdecl, importc: "vrna_fold_compound",
.}
proc foldCompoundComparative(sequences: cstringArray; mdP: ptr VrnaMdT; options: cuint): ptr VrnaFoldCompoundT {.
cdecl, importc: "vrna_fold_compound_comparative",
.}
proc foldCompoundTwoD(sequence: cstring; s1: cstring; s2: cstring; mdP: ptr VrnaMdT;
                     options: cuint): ptr VrnaFoldCompoundT {.
cdecl, importc: "vrna_fold_compound_TwoD",
.}
proc foldCompoundPrepare(vc: ptr VrnaFoldCompoundT; options: cuint): cint {.
cdecl, importc: "vrna_fold_compound_prepare",
.}
proc foldCompoundFree(vc: ptr VrnaFoldCompoundT) {.
cdecl, importc: "vrna_fold_compound_free",
.}
proc foldCompoundAddAuxdata(vc: ptr VrnaFoldCompoundT; data: pointer;
                           f: ptr VrnaCallbackFreeAuxdata) {.
cdecl, importc: "vrna_fold_compound_add_auxdata",
.}
proc foldCompoundAddCallback(vc: ptr VrnaFoldCompoundT;
                            f: ptr VrnaCallbackRecursionStatus) {.
cdecl, importc: "vrna_fold_compound_add_callback",
.}
proc vrnaMfeTwoD(vc: ptr VrnaFoldCompoundT; distance1: cint; distance2: cint): ptr VrnaSolTwoDt {.
cdecl, importc: "vrna_mfe_TwoD",
.}
proc vrnaBacktrack5TwoD(vc: ptr VrnaFoldCompoundT; k: cint; l: cint; j: cuint): cstring {.
cdecl, importc: "vrna_backtrack5_TwoD",
.}
proc vrnaPfTwoD(vc: ptr VrnaFoldCompoundT; maxDistance1: cint; maxDistance2: cint): ptr VrnaSolTwoD_pfT {.
cdecl, importc: "vrna_pf_TwoD",
.}
proc vrnaPbacktrackTwoD(vc: ptr VrnaFoldCompoundT; d1: cint; d2: cint): cstring {.
cdecl, importc: "vrna_pbacktrack_TwoD",
.}
proc vrnaPbacktrack5TwoD(vc: ptr VrnaFoldCompoundT; d1: cint; d2: cint; length: cuint): cstring {.
cdecl, importc: "vrna_pbacktrack5_TwoD",
.}
proc aliLduplexfold(s1: ptr cstring; s2: ptr cstring; threshold: cint;
                   extensionCost: cint; alignmentLength: cint; delta: cint;
                   fast: cint; ilA: cint; ilB: cint; bA: cint; bB: cint): ptr ptr DuplexT {.
cdecl, importc: "aliLduplexfold",
.}
proc aliLduplexfoldXS(s1: ptr cstring; s2: ptr cstring; accessS1: ptr ptr cint;
                     accessS2: ptr ptr cint; threshold: cint; alignmentLength: cint;
                     delta: cint; fast: cint; ilA: cint; ilB: cint; bA: cint; bB: cint): ptr ptr DuplexT {.
cdecl, importc: "aliLduplexfold_XS",
.}
proc readClustal(clust: ptr File; alignedSeqs: ptr cstring; names: ptr cstring): cint {.
cdecl, importc: "read_clustal",
.}
proc consensus(`as`: ptr cstring): cstring {.
cdecl, importc: "consensus",
.}
proc consensMis(`as`: ptr cstring): cstring {.
cdecl, importc: "consens_mis",
.}
proc getUngappedSequence(seq: cstring): cstring {.
cdecl, importc: "get_ungapped_sequence",
.}
proc vrnaAlnMpi(alignment: cstringArray): cint {.
cdecl, importc: "vrna_aln_mpi",
.}
proc vrnaAlnPinfo(vc: ptr VrnaFoldCompoundT; structure: cstring; threshold: cdouble): ptr VrnaPinfoT {.
cdecl, importc: "vrna_aln_pinfo",
.}
proc vrnaAlnPscore(alignment: cstringArray; md: ptr VrnaMdT): ptr cint {.
cdecl, importc: "vrna_aln_pscore",
.}
proc encodeAliSequence(sequence: cstring; s: ptr cshort; s5: ptr cshort; s3: ptr cshort;
                      ss: cstring; `as`: ptr cushort; circ: cint) {.
cdecl, importc: "encode_ali_sequence",
.}
proc allocSequenceArrays(sequences: cstringArray; s: ptr ptr ptr cshort;
                        s5: ptr ptr ptr cshort; s3: ptr ptr ptr cshort;
                        a2s: ptr ptr ptr cushort; ss: ptr cstringArray; circ: cint) {.
cdecl, importc: "alloc_sequence_arrays",
.}
proc freeSequenceArrays(nSeq: cuint; s: ptr ptr ptr cshort; s5: ptr ptr ptr cshort;
                       s3: ptr ptr ptr cshort; a2s: ptr ptr ptr cushort;
                       ss: ptr cstringArray) {.
cdecl, importc: "free_sequence_arrays",
.}
proc vrnaSequenceLengthMax(options: cuint): cuint {.
cdecl, importc: "vrna_sequence_length_max",
.}
proc vrnaNucleotideIUPAC_identity(a: char; b: char): cint {.
cdecl, importc: "vrna_nucleotide_IUPAC_identity",
.}
proc vrnaPtypes(s: ptr cshort; md: ptr VrnaMdT): cstring {.
cdecl, importc: "vrna_ptypes",
.}
proc vrnaSeqEncode(sequence: cstring; md: ptr VrnaMdT): ptr cshort {.
cdecl, importc: "vrna_seq_encode",
.}
proc vrnaSeqEncodeSimple(sequence: cstring; md: ptr VrnaMdT): ptr cshort {.
cdecl, importc: "vrna_seq_encode_simple",
.}
proc vrnaNucleotideEncode(c: char; md: ptr VrnaMdT): cint {.
cdecl, importc: "vrna_nucleotide_encode",
.}
proc vrnaNucleotideDecode(enc: cint; md: ptr VrnaMdT): char {.
cdecl, importc: "vrna_nucleotide_decode",
.}
proc vrnaAlnEncode(sequence: cstring; s_p: ptr ptr cshort; s5P: ptr ptr cshort;
                  s3P: ptr ptr cshort; ssP: cstringArray; asP: ptr ptr cushort;
                  md: ptr VrnaMdT) {.
cdecl, importc: "vrna_aln_encode",
.}
proc vrnaPbacktrack5(vc: ptr VrnaFoldCompoundT; length: cint): cstring {.
cdecl, importc: "vrna_pbacktrack5",
.}
proc vrnaPbacktrack(vc: ptr VrnaFoldCompoundT): cstring {.
cdecl, importc: "vrna_pbacktrack",
.}
proc vrnaCentroid(vc: ptr VrnaFoldCompoundT; dist: ptr cdouble): cstring {.
cdecl, importc: "vrna_centroid",
.}
proc vrnaCentroidFromPlist(length: cint; dist: ptr cdouble; pl: ptr VrnaPlistT): cstring {.
cdecl, importc: "vrna_centroid_from_plist",
.}
proc vrnaCentroidFromProbs(length: cint; dist: ptr cdouble; probs: ptr Flt_Or_Dbl): cstring {.
cdecl, importc: "vrna_centroid_from_probs",
.}
proc vrnaCofold(sequence: cstring; structure: cstring): cfloat {.
cdecl, importc: "vrna_cofold",
.}
proc vrnaMessageConstraintOptions(option: cuint) {.
cdecl, importc: "vrna_message_constraint_options",
.}
proc vrnaMessageConstraintOptionsAll() {.
cdecl, importc: "vrna_message_constraint_options_all",
.}
proc vrnaHcInit(vc: ptr VrnaFoldCompoundT) {.
cdecl, importc: "vrna_hc_init",
.}
proc vrnaHcAddUp(vc: ptr VrnaFoldCompoundT; i: cint; option: char) {.
cdecl, importc: "vrna_hc_add_up",
.}
proc vrnaHcAddUpBatch(vc: ptr VrnaFoldCompoundT; constraints: ptr VrnaHcUpT): cint {.
cdecl, importc: "vrna_hc_add_up_batch",
.}
proc vrnaHcAddBp(vc: ptr VrnaFoldCompoundT; i: cint; j: cint; option: char) {.
cdecl, importc: "vrna_hc_add_bp",
.}
proc vrnaHcAddBpNonspecific(vc: ptr VrnaFoldCompoundT; i: cint; d: cint; option: char) {.
cdecl, importc: "vrna_hc_add_bp_nonspecific",
.}
proc vrnaHcFree(hc: ptr VrnaHcT) {.
cdecl, importc: "vrna_hc_free",
.}
proc vrnaHcAddFromDb(vc: ptr VrnaFoldCompoundT; constraint: cstring; options: cuint): cint {.
cdecl, importc: "vrna_hc_add_from_db",
.}
proc vrnaScAddHiMotif(vc: ptr VrnaFoldCompoundT; seq: cstring; structure: cstring;
                     energy: Flt_Or_Dbl; options: cuint): cint {.
cdecl, importc: "vrna_sc_add_hi_motif",
.}
proc vrnaScLigandDetectMotifs(vc: ptr VrnaFoldCompoundT; structure: cstring): ptr VrnaScMotifT {.
cdecl, importc: "vrna_sc_ligand_detect_motifs",
.}
proc vrnaScGetHiMotif(vc: ptr VrnaFoldCompoundT; i: ptr cint; j: ptr cint; k: ptr cint;
                     l: ptr cint): cint {.
cdecl, importc: "vrna_sc_get_hi_motif",
.}
proc vrnaConstraintsAddSHAPE(vc: ptr VrnaFoldCompoundT; shapeFile: cstring;
                            shapeMethod: cstring; shapeConversion: cstring;
                            verbose: cint; constraintType: cuint) {.
cdecl, importc: "vrna_constraints_add_SHAPE",
.}
proc vrnaConstraintsAddSHAPE_ali(vc: ptr VrnaFoldCompoundT; shapeMethod: cstring;
                                shapeFiles: cstringArray;
                                shapeFileAssociation: ptr cint; verbose: cint;
                                constraintType: cuint) {.
cdecl, importc: "vrna_constraints_add_SHAPE_ali",
.}
proc vrnaScAddSHAPE_deigan(vc: ptr VrnaFoldCompoundT; reactivities: ptr cdouble;
                          m: cdouble; b: cdouble; options: cuint): cint {.
cdecl, importc: "vrna_sc_add_SHAPE_deigan",
.}
proc vrnaScAddSHAPE_deiganAli(vc: ptr VrnaFoldCompoundT; shapeFiles: cstringArray;
                             shapeFileAssociation: ptr cint; m: cdouble; b: cdouble;
                             options: cuint): cint {.
cdecl, importc: "vrna_sc_add_SHAPE_deigan_ali",
.}
proc vrnaScAddSHAPE_zarringhalam(vc: ptr VrnaFoldCompoundT;
                                reactivities: ptr cdouble; b: cdouble;
                                defaultValue: cdouble; shapeConversion: cstring;
                                options: cuint): cint {.
cdecl, importc: "vrna_sc_add_SHAPE_zarringhalam",
.}
proc vrnaScSHAPE_parseMethod(methodString: cstring; `method`: cstring;
                            param1: ptr cfloat; param2: ptr cfloat): cint {.
cdecl, importc: "vrna_sc_SHAPE_parse_method",
.}
proc vrnaScSHAPE_toPr(shapeConversion: cstring; values: ptr cdouble; length: cint;
                     defaultValue: cdouble): cint {.
cdecl, importc: "vrna_sc_SHAPE_to_pr",
.}
proc vrnaScInit(vc: ptr VrnaFoldCompoundT) {.
cdecl, importc: "vrna_sc_init",
.}
proc vrnaScSetBp(vc: ptr VrnaFoldCompoundT; constraints: ptr ptr Flt_Or_Dbl;
                options: cuint) {.
cdecl, importc: "vrna_sc_set_bp",
.}
proc vrnaScAddBp(vc: ptr VrnaFoldCompoundT; i: cint; j: cint; energy: Flt_Or_Dbl;
                options: cuint) {.
cdecl, importc: "vrna_sc_add_bp",
.}
proc vrnaScSetUp(vc: ptr VrnaFoldCompoundT; constraints: ptr Flt_Or_Dbl; options: cuint) {.
cdecl, importc: "vrna_sc_set_up",
.}
proc vrnaScAddUp(vc: ptr VrnaFoldCompoundT; i: cint; energy: Flt_Or_Dbl; options: cuint) {.
cdecl, importc: "vrna_sc_add_up",
.}
proc vrnaScRemove(vc: ptr VrnaFoldCompoundT) {.
cdecl, importc: "vrna_sc_remove",
.}
proc vrnaScFree(sc: ptr VrnaScT) {.
cdecl, importc: "vrna_sc_free",
.}
proc vrnaScAddData(vc: ptr VrnaFoldCompoundT; data: pointer;
                  freeData: ptr VrnaCallbackFreeAuxdata) {.
cdecl, importc: "vrna_sc_add_data",
.}
proc vrnaScAddF(vc: ptr VrnaFoldCompoundT; f: ptr VrnaCallbackScEnergy) {.
cdecl, importc: "vrna_sc_add_f",
.}
proc vrnaScAddBt(vc: ptr VrnaFoldCompoundT; f: ptr VrnaCallbackScBacktrack) {.
cdecl, importc: "vrna_sc_add_bt",
.}
proc vrnaScAddExpF(vc: ptr VrnaFoldCompoundT; expF: ptr VrnaCallbackScExpEnergy) {.
cdecl, importc: "vrna_sc_add_exp_f",
.}
proc convertParameterFile(iname: cstring; oname: cstring; options: cuint) {.
cdecl, importc: "convert_parameter_file",
.}
proc mxAdd(vc: ptr VrnaFoldCompoundT; `type`: MxTypeE; options: cuint): cint {.
cdecl, importc: "vrna_mx_add",
.}
proc mxMfeAdd(vc: ptr VrnaFoldCompoundT; mxType: MxTypeE; options: cuint): cint {.
cdecl, importc: "vrna_mx_mfe_add",
.}
proc mxPfAdd(vc: ptr VrnaFoldCompoundT; mxType: MxTypeE; options: cuint): cint {.
cdecl, importc: "vrna_mx_pf_add",
.}
proc mxPrepare(vc: ptr VrnaFoldCompoundT; options: cuint): cint {.
cdecl, importc: "vrna_mx_prepare",
.}
proc mxMfeFree(vc: ptr VrnaFoldCompoundT) {.
cdecl, importc: "vrna_mx_mfe_free",
.}
proc mxPfFree(vc: ptr VrnaFoldCompoundT) {.
cdecl, importc: "vrna_mx_pf_free",
.}
proc duplexfold(s1: cstring; s2: cstring): DuplexT {.
cdecl, importc: "duplexfold",
.}
proc duplexSubopt(s1: cstring; s2: cstring; delta: cint; w: cint): ptr DuplexT {.
cdecl, importc: "duplex_subopt",
.}
proc aliduplexfold(s1: ptr cstring; s2: ptr cstring): DuplexT {.
cdecl, importc: "aliduplexfold",
.}
proc aliduplexSubopt(s1: ptr cstring; s2: ptr cstring; delta: cint; w: cint): ptr DuplexT {.
cdecl, importc: "aliduplex_subopt",
.}
proc vrnaPairingProbs(vc: ptr VrnaFoldCompoundT; structure: cstring) {.
cdecl, importc: "vrna_pairing_probs",
.}
proc vrnaMeanBpDistancePr(length: cint; pr: ptr Flt_Or_Dbl): cdouble {.
cdecl, importc: "vrna_mean_bp_distance_pr",
.}
proc vrnaMeanBpDistance(vc: ptr VrnaFoldCompoundT): cdouble {.
cdecl, importc: "vrna_mean_bp_distance",
.}
proc vrnaStackProb(vc: ptr VrnaFoldCompoundT; cutoff: cdouble): ptr VrnaPlistT {.
cdecl, importc: "vrna_stack_prob",
.}
proc vrnaEvalStructure(vc: ptr VrnaFoldCompoundT; structure: cstring): cfloat {.
cdecl, importc: "vrna_eval_structure",
.}
proc vrnaEvalCovarStructure(vc: ptr VrnaFoldCompoundT; structure: cstring): cfloat {.
cdecl, importc: "vrna_eval_covar_structure",
.}
proc vrnaEvalStructureSimple(string: cstring; structure: cstring): cfloat {.
cdecl, importc: "vrna_eval_structure_simple",
.}
proc vrnaEvalStructureVerbose(vc: ptr VrnaFoldCompoundT; structure: cstring;
                             file: ptr File): cfloat {.
cdecl, importc: "vrna_eval_structure_verbose",
.}
proc vrnaEvalStructureV(vc: ptr VrnaFoldCompoundT; structure: cstring;
                       verbosityLevel: cint; file: ptr File): cfloat {.
cdecl, importc: "vrna_eval_structure_v",
.}
proc vrnaEvalStructureSimpleVerbose(string: cstring; structure: cstring;
                                   file: ptr File): cfloat {.
cdecl, importc: "vrna_eval_structure_simple_verbose",
.}
proc vrnaEvalStructureSimpleV(string: cstring; structure: cstring;
                             verbosityLevel: cint; file: ptr File): cfloat {.
cdecl, importc: "vrna_eval_structure_simple_v",
.}
proc vrnaEvalStructurePt(vc: ptr VrnaFoldCompoundT; pt: ptr cshort): cint {.
cdecl, importc: "vrna_eval_structure_pt",
.}
proc vrnaEvalStructurePtSimple(string: cstring; pt: ptr cshort): cint {.
cdecl, importc: "vrna_eval_structure_pt_simple",
.}
proc vrnaEvalStructurePtVerbose(vc: ptr VrnaFoldCompoundT; pt: ptr cshort;
                               file: ptr File): cint {.
cdecl, importc: "vrna_eval_structure_pt_verbose",
.}
proc vrnaEvalStructurePtV(vc: ptr VrnaFoldCompoundT; pt: ptr cshort;
                         verbosityLevel: cint; file: ptr File): cint {.
cdecl, importc: "vrna_eval_structure_pt_v",
.}
proc vrnaEvalStructurePtSimpleVerbose(string: cstring; pt: ptr cshort; file: ptr File): cint {.
cdecl, importc: "vrna_eval_structure_pt_simple_verbose",
.}
proc vrnaEvalStructurePtSimpleV(string: cstring; pt: ptr cshort; verbosityLevel: cint;
                               file: ptr File): cint {.
cdecl, importc: "vrna_eval_structure_pt_simple_v",
.}
proc vrnaEvalLoopPt(vc: ptr VrnaFoldCompoundT; i: cint; pt: ptr cshort): cint {.
cdecl, importc: "vrna_eval_loop_pt",
.}
proc vrnaEvalMove(vc: ptr VrnaFoldCompoundT; structure: cstring; m1: cint; m2: cint): cfloat {.
cdecl, importc: "vrna_eval_move",
.}
proc vrnaEvalMovePt(vc: ptr VrnaFoldCompoundT; pt: ptr cshort; m1: cint; m2: cint): cint {.
cdecl, importc: "vrna_eval_move_pt",
.}
proc vrnaEvalMovePtSimple(string: cstring; pt: ptr cshort; m1: cint; m2: cint): cint {.
cdecl, importc: "vrna_eval_move_pt_simple",
.}
proc e_ExtLoop(`type`: cint; si1: cint; sj1: cint; p: ptr VrnaParamT): cint {.
cdecl, importc: "E_ExtLoop",
.}
proc expE_ExtLoop(`type`: cint; si1: cint; sj1: cint; p: ptr VrnaExpParamT): Flt_Or_Dbl {.
cdecl, importc: "exp_E_ExtLoop",
.}
proc e_Stem(`type`: cint; si1: cint; sj1: cint; extLoop: cint; p: ptr VrnaParamT): cint {.
cdecl, importc: "E_Stem",
.}
proc expE_Stem(`type`: cint; si1: cint; sj1: cint; extLoop: cint; p: ptr VrnaExpParamT): Flt_Or_Dbl {.
cdecl, importc: "exp_E_Stem",
.}
proc e_extLoop(i: cint; j: cint; vc: ptr VrnaFoldCompoundT): cint {.
cdecl, importc: "E_ext_loop",
.}
proc e_extLoop5(vc: ptr VrnaFoldCompoundT) {.
cdecl, importc: "E_ext_loop_5",
.}
proc vrnaBT_extLoopF5(vc: ptr VrnaFoldCompoundT; k: ptr cint; i: ptr cint; j: ptr cint;
                     bpStack: ptr VrnaBpStackT; stackCount: ptr cint): cint {.
cdecl, importc: "vrna_BT_ext_loop_f5",
.}
proc vrnaFileHelixlist(seq: cstring; db: cstring; energy: cfloat; file: ptr File) {.
cdecl, importc: "vrna_file_helixlist",
.}
proc vrnaFileConnect(seq: cstring; db: cstring; energy: cfloat; identifier: cstring;
                    file: ptr File) {.
cdecl, importc: "vrna_file_connect",
.}
proc vrnaFileBpseq(seq: cstring; db: cstring; file: ptr File) {.
cdecl, importc: "vrna_file_bpseq",
.}
proc vrnaFileFastaReadRecord(header: cstringArray; sequence: cstringArray;
                            rest: ptr cstringArray; file: ptr File; options: cuint): cuint {.
cdecl, importc: "vrna_file_fasta_read_record",
.}
proc vrnaExtractRecordRestStructure(lines: cstringArray; length: cuint; option: cuint): cstring {.
cdecl, importc: "vrna_extract_record_rest_structure",
.}
proc vrnaFileSHAPE_read(fileName: cstring; length: cint; defaultValue: cdouble;
                       sequence: cstring; values: ptr cdouble): cint {.
cdecl, importc: "vrna_file_SHAPE_read",
.}
proc vrnaFileMsaRead(filename: cstring; names: ptr cstringArray;
                    aln: ptr cstringArray; id: ptr cstring; structure: ptr cstring;
                    options: cuint): cint {.
cdecl, importc: "vrna_file_msa_read",
.}
proc vrnaFileMsaReadRecord(fp: ptr File; names: ptr cstringArray;
                          aln: ptr cstringArray; id: ptr cstring;
                          structure: ptr cstring; options: cuint): cint {.
cdecl, importc: "vrna_file_msa_read_record",
.}
proc vrnaFileMsaDetectFormat(filename: cstring; options: cuint): cuint {.
cdecl, importc: "vrna_file_msa_detect_format",
.}
proc vrnaFileCopy(`from`: ptr File; to: ptr File) {.
cdecl, importc: "vrna_file_copy",
.}
proc vrnaReadLine(fp: ptr File): cstring {.
cdecl, importc: "vrna_read_line",
.}
proc vrnaMkdirP(path: cstring): cint {.
cdecl, importc: "vrna_mkdir_p",
.}
proc vrnaBasename(path: cstring): cstring {.
cdecl, importc: "vrna_basename",
.}
proc vrnaDirname(path: cstring): cstring {.
cdecl, importc: "vrna_dirname",
.}
proc vrnaPathFindpathSaddle(vc: ptr VrnaFoldCompoundT; struc1: cstring;
                           struc2: cstring; max: cint): cint {.
cdecl, importc: "vrna_path_findpath_saddle",
.}
proc vrnaPathFindpath(vc: ptr VrnaFoldCompoundT; s1: cstring; s2: cstring; maxkeep: cint): ptr VrnaPathT {.
cdecl, importc: "vrna_path_findpath",
.}
proc vrnaFold(sequence: cstring; structure: cstring): cfloat {.
cdecl, importc: "vrna_fold",
.}
proc vrnaCircfold(sequence: cstring; structure: cstring): cfloat {.
cdecl, importc: "vrna_circfold",
.}
proc e_gquad(L: cint; lIdx: array[3, cint]; p: ptr VrnaParamT): cint {.
cdecl, importc: "E_gquad",
.}
proc expE_gquad(L: cint; lIdx: array[3, cint]; pf: ptr VrnaExpParamT): Flt_Or_Dbl {.
cdecl, importc: "exp_E_gquad",
.}
proc e_gquadAli(i: cint; L: cint; lIdx: array[3, cint]; s: ptr ptr cshort; nSeq: cint;
               p: ptr VrnaParamT): cint {.
cdecl, importc: "E_gquad_ali",
.}
proc e_gquadAliEn(i: cint; L: cint; lIdx: array[3, cint]; s: ptr ptr cshort; nSeq: cint;
                 en: array[2, cint]; p: ptr VrnaParamT) {.
cdecl, importc: "E_gquad_ali_en",
.}
proc getGquadMatrix(s: ptr cshort; p: ptr VrnaParamT): ptr cint {.
cdecl, importc: "get_gquad_matrix",
.}
proc getGquadAliMatrix(s_cons: ptr cshort; s: ptr ptr cshort; nSeq: cint;
                      p: ptr VrnaParamT): ptr cint {.
cdecl, importc: "get_gquad_ali_matrix",
.}
proc getGquadPfMatrix(s: ptr cshort; scale: ptr Flt_Or_Dbl; pf: ptr VrnaExpParamT): ptr Flt_Or_Dbl {.
cdecl, importc: "get_gquad_pf_matrix",
.}
proc getGquadL_matrix(s: ptr cshort; start: cint; maxdist: cint; n: cint; g: ptr ptr cint;
                     p: ptr VrnaParamT): ptr ptr cint {.
cdecl, importc: "get_gquad_L_matrix",
.}
proc vrnaGquadMxLocalUpdate(vc: ptr VrnaFoldCompoundT; start: cint) {.
cdecl, importc: "vrna_gquad_mx_local_update",
.}
proc getGquadPatternMfe(s: ptr cshort; i: cint; j: cint; p: ptr VrnaParamT; L: ptr cint;
                       lIdx: array[3, cint]) {.
cdecl, importc: "get_gquad_pattern_mfe",
.}
proc getGquadPatternExhaustive(s: ptr cshort; i: cint; j: cint; p: ptr VrnaParamT;
                              L: ptr cint; lIdx: ptr cint; threshold: cint) {.
cdecl, importc: "get_gquad_pattern_exhaustive",
.}
proc getGquadPatternPf(s: ptr cshort; i: cint; j: cint; pf: ptr VrnaExpParamT; L: ptr cint;
                      lIdx: array[3, cint]) {.
cdecl, importc: "get_gquad_pattern_pf",
.}
proc getPlistGquadFromPr(s: ptr cshort; gi: cint; gj: cint; g: ptr Flt_Or_Dbl;
                        probs: ptr Flt_Or_Dbl; scale: ptr Flt_Or_Dbl;
                        pf: ptr VrnaExpParamT): ptr VrnaPlistT {.
cdecl, importc: "get_plist_gquad_from_pr",
.}
proc getPlistGquadFromPrMax(s: ptr cshort; gi: cint; gj: cint; g: ptr Flt_Or_Dbl;
                           probs: ptr Flt_Or_Dbl; scale: ptr Flt_Or_Dbl; L: ptr cint;
                           lIdx: array[3, cint]; pf: ptr VrnaExpParamT): ptr VrnaPlistT {.
cdecl, importc: "get_plist_gquad_from_pr_max",
.}
proc getPlistGquadFromDb(structure: cstring; pr: cfloat): ptr VrnaPlistT {.
cdecl, importc: "get_plist_gquad_from_db",
.}
proc getGquadCount(s: ptr cshort; i: cint; j: cint): cint {.
cdecl, importc: "get_gquad_count",
.}
proc getGquadLayerCount(s: ptr cshort; i: cint; j: cint): cint {.
cdecl, importc: "get_gquad_layer_count",
.}
proc parseGquad(struc: cstring; L: ptr cint; lIdx: array[3, cint]): cint {.
cdecl, importc: "parse_gquad",
.}
proc vrnaE_hpLoop(vc: ptr VrnaFoldCompoundT; i: cint; j: cint): cint {.
cdecl, importc: "vrna_E_hp_loop",
.}
proc vrnaE_extHpLoop(vc: ptr VrnaFoldCompoundT; i: cint; j: cint): cint {.
cdecl, importc: "vrna_E_ext_hp_loop",
.}
proc vrnaEvalExtHpLoop(vc: ptr VrnaFoldCompoundT; i: cint; j: cint): cint {.
cdecl, importc: "vrna_eval_ext_hp_loop",
.}
proc vrnaEvalHpLoop(vc: ptr VrnaFoldCompoundT; i: cint; j: cint): cint {.
cdecl, importc: "vrna_eval_hp_loop",
.}
proc vrnaBT_hpLoop(vc: ptr VrnaFoldCompoundT; i: cint; j: cint; en: cint;
                  bpStack: ptr VrnaBpStackT; stackCount: ptr cint): cint {.
cdecl, importc: "vrna_BT_hp_loop",
.}
proc vrnaE_intLoop(vc: ptr VrnaFoldCompoundT; i: cint; j: cint): cint {.
cdecl, importc: "vrna_E_int_loop",
.}
proc vrnaEvalIntLoop(vc: ptr VrnaFoldCompoundT; i: cint; j: cint; k: cint; l: cint): cint {.
cdecl, importc: "vrna_eval_int_loop",
.}
proc vrnaExpE_intLoop(vc: ptr VrnaFoldCompoundT; i: cint; j: cint): Flt_Or_Dbl {.
cdecl, importc: "vrna_exp_E_int_loop",
.}
proc vrnaExpE_interiorLoop(vc: ptr VrnaFoldCompoundT; i: cint; j: cint; k: cint; l: cint): Flt_Or_Dbl {.
cdecl, importc: "vrna_exp_E_interior_loop",
.}
proc vrnaE_extIntLoop(vc: ptr VrnaFoldCompoundT; i: cint; j: cint; ip: ptr cint;
                     iq: ptr cint): cint {.
cdecl, importc: "vrna_E_ext_int_loop",
.}
proc vrnaE_stack(vc: ptr VrnaFoldCompoundT; i: cint; j: cint): cint {.
cdecl, importc: "vrna_E_stack",
.}
proc vrnaBT_stack(vc: ptr VrnaFoldCompoundT; i: ptr cint; j: ptr cint; en: ptr cint;
                 bpStack: ptr VrnaBpStackT; stackCount: ptr cint): cint {.
cdecl, importc: "vrna_BT_stack",
.}
proc vrnaBT_intLoop(vc: ptr VrnaFoldCompoundT; i: ptr cint; j: ptr cint; en: cint;
                   bpStack: ptr VrnaBpStackT; stackCount: ptr cint): cint {.
cdecl, importc: "vrna_BT_int_loop",
.}
proc inverseFold(start: cstring; target: cstring): cfloat {.
cdecl, importc: "inverse_fold",
.}
proc inversePfFold(start: cstring; target: cstring): cfloat {.
cdecl, importc: "inverse_pf_fold",
.}
proc vrnaLfold(string: cstring; windowSize: cint; file: ptr File): cfloat {.
cdecl, importc: "vrna_Lfold",
.}
proc aliLfold(strings: cstringArray; structure: cstring; maxdist: cint): cfloat {.
cdecl, importc: "aliLfold",
.}
proc updatePfParamsLP(length: cint) {.
cdecl, importc: "update_pf_paramsLP",
.}
proc updatePfParamsLP_par(length: cint; parameters: ptr VrnaExpParamT) {.
cdecl, importc: "update_pf_paramsLP_par",
.}
proc pflFold(sequence: cstring; winSize: cint; pairSize: cint; cutoffb: cfloat;
            pU: ptr ptr cdouble; dpp2: ptr ptr VrnaPlistT; pUfp: ptr File; spup: ptr File): ptr VrnaPlistT {.
cdecl, importc: "pfl_fold",
.}
proc pflFoldPar(sequence: cstring; winSize: cint; pairSize: cint; cutoffb: cfloat;
               pU: ptr ptr cdouble; dpp2: ptr ptr VrnaPlistT; pUfp: ptr File;
               spup: ptr File; parameters: ptr VrnaExpParamT): ptr VrnaPlistT {.
cdecl, importc: "pfl_fold_par",
.}
proc putoutpU_probPar(pU: ptr ptr cdouble; length: cint; ulength: cint; fp: ptr File;
                     energies: cint; parameters: ptr VrnaExpParamT) {.
cdecl, importc: "putoutpU_prob_par",
.}
proc putoutpU_prob(pU: ptr ptr cdouble; length: cint; ulength: cint; fp: ptr File;
                  energies: cint) {.
cdecl, importc: "putoutpU_prob",
.}
proc putoutpU_probBinPar(pU: ptr ptr cdouble; length: cint; ulength: cint; fp: ptr File;
                        energies: cint; parameters: ptr VrnaExpParamT) {.
cdecl, importc: "putoutpU_prob_bin_par",
.}
proc putoutpU_probBin(pU: ptr ptr cdouble; length: cint; ulength: cint; fp: ptr File;
                     energies: cint) {.
cdecl, importc: "putoutpU_prob_bin",
.}
proc mea(p: ptr VrnaPlistT; structure: cstring; gamma: cdouble): cfloat {.
cdecl, importc: "MEA",
.}
proc meaSeq(p: ptr VrnaPlistT; sequence: cstring; structure: cstring; gamma: cdouble;
           pf: ptr VrnaExpParamT): cfloat {.
cdecl, importc: "MEA_seq",
.}
proc mfe(vc: ptr VrnaFoldCompoundT; structure: cstring): cfloat {.
cdecl, importc: "vrna_mfe",
.}
proc mfeDimer(vc: ptr VrnaFoldCompoundT; structure: cstring): cfloat {.
cdecl, importc: "vrna_mfe_dimer",
.}
proc mfeWindow(vc: ptr VrnaFoldCompoundT; file: File): cfloat {.
cdecl, importc: "vrna_mfe_window",
.}
proc vrnaMdSetDefault(md: ptr VrnaMdT) {.
cdecl, importc: "vrna_md_set_default",
.}
proc vrnaMdUpdate(md: ptr VrnaMdT) {.
cdecl, importc: "vrna_md_update",
.}
proc vrnaMdCopy(mdTo: ptr VrnaMdT; mdFrom: ptr VrnaMdT): ptr VrnaMdT {.
cdecl, importc: "vrna_md_copy",
.}
proc vrnaMdOptionString(md: ptr VrnaMdT): cstring {.
cdecl, importc: "vrna_md_option_string",
.}
proc vrnaMdSetNonstandards(md: ptr VrnaMdT; nsBases: cstring) {.
cdecl, importc: "vrna_md_set_nonstandards",
.}
proc vrnaMdDefaultsReset(mdP: ptr VrnaMdT) {.
cdecl, importc: "vrna_md_defaults_reset",
.}
proc vrnaMdDefaultsTemperature(t: cdouble) {.
cdecl, importc: "vrna_md_defaults_temperature",
.}
proc vrnaMdDefaultsTemperatureGet(): cdouble {.
cdecl, importc: "vrna_md_defaults_temperature_get",
.}
proc vrnaMdDefaultsBetaScale(b: cdouble) {.
cdecl, importc: "vrna_md_defaults_betaScale",
.}
proc vrnaMdDefaultsBetaScaleGet(): cdouble {.
cdecl, importc: "vrna_md_defaults_betaScale_get",
.}
proc vrnaMdDefaultsDangles(d: cint) {.
cdecl, importc: "vrna_md_defaults_dangles",
.}
proc vrnaMdDefaultsDanglesGet(): cint {.
cdecl, importc: "vrna_md_defaults_dangles_get",
.}
proc vrnaMdDefaultsSpecialHp(flag: cint) {.
cdecl, importc: "vrna_md_defaults_special_hp",
.}
proc vrnaMdDefaultsSpecialHpGet(): cint {.
cdecl, importc: "vrna_md_defaults_special_hp_get",
.}
proc vrnaMdDefaultsNoLP(flag: cint) {.
cdecl, importc: "vrna_md_defaults_noLP",
.}
proc vrnaMdDefaultsNoLP_get(): cint {.
cdecl, importc: "vrna_md_defaults_noLP_get",
.}
proc vrnaMdDefaultsNoGU(flag: cint) {.
cdecl, importc: "vrna_md_defaults_noGU",
.}
proc vrnaMdDefaultsNoGU_get(): cint {.
cdecl, importc: "vrna_md_defaults_noGU_get",
.}
proc vrnaMdDefaultsNoGUclosure(flag: cint) {.
cdecl, importc: "vrna_md_defaults_noGUclosure",
.}
proc vrnaMdDefaultsNoGUclosureGet(): cint {.
cdecl, importc: "vrna_md_defaults_noGUclosure_get",
.}
proc vrnaMdDefaultsLogML(flag: cint) {.
cdecl, importc: "vrna_md_defaults_logML",
.}
proc vrnaMdDefaultsLogML_get(): cint {.
cdecl, importc: "vrna_md_defaults_logML_get",
.}
proc vrnaMdDefaultsCirc(flag: cint) {.
cdecl, importc: "vrna_md_defaults_circ",
.}
proc vrnaMdDefaultsCircGet(): cint {.
cdecl, importc: "vrna_md_defaults_circ_get",
.}
proc vrnaMdDefaultsGquad(flag: cint) {.
cdecl, importc: "vrna_md_defaults_gquad",
.}
proc vrnaMdDefaultsGquadGet(): cint {.
cdecl, importc: "vrna_md_defaults_gquad_get",
.}
proc vrnaMdDefaultsUniqML(flag: cint) {.
cdecl, importc: "vrna_md_defaults_uniq_ML",
.}
proc vrnaMdDefaultsUniqML_get(): cint {.
cdecl, importc: "vrna_md_defaults_uniq_ML_get",
.}
proc vrnaMdDefaultsEnergySet(e: cint) {.
cdecl, importc: "vrna_md_defaults_energy_set",
.}
proc vrnaMdDefaultsEnergySetGet(): cint {.
cdecl, importc: "vrna_md_defaults_energy_set_get",
.}
proc vrnaMdDefaultsBacktrack(flag: cint) {.
cdecl, importc: "vrna_md_defaults_backtrack",
.}
proc vrnaMdDefaultsBacktrackGet(): cint {.
cdecl, importc: "vrna_md_defaults_backtrack_get",
.}
proc vrnaMdDefaultsBacktrackType(t: char) {.
cdecl, importc: "vrna_md_defaults_backtrack_type",
.}
proc vrnaMdDefaultsBacktrackTypeGet(): char {.
cdecl, importc: "vrna_md_defaults_backtrack_type_get",
.}
proc vrnaMdDefaultsComputeBpp(flag: cint) {.
cdecl, importc: "vrna_md_defaults_compute_bpp",
.}
proc vrnaMdDefaultsComputeBppGet(): cint {.
cdecl, importc: "vrna_md_defaults_compute_bpp_get",
.}
proc vrnaMdDefaultsMaxBpSpan(span: cint) {.
cdecl, importc: "vrna_md_defaults_max_bp_span",
.}
proc vrnaMdDefaultsMaxBpSpanGet(): cint {.
cdecl, importc: "vrna_md_defaults_max_bp_span_get",
.}
proc vrnaMdDefaultsMinLoopSize(size: cint) {.
cdecl, importc: "vrna_md_defaults_min_loop_size",
.}
proc vrnaMdDefaultsMinLoopSizeGet(): cint {.
cdecl, importc: "vrna_md_defaults_min_loop_size_get",
.}
proc vrnaMdDefaultsWindowSize(size: cint) {.
cdecl, importc: "vrna_md_defaults_window_size",
.}
proc vrnaMdDefaultsWindowSizeGet(): cint {.
cdecl, importc: "vrna_md_defaults_window_size_get",
.}
proc vrnaMdDefaultsOldAliEn(flag: cint) {.
cdecl, importc: "vrna_md_defaults_oldAliEn",
.}
proc vrnaMdDefaultsOldAliEnGet(): cint {.
cdecl, importc: "vrna_md_defaults_oldAliEn_get",
.}
proc vrnaMdDefaultsRibo(flag: cint) {.
cdecl, importc: "vrna_md_defaults_ribo",
.}
proc vrnaMdDefaultsRiboGet(): cint {.
cdecl, importc: "vrna_md_defaults_ribo_get",
.}
proc vrnaMdDefaultsCvFact(factor: cdouble) {.
cdecl, importc: "vrna_md_defaults_cv_fact",
.}
proc vrnaMdDefaultsCvFactGet(): cdouble {.
cdecl, importc: "vrna_md_defaults_cv_fact_get",
.}
proc vrnaMdDefaultsNcFact(factor: cdouble) {.
cdecl, importc: "vrna_md_defaults_nc_fact",
.}
proc vrnaMdDefaultsNcFactGet(): cdouble {.
cdecl, importc: "vrna_md_defaults_nc_fact_get",
.}
proc vrnaMdDefaultsSfact(factor: cdouble) {.
cdecl, importc: "vrna_md_defaults_sfact",
.}
proc vrnaMdDefaultsSfactGet(): cdouble {.
cdecl, importc: "vrna_md_defaults_sfact_get",
.}
proc printStren(`out`: ptr File; str: ptr StructEn) {.
cdecl, importc: "print_stren",
.}
proc printStr(`out`: ptr File; str: ptr cshort) {.
cdecl, importc: "print_str",
.}
proc copyArr(dest: ptr cshort; src: ptr cshort) {.
cdecl, importc: "copy_arr",
.}
proc allocopy(src: ptr cshort): ptr cshort {.
cdecl, importc: "allocopy",
.}
proc moveGradient(seq: cstring; ptable: ptr cshort; s: ptr cshort; s1: ptr cshort;
                 verbosityLevel: cint; shifts: cint; noLP: cint): cint {.
cdecl, importc: "move_gradient",
.}
proc moveFirst(seq: cstring; ptable: ptr cshort; s: ptr cshort; s1: ptr cshort;
              verbosityLevel: cint; shifts: cint; noLP: cint): cint {.
cdecl, importc: "move_first",
.}
proc moveAdaptive(seq: cstring; ptable: ptr cshort; s: ptr cshort; s1: ptr cshort;
                 verbosityLevel: cint): cint {.
cdecl, importc: "move_adaptive",
.}
proc moveStandard(seq: cstring; struc: cstring; `type`: Move_Type;
                 verbosityLevel: cint; shifts: cint; noLP: cint): cint {.
cdecl, importc: "move_standard",
.}
proc browseNeighsPt(seq: cstring; ptable: ptr cshort; s: ptr cshort; s1: ptr cshort;
                   verbosityLevel: cint; shifts: cint; noLP: cint; funct: proc (
    a2: ptr StructEn; a3: ptr StructEn): cint {.
cdecl
.}): cint {.
cdecl, importc: "browse_neighs_pt",
.}
proc browseNeighs(seq: cstring; struc: cstring; verbosityLevel: cint; shifts: cint;
                 noLP: cint; funct: proc (a2: ptr StructEn; a3: ptr StructEn): cint {.
cdecl
.}): cint {.
cdecl, importc: "browse_neighs",
.}
proc e_mbLoopStack(i: cint; j: cint; vc: ptr VrnaFoldCompoundT): cint {.
cdecl, importc: "E_mb_loop_stack",
.}
proc vrnaBT_mbLoop(vc: ptr VrnaFoldCompoundT; i: ptr cint; j: ptr cint; k: ptr cint;
                  en: cint; component1: ptr cint; component2: ptr cint): cint {.
cdecl, importc: "vrna_BT_mb_loop",
.}
proc vrnaE_mbLoopFast(vc: ptr VrnaFoldCompoundT; i: cint; j: cint; dmli1: ptr cint;
                     dmli2: ptr cint): cint {.
cdecl, importc: "vrna_E_mb_loop_fast",
.}
proc e_mlRightmostStem(i: cint; j: cint; vc: ptr VrnaFoldCompoundT): cint {.
cdecl, importc: "E_ml_rightmost_stem",
.}
proc vrnaE_mlStemsFast(vc: ptr VrnaFoldCompoundT; i: cint; j: cint; fmi: ptr cint;
                      dmli: ptr cint): cint {.
cdecl, importc: "vrna_E_ml_stems_fast",
.}
proc vrnaExpE_mbLoopFast(vc: ptr VrnaFoldCompoundT; i: cint; j: cint;
                        qqm1: ptr Flt_Or_Dbl): Flt_Or_Dbl {.
cdecl, importc: "vrna_exp_E_mb_loop_fast",
.}
proc vrnaBT_mbLoopFake(vc: ptr VrnaFoldCompoundT; u: ptr cint; i: ptr cint; j: ptr cint;
                      bpStack: ptr VrnaBpStackT; stackCount: ptr cint): cint {.
cdecl, importc: "vrna_BT_mb_loop_fake",
.}
proc vrnaBT_mbLoopSplit(vc: ptr VrnaFoldCompoundT; i: ptr cint; j: ptr cint; k: ptr cint;
                       l: ptr cint; component1: ptr cint; component2: ptr cint;
                       bpStack: ptr VrnaBpStackT; stackCount: ptr cint): cint {.
cdecl, importc: "vrna_BT_mb_loop_split",
.}
proc vrnaParams(md: ptr VrnaMdT): ptr VrnaParamT {.
cdecl, importc: "vrna_params",
.}
proc vrnaParamsCopy(par: ptr VrnaParamT): ptr VrnaParamT {.
cdecl, importc: "vrna_params_copy",
.}
proc vrnaExpParams(md: ptr VrnaMdT): ptr VrnaExpParamT {.
cdecl, importc: "vrna_exp_params",
.}
proc vrnaExpParamsComparative(nSeq: cuint; md: ptr VrnaMdT): ptr VrnaExpParamT {.
cdecl, importc: "vrna_exp_params_comparative",
.}
proc vrnaExpParamsCopy(par: ptr VrnaExpParamT): ptr VrnaExpParamT {.
cdecl, importc: "vrna_exp_params_copy",
.}
proc vrnaParamsSubst(vc: ptr VrnaFoldCompoundT; par: ptr VrnaParamT) {.
cdecl, importc: "vrna_params_subst",
.}
proc vrnaExpParamsSubst(vc: ptr VrnaFoldCompoundT; params: ptr VrnaExpParamT) {.
cdecl, importc: "vrna_exp_params_subst",
.}
proc vrnaExpParamsRescale(vc: ptr VrnaFoldCompoundT; mfe: ptr cdouble) {.
cdecl, importc: "vrna_exp_params_rescale",
.}
proc vrnaParamsReset(vc: ptr VrnaFoldCompoundT; mdP: ptr VrnaMdT) {.
cdecl, importc: "vrna_params_reset",
.}
proc vrnaExpParamsReset(vc: ptr VrnaFoldCompoundT; mdP: ptr VrnaMdT) {.
cdecl, importc: "vrna_exp_params_reset",
.}
proc pf(vc: ptr VrnaFoldCompoundT; structure: ptr char): cfloat {.
cdecl, importc: "vrna_pf",
.}
proc pfFold(sequence: cstring; structure: ptr char; pl: ptr ptr VrnaPlistT): cfloat {.
cdecl, importc: "vrna_pf_fold",
.}
proc pfCircfold(sequence: cstring; structure: ptr char; pl: ptr ptr VrnaPlistT): cfloat {.
cdecl, importc: "vrna_pf_circfold",
.}
proc pfFloatPrecision(): cint {.
cdecl, importc: "vrna_pf_float_precision",
.}
proc pfDimer(vc: ptr VrnaFoldCompoundT; structure: ptr char): VrnaDimerPfT {.
cdecl, importc: "vrna_pf_dimer",
.}
proc pfDimerProbs(fab: cdouble; fa: cdouble; fb: cdouble; prAB: ptr VrnaPlistT;
                 prA: ptr VrnaPlistT; prB: ptr VrnaPlistT; alength: cint;
                 expParams: ptr VrnaExpParamT) {.
cdecl, importc: "vrna_pf_dimer_probs",
.}
proc pfDimerConcentrations(fcAB: cdouble; fcAA: cdouble; fcBB: cdouble; fea: cdouble;
                          feb: cdouble; startconc: ptr cdouble;
                          expParams: ptr VrnaExpParamT): ptr VrnaDimerConcT {.
cdecl, importc: "vrna_pf_dimer_concentrations",
.}
proc pfUnstru(sequence: cstring; maxW: cint): ptr PuContrib {.
cdecl, importc: "pf_unstru",
.}
proc pfInteract(s1: cstring; s2: cstring; pC: ptr PuContrib; pC2: ptr PuContrib;
               maxW: cint; cstruc: cstring; incr3: cint; incr5: cint): ptr interact {.
cdecl, importc: "pf_interact",
.}
proc freeInteract(pin: ptr interact) {.
cdecl, importc: "free_interact",
.}
proc upPlot(pC: ptr PuContrib; pCSh: ptr PuContrib; pint: ptr interact; ofile: cstring;
           unpairedValues: ptr ptr cint; selectContrib: cstring; head: cstring;
           mode: cuint): cint {.
cdecl, importc: "Up_plot",
.}
proc getPuContribStruct(n: cuint; w: cuint): ptr PuContrib {.
cdecl, importc: "get_pu_contrib_struct",
.}
proc freePuContribStruct(pu: ptr PuContrib) {.
cdecl, importc: "free_pu_contrib_struct",
.}
proc freePuContrib(pu: ptr PuContrib) {.
cdecl, importc: "free_pu_contrib",
.}
proc vrnaScMinimizePertubation(vc: ptr VrnaFoldCompoundT;
                              qProbUnpaired: ptr cdouble; objectiveFunction: cint;
                              sigmaSquared: cdouble; tauSquared: cdouble;
                              algorithm: cint; sampleSize: cint;
                              epsilon: ptr cdouble; initialStepSize: cdouble;
                              minStepSize: cdouble; minImprovement: cdouble;
                              minimizerTolerance: cdouble;
                              callback: ProgressCallback) {.
cdecl, importc: "vrna_sc_minimize_pertubation",
.}
proc pKLduplexfoldXS(s1: cstring; accessS1: ptr ptr cint; threshold: cint;
                    alignmentLength: cint; delta: cint): ptr ptr DupVar {.
cdecl, importc: "PKLduplexfold_XS",
.}
proc arraySize(array: ptr ptr DuplexT): cint {.
cdecl, importc: "arraySize",
.}
proc freeDuplexT(array: ptr ptr DuplexT) {.
cdecl, importc: "freeDuplexT",
.}
proc lduplexfold(s1: cstring; s2: cstring; threshold: cint; extensionCost: cint;
                alignmentLength: cint; delta: cint; fast: cint; ilA: cint; ilB: cint;
                bA: cint; bB: cint): ptr ptr DuplexT {.
cdecl, importc: "Lduplexfold",
.}
proc lduplexfoldXS(s1: cstring; s2: cstring; accessS1: ptr ptr cint;
                  accessS2: ptr ptr cint; threshold: cint; delta: cint;
                  alignmentLength: cint; fast: cint; ilA: cint; ilB: cint; bA: cint;
                  bB: cint): ptr ptr DuplexT {.
cdecl, importc: "Lduplexfold_XS",
.}
proc lduplexfoldC(s1: cstring; s2: cstring; threshold: cint; extensionCost: cint;
                 alignmentLength: cint; delta: cint; fast: cint; structure: cstring;
                 ilA: cint; ilB: cint; bA: cint; bB: cint): ptr ptr DuplexT {.
cdecl, importc: "Lduplexfold_C",
.}
proc lduplexfoldCXS(s1: cstring; s2: cstring; accessS1: ptr ptr cint;
                   accessS2: ptr ptr cint; threshold: cint; delta: cint;
                   alignmentLength: cint; fast: cint; structure: cstring; ilA: cint;
                   ilB: cint; bA: cint; bB: cint): ptr ptr DuplexT {.
cdecl, importc: "Lduplexfold_CXS",
.}
proc psColorAln(structure: cstring; filename: cstring; seqs: ptr cstring;
               names: ptr cstring): cint {.
cdecl, importc: "PS_color_aln",
.}
proc aliPsColorAln(structure: cstring; filename: cstring; seqs: ptr cstring;
                  names: ptr cstring): cint {.
cdecl, importc: "aliPS_color_aln",
.}
proc simpleXyCoordinates(pairTable: ptr cshort; x: ptr cfloat; y: ptr cfloat): cint {.
cdecl, importc: "simple_xy_coordinates",
.}
proc simpleCircplotCoordinates(pairTable: ptr cshort; x: ptr cfloat; y: ptr cfloat): cint {.
cdecl, importc: "simple_circplot_coordinates",
.}
proc psRnaPlotSnoopA(string: cstring; structure: cstring; ssfile: cstring;
                    relativeAccess: ptr cint; seqs: ptr cstring): cint {.
cdecl, importc: "PS_rna_plot_snoop_a",
.}
proc vrnaFilePsRnaplot(seq: cstring; structure: cstring; file: cstring;
                      mdP: ptr VrnaMdT): cint {.
cdecl, importc: "vrna_file_PS_rnaplot",
.}
proc vrnaFilePsRnaplotA(seq: cstring; structure: cstring; file: cstring; pre: cstring;
                       post: cstring; mdP: ptr VrnaMdT): cint {.
cdecl, importc: "vrna_file_PS_rnaplot_a",
.}
proc gmlRNA(string: cstring; structure: cstring; ssfile: cstring; option: char): cint {.
cdecl, importc: "gmlRNA",
.}
proc ssvRnaPlot(string: cstring; structure: cstring; ssfile: cstring): cint {.
cdecl, importc: "ssv_rna_plot",
.}
proc svgRnaPlot(string: cstring; structure: cstring; ssfile: cstring): cint {.
cdecl, importc: "svg_rna_plot",
.}
proc xrnaPlot(string: cstring; structure: cstring; ssfile: cstring): cint {.
cdecl, importc: "xrna_plot",
.}
proc profileAln(t1: ptr cfloat; seq1: cstring; t2: ptr cfloat; seq2: cstring): cfloat {.
cdecl, importc: "profile_aln",
.}
proc setPalnParams(gapOpen: cdouble; gapExt: cdouble; seqweight: cdouble;
                  freeEnds: cint): cint {.
cdecl, importc: "set_paln_params",
.}
proc profileEditDistance(t1: ptr cfloat; t2: ptr cfloat): cfloat {.
cdecl, importc: "profile_edit_distance",
.}
proc makeBpProfileBppm(bppm: ptr Flt_Or_Dbl; length: cint): ptr cfloat {.
cdecl, importc: "Make_bp_profile_bppm",
.}
proc printBppm(t: ptr cfloat) {.
cdecl, importc: "print_bppm",
.}
proc freeProfile(t: ptr cfloat) {.
cdecl, importc: "free_profile",
.}
proc vrnaPlotDpEPS(filename: cstring; sequence: cstring; upper: ptr VrnaPlistT;
                  lower: ptr VrnaPlistT; auxdata: ptr VrnaDotplotAuxdataT;
                  options: cuint): cint {.
cdecl, importc: "vrna_plot_dp_EPS",
.}
proc pS_colorDotPlot(string: cstring; pi: ptr VrnaCpairT; filename: cstring): cint {.
cdecl, importc: "PS_color_dot_plot",
.}
proc pS_colorDotPlotTurn(seq: cstring; pi: ptr VrnaCpairT; filename: cstring;
                        winSize: cint): cint {.
cdecl, importc: "PS_color_dot_plot_turn",
.}
proc pS_dotPlotList(seq: cstring; filename: cstring; pl: ptr VrnaPlistT;
                   mf: ptr VrnaPlistT; comment: cstring): cint {.
cdecl, importc: "PS_dot_plot_list",
.}
proc vrnaPlotDpPS_list(seq: cstring; cp: cint; wastlfile: cstring; pl: ptr VrnaPlistT;
                      mf: ptr VrnaPlistT; comment: cstring): cint {.
cdecl, importc: "vrna_plot_dp_PS_list",
.}
proc pS_dotPlotTurn(seq: cstring; pl: ptr VrnaPlistT; filename: cstring; winSize: cint): cint {.
cdecl, importc: "PS_dot_plot_turn",
.}
proc readParameterFile(fname: cstring) {.
cdecl, importc: "read_parameter_file",
.}
proc writeParameterFile(fname: cstring) {.
cdecl, importc: "write_parameter_file",
.}
proc gettype(ident: cstring): Parset {.
cdecl, importc: "gettype",
.}
proc settype(s: Parset): cstring {.
cdecl, importc: "settype",
.}
proc getRibosum(alseq: cstringArray; nSeq: cint; length: cint): ptr ptr cfloat {.
cdecl, importc: "get_ribosum",
.}
proc readribosum(name: cstring): ptr ptr cfloat {.
cdecl, importc: "readribosum",
.}
proc b2HIT(structure: cstring): cstring {.
cdecl, importc: "b2HIT",
.}
proc b2C(structure: cstring): cstring {.
cdecl, importc: "b2C",
.}
proc b2Shapiro(structure: cstring): cstring {.
cdecl, importc: "b2Shapiro",
.}
proc addRoot(structure: cstring): cstring {.
cdecl, importc: "add_root",
.}
proc expandShapiro(coarse: cstring): cstring {.
cdecl, importc: "expand_Shapiro",
.}
proc expandFull(structure: cstring): cstring {.
cdecl, importc: "expand_Full",
.}
proc unexpandFull(ffull: cstring): cstring {.
cdecl, importc: "unexpand_Full",
.}
proc unweight(wcoarse: cstring): cstring {.
cdecl, importc: "unweight",
.}
proc unexpandAlignedF(align: array[2, cstring]) {.
cdecl, importc: "unexpand_aligned_F",
.}
proc parseStructure(structure: cstring) {.
cdecl, importc: "parse_structure",
.}
proc snofold(sequence: cstring; structure: cstring; maxAssym: cint; threshold: cint;
            minS2: cint; maxS2: cint; halfStem: cint; maxHalfStem: cint): cint {.
cdecl, importc: "snofold",
.}
proc snofreeArrays(length: cint) {.
cdecl, importc: "snofree_arrays",
.}
proc snoinitializeFold(length: cint) {.
cdecl, importc: "snoinitialize_fold",
.}
proc snoupdateFoldParams() {.
cdecl, importc: "snoupdate_fold_params",
.}
proc snoloopEnergy(ptable: ptr cshort; s: ptr cshort; s1: ptr cshort; i: cint): cint {.
cdecl, importc: "snoloop_energy",
.}
proc snoexportFoldArrays(indxP: ptr ptr cint; mLoopP: ptr ptr cint; cLoop: ptr ptr cint;
                        foldP: ptr ptr ptr Folden; foldPXS: ptr ptr ptr Folden) {.
cdecl, importc: "snoexport_fold_arrays",
.}
proc snobacktrackFoldFromPair(sequence: cstring; i: cint; j: cint): cstring {.
cdecl, importc: "snobacktrack_fold_from_pair",
.}
proc alisnofold(strings: cstringArray; maxAssym: cint; threshloop: cint; minS2: cint;
               maxS2: cint; halfStem: cint; maxHalfStem: cint): cfloat {.
cdecl, importc: "alisnofold",
.}
proc alisnofreeArrays(length: cint) {.
cdecl, importc: "alisnofree_arrays",
.}
proc alisnobacktrackFoldFromPair(sequence: cstringArray; i: cint; j: cint;
                                cov: ptr cint): cstring {.
cdecl, importc: "alisnobacktrack_fold_from_pair",
.}
proc snoopfold(s1: cstring; s2: cstring; penalty: cint; threshloop: cint; threshLE: cint;
              threshRE: cint; threshDE: cint; threshD: cint; halfStem: cint;
              maxHalfStem: cint; minS2: cint; maxS2: cint; minS1: cint; maxS1: cint;
              minD1: cint; minD2: cint; fullStemEnergy: cint): SnoopT {.
cdecl, importc: "snoopfold",
.}
proc snoopSubopt(s1: cstring; s2: cstring; delta: cint; w: cint; penalty: cint;
                threshloop: cint; threshLE: cint; threshRE: cint; threshDE: cint;
                threshTE: cint; threshSE: cint; threshD: cint; distance: cint;
                halfStem: cint; maxHalfStem: cint; minS2: cint; maxS2: cint;
                minS1: cint; maxS1: cint; minD1: cint; minD2: cint; fullStemEnergy: cint): ptr SnoopT {.
cdecl, importc: "snoop_subopt",
.}
proc lsnoopSubopt(s1: cstring; s2: cstring; delta: cint; w: cint; penalty: cint;
                 threshloop: cint; threshLE: cint; threshRE: cint; threshDE: cint;
                 threshTE: cint; threshSE: cint; threshD: cint; distance: cint;
                 halfStem: cint; maxHalfStem: cint; minS2: cint; maxS2: cint;
                 minS1: cint; maxS1: cint; minD1: cint; minD2: cint;
                 alignmentLength: cint; name: cstring; fullStemEnergy: cint) {.
cdecl, importc: "Lsnoop_subopt",
.}
proc lsnoopSuboptList(s1: cstring; s2: cstring; delta: cint; w: cint; penalty: cint;
                     threshloop: cint; threshLE: cint; threshRE: cint; threshDE: cint;
                     threshTE: cint; threshSE: cint; threshD: cint; distance: cint;
                     halfStem: cint; maxHalfStem: cint; minS2: cint; maxS2: cint;
                     minS1: cint; maxS1: cint; minD1: cint; minD2: cint;
                     alignmentLength: cint; name: cstring; fullStemEnergy: cint) {.
cdecl, importc: "Lsnoop_subopt_list",
.}
proc lsnoopSuboptListXS(s1: cstring; s2: cstring; accessS1: ptr ptr cint; delta: cint;
                       w: cint; penalty: cint; threshloop: cint; threshLE: cint;
                       threshRE: cint; threshDE: cint; threshTE: cint; threshSE: cint;
                       threshD: cint; distance: cint; halfStem: cint;
                       maxHalfStem: cint; minS2: cint; maxS2: cint; minS1: cint;
                       maxS1: cint; minD1: cint; minD2: cint; alignmentLength: cint;
                       name: cstring; fullStemEnergy: cint) {.
cdecl, importc: "Lsnoop_subopt_list_XS",
.}
proc snoopSuboptXS(s1: cstring; s2: cstring; accessS1: ptr ptr cint; delta: cint; w: cint;
                  penalty: cint; threshloop: cint; threshLE: cint; threshRE: cint;
                  threshDE: cint; threshTE: cint; threshSE: cint; threshD: cint;
                  distance: cint; halfStem: cint; maxHalfStem: cint; minS2: cint;
                  maxS2: cint; minS1: cint; maxS1: cint; minD1: cint; minD2: cint;
                  alignmentLength: cint; name: cstring; fullStemEnergy: cint) {.
cdecl, importc: "snoop_subopt_XS",
.}
proc alisnoopSubopt(s1: cstringArray; s2: cstringArray; delta: cint; w: cint;
                   penalty: cint; threshloop: cint; threshLE: cint; threshRE: cint;
                   threshDE: cint; threshTE: cint; threshSE: cint; threshD: cint;
                   distance: cint; halfStem: cint; maxHalfStem: cint; minS2: cint;
                   maxS2: cint; minS1: cint; maxS1: cint; minD1: cint; minD2: cint): ptr SnoopT {.
cdecl, importc: "alisnoop_subopt",
.}
proc aliLsnoopSuboptList(s1: cstringArray; s2: cstringArray; delta: cint; w: cint;
                        penalty: cint; threshloop: cint; threshLE: cint;
                        threshRE: cint; threshDE: cint; threshTE: cint;
                        threshSE: cint; threshD: cint; distance: cint; halfStem: cint;
                        maxHalfStem: cint; minS2: cint; maxS2: cint; minS1: cint;
                        maxS1: cint; minD1: cint; minD2: cint; alignmentLength: cint): ptr SnoopT {.
cdecl, importc: "aliLsnoop_subopt_list",
.}
proc alisnoopfold(s1: cstringArray; s2: cstringArray; penalty: cint; threshloop: cint;
                 threshLE: cint; threshRE: cint; threshDE: cint; threshD: cint;
                 halfStem: cint; maxHalfStem: cint; minS2: cint; maxS2: cint;
                 minS1: cint; maxS1: cint; minD1: cint; minD2: cint): SnoopT {.
cdecl, importc: "alisnoopfold",
.}
proc snoopfoldXS(s1: cstring; s2: cstring; accessS1: ptr ptr cint; pos: cint;
                maxPosJ: cint; penalty: cint; threshloop: cint; threshLE: cint;
                threshRE: cint; threshDE: cint; threshD: cint; halfStem: cint;
                maxHalfStem: cint; minS2: cint; maxS2: cint; minS1: cint; maxS1: cint;
                minD1: cint; minD2: cint; fullStemEnergy: cint): SnoopT {.
cdecl, importc: "snoopfold_XS",
.}
proc vrnaStrdupPrintf(format: cstring): cstring {.
varargs, cdecl, importc: "vrna_strdup_printf",
.}
proc vrnaStrcatPrintf(dest: cstringArray; format: cstring): cint {.
varargs, cdecl, importc: "vrna_strcat_printf",
.}
proc vrnaRandomString(l: cint; symbols: ptr char): cstring {.
cdecl, importc: "vrna_random_string",
.}
proc vrnaHammingDistance(s1: cstring; s2: cstring): cint {.
cdecl, importc: "vrna_hamming_distance",
.}
proc vrnaHammingDistanceBound(s1: cstring; s2: cstring; n: cint): cint {.
cdecl, importc: "vrna_hamming_distance_bound",
.}
proc vrnaSeqToRNA(sequence: cstring) {.
cdecl, importc: "vrna_seq_toRNA",
.}
proc vrnaSeqToupper(sequence: cstring) {.
cdecl, importc: "vrna_seq_toupper",
.}
proc vrnaCutPointInsert(string: cstring; cp: cint): cstring {.
cdecl, importc: "vrna_cut_point_insert",
.}
proc vrnaCutPointRemove(string: cstring; cp: ptr cint): cstring {.
cdecl, importc: "vrna_cut_point_remove",
.}
proc makeSwString(string: cstring): ptr SwString {.
cdecl, importc: "Make_swString",
.}
proc stringEditDistance(t1: ptr SwString; t2: ptr SwString): cfloat {.
cdecl, importc: "string_edit_distance",
.}
proc vrnaDbPack(struc: cstring): cstring {.
cdecl, importc: "vrna_db_pack",
.}
proc vrnaDbUnpack(packed: cstring): cstring {.
cdecl, importc: "vrna_db_unpack",
.}
proc vrnaPtable(structure: cstring): ptr cshort {.
cdecl, importc: "vrna_ptable",
.}
proc vrnaPtPkGet(structure: cstring): ptr cshort {.
cdecl, importc: "vrna_pt_pk_get",
.}
proc vrnaPtableCopy(pt: ptr cshort): ptr cshort {.
cdecl, importc: "vrna_ptable_copy",
.}
proc vrnaPtAliGet(structure: cstring): ptr cshort {.
cdecl, importc: "vrna_pt_ali_get",
.}
proc vrnaPtSnoopGet(structure: cstring): ptr cshort {.
cdecl, importc: "vrna_pt_snoop_get",
.}
proc vrnaLoopidxFromPtable(pt: ptr cshort): ptr cint {.
cdecl, importc: "vrna_loopidx_from_ptable",
.}
proc vrnaDbFromPtable(pt: ptr cshort): cstring {.
cdecl, importc: "vrna_db_from_ptable",
.}
proc vrnaBpDistance(str1: cstring; str2: cstring): cint {.
cdecl, importc: "vrna_bp_distance",
.}
proc vrnaRefBPcntMatrix(referencePt: ptr cshort; turn: cuint): ptr cuint {.
cdecl, importc: "vrna_refBPcnt_matrix",
.}
proc vrnaRefBPdistMatrix(pt1: ptr cshort; pt2: ptr cshort; turn: cuint): ptr cuint {.
cdecl, importc: "vrna_refBPdist_matrix",
.}
proc vrnaDbFromProbs(pr: ptr Flt_Or_Dbl; length: cuint): cstring {.
cdecl, importc: "vrna_db_from_probs",
.}
proc vrnaBppSymbol(x: ptr cfloat): char {.
cdecl, importc: "vrna_bpp_symbol",
.}
proc vrnaDbFromBpStack(bp: ptr VrnaBpStackT; length: cuint): cstring {.
cdecl, importc: "vrna_db_from_bp_stack",
.}
proc vrnaLetterStructure(structure: cstring; bp: ptr VrnaBpStackT; length: cuint) {.
cdecl, importc: "vrna_letter_structure",
.}
proc vrnaPlist(struc: cstring; pr: cfloat): ptr VrnaPlistT {.
cdecl, importc: "vrna_plist",
.}
proc vrnaPlistFromProbs(vc: ptr VrnaFoldCompoundT; cutOff: cdouble): ptr VrnaPlistT {.
cdecl, importc: "vrna_plist_from_probs",
.}
proc vrnaDbFromPlist(pairs: ptr VrnaPlistT; n: cuint): cstring {.
cdecl, importc: "vrna_db_from_plist",
.}
proc vrnaDbToElementString(structure: cstring): cstring {.
cdecl, importc: "vrna_db_to_element_string",
.}
proc vrnaHxFromPtable(pt: ptr cshort): ptr VrnaHxT {.
cdecl, importc: "vrna_hx_from_ptable",
.}
proc vrnaHxMerge(list: ptr VrnaHxT; maxdist: cint): ptr VrnaHxT {.
cdecl, importc: "vrna_hx_merge",
.}
proc vrnaSubopt(vc: ptr VrnaFoldCompoundT; delta: cint; sorted: cint; fp: File): ptr VrnaSuboptSolutionT {.
cdecl, importc: "vrna_subopt",
.}
proc vrnaSuboptCb(vc: ptr VrnaFoldCompoundT; delta: cint; cb: ptr VrnaSuboptCallback;
                 data: pointer) {.
cdecl, importc: "vrna_subopt_cb",
.}
proc vrnaSuboptZuker(vc: ptr VrnaFoldCompoundT): ptr VrnaSuboptSolutionT {.
cdecl, importc: "vrna_subopt_zuker",
.}
proc vrnaConvertEnergy(energy: cdouble; `from`: VrnaUnitEnergyE; to: VrnaUnitEnergyE): cdouble {.
cdecl, importc: "vrna_convert_energy",
.}
proc vrnaConvertTemperature(temp: cdouble; `from`: VrnaUnitTemperatureE;
                           to: VrnaUnitTemperatureE): cdouble {.
cdecl, importc: "vrna_convert_temperature",
.}
proc vrnaUdAddMotif(vc: ptr VrnaFoldCompoundT; motif: cstring; motifEn: cdouble;
                   loopType: cuint) {.
cdecl, importc: "vrna_ud_add_motif",
.}
proc vrnaUdGetMotifSizeAt(vc: ptr VrnaFoldCompoundT; i: cint; loopType: cuint): ptr cint {.
cdecl, importc: "vrna_ud_get_motif_size_at",
.}
proc vrnaUdGetMotifsAt(vc: ptr VrnaFoldCompoundT; i: cint; loopType: cuint): ptr cint {.
cdecl, importc: "vrna_ud_get_motifs_at",
.}
proc vrnaUdDetectMotifs(vc: ptr VrnaFoldCompoundT; structure: cstring): ptr VrnaUdMotifT {.
cdecl, importc: "vrna_ud_detect_motifs",
.}
proc vrnaUdRemove(vc: ptr VrnaFoldCompoundT) {.
cdecl, importc: "vrna_ud_remove",
.}
proc vrnaUdSetData(vc: ptr VrnaFoldCompoundT; data: pointer;
                  freeCb: ptr VrnaCallbackFreeAuxdata) {.
cdecl, importc: "vrna_ud_set_data",
.}
proc vrnaUdSetProdRuleCb(vc: ptr VrnaFoldCompoundT;
                        preCb: ptr VrnaCallbackUdProduction;
                        eCb: ptr VrnaCallbackUdEnergy) {.
cdecl, importc: "vrna_ud_set_prod_rule_cb",
.}
proc vrnaUdSetExpProdRuleCb(vc: ptr VrnaFoldCompoundT;
                           preCb: ptr VrnaCallbackUdExpProduction;
                           expECb: ptr VrnaCallbackUdExpEnergy) {.
cdecl, importc: "vrna_ud_set_exp_prod_rule_cb",
.}
proc vrnaUdSetProbCb(vc: ptr VrnaFoldCompoundT; setter: ptr VrnaCallbackUdProbsAdd;
                    getter: ptr VrnaCallbackUdProbsGet) {.
cdecl, importc: "vrna_ud_set_prob_cb",
.}
proc vrnaAlloc(size: cuint): pointer {.
cdecl, importc: "vrna_alloc",
.}
proc vrnaRealloc(p: pointer; size: cuint): pointer {.
cdecl, importc: "vrna_realloc",
.}
proc vrnaMessageError(format: cstring) {.
varargs, cdecl, importc: "vrna_message_error",
.}
proc vrnaMessageWarning(format: cstring) {.
varargs, cdecl, importc: "vrna_message_warning",
.}
proc vrnaMessageInfo(fp: ptr File; format: cstring) {.
varargs, cdecl, importc: "vrna_message_info",
.}
proc vrnaInitRand() {.
cdecl, importc: "vrna_init_rand",
.}
proc vrnaUrn(): cdouble {.
cdecl, importc: "vrna_urn",
.}
proc vrnaIntUrn(`from`: cint; to: cint): cint {.
cdecl, importc: "vrna_int_urn",
.}
proc vrnaTimeStamp(): cstring {.
cdecl, importc: "vrna_time_stamp",
.}
proc getInputLine(string: cstringArray; options: cuint): cuint {.
cdecl, importc: "get_input_line",
.}
proc vrnaMessageInputSeqSimple() {.
cdecl, importc: "vrna_message_input_seq_simple",
.}
proc vrnaMessageInputSeq(s: cstring) {.
cdecl, importc: "vrna_message_input_seq",
.}
proc vrnaIdxRowWise(length: cuint): ptr cint {.
cdecl, importc: "vrna_idx_row_wise",
.}
proc vrnaIdxColWise(length: cuint): ptr cint {.
cdecl, importc: "vrna_idx_col_wise",
.}