ME-ICA / tedana

TE-dependent analysis of multi-echo fMRI
https://tedana.readthedocs.io
GNU Lesser General Public License v2.1
161 stars 95 forks source link

Figures may not render in interactive reports #766

Closed jbteves closed 3 years ago

jbteves commented 3 years ago

Summary

In a data set that @javiergcas is using, for some reason just one component will not render in the interactive reports. If I take a look at the figures subdirectory, the figure exists. Attached some images, including browser debugging console, for JS folks to look at.

Additional Detail

Non-working component image Working component (all others work) image Debug console output image

Next Steps

emdupre commented 3 years ago

Thanks, @jbteves ! The browser console looks like unrelated messages to me ... If you "inspect element" on the missing figure panel, does it suggest that a figure is not inserted or does it read that there is an inserted figure but it's not rendering ?

jbteves commented 3 years ago

I believe that it's entirely missing, there's nothing that shows up in "inspect" mode.

jbteves commented 3 years ago

I'm actually seeing this quite often as I inspect reports, including some variations on our integration tests. I'm not sure what the issue is but I don't think it's a niche case.

eurunuela commented 3 years ago

I will have a look at it! Probably on Friday.

eurunuela commented 3 years ago

@jbteves could you please share the html file so I can have a look at it? Thanks!

jbteves commented 3 years ago

In this case, component 8 does not render at all.

<!DOCTYPE html>
<html lang="en">

<head>
<title>tedana report</title>
<meta name="viewport" content="width = device-width, initial-scale = 1" charset="UTF-8">
<script src="https://cdn.bokeh.org/bokeh/release/bokeh-2.2.3.min.js"
        crossorigin="anonymous"></script>
<script src="https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.2.3.min.js"
        crossorigin="anonymous"></script>
<script src="https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.2.3.min.js"
        crossorigin="anonymous"></script>
<link rel="stylesheet" href="https://unpkg.com/purecss@1.0.1/build/pure-min.css"
    integrity="sha384-oAOxQR6DkCoMliIh8yFnu25d7Eq/PHS21PClpwjOTeU2jRSq11vu66rf90/cZr47" crossorigin="anonymous">
<!-- CSS for the report -->
<style type="text/css">
    body {
        padding: 10px 20px 10px 20px;
    }
</style>

</head>

<nav>
  <div class="pure-menu pure-menu-horizontal">
    <a href="https://github.com/ME-ICA/tedana" class="pure-menu-heading pure-menu-link">tedana 0.0.10+23.gab7afd8</a>
    <ul class="pure-menu-list">
        <li class="pure-menu-item">
            <a href="https://tedana.readthedocs.io" class="pure-menu-link">Reporting documentation</a>
        </li>
    </ul>
  </div>
</nav>

<body>
    <style type="text/css">
  .content {
    margin-left: 5%;
    margin-right: 5%;
    margin-bottom: 150px;
    height: auto;
    float: left;
  }

  .about {
    position: relative;
    top: -50px;
    margin-left: 5%;
    margin-right: 5%;
    white-space: pre-line;
    font-family: Arial, Helvetica, sans-serif;
    font-size: larger;
    float: left;
    width: 80%;
  }

  .carpet-wrapper {
    margin-top: 30px;
  }

  .carpet-plots {
    float: left;
  }

  .carpet-plots {
    margin-left: 5%;
    margin-right: 5%;
    margin-bottom: 100px;
  }

  .carpet-buttons {
    height: 40px;
    padding-bottom: 5px;
  }

  .carpet-image {
    margin-top: 20px;
  }

  button {
    margin-right: 15px;
    width: auto;
    border-radius: 6px;
    border-top: none;
    text-align: center;
    color: black;
    padding: 10px;
    float: left;
    font-size: 18px;
    font-weight: 700;
    height: 40px;
  }

  button:hover {
    opacity: 0.8;
  }

  button:active {
    width: auto;
    border-radius: 6px;
    border-top: none;
    text-align: center;
    color: black;
    padding: 10px;
    margin-top: 3px;
    float: left;
  }

  .blue {
    background: #8caef9;
    border-bottom: #6684c6 3px solid;
    border-left: #6684c6 1px solid;
    border-right: #6684c6 1px solid;
  }

  .blue:active {
    background: #7fa5f8;
    border-bottom: #6684c6 1px solid;
    border-left: #6684c8 1px solid;
    border-right: #6684c6 1px solid;
  }

  .red {
    background: #ec5e57;
    border-bottom: #bb3d36 3px solid;
    border-left: #bb3d36 1px solid;
    border-right: #bb3d36 1px solid;
  }

  .red:active {
    background: #ea4c44;
    border-bottom: #bb3d36 1px solid;
    border-left: #bb3d36 1px solid;
    border-right: #bb3d36 1px solid;
  }

  .green {
    background: #74ca74;
    border-bottom: #509d51 3px solid;
    border-left: #509d51 1px solid;
    border-right: #509d51 1px solid;
  }

  .green:active {
    background: #64c465;
    border-bottom: #509d51 1px solid;
    border-left: #509d51 1px solid;
    border-right: #509d51 1px solid;
  }

  .yellow {
    background: #f7ce5f;
    border-bottom: #c5a13e 3px solid;
    border-left: #c5a13e 1px solid;
    border-right: #c5a13e 1px solid;
  }

  .yellow:active {
    background: #f6c94d;
    border-bottom: #c5a13e 1px solid;
    border-left: #c5a13e 1px solid;
    border-right: #c5a13e 1px solid;
  }
</style>
<script language="javascript">
  function updateCarpetPlot(name) {
    if (name == "optcom") {
      document.getElementById("imgCarpetPlot").src =
        "./figures/carpet_optcom.svg";
    } else if (name == "denoised") {
      document.getElementById("imgCarpetPlot").src =
        "./figures/carpet_denoised.svg";
    } else if (name == "accepted") {
      document.getElementById("imgCarpetPlot").src =
        "./figures/carpet_accepted.svg";
    } else if (name == "rejected") {
      document.getElementById("imgCarpetPlot").src =
        "./figures/carpet_rejected.svg";
    } else if (name == "denoised_mir") {
      document.getElementById("imgCarpetPlot").src =
        "./figures/carpet_denoised_mir.svg";
    } else if (name == "accepted_mir") {
      document.getElementById("imgCarpetPlot").src =
        "./figures/carpet_accepted_mir.svg";
    } else if (name == "optcom_nogsr") {
      document.getElementById("imgCarpetPlot").src =
        "./figures/carpet_optcom_nogsr.svg";
    }
  }
</script>
<div class="content">
  <h1>ICA components</h1>

<div class="bk-root" id="53913f50-9bde-41be-a404-1697c4c6ea84" data-root-id="1229"></div>
</div>
<div class="carpet-plots">
  <h1>Carpet plots</h1>
  <div class="carpet-wrapper">
    <div class="carpet-buttons">
      <button class="blue" type="button" onClick="updateCarpetPlot('optcom_nogsr')" style="display:block">
    Optimally combined with global signal
</button>
<button class="blue" type="button" onClick="updateCarpetPlot('optcom')">
    Optimally combined before MIR
</button>
<button class="yellow" type="button" onClick="updateCarpetPlot('denoised')">
    Denoised before MIR
</button>
<button class="yellow" type="button" onClick="updateCarpetPlot('denoised_mir')" style="display:block">
    Denoised after MIR
</button>
<button class="green" type="button" onClick="updateCarpetPlot('accepted')">
    Accepted before MIR
</button>
<button class="green" type="button" onClick="updateCarpetPlot('accepted_mir')" style="display:block">
    Accepted after MIR
</button>
<button class="red" type="button" onClick="updateCarpetPlot('rejected')">
    Rejected
</button>
    </div>
    <div class="carpet-plots-image">
      <img id="imgCarpetPlot" src="./figures/carpet_optcom.svg" />
    </div>
  </div>
</div>
<div class="about">
  <h1>About tedana</h1>
  TE-dependence analysis was performed on input data. An initial mask was generated from the first echo using nilearn's compute_epi_mask function. An adaptive mask was then generated, in which each voxel's value reflects the number of echoes with 'good' data. A two-stage masking procedure was applied, in which a liberal mask (including voxels with good data in at least the first echo) was used for optimal combination, T2*/S0 estimation, and denoising, while a more conservative mask (restricted to voxels with good data in at least the first three echoes) was used for the component classification procedure. A monoexponential model was fit to the data at each voxel using log-linear regression in order to estimate T2* and S0 maps. For each voxel, the value from the adaptive mask was used to determine which echoes would be used to estimate T2* and S0. Multi-echo data were then optimally combined using the T2* combination method (Posse et al., 1999). Global signal regression was applied to the multi-echo and optimally combined datasets. Principal component analysis followed by the 'stabilized' Kundu component selection decision tree (Kundu et al., 2013) was applied to the optimally combined data for dimensionality reduction. The following metrics were calculated: kappa, rho, countnoise, countsigFT2, countsigFS0, dice_FT2, dice_FS0, signal-noise_t, variance explained, normalized variance explained, d_table_score. Kappa (kappa) and Rho (rho) were calculated as measures of TE-dependence and TE-independence, respectively. A t-test was performed between the distributions of T2*-model F-statistics associated with clusters (i.e., signal) and non-cluster voxels (i.e., noise) to generate a t-statistic (metric signal-noise_z) and p-value (metric signal-noise_p) measuring relative association of the component to signal over noise. The number of significant voxels not from clusters was calculated for each component. Independent component analysis was then used to decompose the dimensionally reduced dataset. The following metrics were calculated: kappa, rho, countnoise, countsigFT2, countsigFS0, dice_FT2, dice_FS0, signal-noise_t, variance explained, normalized variance explained, d_table_score. Kappa (kappa) and Rho (rho) were calculated as measures of TE-dependence and TE-independence, respectively. A t-test was performed between the distributions of T2*-model F-statistics associated with clusters (i.e., signal) and non-cluster voxels (i.e., noise) to generate a t-statistic (metric signal-noise_z) and p-value (metric signal-noise_p) measuring relative association of the component to signal over noise. The number of significant voxels not from clusters was calculated for each component. Next, component selection was performed to identify BOLD (TE-dependent), non-BOLD (TE-independent), and uncertain (low-variance) components using the Kundu decision tree (v2.5; Kundu et al., 2013). Minimum image regression was then applied to the data in order to remove spatially diffuse noise (Kundu et al., 2013). This workflow used numpy (Van Der Walt, Colbert, & Varoquaux, 2011), scipy (Jones et al., 2001), pandas (McKinney, 2010), scikit-learn (Pedregosa et al., 2011), nilearn, and nibabel (Brett et al., 2019). This workflow also used the Dice similarity index (Dice, 1945; Sørensen, 1948).

References:

Brett, M., Markiewicz, C. J., Hanke, M., Côté, M.-A., Cipollini, B., McCarthy, P., … freec84. (2019, May 28). nipy/nibabel. Zenodo. http://doi.org/10.5281/zenodo.3233118

Dice, L. R. (1945). Measures of the amount of ecologic association between species. Ecology, 26(3), 297-302.

Jones E, Oliphant E, Peterson P, et al. SciPy: Open Source Scientific Tools for Python, 2001-, http://www.scipy.org/

Kundu, P., Brenowitz, N. D., Voon, V., Worbe, Y., Vértes, P. E., Inati, S. J., ... & Bullmore, E. T. (2013). Integrated strategy for improving functional connectivity mapping using multiecho fMRI. Proceedings of the National Academy of Sciences, 110(40), 16187-16192.

McKinney, W. (2010, June). Data structures for statistical computing in python. In Proceedings of the 9th Python in Science Conference (Vol. 445, pp. 51-56).

Pedregosa, F., Varoquaux, G., Gramfort, A., Michel, V., Thirion, B., Grisel, O., ... & Vanderplas, J. (2011). Scikit-learn: Machine learning in Python. Journal of machine learning research, 12(Oct), 2825-2830.

Posse, S., Wiese, S., Gembris, D., Mathiak, K., Kessler, C., Grosse‐Ruyken, M. L., ... & Kiselev, V. G. (1999). Enhancement of BOLD‐contrast sensitivity by single‐shot multi‐echo functional MR imaging. Magnetic Resonance in Medicine: An Official Journal of the International Society for Magnetic Resonance in Medicine, 42(1), 87-97.

Sørensen, T. J. (1948). A method of establishing groups of equal amplitude in plant sociology based on similarity of species content and its application to analyses of the vegetation on Danish commons. I kommission hos E. Munksgaard.

Van Der Walt, S., Colbert, S. C., & Varoquaux, G. (2011). The NumPy array: a structure for efficient numerical computation. Computing in Science & Engineering, 13(2), 22.

</div>

<script type="text/javascript">
    (function() {
          var fn = function() {
            Bokeh.safely(function() {
              (function(root) {
                function embed_document(root) {

                var docs_json = '{"1306942f-a898-4212-9c67-e4111645076d":{"roots":{"references":[{"attributes":{},"id":"1048","type":"Selection"},{"attributes":{"callback":null,"tooltips":[["Component ID","@component"],["Kappa","@kappa{0.00}"],["Rho","@rho{0.00}"],["Var. Expl.","@varexp{0.00}%"]]},"id":"1002","type":"HoverTool"},{"attributes":{"fill_alpha":{"value":0.5},"fill_color":{"field":"color"},"line_alpha":{"value":0.5},"line_color":{"field":"color"},"size":{"field":"size","units":"screen"},"x":{"field":"kappa"},"y":{"field":"rho"}},"id":"1038","type":"Circle"},{"attributes":{"callback":null},"id":"1022","type":"TapTool"},{"attributes":{},"id":"1024","type":"ResetTool"},{"attributes":{},"id":"1006","type":"DataRange1d"},{"attributes":{},"id":"1023","type":"WheelZoomTool"},{"attributes":{},"id":"1106","type":"DataRange1d"},{"attributes":{"field":"angle","include_zero":true},"id":"1172","type":"CumSum"},{"attributes":{"axis_label":"Rho","formatter":{"id":"1207"},"ticker":{"id":"1113"}},"id":"1112","type":"LinearAxis"},{"attributes":{"text":"Rho Rank"},"id":"1102","type":"Title"},{"attributes":{"index":20,"label":{"value":"rejected"},"renderers":[{"id":"1040"}]},"id":"1052","type":"LegendItem"},{"attributes":{"x":{"field":"x"},"y":{"field":"y"}},"id":"1135","type":"Line"},{"attributes":{"index":0,"label":{"value":"accepted"},"renderers":[{"id":"1040"}]},"id":"1050","type":"LegendItem"},{"attributes":{},"id":"1113","type":"BasicTicker"},{"attributes":{},"id":"1110","type":"LinearScale"},{"attributes":{"axis_label":null,"formatter":{"id":"1209"},"ticker":{"id":"1117"}},"id":"1116","type":"LinearAxis"},{"attributes":{},"id":"1060","type":"DataRange1d"},{"attributes":{},"id":"1108","type":"LinearScale"},{"attributes":{"axis":{"id":"1112"},"ticker":null},"id":"1115","type":"Grid"},{"attributes":{"text":"Kappa Rank"},"id":"1056","type":"Title"},{"attributes":{"index":13,"label":{"value":"ignored"},"renderers":[{"id":"1040"}]},"id":"1051","type":"LegendItem"},{"attributes":{"data_source":{"id":"1088"},"glyph":{"id":"1089"},"hover_glyph":null,"muted_glyph":null,"nonselection_glyph":{"id":"1090"},"selection_glyph":null,"view":{"id":"1092"}},"id":"1091","type":"GlyphRenderer"},{"attributes":{"below":[{"id":"1066"}],"center":[{"id":"1069"},{"id":"1073"}],"js_event_callbacks":{"tap":[{"id":"1186"}]},"left":[{"id":"1070"}],"plot_height":400,"plot_width":400,"renderers":[{"id":"1091"},{"id":"1096"}],"title":{"id":"1056"},"toolbar":{"id":"1080"},"toolbar_location":null,"x_range":{"id":"1098"},"x_scale":{"id":"1062"},"y_range":{"id":"1060"},"y_scale":{"id":"1064"}},"id":"1055","subtype":"Figure","type":"Plot"},{"attributes":{"axis":{"id":"1116"},"dimension":1,"ticker":null},"id":"1119","type":"Grid"},{"attributes":{"below":[{"id":"1112"}],"center":[{"id":"1115"},{"id":"1119"}],"js_event_callbacks":{"tap":[{"id":"1187"}]},"left":[{"id":"1116"}],"plot_height":400,"plot_width":400,"renderers":[{"id":"1137"},{"id":"1142"}],"title":{"id":"1102"},"toolbar":{"id":"1126"},"toolbar_location":null,"x_range":{"id":"1144"},"x_scale":{"id":"1108"},"y_range":{"id":"1106"},"y_scale":{"id":"1110"}},"id":"1101","subtype":"Figure","type":"Plot"},{"attributes":{},"id":"1117","type":"BasicTicker"},{"attributes":{"axis_label":"Rho","formatter":{"id":"1046"},"ticker":{"id":"1019"}},"id":"1018","type":"LinearAxis"},{"attributes":{"line_alpha":0.1,"x":{"field":"x"},"y":{"field":"y"}},"id":"1136","type":"Line"},{"attributes":{},"id":"1122","type":"ResetTool"},{"attributes":{},"id":"1121","type":"WheelZoomTool"},{"attributes":{"callback":null},"id":"1120","type":"TapTool"},{"attributes":{"axis_label":"Kappa","formatter":{"id":"1211"},"ticker":{"id":"1067"}},"id":"1066","type":"LinearAxis"},{"attributes":{},"id":"1124","type":"CrosshairTool"},{"attributes":{},"id":"1067","type":"BasicTicker"},{"attributes":{},"id":"1123","type":"PanTool"},{"attributes":{},"id":"1064","type":"LinearScale"},{"attributes":{"axis_label":null,"formatter":{"id":"1213"},"ticker":{"id":"1071"}},"id":"1070","type":"LinearAxis"},{"attributes":{},"id":"1125","type":"SaveTool"},{"attributes":{},"id":"1062","type":"LinearScale"},{"attributes":{"axis":{"id":"1066"},"ticker":null},"id":"1069","type":"Grid"},{"attributes":{"source":{"id":"1001"}},"id":"1178","type":"CDSView"},{"attributes":{"data_source":{"id":"1001"},"glyph":{"id":"1175"},"hover_glyph":null,"muted_glyph":null,"nonselection_glyph":{"id":"1176"},"selection_glyph":null,"view":{"id":"1178"}},"id":"1177","type":"GlyphRenderer"},{"attributes":{"active_drag":"auto","active_inspect":"auto","active_multi":null,"active_scroll":"auto","active_tap":"auto","logo":null,"tools":[{"id":"1165"},{"id":"1166"},{"id":"1167"}]},"id":"1168","type":"Toolbar"},{"attributes":{"axis":{"id":"1070"},"dimension":1,"ticker":null},"id":"1073","type":"Grid"},{"attributes":{},"id":"1010","type":"LinearScale"},{"attributes":{},"id":"1071","type":"BasicTicker"},{"attributes":{},"id":"1015","type":"BasicTicker"},{"attributes":{"data":{"x":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21],"y":{"__ndarray__":"oEkxQi3GOUBZoqa/CS44QIkIABHr/jZAACa2TZLrNkCkoO/DWss2QBDiKek4rTZAOjPEg/9NNkD9bZy5Ekg2QKfQBAXGNDZAXrwYQXP5NUDB1OTGHpE1QCyYyvlzezVA1Ph2Qnx6NUDB1uWF2VE1QFscpCIJSzVAgP20wgusNEBiuPTGTps0QKW6kL0WnDNA0mF3W7LiMEAdiurYjSUvQOnc/MP2kylA","dtype":"float64","order":"little","shape":[21]}},"selected":{"id":"1221"},"selection_policy":{"id":"1220"}},"id":"1088","type":"ColumnDataSource"},{"attributes":{"axis_label":"Kappa","formatter":{"id":"1044"},"ticker":{"id":"1015"}},"id":"1014","type":"LinearAxis"},{"attributes":{},"id":"1076","type":"ResetTool"},{"attributes":{},"id":"1075","type":"WheelZoomTool"},{"attributes":{},"id":"1026","type":"CrosshairTool"},{"attributes":{"callback":null},"id":"1074","type":"TapTool"},{"attributes":{"field":"angle"},"id":"1173","type":"CumSum"},{"attributes":{},"id":"1078","type":"CrosshairTool"},{"attributes":{"axis":{"id":"1014"},"ticker":null},"id":"1017","type":"Grid"},{"attributes":{},"id":"1008","type":"DataRange1d"},{"attributes":{},"id":"1077","type":"PanTool"},{"attributes":{},"id":"1012","type":"LinearScale"},{"attributes":{},"id":"1025","type":"PanTool"},{"attributes":{"active_drag":"auto","active_inspect":"auto","active_multi":null,"active_scroll":"auto","active_tap":"auto","logo":null,"tools":[{"id":"1054"},{"id":"1074"},{"id":"1075"},{"id":"1076"},{"id":"1077"},{"id":"1078"},{"id":"1079"}]},"id":"1080","type":"Toolbar"},{"attributes":{},"id":"1079","type":"SaveTool"},{"attributes":{},"id":"1019","type":"BasicTicker"},{"attributes":{"data":{},"selected":{"id":"1217"},"selection_policy":{"id":"1216"}},"id":"1181","type":"ColumnDataSource"},{"attributes":{"callback":null,"tooltips":[["Component ID","@component"],["Kappa","@kappa{0.00}"],["Rho","@rho{0.00}"],["Var. Expl.","@varexp{0.00}%"]]},"id":"1100","type":"HoverTool"},{"attributes":{"axis":{"id":"1018"},"dimension":1,"ticker":null},"id":"1021","type":"Grid"},{"attributes":{"gradient":1,"line_color":"#D3D3D3","y_intercept":0},"id":"1036","type":"Slope"},{"attributes":{"source":{"id":"1001"}},"id":"1097","type":"CDSView"},{"attributes":{"end_angle":{"expr":{"id":"1173"},"units":"rad"},"fill_alpha":{"value":0.7},"fill_color":{"field":"color"},"line_color":{"value":"white"},"radius":{"units":"data","value":0.9},"start_angle":{"expr":{"id":"1172"},"units":"rad"},"x":{"value":0},"y":{"value":1}},"id":"1175","type":"Wedge"},{"attributes":{"fill_alpha":{"value":0.7},"fill_color":{"field":"color"},"line_alpha":{"value":0.7},"line_color":{"field":"color"},"size":{"units":"screen","value":5},"x":{"field":"rho_rank"},"y":{"field":"rho"}},"id":"1140","type":"Circle"},{"attributes":{"end_angle":{"expr":{"id":"1173"},"units":"rad"},"fill_alpha":{"value":0.1},"fill_color":{"field":"color"},"line_alpha":{"value":0.1},"line_color":{"value":"white"},"radius":{"units":"data","value":0.9},"start_angle":{"expr":{"id":"1172"},"units":"rad"},"x":{"value":0},"y":{"value":1}},"id":"1176","type":"Wedge"},{"attributes":{"data_source":{"id":"1001"},"glyph":{"id":"1094"},"hover_glyph":null,"muted_glyph":null,"nonselection_glyph":{"id":"1095"},"selection_glyph":null,"view":{"id":"1097"}},"id":"1096","type":"GlyphRenderer"},{"attributes":{"source":{"id":"1088"}},"id":"1092","type":"CDSView"},{"attributes":{"line_alpha":0.1,"x":{"field":"x"},"y":{"field":"y"}},"id":"1090","type":"Line"},{"attributes":{"fill_alpha":{"value":0.1},"fill_color":{"field":"color"},"line_alpha":{"value":0.1},"line_color":{"field":"color"},"size":{"units":"screen","value":5},"x":{"field":"kappa_rank"},"y":{"field":"kappa"}},"id":"1095","type":"Circle"},{"attributes":{"x":{"field":"x"},"y":{"field":"y"}},"id":"1089","type":"Line"},{"attributes":{"end":22,"start":-1},"id":"1098","type":"Range1d"},{"attributes":{"source":{"id":"1134"}},"id":"1138","type":"CDSView"},{"attributes":{"active_drag":"auto","active_inspect":"auto","active_multi":null,"active_scroll":"auto","active_tap":"auto","logo":null,"tools":[{"id":"1100"},{"id":"1120"},{"id":"1121"},{"id":"1122"},{"id":"1123"},{"id":"1124"},{"id":"1125"}]},"id":"1126","type":"Toolbar"},{"attributes":{"text":"Kappa / Rho Plot"},"id":"1004","type":"Title"},{"attributes":{"data":{"angle":{"__ndarray__":"ZwnWwCKewT+Zogc5eibCPw3vusBNn9E/QewoAeHl0T9EBGFNS+XTP0aWMJb1NdQ/4HLAUAxA1j/TnQ3sVHbWP7jMzlD1dNc/OJBhnTe91z9Tk+Ss2dvXP0d4esN/59c/DlUCCAGj2T/pN5IDTDG+PyXYRMNzIb8/ptx3SUJ61j97uedmxc/XP7F/gpVEDNg/WK+igJ5K2D/j7GKHYobZP0AFhftESL8/","dtype":"float64","order":"little","shape":[21]},"classif":["accepted","accepted","accepted","accepted","accepted","accepted","accepted","accepted","accepted","accepted","accepted","accepted","accepted","ignored","ignored","ignored","ignored","ignored","ignored","ignored","rejected"],"color":["#2ecc71","#2ecc71","#2ecc71","#2ecc71","#2ecc71","#2ecc71","#2ecc71","#2ecc71","#2ecc71","#2ecc71","#2ecc71","#2ecc71","#2ecc71","#3498db","#3498db","#3498db","#3498db","#3498db","#3498db","#3498db","#e74c3c"],"component":["8","18","12","11","14","13","10","9","15","2","1","6","16","0","4","20","7","5","17","3","19"],"kappa":{"__ndarray__":"oEkxQi3GOUD9bZy5Ekg2QKW6kL0WnDNAgP20wgusNEBbHKQiCUs1QKfQBAXGNDZAiQgAEev+NkBevBhBc/k1QNT4dkJ8ejVAOjPEg/9NNkAsmMr5c3s1QAAmtk2S6zZAWaKmvwkuOEAdiurYjSUvQNJhd1uy4jBAYrj0xk6bNEDB1OTGHpE1QBDiKek4rTZApKDvw1rLNkDB1uWF2VE1QOnc/MP2kylA","dtype":"float64","order":"little","shape":[21]},"kappa_rank":{"__ndarray__":"AAAAAAAA8D8AAAAAAAAgQAAAAAAAADJAAAAAAAAAMEAAAAAAAAAuQAAAAAAAACJAAAAAAAAACEAAAAAAAAAkQAAAAAAAACpAAAAAAAAAHEAAAAAAAAAoQAAAAAAAABBAAAAAAAAAAEAAAAAAAAA0QAAAAAAAADNAAAAAAAAAMUAAAAAAAAAmQAAAAAAAABhAAAAAAAAAFEAAAAAAAAAsQAAAAAAAADVA","dtype":"float64","order":"little","shape":[21]},"rho":{"__ndarray__":"0E28X7BSI0DUfS+HaZ8jQBxLGhPM6ClAUjOB38QkK0BMXSpueccrQGuwyifGYStAsEwy6uncK0BhbTtLPV0qQN+4ayntLixAggr1JTRoK0BB09rEshgsQLYuVls+eSxAZ3jT5thKLkD0izdTL7AkQFMPL+L6uSRAKM4wQhpfLUBXrxUzH+ktQLRjoO4S+itA/L1rHkLwLECPNQUeHfgqQKF9uN9jVy1A","dtype":"float64","order":"little","shape":[21]},"rho_rank":{"__ndarray__":"AAAAAAAANUAAAAAAAAA0QAAAAAAAADFAAAAAAAAALEAAAAAAAAAmQAAAAAAAACpAAAAAAAAAJEAAAAAAAAAwQAAAAAAAABxAAAAAAAAAKEAAAAAAAAAgQAAAAAAAABhAAAAAAAAA8D8AAAAAAAAzQAAAAAAAADJAAAAAAAAACEAAAAAAAAAAQAAAAAAAACJAAAAAAAAAFEAAAAAAAAAuQAAAAAAAABBA","dtype":"float64","order":"little","shape":[21]},"size":{"__ndarray__":"G9INpOl1FEDYerFYHGcVQMV4B6dl0ilA6Jfy5T9PKkCsmlmz+tctQJShkIOuZi5A8YcJlyUBMUBOfkChKTExQIHZ14djEjJAqAkj7k1SMkBnaZSCZm0yQDGHxUW0dzJAAAAAAAAANEAAAAAAAAAQQFOJ8AJt1BBA8Rgj6aI0MUASgPFIt2IyQHBauT46mDJA/wZRIGHPMkBlvxZzr+YzQLVca9XC9hBA","dtype":"float64","order":"little","shape":[21]},"varexp":{"__ndarray__":"9bKZo1CGAUA1EyDD7w0CQB5IOA96hxFAqoQU463NEUAEj260ZMoTQCyKLeyhGhRAI31gvfYhFkDLaTPz9VcWQENZuBA+VRdAP5/oqR6dF0A0kD1Ol7sXQEZtxaQtxxdA7/yTQFeAGUA5XfxMeQj+P88Zd1Zc9/4/8F1FAd5bFkAguEldk68XQNLwz7/A6xdAIor4XMYpGEC/xA1y32MZQF6msBL5Hf8/","dtype":"float64","order":"little","shape":[21]},"varexp_rank":{"__ndarray__":"AAAAAAAAMkAAAAAAAAAxQAAAAAAAADBAAAAAAAAALkAAAAAAAAAsQAAAAAAAACpAAAAAAAAAKEAAAAAAAAAmQAAAAAAAACJAAAAAAAAAIEAAAAAAAAAYQAAAAAAAABRAAAAAAAAA8D8AAAAAAAA1QAAAAAAAADRAAAAAAAAAJEAAAAAAAAAcQAAAAAAAABBAAAAAAAAACEAAAAAAAAAAQAAAAAAAADNA","dtype":"float64","order":"little","shape":[21]}},"selected":{"id":"1048"},"selection_policy":{"id":"1047"}},"id":"1001","type":"ColumnDataSource"},{"attributes":{"data_source":{"id":"1134"},"glyph":{"id":"1135"},"hover_glyph":null,"muted_glyph":null,"nonselection_glyph":{"id":"1136"},"selection_glyph":null,"view":{"id":"1138"}},"id":"1137","type":"GlyphRenderer"},{"attributes":{"data":{"x":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21],"y":{"__ndarray__":"Z3jT5thKLkBXrxUzH+ktQCjOMEIaXy1AoX2432NXLUD8vWseQvAsQLYuVls+eSxA37hrKe0uLEBB09rEshgsQLRjoO4S+itAsEwy6uncK0BMXSpueccrQIIK9SU0aCtAa7DKJ8ZhK0BSM4HfxCQrQI81BR4d+CpAYW07Sz1dKkAcSxoTzOgpQFMPL+L6uSRA9Is3Uy+wJEDUfS+HaZ8jQNBNvF+wUiNA","dtype":"float64","order":"little","shape":[21]}},"selected":{"id":"1219"},"selection_policy":{"id":"1218"}},"id":"1134","type":"ColumnDataSource"},{"attributes":{"source":{"id":"1001"}},"id":"1143","type":"CDSView"},{"attributes":{"source":{"id":"1181"}},"id":"1183","type":"CDSView"},{"attributes":{"fill_alpha":{"value":0.1},"fill_color":{"field":"color"},"line_alpha":{"value":0.1},"line_color":{"field":"color"},"size":{"units":"screen","value":5},"x":{"field":"rho_rank"},"y":{"field":"rho"}},"id":"1141","type":"Circle"},{"attributes":{},"id":"1149","type":"DataRange1d"},{"attributes":{},"id":"1211","type":"BasicTickFormatter"},{"attributes":{},"id":"1027","type":"SaveTool"},{"attributes":{"data_source":{"id":"1001"},"glyph":{"id":"1140"},"hover_glyph":null,"muted_glyph":null,"nonselection_glyph":{"id":"1141"},"selection_glyph":null,"view":{"id":"1143"}},"id":"1142","type":"GlyphRenderer"},{"attributes":{"end":22,"start":-1},"id":"1144","type":"Range1d"},{"attributes":{"below":[{"id":"1014"}],"center":[{"id":"1017"},{"id":"1021"},{"id":"1036"},{"id":"1049"}],"js_event_callbacks":{"tap":[{"id":"1185"}]},"left":[{"id":"1018"}],"plot_height":400,"plot_width":400,"renderers":[{"id":"1040"}],"title":{"id":"1004"},"toolbar":{"id":"1028"},"toolbar_location":null,"x_range":{"id":"1006"},"x_scale":{"id":"1010"},"y_range":{"id":"1008"},"y_scale":{"id":"1012"}},"id":"1003","subtype":"Figure","type":"Plot"},{"attributes":{"text":"Variance Explained View"},"id":"1147","type":"Title"},{"attributes":{"below":[{"id":"1157"}],"center":[{"id":"1160"},{"id":"1164"}],"js_event_callbacks":{"tap":[{"id":"1188"}]},"left":[{"id":"1161"}],"plot_height":400,"plot_width":400,"renderers":[{"id":"1177"},{"id":"1182"}],"title":{"id":"1147"},"toolbar":{"id":"1168"},"toolbar_location":null,"x_range":{"id":"1149"},"x_scale":{"id":"1153"},"y_range":{"id":"1151"},"y_scale":{"id":"1155"}},"id":"1146","subtype":"Figure","type":"Plot"},{"attributes":{},"id":"1220","type":"UnionRenderers"},{"attributes":{},"id":"1221","type":"Selection"},{"attributes":{},"id":"1151","type":"DataRange1d"},{"attributes":{"args":{"div":{"id":"1184"},"outdir":"/tmp/data/four-echo/TED.four-echo","source_comp_table":{"id":"1001"}},"code":"\\n    // Accessing the selected component ID\\n    var data          = source_comp_table.data;\\n    var selected_idx = source_comp_table.selected.indices;\\n    if(selected_idx &gt; 0) {\\n        // A component has been selected\\n        // -----------------------------\\n        var components = data[&#x27;component&#x27;]\\n        var selected = components[selected_idx]\\n        var selected_padded = &#x27;&#x27; + selected;\\n        while (selected_padded.length &lt; 2) {\\n            selected_padded = &#x27;0&#x27; + selected_padded;\\n        }\\n        var selected_padded_forIMG = &#x27;0&#x27; + selected_padded\\n        var selected_padded_C = &#x27;ica_&#x27; + selected_padded\\n\\n        // Find color for selected component\\n        var colors = data[&#x27;color&#x27;]\\n        var this_component_color = colors[selected_idx]\\n\\n        // Image Below Plots\\n        div.text = \\"\\"\\n        var line = \\"&lt;span&gt;&lt;img src=&#x27;./figures/comp_\\"+selected_padded_forIMG+\\".png&#x27;\\" +\\n            \\" alt=&#x27;Component Map&#x27;&gt;&lt;span&gt;\\\\n\\";\\n        console.log(&#x27;Linea: &#x27; + line)\\n        var text = div.text.concat(line);\\n        var lines = text.split(\\"\\\\n\\")\\n            if (lines.length &gt; 35)\\n                lines.shift();\\n        div.text = lines.join(\\"\\\\n\\");\\n\\n    } else {\\n        // No component has been selected\\n        // ------------------------------\\n        // Set Component color to Black\\n        var this_component_color = &#x27;#000000&#x27;\\n\\n        // Image Below Plots\\n        div.text = \\"\\"\\n        var line = \\"&lt;p&gt;Please select an individual component to view it in more detail&lt;/p&gt;\\\\n\\"\\n        var text = div.text.concat(line);\\n\\n    }\\n    "},"id":"1185","type":"CustomJS"},{"attributes":{"formatter":{"id":"1203"},"ticker":{"id":"1158"},"visible":false},"id":"1157","type":"LinearAxis"},{"attributes":{},"id":"1158","type":"BasicTicker"},{"attributes":{},"id":"1155","type":"LinearScale"},{"attributes":{"formatter":{"id":"1205"},"ticker":{"id":"1162"},"visible":false},"id":"1161","type":"LinearAxis"},{"attributes":{},"id":"1153","type":"LinearScale"},{"attributes":{"axis":{"id":"1157"},"ticker":null,"visible":false},"id":"1160","type":"Grid"},{"attributes":{},"id":"1047","type":"UnionRenderers"},{"attributes":{"axis":{"id":"1161"},"dimension":1,"ticker":null,"visible":false},"id":"1164","type":"Grid"},{"attributes":{},"id":"1203","type":"BasicTickFormatter"},{"attributes":{},"id":"1162","type":"BasicTicker"},{"attributes":{"fill_color":{"value":"white"},"line_color":{"value":"white"},"size":{"units":"screen","value":150},"x":{"value":0},"y":{"value":1}},"id":"1180","type":"Circle"},{"attributes":{"data_source":{"id":"1181"},"glyph":{"id":"1180"},"hover_glyph":null,"muted_glyph":null,"view":{"id":"1183"}},"id":"1182","type":"GlyphRenderer"},{"attributes":{"callback":null},"id":"1166","type":"TapTool"},{"attributes":{"callback":null,"tooltips":[["Component ID"," @component"],["Kappa","@kappa{0.00}"],["Rho","@rho{0.00}"],["Var. Exp.","@varexp{0.00}%"]]},"id":"1165","type":"HoverTool"},{"attributes":{},"id":"1213","type":"BasicTickFormatter"},{"attributes":{},"id":"1167","type":"SaveTool"},{"attributes":{"callback":null,"tooltips":[["Component ID","@component"],["Kappa","@kappa{0.00}"],["Rho","@rho{0.00}"],["Var. Expl.","@varexp{0.00}%"]]},"id":"1054","type":"HoverTool"},{"attributes":{"children":[{"id":"1228"},{"id":"1226"}]},"id":"1229","type":"Row"},{"attributes":{"source":{"id":"1001"}},"id":"1041","type":"CDSView"},{"attributes":{},"id":"1205","type":"BasicTickFormatter"},{"attributes":{},"id":"1216","type":"UnionRenderers"},{"attributes":{"fill_alpha":{"value":0.1},"fill_color":{"field":"color"},"line_alpha":{"value":0.1},"line_color":{"field":"color"},"size":{"field":"size","units":"screen"},"x":{"field":"kappa"},"y":{"field":"rho"}},"id":"1039","type":"Circle"},{"attributes":{},"id":"1217","type":"Selection"},{"attributes":{"fill_alpha":{"value":0.7},"fill_color":{"field":"color"},"line_alpha":{"value":0.7},"line_color":{"field":"color"},"size":{"units":"screen","value":5},"x":{"field":"kappa_rank"},"y":{"field":"kappa"}},"id":"1094","type":"Circle"},{"attributes":{"background_fill_alpha":0.5,"items":[{"id":"1050"},{"id":"1051"},{"id":"1052"}],"location":"bottom_right","orientation":"horizontal"},"id":"1049","type":"Legend"},{"attributes":{"active_drag":"auto","active_inspect":"auto","active_multi":null,"active_scroll":"auto","active_tap":"auto","logo":null,"tools":[{"id":"1002"},{"id":"1022"},{"id":"1023"},{"id":"1024"},{"id":"1025"},{"id":"1026"},{"id":"1027"}]},"id":"1028","type":"Toolbar"},{"attributes":{"height":750,"height_policy":"fixed","width":500},"id":"1184","type":"Div"},{"attributes":{"data_source":{"id":"1001"},"glyph":{"id":"1038"},"hover_glyph":null,"muted_glyph":null,"nonselection_glyph":{"id":"1039"},"selection_glyph":null,"view":{"id":"1041"}},"id":"1040","type":"GlyphRenderer"},{"attributes":{"children":[{"id":"1003"},{"id":"1146"}]},"id":"1189","type":"Row"},{"attributes":{},"id":"1207","type":"BasicTickFormatter"},{"attributes":{"args":{"div":{"id":"1184"},"outdir":"/tmp/data/four-echo/TED.four-echo","source_comp_table":{"id":"1001"}},"code":"\\n    // Accessing the selected component ID\\n    var data          = source_comp_table.data;\\n    var selected_idx = source_comp_table.selected.indices;\\n    if(selected_idx &gt; 0) {\\n        // A component has been selected\\n        // -----------------------------\\n        var components = data[&#x27;component&#x27;]\\n        var selected = components[selected_idx]\\n        var selected_padded = &#x27;&#x27; + selected;\\n        while (selected_padded.length &lt; 2) {\\n            selected_padded = &#x27;0&#x27; + selected_padded;\\n        }\\n        var selected_padded_forIMG = &#x27;0&#x27; + selected_padded\\n        var selected_padded_C = &#x27;ica_&#x27; + selected_padded\\n\\n        // Find color for selected component\\n        var colors = data[&#x27;color&#x27;]\\n        var this_component_color = colors[selected_idx]\\n\\n        // Image Below Plots\\n        div.text = \\"\\"\\n        var line = \\"&lt;span&gt;&lt;img src=&#x27;./figures/comp_\\"+selected_padded_forIMG+\\".png&#x27;\\" +\\n            \\" alt=&#x27;Component Map&#x27;&gt;&lt;span&gt;\\\\n\\";\\n        console.log(&#x27;Linea: &#x27; + line)\\n        var text = div.text.concat(line);\\n        var lines = text.split(\\"\\\\n\\")\\n            if (lines.length &gt; 35)\\n                lines.shift();\\n        div.text = lines.join(\\"\\\\n\\");\\n\\n    } else {\\n        // No component has been selected\\n        // ------------------------------\\n        // Set Component color to Black\\n        var this_component_color = &#x27;#000000&#x27;\\n\\n        // Image Below Plots\\n        div.text = \\"\\"\\n        var line = \\"&lt;p&gt;Please select an individual component to view it in more detail&lt;/p&gt;\\\\n\\"\\n        var text = div.text.concat(line);\\n\\n    }\\n    "},"id":"1186","type":"CustomJS"},{"attributes":{"args":{"div":{"id":"1184"},"outdir":"/tmp/data/four-echo/TED.four-echo","source_comp_table":{"id":"1001"}},"code":"\\n    // Accessing the selected component ID\\n    var data          = source_comp_table.data;\\n    var selected_idx = source_comp_table.selected.indices;\\n    if(selected_idx &gt; 0) {\\n        // A component has been selected\\n        // -----------------------------\\n        var components = data[&#x27;component&#x27;]\\n        var selected = components[selected_idx]\\n        var selected_padded = &#x27;&#x27; + selected;\\n        while (selected_padded.length &lt; 2) {\\n            selected_padded = &#x27;0&#x27; + selected_padded;\\n        }\\n        var selected_padded_forIMG = &#x27;0&#x27; + selected_padded\\n        var selected_padded_C = &#x27;ica_&#x27; + selected_padded\\n\\n        // Find color for selected component\\n        var colors = data[&#x27;color&#x27;]\\n        var this_component_color = colors[selected_idx]\\n\\n        // Image Below Plots\\n        div.text = \\"\\"\\n        var line = \\"&lt;span&gt;&lt;img src=&#x27;./figures/comp_\\"+selected_padded_forIMG+\\".png&#x27;\\" +\\n            \\" alt=&#x27;Component Map&#x27;&gt;&lt;span&gt;\\\\n\\";\\n        console.log(&#x27;Linea: &#x27; + line)\\n        var text = div.text.concat(line);\\n        var lines = text.split(\\"\\\\n\\")\\n            if (lines.length &gt; 35)\\n                lines.shift();\\n        div.text = lines.join(\\"\\\\n\\");\\n\\n    } else {\\n        // No component has been selected\\n        // ------------------------------\\n        // Set Component color to Black\\n        var this_component_color = &#x27;#000000&#x27;\\n\\n        // Image Below Plots\\n        div.text = \\"\\"\\n        var line = \\"&lt;p&gt;Please select an individual component to view it in more detail&lt;/p&gt;\\\\n\\"\\n        var text = div.text.concat(line);\\n\\n    }\\n    "},"id":"1187","type":"CustomJS"},{"attributes":{"toolbar":{"id":"1227"},"toolbar_location":"left"},"id":"1228","type":"ToolbarBox"},{"attributes":{},"id":"1044","type":"BasicTickFormatter"},{"attributes":{},"id":"1218","type":"UnionRenderers"},{"attributes":{"args":{"div":{"id":"1184"},"outdir":"/tmp/data/four-echo/TED.four-echo","source_comp_table":{"id":"1001"}},"code":"\\n    // Accessing the selected component ID\\n    var data          = source_comp_table.data;\\n    var selected_idx = source_comp_table.selected.indices;\\n    if(selected_idx &gt; 0) {\\n        // A component has been selected\\n        // -----------------------------\\n        var components = data[&#x27;component&#x27;]\\n        var selected = components[selected_idx]\\n        var selected_padded = &#x27;&#x27; + selected;\\n        while (selected_padded.length &lt; 2) {\\n            selected_padded = &#x27;0&#x27; + selected_padded;\\n        }\\n        var selected_padded_forIMG = &#x27;0&#x27; + selected_padded\\n        var selected_padded_C = &#x27;ica_&#x27; + selected_padded\\n\\n        // Find color for selected component\\n        var colors = data[&#x27;color&#x27;]\\n        var this_component_color = colors[selected_idx]\\n\\n        // Image Below Plots\\n        div.text = \\"\\"\\n        var line = \\"&lt;span&gt;&lt;img src=&#x27;./figures/comp_\\"+selected_padded_forIMG+\\".png&#x27;\\" +\\n            \\" alt=&#x27;Component Map&#x27;&gt;&lt;span&gt;\\\\n\\";\\n        console.log(&#x27;Linea: &#x27; + line)\\n        var text = div.text.concat(line);\\n        var lines = text.split(\\"\\\\n\\")\\n            if (lines.length &gt; 35)\\n                lines.shift();\\n        div.text = lines.join(\\"\\\\n\\");\\n\\n    } else {\\n        // No component has been selected\\n        // ------------------------------\\n        // Set Component color to Black\\n        var this_component_color = &#x27;#000000&#x27;\\n\\n        // Image Below Plots\\n        div.text = \\"\\"\\n        var line = \\"&lt;p&gt;Please select an individual component to view it in more detail&lt;/p&gt;\\\\n\\"\\n        var text = div.text.concat(line);\\n\\n    }\\n    "},"id":"1188","type":"CustomJS"},{"attributes":{},"id":"1219","type":"Selection"},{"attributes":{"children":[{"id":"1101"},{"id":"1055"}]},"id":"1190","type":"Row"},{"attributes":{"children":[{"id":"1189"},{"id":"1190"}]},"id":"1191","type":"Column"},{"attributes":{},"id":"1046","type":"BasicTickFormatter"},{"attributes":{"children":[{"id":"1184"}]},"id":"1192","type":"Column"},{"attributes":{"children":[{"id":"1191"},{"id":"1192"}]},"id":"1193","type":"Row"},{"attributes":{"children":[[{"id":"1193"},0,0]]},"id":"1226","type":"GridBox"},{"attributes":{"toolbars":[{"id":"1080"},{"id":"1126"},{"id":"1028"},{"id":"1168"}],"tools":[{"id":"1054"},{"id":"1074"},{"id":"1075"},{"id":"1076"},{"id":"1077"},{"id":"1078"},{"id":"1079"},{"id":"1100"},{"id":"1120"},{"id":"1121"},{"id":"1122"},{"id":"1123"},{"id":"1124"},{"id":"1125"},{"id":"1002"},{"id":"1022"},{"id":"1023"},{"id":"1024"},{"id":"1025"},{"id":"1026"},{"id":"1027"},{"id":"1165"},{"id":"1166"},{"id":"1167"}]},"id":"1227","type":"ProxyToolbar"},{"attributes":{},"id":"1209","type":"BasicTickFormatter"}],"root_ids":["1229"]},"title":"Bokeh Application","version":"2.2.3"}}';
                var render_items = [{"docid":"1306942f-a898-4212-9c67-e4111645076d","root_ids":["1229"],"roots":{"1229":"53913f50-9bde-41be-a404-1697c4c6ea84"}}];
                root.Bokeh.embed.embed_items(docs_json, render_items);

                }
                if (root.Bokeh !== undefined) {
                  embed_document(root);
                } else {
                  var attempts = 0;
                  var timer = setInterval(function(root) {
                    if (root.Bokeh !== undefined) {
                      clearInterval(timer);
                      embed_document(root);
                    } else {
                      attempts++;
                      if (attempts > 100) {
                        clearInterval(timer);
                        console.log("Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing");
                      }
                    }
                  }, 10, root)
                }
              })(window);
            });
          };
          if (document.readyState != "loading") fn();
          else document.addEventListener("DOMContentLoaded", fn);
        })();
</script>

</body>
</html>

For running the 4-echo integration test with the current main (ab7afd80)

eurunuela commented 3 years ago

Thank you @jbteves ! It's funny how all components in all 4 graphs get printed through the console, except for component 11.

I'm going to have to replicate this and add more logs to see what's really going on. Right now, my guess is that the callback function for tapping this particular component doesn't get triggered. This will not be an issue when (if) we move to React-based reports.

Edit: Which of the integration tests can I use to replicate this?

jbteves commented 3 years ago

I made a mistake and uploaded the wrong html file, but here is the 4-echo integration test with the current main, component 8 not rendering. See above for edited comment.

One note on callbacks is that hovering over the component does correctly bring up the pop-up.

eurunuela commented 3 years ago

Thank you @jbteves . I think I have found the issue and it seems to be related to the component with the highest kappa (which is the first one in the component table afaik). The callback function for taps only updates the figure when the selected components has an index bigger than 0. Well, the index of the first component in the table is 0, and so the code that updates the figure doesn't get triggered.

I'm working on a quick fix right now, but I wonder how we have missed this in the past. Have all of our reports had this issue?

Edit: See #793