@teselagen/ove 0.5.19 → 0.5.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.cjs.js CHANGED
@@ -72085,7 +72085,10 @@ const _ResizableDraggableDialog = class _ResizableDraggableDialog extends React$
72085
72085
  };
72086
72086
  __name(_ResizableDraggableDialog, "ResizableDraggableDialog");
72087
72087
  let ResizableDraggableDialog = _ResizableDraggableDialog;
72088
- function MenuItemLink({ text: text2, onClick, icon, navTo, active: active3 }) {
72088
+ function MenuItemLink({ text: text2, onClick, icon, navTo, active: active3, disabled }) {
72089
+ if (disabled) {
72090
+ return /* @__PURE__ */ React$2.createElement("li", { className: core.Classes.POPOVER_DISMISS }, /* @__PURE__ */ React$2.createElement(core.MenuItem, { icon, disabled: true, text: text2 }));
72091
+ }
72089
72092
  const handleLinkClick = /* @__PURE__ */ __name((e2) => {
72090
72093
  e2.target.closest(`.${core.Classes.POPOVER_DISMISS}`).click();
72091
72094
  }, "handleLinkClick");
@@ -72234,7 +72237,10 @@ const DynamicMenuItem = /* @__PURE__ */ __name(({
72234
72237
  ].reduce((v2, f2) => f2(v2, context), def);
72235
72238
  let out;
72236
72239
  if (item.divider !== void 0) {
72237
- out = /* @__PURE__ */ React$2.createElement(core.MenuDivider, __spreadValues({}, item.divider ? { title: item.divider } : {}));
72240
+ out = /* @__PURE__ */ React$2.createElement(
72241
+ core.MenuDivider,
72242
+ __spreadValues({}, item.divider ? { title: item.divider, className: item.className } : {})
72243
+ );
72238
72244
  } else {
72239
72245
  const ItemComponent = item.component || EnhancedMenuItem;
72240
72246
  out = /* @__PURE__ */ React$2.createElement(
@@ -80985,9 +80991,9 @@ const calcTmMethods = {
80985
80991
  // Helix initiation for deltaS
80986
80992
  R: 1.987,
80987
80993
  // Gas constant (cal/(K*mol)).
80988
- C: 5e-7,
80994
+ primerConc: 5e-7,
80989
80995
  // Oligo concentration. 0.5uM is typical for PCR.
80990
- Na: 0.05,
80996
+ monovalentCationConc: 0.05,
80991
80997
  // Monovalent salt concentration. 50mM is typical for PCR.
80992
80998
  /**
80993
80999
  * Calculates temperature for DNA sequence using a given algorithm.
@@ -80995,10 +81001,11 @@ const calcTmMethods = {
80995
81001
  * type - Either Teselagen.bio.tools.TemperatureCalculator.TABLE_BRESLAUER, TABLE_SUGIMOTO, or TABLE_UNIFIED
80996
81002
  * A - Helix initation for deltaS. Defaults to -10.8.
80997
81003
  * R - The gas constant, in cal/(K*mol). Defaults to 0.5e-6M.
80998
- * Na - THe monovalent salt concentration. Defaults to 50e-3M.
81004
+ * monovalentCationConc - THe monovalent salt concentration. Defaults to 50e-3M.
80999
81005
  * return - Temperature for the given sequence, in Celsius.
81000
81006
  */
81001
- calculateTemperature: function(sequence2, type2, A2, R2, C, Na) {
81007
+ calculateTemperature: function(_sequence, { type: type2, A: A2, R: R2, primerConc, monovalentCationConc } = {}) {
81008
+ const sequence2 = _sequence.toLowerCase();
81002
81009
  if (typeof type2 === "undefined") {
81003
81010
  type2 = this.TABLE_BRESLAUER;
81004
81011
  } else if (type2 != this.TABLE_BRESLAUER && type2 != this.TABLE_UNIFIED && type2 != this.TABLE_SUGIMOTO) {
@@ -81010,11 +81017,11 @@ const calcTmMethods = {
81010
81017
  if (!R2) {
81011
81018
  R2 = this.R;
81012
81019
  }
81013
- if (!C) {
81014
- C = this.C;
81020
+ if (!primerConc) {
81021
+ primerConc = this.primerConc;
81015
81022
  }
81016
- if (!Na) {
81017
- Na = this.Na;
81023
+ if (!monovalentCationConc) {
81024
+ monovalentCationConc = this.monovalentCationConc;
81018
81025
  }
81019
81026
  const sequenceLength = sequence2.length;
81020
81027
  if (sequenceLength == 0) {
@@ -81045,11 +81052,8 @@ const calcTmMethods = {
81045
81052
  sumDeltaH = sumDeltaH + neighbors[i] * deltaHTable[i];
81046
81053
  sumDeltaS = sumDeltaS + neighbors[i] * deltaSTable[i];
81047
81054
  }
81048
- const temperature = -1e3 * sumDeltaH / (A2 + -sumDeltaS + R2 * Math.log(C / 4)) - 273.15 + 16.6 * Math.LOG10E * Math.log(Na);
81049
- if (temperature < 0) {
81050
- return 0;
81051
- }
81052
- return temperature.toFixed(2);
81055
+ const temperature = -1e3 * sumDeltaH / (A2 + -sumDeltaS + R2 * Math.log(primerConc / 4)) - 273.15 + 16.6 * Math.LOG10E * Math.log(monovalentCationConc);
81056
+ return temperature;
81053
81057
  },
81054
81058
  /**
81055
81059
  * @private
@@ -81119,6 +81123,39 @@ const calcTmMethods = {
81119
81123
  return null;
81120
81124
  }
81121
81125
  },
81126
+ // "AA/TT": -7.9, 7.9
81127
+ // "AT/TA": -7.2, 7.2
81128
+ // "AC/TG": -8.4, 8.4
81129
+ // "AG/TC": -7.8, 7.8
81130
+ // "TT/AA": -7.9, 7.9
81131
+ // "TA/AT": -7.2, 7.2
81132
+ // "TG/AC": -8.5, 8.2
81133
+ // "TC/AG": -8.2, 8.5
81134
+ // "CC/GG": -8.0, 8.0
81135
+ // "CA/GT": -8.5, 8.5
81136
+ // "CT/GA": -7.8, 7.8
81137
+ // "CG/GC": -10.6, 10.6
81138
+ // "GG/CC": -8.0, 8.0
81139
+ // "GA/CT": -8.2, 8.2,
81140
+ // "GT/CA": -8.4, 8.4
81141
+ // "GC/CG": -9.8, 9.8
81142
+ // aa, at, ac, ag, tt, ta, tc, tg, cc, ca, ct, cg, gg, ga, gt, gc
81143
+ // "AA/TT": -22.2,22.2,
81144
+ // "AT/TA": -20.4,20.4,
81145
+ // "AC/TG": -22.4,22.4,
81146
+ // "AG/TC": -21.0,21.0,
81147
+ // "TT/AA": -22.2,22.2,
81148
+ // "TA/AT": -21.3,21.3,
81149
+ // "TC/AG": -22.2,22.2,
81150
+ // "TG/AC": -22.7,22.7,
81151
+ // "CC/GG": -19.9,19.9,
81152
+ // "CA/GT": -22.7,22.7,
81153
+ // "CT/GA": -21.0,21.0,
81154
+ // "CG/GC": -27.2,27.2,
81155
+ // "GG/CC": -19.9,19.9,
81156
+ // "GT/CA": -22.4,22.2,
81157
+ // "GA/CT": -22.2,22.4,
81158
+ // "GC/CG": -24.4,24.4
81122
81159
  /**
81123
81160
  * @private
81124
81161
  * Function to return deltaS table for given algorithm.
@@ -89720,7 +89757,7 @@ function condensePairwiseAlignmentDifferences(referenceSeq, alignedSeq) {
89720
89757
  return overviewMinimapTrack.join("");
89721
89758
  }
89722
89759
  __name(condensePairwiseAlignmentDifferences, "condensePairwiseAlignmentDifferences");
89723
- function calculateNebTm(sequence2, primerConc, { monovalentCationConc } = {}) {
89760
+ function calculateNebTm(sequence2, { monovalentCationConc = 0.05, primerConc = 5e-7 } = {}) {
89724
89761
  try {
89725
89762
  const checkForDegenerateBases = /[^atgc]/i.test(sequence2);
89726
89763
  if (checkForDegenerateBases) {
@@ -122344,7 +122381,7 @@ function oveCommandFactory(instance, commandDefs2) {
122344
122381
  return args;
122345
122382
  },
122346
122383
  handleReturn: noop$6,
122347
- commandDefs: commandDefs2
122384
+ commandDefs: instance.props.massageCmds ? instance.props.massageCmds(commandDefs2) : commandDefs2
122348
122385
  });
122349
122386
  }
122350
122387
  __name(oveCommandFactory, "oveCommandFactory");
@@ -122372,7 +122409,7 @@ function showFileDialog({ multiple = false, onSelect }) {
122372
122409
  }
122373
122410
  __name(showFileDialog, "showFileDialog");
122374
122411
  const name = "@teselagen/ove";
122375
- const version = "0.5.18";
122412
+ const version = "0.5.20";
122376
122413
  const main = "./src/index.js";
122377
122414
  const type = "module";
122378
122415
  const exports$1 = {
@@ -138712,11 +138749,22 @@ function MeltingTemp({
138712
138749
  WrapperToUse = /* @__PURE__ */ __name((p2) => /* @__PURE__ */ React$2.createElement("div", null, p2.children), "WrapperToUse"),
138713
138750
  InnerWrapper = /* @__PURE__ */ __name((p2) => /* @__PURE__ */ React$2.createElement(core.Button, { minimal: true, small: true }, p2.children), "InnerWrapper")
138714
138751
  }) {
138752
+ const [
138753
+ primerConc
138754
+ /* , setPrimerConcentration */
138755
+ ] = React$2.useState(5e-7);
138756
+ const [
138757
+ monovalentCationConc
138758
+ /* , setMonovalentCationConc */
138759
+ ] = React$2.useState(0.05);
138715
138760
  const [tmType, setTmType] = useTmType();
138716
- const tm = ({
138717
- default: calculateTm,
138718
- neb_tm: calculateNebTm
138719
- }[tmType] || calculateTm)((sequence2 || "").toLowerCase());
138761
+ let tm = (tmType === "neb_tm" ? calculateNebTm : calculateTm)(sequence2, {
138762
+ monovalentCationConc,
138763
+ primerConc
138764
+ });
138765
+ if (isNumber$6(tm)) {
138766
+ tm = tm.toFixed(1);
138767
+ }
138720
138768
  const hasWarning = isString$3(tm) && tm.length > 7 && tm;
138721
138769
  return /* @__PURE__ */ React$2.createElement(WrapperToUse, { dataTest: "veStatusBar-selection-tm" }, /* @__PURE__ */ React$2.createElement(
138722
138770
  core.Popover,
@@ -138727,7 +138775,7 @@ function MeltingTemp({
138727
138775
  {
138728
138776
  rel: "noopener noreferrer",
138729
138777
  target: "_blank",
138730
- href: "https://github.com/TeselaGen/@teselagen/sequence-utils"
138778
+ href: "https://github.com/TeselaGen/tg-oss/blob/master/packages/sequence-utils/src/calculateNebTm.js"
138731
138779
  },
138732
138780
  "algorithms"
138733
138781
  ), /* @__PURE__ */ React$2.createElement("br", null), /* @__PURE__ */ React$2.createElement("br", null), /* @__PURE__ */ React$2.createElement(
@@ -138735,8 +138783,8 @@ function MeltingTemp({
138735
138783
  {
138736
138784
  label: "Choose Tm Type:",
138737
138785
  options: [
138738
- { value: "default", label: "Default Tm" },
138739
- { value: "neb_tm", label: "NEB Tm" }
138786
+ { value: "default", label: "Default Tm (Breslauer)" },
138787
+ { value: "neb_tm", label: "NEB Tm (SantaLucia)" }
138740
138788
  ],
138741
138789
  onChange: (e2) => setTmType(e2.target.value),
138742
138790
  selectedValue: tmType
@@ -143146,6 +143194,7 @@ const userDefinedHandlersAndOpts = [
143146
143194
  "disableSetReadOnly",
143147
143195
  "allowAnnotationEditLocking",
143148
143196
  "disableBpEditing",
143197
+ "massageCmds",
143149
143198
  "showReadOnly",
143150
143199
  "showCircularity",
143151
143200
  "onHiddenEnzymeAdd",
package/index.es.js CHANGED
@@ -72067,7 +72067,10 @@ const _ResizableDraggableDialog = class _ResizableDraggableDialog extends React_
72067
72067
  };
72068
72068
  __name(_ResizableDraggableDialog, "ResizableDraggableDialog");
72069
72069
  let ResizableDraggableDialog = _ResizableDraggableDialog;
72070
- function MenuItemLink({ text: text2, onClick, icon, navTo, active: active3 }) {
72070
+ function MenuItemLink({ text: text2, onClick, icon, navTo, active: active3, disabled }) {
72071
+ if (disabled) {
72072
+ return /* @__PURE__ */ React__default$1.createElement("li", { className: Classes.POPOVER_DISMISS }, /* @__PURE__ */ React__default$1.createElement(MenuItem, { icon, disabled: true, text: text2 }));
72073
+ }
72071
72074
  const handleLinkClick = /* @__PURE__ */ __name((e2) => {
72072
72075
  e2.target.closest(`.${Classes.POPOVER_DISMISS}`).click();
72073
72076
  }, "handleLinkClick");
@@ -72216,7 +72219,10 @@ const DynamicMenuItem = /* @__PURE__ */ __name(({
72216
72219
  ].reduce((v2, f2) => f2(v2, context), def);
72217
72220
  let out;
72218
72221
  if (item.divider !== void 0) {
72219
- out = /* @__PURE__ */ React__default$1.createElement(MenuDivider, __spreadValues({}, item.divider ? { title: item.divider } : {}));
72222
+ out = /* @__PURE__ */ React__default$1.createElement(
72223
+ MenuDivider,
72224
+ __spreadValues({}, item.divider ? { title: item.divider, className: item.className } : {})
72225
+ );
72220
72226
  } else {
72221
72227
  const ItemComponent = item.component || EnhancedMenuItem;
72222
72228
  out = /* @__PURE__ */ React__default$1.createElement(
@@ -80967,9 +80973,9 @@ const calcTmMethods = {
80967
80973
  // Helix initiation for deltaS
80968
80974
  R: 1.987,
80969
80975
  // Gas constant (cal/(K*mol)).
80970
- C: 5e-7,
80976
+ primerConc: 5e-7,
80971
80977
  // Oligo concentration. 0.5uM is typical for PCR.
80972
- Na: 0.05,
80978
+ monovalentCationConc: 0.05,
80973
80979
  // Monovalent salt concentration. 50mM is typical for PCR.
80974
80980
  /**
80975
80981
  * Calculates temperature for DNA sequence using a given algorithm.
@@ -80977,10 +80983,11 @@ const calcTmMethods = {
80977
80983
  * type - Either Teselagen.bio.tools.TemperatureCalculator.TABLE_BRESLAUER, TABLE_SUGIMOTO, or TABLE_UNIFIED
80978
80984
  * A - Helix initation for deltaS. Defaults to -10.8.
80979
80985
  * R - The gas constant, in cal/(K*mol). Defaults to 0.5e-6M.
80980
- * Na - THe monovalent salt concentration. Defaults to 50e-3M.
80986
+ * monovalentCationConc - THe monovalent salt concentration. Defaults to 50e-3M.
80981
80987
  * return - Temperature for the given sequence, in Celsius.
80982
80988
  */
80983
- calculateTemperature: function(sequence2, type2, A2, R2, C, Na) {
80989
+ calculateTemperature: function(_sequence, { type: type2, A: A2, R: R2, primerConc, monovalentCationConc } = {}) {
80990
+ const sequence2 = _sequence.toLowerCase();
80984
80991
  if (typeof type2 === "undefined") {
80985
80992
  type2 = this.TABLE_BRESLAUER;
80986
80993
  } else if (type2 != this.TABLE_BRESLAUER && type2 != this.TABLE_UNIFIED && type2 != this.TABLE_SUGIMOTO) {
@@ -80992,11 +80999,11 @@ const calcTmMethods = {
80992
80999
  if (!R2) {
80993
81000
  R2 = this.R;
80994
81001
  }
80995
- if (!C) {
80996
- C = this.C;
81002
+ if (!primerConc) {
81003
+ primerConc = this.primerConc;
80997
81004
  }
80998
- if (!Na) {
80999
- Na = this.Na;
81005
+ if (!monovalentCationConc) {
81006
+ monovalentCationConc = this.monovalentCationConc;
81000
81007
  }
81001
81008
  const sequenceLength = sequence2.length;
81002
81009
  if (sequenceLength == 0) {
@@ -81027,11 +81034,8 @@ const calcTmMethods = {
81027
81034
  sumDeltaH = sumDeltaH + neighbors[i] * deltaHTable[i];
81028
81035
  sumDeltaS = sumDeltaS + neighbors[i] * deltaSTable[i];
81029
81036
  }
81030
- const temperature = -1e3 * sumDeltaH / (A2 + -sumDeltaS + R2 * Math.log(C / 4)) - 273.15 + 16.6 * Math.LOG10E * Math.log(Na);
81031
- if (temperature < 0) {
81032
- return 0;
81033
- }
81034
- return temperature.toFixed(2);
81037
+ const temperature = -1e3 * sumDeltaH / (A2 + -sumDeltaS + R2 * Math.log(primerConc / 4)) - 273.15 + 16.6 * Math.LOG10E * Math.log(monovalentCationConc);
81038
+ return temperature;
81035
81039
  },
81036
81040
  /**
81037
81041
  * @private
@@ -81101,6 +81105,39 @@ const calcTmMethods = {
81101
81105
  return null;
81102
81106
  }
81103
81107
  },
81108
+ // "AA/TT": -7.9, 7.9
81109
+ // "AT/TA": -7.2, 7.2
81110
+ // "AC/TG": -8.4, 8.4
81111
+ // "AG/TC": -7.8, 7.8
81112
+ // "TT/AA": -7.9, 7.9
81113
+ // "TA/AT": -7.2, 7.2
81114
+ // "TG/AC": -8.5, 8.2
81115
+ // "TC/AG": -8.2, 8.5
81116
+ // "CC/GG": -8.0, 8.0
81117
+ // "CA/GT": -8.5, 8.5
81118
+ // "CT/GA": -7.8, 7.8
81119
+ // "CG/GC": -10.6, 10.6
81120
+ // "GG/CC": -8.0, 8.0
81121
+ // "GA/CT": -8.2, 8.2,
81122
+ // "GT/CA": -8.4, 8.4
81123
+ // "GC/CG": -9.8, 9.8
81124
+ // aa, at, ac, ag, tt, ta, tc, tg, cc, ca, ct, cg, gg, ga, gt, gc
81125
+ // "AA/TT": -22.2,22.2,
81126
+ // "AT/TA": -20.4,20.4,
81127
+ // "AC/TG": -22.4,22.4,
81128
+ // "AG/TC": -21.0,21.0,
81129
+ // "TT/AA": -22.2,22.2,
81130
+ // "TA/AT": -21.3,21.3,
81131
+ // "TC/AG": -22.2,22.2,
81132
+ // "TG/AC": -22.7,22.7,
81133
+ // "CC/GG": -19.9,19.9,
81134
+ // "CA/GT": -22.7,22.7,
81135
+ // "CT/GA": -21.0,21.0,
81136
+ // "CG/GC": -27.2,27.2,
81137
+ // "GG/CC": -19.9,19.9,
81138
+ // "GT/CA": -22.4,22.2,
81139
+ // "GA/CT": -22.2,22.4,
81140
+ // "GC/CG": -24.4,24.4
81104
81141
  /**
81105
81142
  * @private
81106
81143
  * Function to return deltaS table for given algorithm.
@@ -89702,7 +89739,7 @@ function condensePairwiseAlignmentDifferences(referenceSeq, alignedSeq) {
89702
89739
  return overviewMinimapTrack.join("");
89703
89740
  }
89704
89741
  __name(condensePairwiseAlignmentDifferences, "condensePairwiseAlignmentDifferences");
89705
- function calculateNebTm(sequence2, primerConc, { monovalentCationConc } = {}) {
89742
+ function calculateNebTm(sequence2, { monovalentCationConc = 0.05, primerConc = 5e-7 } = {}) {
89706
89743
  try {
89707
89744
  const checkForDegenerateBases = /[^atgc]/i.test(sequence2);
89708
89745
  if (checkForDegenerateBases) {
@@ -122326,7 +122363,7 @@ function oveCommandFactory(instance, commandDefs2) {
122326
122363
  return args;
122327
122364
  },
122328
122365
  handleReturn: noop$6,
122329
- commandDefs: commandDefs2
122366
+ commandDefs: instance.props.massageCmds ? instance.props.massageCmds(commandDefs2) : commandDefs2
122330
122367
  });
122331
122368
  }
122332
122369
  __name(oveCommandFactory, "oveCommandFactory");
@@ -122354,7 +122391,7 @@ function showFileDialog({ multiple = false, onSelect }) {
122354
122391
  }
122355
122392
  __name(showFileDialog, "showFileDialog");
122356
122393
  const name = "@teselagen/ove";
122357
- const version = "0.5.18";
122394
+ const version = "0.5.20";
122358
122395
  const main = "./src/index.js";
122359
122396
  const type = "module";
122360
122397
  const exports$1 = {
@@ -138694,11 +138731,22 @@ function MeltingTemp({
138694
138731
  WrapperToUse = /* @__PURE__ */ __name((p2) => /* @__PURE__ */ React__default$1.createElement("div", null, p2.children), "WrapperToUse"),
138695
138732
  InnerWrapper = /* @__PURE__ */ __name((p2) => /* @__PURE__ */ React__default$1.createElement(Button, { minimal: true, small: true }, p2.children), "InnerWrapper")
138696
138733
  }) {
138734
+ const [
138735
+ primerConc
138736
+ /* , setPrimerConcentration */
138737
+ ] = React__default$1.useState(5e-7);
138738
+ const [
138739
+ monovalentCationConc
138740
+ /* , setMonovalentCationConc */
138741
+ ] = React__default$1.useState(0.05);
138697
138742
  const [tmType, setTmType] = useTmType();
138698
- const tm = ({
138699
- default: calculateTm,
138700
- neb_tm: calculateNebTm
138701
- }[tmType] || calculateTm)((sequence2 || "").toLowerCase());
138743
+ let tm = (tmType === "neb_tm" ? calculateNebTm : calculateTm)(sequence2, {
138744
+ monovalentCationConc,
138745
+ primerConc
138746
+ });
138747
+ if (isNumber$6(tm)) {
138748
+ tm = tm.toFixed(1);
138749
+ }
138702
138750
  const hasWarning = isString$3(tm) && tm.length > 7 && tm;
138703
138751
  return /* @__PURE__ */ React__default$1.createElement(WrapperToUse, { dataTest: "veStatusBar-selection-tm" }, /* @__PURE__ */ React__default$1.createElement(
138704
138752
  Popover,
@@ -138709,7 +138757,7 @@ function MeltingTemp({
138709
138757
  {
138710
138758
  rel: "noopener noreferrer",
138711
138759
  target: "_blank",
138712
- href: "https://github.com/TeselaGen/@teselagen/sequence-utils"
138760
+ href: "https://github.com/TeselaGen/tg-oss/blob/master/packages/sequence-utils/src/calculateNebTm.js"
138713
138761
  },
138714
138762
  "algorithms"
138715
138763
  ), /* @__PURE__ */ React__default$1.createElement("br", null), /* @__PURE__ */ React__default$1.createElement("br", null), /* @__PURE__ */ React__default$1.createElement(
@@ -138717,8 +138765,8 @@ function MeltingTemp({
138717
138765
  {
138718
138766
  label: "Choose Tm Type:",
138719
138767
  options: [
138720
- { value: "default", label: "Default Tm" },
138721
- { value: "neb_tm", label: "NEB Tm" }
138768
+ { value: "default", label: "Default Tm (Breslauer)" },
138769
+ { value: "neb_tm", label: "NEB Tm (SantaLucia)" }
138722
138770
  ],
138723
138771
  onChange: (e2) => setTmType(e2.target.value),
138724
138772
  selectedValue: tmType
@@ -143128,6 +143176,7 @@ const userDefinedHandlersAndOpts = [
143128
143176
  "disableSetReadOnly",
143129
143177
  "allowAnnotationEditLocking",
143130
143178
  "disableBpEditing",
143179
+ "massageCmds",
143131
143180
  "showReadOnly",
143132
143181
  "showCircularity",
143133
143182
  "onHiddenEnzymeAdd",
package/index.umd.js CHANGED
@@ -101255,7 +101255,10 @@ ${latestSubscriptionCallbackError.current.stack}
101255
101255
  };
101256
101256
  __name(_ResizableDraggableDialog, "ResizableDraggableDialog");
101257
101257
  let ResizableDraggableDialog = _ResizableDraggableDialog;
101258
- function MenuItemLink({ text: text2, onClick, icon, navTo, active: active2 }) {
101258
+ function MenuItemLink({ text: text2, onClick, icon, navTo, active: active2, disabled }) {
101259
+ if (disabled) {
101260
+ return /* @__PURE__ */ React$2.createElement("li", { className: POPOVER_DISMISS }, /* @__PURE__ */ React$2.createElement(MenuItem, { icon, disabled: true, text: text2 }));
101261
+ }
101259
101262
  const handleLinkClick = /* @__PURE__ */ __name((e2) => {
101260
101263
  e2.target.closest(`.${POPOVER_DISMISS}`).click();
101261
101264
  }, "handleLinkClick");
@@ -101404,7 +101407,10 @@ ${latestSubscriptionCallbackError.current.stack}
101404
101407
  ].reduce((v2, f2) => f2(v2, context), def);
101405
101408
  let out;
101406
101409
  if (item.divider !== void 0) {
101407
- out = /* @__PURE__ */ React$2.createElement(MenuDivider, __spreadValues({}, item.divider ? { title: item.divider } : {}));
101410
+ out = /* @__PURE__ */ React$2.createElement(
101411
+ MenuDivider,
101412
+ __spreadValues({}, item.divider ? { title: item.divider, className: item.className } : {})
101413
+ );
101408
101414
  } else {
101409
101415
  const ItemComponent = item.component || EnhancedMenuItem;
101410
101416
  out = /* @__PURE__ */ React$2.createElement(
@@ -110081,9 +110087,9 @@ ${latestSubscriptionCallbackError.current.stack}
110081
110087
  // Helix initiation for deltaS
110082
110088
  R: 1.987,
110083
110089
  // Gas constant (cal/(K*mol)).
110084
- C: 5e-7,
110090
+ primerConc: 5e-7,
110085
110091
  // Oligo concentration. 0.5uM is typical for PCR.
110086
- Na: 0.05,
110092
+ monovalentCationConc: 0.05,
110087
110093
  // Monovalent salt concentration. 50mM is typical for PCR.
110088
110094
  /**
110089
110095
  * Calculates temperature for DNA sequence using a given algorithm.
@@ -110091,10 +110097,11 @@ ${latestSubscriptionCallbackError.current.stack}
110091
110097
  * type - Either Teselagen.bio.tools.TemperatureCalculator.TABLE_BRESLAUER, TABLE_SUGIMOTO, or TABLE_UNIFIED
110092
110098
  * A - Helix initation for deltaS. Defaults to -10.8.
110093
110099
  * R - The gas constant, in cal/(K*mol). Defaults to 0.5e-6M.
110094
- * Na - THe monovalent salt concentration. Defaults to 50e-3M.
110100
+ * monovalentCationConc - THe monovalent salt concentration. Defaults to 50e-3M.
110095
110101
  * return - Temperature for the given sequence, in Celsius.
110096
110102
  */
110097
- calculateTemperature: function(sequence2, type2, A2, R2, C2, Na2) {
110103
+ calculateTemperature: function(_sequence, { type: type2, A: A2, R: R2, primerConc, monovalentCationConc } = {}) {
110104
+ const sequence2 = _sequence.toLowerCase();
110098
110105
  if (typeof type2 === "undefined") {
110099
110106
  type2 = this.TABLE_BRESLAUER;
110100
110107
  } else if (type2 != this.TABLE_BRESLAUER && type2 != this.TABLE_UNIFIED && type2 != this.TABLE_SUGIMOTO) {
@@ -110106,11 +110113,11 @@ ${latestSubscriptionCallbackError.current.stack}
110106
110113
  if (!R2) {
110107
110114
  R2 = this.R;
110108
110115
  }
110109
- if (!C2) {
110110
- C2 = this.C;
110116
+ if (!primerConc) {
110117
+ primerConc = this.primerConc;
110111
110118
  }
110112
- if (!Na2) {
110113
- Na2 = this.Na;
110119
+ if (!monovalentCationConc) {
110120
+ monovalentCationConc = this.monovalentCationConc;
110114
110121
  }
110115
110122
  const sequenceLength = sequence2.length;
110116
110123
  if (sequenceLength == 0) {
@@ -110141,11 +110148,8 @@ ${latestSubscriptionCallbackError.current.stack}
110141
110148
  sumDeltaH = sumDeltaH + neighbors[i2] * deltaHTable[i2];
110142
110149
  sumDeltaS = sumDeltaS + neighbors[i2] * deltaSTable[i2];
110143
110150
  }
110144
- const temperature = -1e3 * sumDeltaH / (A2 + -sumDeltaS + R2 * Math.log(C2 / 4)) - 273.15 + 16.6 * Math.LOG10E * Math.log(Na2);
110145
- if (temperature < 0) {
110146
- return 0;
110147
- }
110148
- return temperature.toFixed(2);
110151
+ const temperature = -1e3 * sumDeltaH / (A2 + -sumDeltaS + R2 * Math.log(primerConc / 4)) - 273.15 + 16.6 * Math.LOG10E * Math.log(monovalentCationConc);
110152
+ return temperature;
110149
110153
  },
110150
110154
  /**
110151
110155
  * @private
@@ -110215,6 +110219,39 @@ ${latestSubscriptionCallbackError.current.stack}
110215
110219
  return null;
110216
110220
  }
110217
110221
  },
110222
+ // "AA/TT": -7.9, 7.9
110223
+ // "AT/TA": -7.2, 7.2
110224
+ // "AC/TG": -8.4, 8.4
110225
+ // "AG/TC": -7.8, 7.8
110226
+ // "TT/AA": -7.9, 7.9
110227
+ // "TA/AT": -7.2, 7.2
110228
+ // "TG/AC": -8.5, 8.2
110229
+ // "TC/AG": -8.2, 8.5
110230
+ // "CC/GG": -8.0, 8.0
110231
+ // "CA/GT": -8.5, 8.5
110232
+ // "CT/GA": -7.8, 7.8
110233
+ // "CG/GC": -10.6, 10.6
110234
+ // "GG/CC": -8.0, 8.0
110235
+ // "GA/CT": -8.2, 8.2,
110236
+ // "GT/CA": -8.4, 8.4
110237
+ // "GC/CG": -9.8, 9.8
110238
+ // aa, at, ac, ag, tt, ta, tc, tg, cc, ca, ct, cg, gg, ga, gt, gc
110239
+ // "AA/TT": -22.2,22.2,
110240
+ // "AT/TA": -20.4,20.4,
110241
+ // "AC/TG": -22.4,22.4,
110242
+ // "AG/TC": -21.0,21.0,
110243
+ // "TT/AA": -22.2,22.2,
110244
+ // "TA/AT": -21.3,21.3,
110245
+ // "TC/AG": -22.2,22.2,
110246
+ // "TG/AC": -22.7,22.7,
110247
+ // "CC/GG": -19.9,19.9,
110248
+ // "CA/GT": -22.7,22.7,
110249
+ // "CT/GA": -21.0,21.0,
110250
+ // "CG/GC": -27.2,27.2,
110251
+ // "GG/CC": -19.9,19.9,
110252
+ // "GT/CA": -22.4,22.2,
110253
+ // "GA/CT": -22.2,22.4,
110254
+ // "GC/CG": -24.4,24.4
110218
110255
  /**
110219
110256
  * @private
110220
110257
  * Function to return deltaS table for given algorithm.
@@ -118816,7 +118853,7 @@ ${latestSubscriptionCallbackError.current.stack}
118816
118853
  return overviewMinimapTrack.join("");
118817
118854
  }
118818
118855
  __name(condensePairwiseAlignmentDifferences, "condensePairwiseAlignmentDifferences");
118819
- function calculateNebTm(sequence2, primerConc, { monovalentCationConc } = {}) {
118856
+ function calculateNebTm(sequence2, { monovalentCationConc = 0.05, primerConc = 5e-7 } = {}) {
118820
118857
  try {
118821
118858
  const checkForDegenerateBases = /[^atgc]/i.test(sequence2);
118822
118859
  if (checkForDegenerateBases) {
@@ -150811,7 +150848,7 @@ Part of ${annotation.translationType} Translation from BPs ${annotation.start +
150811
150848
  return args;
150812
150849
  },
150813
150850
  handleReturn: noop$6,
150814
- commandDefs: commandDefs2
150851
+ commandDefs: instance.props.massageCmds ? instance.props.massageCmds(commandDefs2) : commandDefs2
150815
150852
  });
150816
150853
  }
150817
150854
  __name(oveCommandFactory, "oveCommandFactory");
@@ -150839,7 +150876,7 @@ Part of ${annotation.translationType} Translation from BPs ${annotation.start +
150839
150876
  }
150840
150877
  __name(showFileDialog, "showFileDialog");
150841
150878
  const name = "@teselagen/ove";
150842
- const version = "0.5.18";
150879
+ const version = "0.5.20";
150843
150880
  const main = "./src/index.js";
150844
150881
  const type = "module";
150845
150882
  const exports$1 = {
@@ -165574,11 +165611,22 @@ Part of ${annotation.translationType} Translation from BPs ${annotation.start +
165574
165611
  WrapperToUse = /* @__PURE__ */ __name((p2) => /* @__PURE__ */ React$2.createElement("div", null, p2.children), "WrapperToUse"),
165575
165612
  InnerWrapper = /* @__PURE__ */ __name((p2) => /* @__PURE__ */ React$2.createElement(Button, { minimal: true, small: true }, p2.children), "InnerWrapper")
165576
165613
  }) {
165614
+ const [
165615
+ primerConc
165616
+ /* , setPrimerConcentration */
165617
+ ] = React$2.useState(5e-7);
165618
+ const [
165619
+ monovalentCationConc
165620
+ /* , setMonovalentCationConc */
165621
+ ] = React$2.useState(0.05);
165577
165622
  const [tmType, setTmType] = useTmType();
165578
- const tm = ({
165579
- default: calculateTm,
165580
- neb_tm: calculateNebTm
165581
- }[tmType] || calculateTm)((sequence2 || "").toLowerCase());
165623
+ let tm = (tmType === "neb_tm" ? calculateNebTm : calculateTm)(sequence2, {
165624
+ monovalentCationConc,
165625
+ primerConc
165626
+ });
165627
+ if (isNumber$6(tm)) {
165628
+ tm = tm.toFixed(1);
165629
+ }
165582
165630
  const hasWarning = isString$3(tm) && tm.length > 7 && tm;
165583
165631
  return /* @__PURE__ */ React$2.createElement(WrapperToUse, { dataTest: "veStatusBar-selection-tm" }, /* @__PURE__ */ React$2.createElement(
165584
165632
  Popover,
@@ -165589,7 +165637,7 @@ Part of ${annotation.translationType} Translation from BPs ${annotation.start +
165589
165637
  {
165590
165638
  rel: "noopener noreferrer",
165591
165639
  target: "_blank",
165592
- href: "https://github.com/TeselaGen/@teselagen/sequence-utils"
165640
+ href: "https://github.com/TeselaGen/tg-oss/blob/master/packages/sequence-utils/src/calculateNebTm.js"
165593
165641
  },
165594
165642
  "algorithms"
165595
165643
  ), /* @__PURE__ */ React$2.createElement("br", null), /* @__PURE__ */ React$2.createElement("br", null), /* @__PURE__ */ React$2.createElement(
@@ -165597,8 +165645,8 @@ Part of ${annotation.translationType} Translation from BPs ${annotation.start +
165597
165645
  {
165598
165646
  label: "Choose Tm Type:",
165599
165647
  options: [
165600
- { value: "default", label: "Default Tm" },
165601
- { value: "neb_tm", label: "NEB Tm" }
165648
+ { value: "default", label: "Default Tm (Breslauer)" },
165649
+ { value: "neb_tm", label: "NEB Tm (SantaLucia)" }
165602
165650
  ],
165603
165651
  onChange: (e2) => setTmType(e2.target.value),
165604
165652
  selectedValue: tmType
@@ -169496,6 +169544,7 @@ ${seqDataToCopy}\r
169496
169544
  "disableSetReadOnly",
169497
169545
  "allowAnnotationEditLocking",
169498
169546
  "disableBpEditing",
169547
+ "massageCmds",
169499
169548
  "showReadOnly",
169500
169549
  "showCircularity",
169501
169550
  "onHiddenEnzymeAdd",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@teselagen/ove",
3
- "version": "0.5.19",
3
+ "version": "0.5.21",
4
4
  "main": "./src/index.js",
5
5
  "exports": {
6
6
  ".": {
@@ -10,12 +10,12 @@
10
10
  "./style.css": "./style.css"
11
11
  },
12
12
  "dependencies": {
13
- "@teselagen/sequence-utils": "0.3.24",
13
+ "@teselagen/sequence-utils": "0.3.25",
14
14
  "@teselagen/range-utils": "0.3.7",
15
- "@teselagen/ui": "0.4.16",
15
+ "@teselagen/ui": "0.4.18",
16
16
  "@teselagen/file-utils": "0.3.16",
17
17
  "@teselagen/bounce-loader": "0.3.11",
18
- "@teselagen/bio-parsers": "0.4.18",
18
+ "@teselagen/bio-parsers": "0.4.19",
19
19
  "@blueprintjs/core": "3.52.0",
20
20
  "@blueprintjs/datetime": "3.23.19",
21
21
  "@blueprintjs/icons": "3.33.0",
@@ -22,6 +22,7 @@ export const userDefinedHandlersAndOpts = [
22
22
  "disableSetReadOnly",
23
23
  "allowAnnotationEditLocking",
24
24
  "disableBpEditing",
25
+ "massageCmds",
25
26
  "showReadOnly",
26
27
  "showCircularity",
27
28
  "onHiddenEnzymeAdd",