3dmol / 3Dmol.js

WebGL accelerated JavaScript molecular graphics library
https://3dmol.org/
Other
782 stars 192 forks source link

[BUG] - When trying to display multiple viewers, an error occurs specifically when trying to display over 16 structures in Chrome, Brave, JupyterLab App #795

Open coltonbh opened 1 month ago

coltonbh commented 1 month ago

Describe the bug When I try to visualize multiple molecules in a notebook, I can do so but only up to 16 images, then I start to get the broken images shown below that do not fill with an image. This problem occurs exactly after 16 images are displayed. This happens when I am viewing multiple images all generated separately (not just the toy code below generating the same image 17 times).

Chrome reports WARNING: Too many active WebGL contexts. Oldest context will be lost. So I suspect this has something to do with why it is dropping frames. Is py3Dmol not build to handle multiple viewer contexts simultaneously?

In Firefox (where I can view all the images) there are still many WebGL warnings that get raised, though it seems Firefox allows as many WebGL contexts as you request, so it does display the images.

To Reproduce In a Jupyter Notebook:

import py3Dmol as p3d
from IPython.display import HTML, display

def generate_structure_html(
    xyz: str,
    *,
    width: int = 600,
    height: int = 450,
):
    viewer = p3d.view(width=width, height=height)
    viewer.addModel(xyz, "xyz")
    style = {"stick": {}, "sphere": {"scale": 0.3}}
    viewer.setStyle(style)
    viewer.zoomTo()
    # Generate the HTML and JavaScript for the viewer
    view_html = viewer._make_html()
    return view_html

xyz = "40\nqcio_charge=0 qcio_multiplicity=1\nO  0.06508690357467388 1.18479992729861894 0.06867751492175411\nC  -0.00165813140263107 -0.03609502912925949 0.03946922866737634\nN  -1.18395611498071029 -0.76480792759355631 0.04492333226176047\nC  -2.50437064141043964 -0.26640734759553025 0.02475447177600293\nC  -2.83121423839798325 1.08774845980741164 -0.06879894815307737\nC  -4.17221326322076447 1.51199018811511610 -0.09265431412728496\nC  -4.49245959335727996 2.98636059607553594 -0.18031988636583643\nF  -3.73077387416199224 3.64241504435516772 -1.09741164451164885\nF  -4.30224600340911056 3.62916610364057846 1.00356506225336561\nF  -5.78655996679741857 3.22967345420663232 -0.53262905040040542\nC  -5.19338076141921956 0.55374837924439935 -0.00758381830619198\nC  -4.88857542446560078 -0.81099327392325360 0.09216029710486072\nC  -5.98790800791982125 -1.84415054130335787 0.15493386863131678\nF  -6.36044888942217934 -2.27405829863394304 -1.08086731079364107\nF  -7.12035913563407430 -1.38485817995865879 0.75376816217768472\nF  -5.62585471813701243 -2.96066177706581124 0.84650360942543135\nC  -3.54015376190725695 -1.20711915723216889 0.09672226660668863\nN  1.09424261479392393 -0.88815359569472752 -0.00383344141109454\nC  2.46100665510126237 -0.53809555466978498 0.03723753504233255\nC  2.93311182690861827 0.76635707601686243 0.19455744544318801\nC  4.31231554278815210 1.04127450933191001 0.22888058296361002\nC  4.78937193342163159 2.46747280482898379 0.37856006925084840\nF  4.13160798141593943 3.14697448758001075 1.35696345875325997\nF  4.62826698171469797 3.19057799659058849 -0.76256300590357051\nF  6.11289641199850298 2.55663254110120164 0.69201153853498398\nC  5.22328814054294455 -0.01733964776731703 0.09616699935510648\nC  4.77196855504313433 -1.33663852677098216 -0.04943896120299709\nC  5.75221321752243586 -2.47395413643234097 -0.20931609514058494\nF  6.06726812131013116 -2.70236799542568695 -1.51282178723386651\nF  6.93205862804359629 -2.25761727329308037 0.43349917987698022\nF  5.27494308232479625 -3.65515493112087597 0.27347710637091033\nC  3.38841166834969520 -1.58131262759298608 -0.08328236964312050\nH  -1.09335483726411287 -1.76651815021341529 0.10809236849463917\nH  -2.05865262356390355 1.85100513361286079 -0.13230605350157229\nH  -6.23681494110607737 0.87416222637102226 -0.01944474763492469\nH  -3.30977637892368071 -2.26976449343180375 0.16433131885259439\nH  0.89525113373332366 -1.87004214477693731 -0.11296265151262672\nH  2.24817031407048340 1.60528850558314740 0.29705976936560408\nH  6.29534836003834108 0.18766696423775914 0.11013897373681260\nH  3.04390323420519193 -2.60720378837207090 -0.20868819723189685\n"

[display(HTML(generate_structure_html(xyz))) for _ in range(17)]

Or with a simpler version that just uses viewer.show() directly:

import py3Dmol as p3d
xyz = "40\nqcio_charge=0 qcio_multiplicity=1\nO  0.06508690357467388 1.18479992729861894 0.06867751492175411\nC  -0.00165813140263107 -0.03609502912925949 0.03946922866737634\nN  -1.18395611498071029 -0.76480792759355631 0.04492333226176047\nC  -2.50437064141043964 -0.26640734759553025 0.02475447177600293\nC  -2.83121423839798325 1.08774845980741164 -0.06879894815307737\nC  -4.17221326322076447 1.51199018811511610 -0.09265431412728496\nC  -4.49245959335727996 2.98636059607553594 -0.18031988636583643\nF  -3.73077387416199224 3.64241504435516772 -1.09741164451164885\nF  -4.30224600340911056 3.62916610364057846 1.00356506225336561\nF  -5.78655996679741857 3.22967345420663232 -0.53262905040040542\nC  -5.19338076141921956 0.55374837924439935 -0.00758381830619198\nC  -4.88857542446560078 -0.81099327392325360 0.09216029710486072\nC  -5.98790800791982125 -1.84415054130335787 0.15493386863131678\nF  -6.36044888942217934 -2.27405829863394304 -1.08086731079364107\nF  -7.12035913563407430 -1.38485817995865879 0.75376816217768472\nF  -5.62585471813701243 -2.96066177706581124 0.84650360942543135\nC  -3.54015376190725695 -1.20711915723216889 0.09672226660668863\nN  1.09424261479392393 -0.88815359569472752 -0.00383344141109454\nC  2.46100665510126237 -0.53809555466978498 0.03723753504233255\nC  2.93311182690861827 0.76635707601686243 0.19455744544318801\nC  4.31231554278815210 1.04127450933191001 0.22888058296361002\nC  4.78937193342163159 2.46747280482898379 0.37856006925084840\nF  4.13160798141593943 3.14697448758001075 1.35696345875325997\nF  4.62826698171469797 3.19057799659058849 -0.76256300590357051\nF  6.11289641199850298 2.55663254110120164 0.69201153853498398\nC  5.22328814054294455 -0.01733964776731703 0.09616699935510648\nC  4.77196855504313433 -1.33663852677098216 -0.04943896120299709\nC  5.75221321752243586 -2.47395413643234097 -0.20931609514058494\nF  6.06726812131013116 -2.70236799542568695 -1.51282178723386651\nF  6.93205862804359629 -2.25761727329308037 0.43349917987698022\nF  5.27494308232479625 -3.65515493112087597 0.27347710637091033\nC  3.38841166834969520 -1.58131262759298608 -0.08328236964312050\nH  -1.09335483726411287 -1.76651815021341529 0.10809236849463917\nH  -2.05865262356390355 1.85100513361286079 -0.13230605350157229\nH  -6.23681494110607737 0.87416222637102226 -0.01944474763492469\nH  -3.30977637892368071 -2.26976449343180375 0.16433131885259439\nH  0.89525113373332366 -1.87004214477693731 -0.11296265151262672\nH  2.24817031407048340 1.60528850558314740 0.29705976936560408\nH  6.29534836003834108 0.18766696423775914 0.11013897373681260\nH  3.04390323420519193 -2.60720378837207090 -0.20868819723189685\n"

xyzview = p3d.view(width=400,height=400)
xyzview.addModel(xyz,'xyz')
xyzview.setStyle({'stick':{}})
xyzview.zoomTo()

[xyzview.show() for _ in range(17)]

Expected behavior 17 structure images are displayed. Instead the 17th image gets cut out and turns into the unhappy face in the browser. See screenshot. I'm guessing Chrome limits the number of WebGL contexts to 16.

Screenshots image

Desktop (please complete the following information):

Additional context Is there a more correct way to display multiple molecules in a single notebook? 16 seems like a low limit and I'd image py3Dmol should be reusing a single WebGL context for multiple structures. Perhaps I am doing something wrong? Thanks so much for your help!

dkoes commented 1 month ago

The maximum number of WebGL contexts is a hard limit set by the browsers. If you want to display multiple molecules you can use a viewer grid. https://3dmol.csb.pitt.edu/doc/global.html#createViewerGrid

coltonbh commented 1 month ago

Got it. So that means if I have a bunch of cells and each is displaying different structures I'm going to hit this limit pretty quickly (16 structures), correct?

If these structures are all related in some way then I can combine them into a single ViewerGrid that will contain them all but only create 1 WebGL context for the object, correct?

I'm curious if there's some way to update the py3Dmol implementation to make the WebGL context shared/global to all calls of .viewer.show() so that as you render more images in subsequent cells they all use the same context. Is this sort of thing possible? Or is there some reason why a WebGL context cannot be shared among separate calls to .view()?

Thanks!

dkoes commented 1 month ago

You can use update on a view object to modify it from another cell (to re-use a view), but not in a colab notebook (since cells are sandboxed from one another). I've pushed a change that uses an IntersectionObserver to restore lost contexts when the scroll into view, however it will never be possible to have more than the browser's limit of contexts all active at the same time.

coltonbh commented 1 month ago

Got it. So what I'm trying to implement is a series of views that allow me to visualize a whole bunch of optimizations. I have the molecule with an animation of the optimization trajectory and a plot of the optimization process like this:

image

I have hundreds of these I want to look at. Is there a way I could implement this correctly using py3Dmol without hitting the 16 context limit? Specifically:

  1. Is it possible to use a WebGL context to back multiple molecule viewers? My understanding from what you shared above is that I cannot. Is this a WebGL limitation or a py3Dmol implementation specific limitation where it creates a new context per viewer, though in theory it's possible to back multiple viewers with a single WebGL context? Could you point me to the place in the code that creates these contexts?
  2. Is it possible to export a png (or other image format) from the viewer object? Perhaps I could just create static images for these views and display those instead of interactive objects--then I could display as many as I'd like.
  3. Any other suggestions for how I could display many more than 16 molecules along with supporting context (like these plots and the titles/subtitles I add to the viewers) using py3Dmol?

Thanks so much!

dkoes commented 1 month ago
  1. Yes, but it comes with performance penalties and I'm not going to do it.
  2. Yes, https://3dmol.org/doc/GLViewer.html#pngURI
  3. In most cases you aren't going to have more than 16 visible on the screen at once so the code I just pushed should mostly work (mostly, because you might have more than 16 and sometimes Chrome may decide to deactivate a visible canvas).
coltonbh commented 1 month ago

Ok thank you very much for the feedback!

Would it be possible to release a new version of py3Dmol to pypi with your changes? I'm building some public libraries for these visualizations and I cannot publish them to pypi if they depend upon a GitHub repo (though I can use your recent push to master for local development).

Thanks for the context and patch!

coltonbh commented 1 month ago

And one final thought on backing multiple viewers with a single WebGL context... I understand the desire to keep the library high performance and responsive! Perhaps it could be an optional flag to pass useGlobalContext or something like that as an escape hatch for when someone (like me) has lots of molecules to view and we are less concerned about the high performance responsiveness of a the viewer and just more concerned about being able to scroll through a couple hundred structures and see them visualized.

EDITED: Removed comment about png. I misread your comment above!

I know you have the createGridViewer but I am unable to add additional context like titles, subtitles, or other images (like the plots), so that becomes the blocker.

Thanks!

coltonbh commented 1 month ago

Can't get the pngURI() function to work for me. When I run viewer.pngURI() it returns the original viewer, not a png string base64 encoded. And if I try to access the .png() method I get the error *** AssertionError: Must instantiate viewer before generating image.. So I have to call viewer.show() and then I can call viewer.png(). However, if I already called viewer.show() this defeats the purpose. I must be doing something wrong!

import py3Dmol as p3d
xyz = "40\nqcio_charge=0 qcio_multiplicity=1\nO  0.06508690357467388 1.18479992729861894 0.06867751492175411\nC  -0.00165813140263107 -0.03609502912925949 0.03946922866737634\nN  -1.18395611498071029 -0.76480792759355631 0.04492333226176047\nC  -2.50437064141043964 -0.26640734759553025 0.02475447177600293\nC  -2.83121423839798325 1.08774845980741164 -0.06879894815307737\nC  -4.17221326322076447 1.51199018811511610 -0.09265431412728496\nC  -4.49245959335727996 2.98636059607553594 -0.18031988636583643\nF  -3.73077387416199224 3.64241504435516772 -1.09741164451164885\nF  -4.30224600340911056 3.62916610364057846 1.00356506225336561\nF  -5.78655996679741857 3.22967345420663232 -0.53262905040040542\nC  -5.19338076141921956 0.55374837924439935 -0.00758381830619198\nC  -4.88857542446560078 -0.81099327392325360 0.09216029710486072\nC  -5.98790800791982125 -1.84415054130335787 0.15493386863131678\nF  -6.36044888942217934 -2.27405829863394304 -1.08086731079364107\nF  -7.12035913563407430 -1.38485817995865879 0.75376816217768472\nF  -5.62585471813701243 -2.96066177706581124 0.84650360942543135\nC  -3.54015376190725695 -1.20711915723216889 0.09672226660668863\nN  1.09424261479392393 -0.88815359569472752 -0.00383344141109454\nC  2.46100665510126237 -0.53809555466978498 0.03723753504233255\nC  2.93311182690861827 0.76635707601686243 0.19455744544318801\nC  4.31231554278815210 1.04127450933191001 0.22888058296361002\nC  4.78937193342163159 2.46747280482898379 0.37856006925084840\nF  4.13160798141593943 3.14697448758001075 1.35696345875325997\nF  4.62826698171469797 3.19057799659058849 -0.76256300590357051\nF  6.11289641199850298 2.55663254110120164 0.69201153853498398\nC  5.22328814054294455 -0.01733964776731703 0.09616699935510648\nC  4.77196855504313433 -1.33663852677098216 -0.04943896120299709\nC  5.75221321752243586 -2.47395413643234097 -0.20931609514058494\nF  6.06726812131013116 -2.70236799542568695 -1.51282178723386651\nF  6.93205862804359629 -2.25761727329308037 0.43349917987698022\nF  5.27494308232479625 -3.65515493112087597 0.27347710637091033\nC  3.38841166834969520 -1.58131262759298608 -0.08328236964312050\nH  -1.09335483726411287 -1.76651815021341529 0.10809236849463917\nH  -2.05865262356390355 1.85100513361286079 -0.13230605350157229\nH  -6.23681494110607737 0.87416222637102226 -0.01944474763492469\nH  -3.30977637892368071 -2.26976449343180375 0.16433131885259439\nH  0.89525113373332366 -1.87004214477693731 -0.11296265151262672\nH  2.24817031407048340 1.60528850558314740 0.29705976936560408\nH  6.29534836003834108 0.18766696423775914 0.11013897373681260\nH  3.04390323420519193 -2.60720378837207090 -0.20868819723189685\n"

xyzview = p3d.view(width=400,height=400)
xyzview.addModel(xyz,'xyz')
xyzview.setStyle({'stick':{}})
xyzview.zoomTo()
new_viewer = xyzview.pngURI()
assert new_viewer is xyzview
png = xyzview.png()

image

This works, though the whole point is to avoid displaying a viewer so I'm doing something wrong:

import py3Dmol as p3d
xyz = "40\nqcio_charge=0 qcio_multiplicity=1\nO  0.06508690357467388 1.18479992729861894 0.06867751492175411\nC  -0.00165813140263107 -0.03609502912925949 0.03946922866737634\nN  -1.18395611498071029 -0.76480792759355631 0.04492333226176047\nC  -2.50437064141043964 -0.26640734759553025 0.02475447177600293\nC  -2.83121423839798325 1.08774845980741164 -0.06879894815307737\nC  -4.17221326322076447 1.51199018811511610 -0.09265431412728496\nC  -4.49245959335727996 2.98636059607553594 -0.18031988636583643\nF  -3.73077387416199224 3.64241504435516772 -1.09741164451164885\nF  -4.30224600340911056 3.62916610364057846 1.00356506225336561\nF  -5.78655996679741857 3.22967345420663232 -0.53262905040040542\nC  -5.19338076141921956 0.55374837924439935 -0.00758381830619198\nC  -4.88857542446560078 -0.81099327392325360 0.09216029710486072\nC  -5.98790800791982125 -1.84415054130335787 0.15493386863131678\nF  -6.36044888942217934 -2.27405829863394304 -1.08086731079364107\nF  -7.12035913563407430 -1.38485817995865879 0.75376816217768472\nF  -5.62585471813701243 -2.96066177706581124 0.84650360942543135\nC  -3.54015376190725695 -1.20711915723216889 0.09672226660668863\nN  1.09424261479392393 -0.88815359569472752 -0.00383344141109454\nC  2.46100665510126237 -0.53809555466978498 0.03723753504233255\nC  2.93311182690861827 0.76635707601686243 0.19455744544318801\nC  4.31231554278815210 1.04127450933191001 0.22888058296361002\nC  4.78937193342163159 2.46747280482898379 0.37856006925084840\nF  4.13160798141593943 3.14697448758001075 1.35696345875325997\nF  4.62826698171469797 3.19057799659058849 -0.76256300590357051\nF  6.11289641199850298 2.55663254110120164 0.69201153853498398\nC  5.22328814054294455 -0.01733964776731703 0.09616699935510648\nC  4.77196855504313433 -1.33663852677098216 -0.04943896120299709\nC  5.75221321752243586 -2.47395413643234097 -0.20931609514058494\nF  6.06726812131013116 -2.70236799542568695 -1.51282178723386651\nF  6.93205862804359629 -2.25761727329308037 0.43349917987698022\nF  5.27494308232479625 -3.65515493112087597 0.27347710637091033\nC  3.38841166834969520 -1.58131262759298608 -0.08328236964312050\nH  -1.09335483726411287 -1.76651815021341529 0.10809236849463917\nH  -2.05865262356390355 1.85100513361286079 -0.13230605350157229\nH  -6.23681494110607737 0.87416222637102226 -0.01944474763492469\nH  -3.30977637892368071 -2.26976449343180375 0.16433131885259439\nH  0.89525113373332366 -1.87004214477693731 -0.11296265151262672\nH  2.24817031407048340 1.60528850558314740 0.29705976936560408\nH  6.29534836003834108 0.18766696423775914 0.11013897373681260\nH  3.04390323420519193 -2.60720378837207090 -0.20868819723189685\n"

xyzview = p3d.view(width=400,height=400)
xyzview.addModel(xyz,'xyz')
xyzview.setStyle({'stick':{}})
xyzview.zoomTo()
xyzview.show()
xyzview.png()

image

coltonbh commented 1 month ago

Ok based on further inspection it seems the .png() function is for introspecting an already-displayed viewer and then exporting a png of that image--including any modifications made by hand to the orientation--to a .png file. Not for returning png data in place of a viewer.

Is it possible to simply export from a viewer the raw png_b64 data that would be the original frame without having to display the viewer? That way I could get around the 16 image limit and use py3Dmol to generate a whole bunch of png images and display as many as I'd like. This is what I meant by "Is it possible to export a png (or other image format) from the viewer object? Perhaps I could just create static images for these views and display those instead of interactive objects--then I could display as many as I'd like." above.

Thanks again for the help! Starting to get a feel for the library...

dkoes commented 1 month ago

Try out the latest version (2.2.1) and see if it fixes your issues.

coltonbh commented 1 month ago

Ok--that's a clever solution to bring the contexts back into "active" mode upon scrolling.

It sometimes works, and sometimes doesn't. The behavior is a bit random and I can't quite pin down what causes these different results.

As you can see here it often leaves space blank, even after scrolling in and out of frame:

image

You can also see how sometimes scrolling into frame activates some but not others:

image

It also introduces a new behavior (bug?) where when I switch between notebook tabs if I already had 16 images in the previous tab all the images in the new tab are empty but without the little broken icon--just empty space. In this mode, even when I re-execute the cells they stay blank. This is kind of a bad failure mode. If I run the entire notebook again it seems to fix it:

image

And other times it appears to work just as expected--re-rendering the active viewers when they come into view, which is awesome!

I'd say this is probably the right solution--just keep "active" those that are in-frame. Not sure how much control JS gives you to squeeze out some of the bugs, but when it works this is really nice :)

dkoes commented 1 month ago

Can you share a notebook? If you have a fully reproducible way to exhibit the tab switching behavior, I'd like to see what is going on.

Part of the problem is there is no controlling which contexts the browser decides to kill and sometimes it will kill one that is visible.

coltonbh commented 1 month ago

So this most basic notebook will give the case where the image never re-renders even if you scroll in and out of frame.

Case 1

import py3Dmol as p3d
xyz = "40\nqcio_charge=0 qcio_multiplicity=1\nO  0.06508690357467388 1.18479992729861894 0.06867751492175411\nC  -0.00165813140263107 -0.03609502912925949 0.03946922866737634\nN  -1.18395611498071029 -0.76480792759355631 0.04492333226176047\nC  -2.50437064141043964 -0.26640734759553025 0.02475447177600293\nC  -2.83121423839798325 1.08774845980741164 -0.06879894815307737\nC  -4.17221326322076447 1.51199018811511610 -0.09265431412728496\nC  -4.49245959335727996 2.98636059607553594 -0.18031988636583643\nF  -3.73077387416199224 3.64241504435516772 -1.09741164451164885\nF  -4.30224600340911056 3.62916610364057846 1.00356506225336561\nF  -5.78655996679741857 3.22967345420663232 -0.53262905040040542\nC  -5.19338076141921956 0.55374837924439935 -0.00758381830619198\nC  -4.88857542446560078 -0.81099327392325360 0.09216029710486072\nC  -5.98790800791982125 -1.84415054130335787 0.15493386863131678\nF  -6.36044888942217934 -2.27405829863394304 -1.08086731079364107\nF  -7.12035913563407430 -1.38485817995865879 0.75376816217768472\nF  -5.62585471813701243 -2.96066177706581124 0.84650360942543135\nC  -3.54015376190725695 -1.20711915723216889 0.09672226660668863\nN  1.09424261479392393 -0.88815359569472752 -0.00383344141109454\nC  2.46100665510126237 -0.53809555466978498 0.03723753504233255\nC  2.93311182690861827 0.76635707601686243 0.19455744544318801\nC  4.31231554278815210 1.04127450933191001 0.22888058296361002\nC  4.78937193342163159 2.46747280482898379 0.37856006925084840\nF  4.13160798141593943 3.14697448758001075 1.35696345875325997\nF  4.62826698171469797 3.19057799659058849 -0.76256300590357051\nF  6.11289641199850298 2.55663254110120164 0.69201153853498398\nC  5.22328814054294455 -0.01733964776731703 0.09616699935510648\nC  4.77196855504313433 -1.33663852677098216 -0.04943896120299709\nC  5.75221321752243586 -2.47395413643234097 -0.20931609514058494\nF  6.06726812131013116 -2.70236799542568695 -1.51282178723386651\nF  6.93205862804359629 -2.25761727329308037 0.43349917987698022\nF  5.27494308232479625 -3.65515493112087597 0.27347710637091033\nC  3.38841166834969520 -1.58131262759298608 -0.08328236964312050\nH  -1.09335483726411287 -1.76651815021341529 0.10809236849463917\nH  -2.05865262356390355 1.85100513361286079 -0.13230605350157229\nH  -6.23681494110607737 0.87416222637102226 -0.01944474763492469\nH  -3.30977637892368071 -2.26976449343180375 0.16433131885259439\nH  0.89525113373332366 -1.87004214477693731 -0.11296265151262672\nH  2.24817031407048340 1.60528850558314740 0.29705976936560408\nH  6.29534836003834108 0.18766696423775914 0.11013897373681260\nH  3.04390323420519193 -2.60720378837207090 -0.20868819723189685\n"

xyzview = p3d.view(width=400,height=400)
xyzview.addModel(xyz,'xyz')
xyzview.setStyle({'stick':{}})
xyzview.zoomTo()

[xyzview.show() for _ in range(17)]

If you just create another cell beneath this one and run the same code again:

import py3Dmol as p3d
xyz = "40\nqcio_charge=0 qcio_multiplicity=1\nO  0.06508690357467388 1.18479992729861894 0.06867751492175411\nC  -0.00165813140263107 -0.03609502912925949 0.03946922866737634\nN  -1.18395611498071029 -0.76480792759355631 0.04492333226176047\nC  -2.50437064141043964 -0.26640734759553025 0.02475447177600293\nC  -2.83121423839798325 1.08774845980741164 -0.06879894815307737\nC  -4.17221326322076447 1.51199018811511610 -0.09265431412728496\nC  -4.49245959335727996 2.98636059607553594 -0.18031988636583643\nF  -3.73077387416199224 3.64241504435516772 -1.09741164451164885\nF  -4.30224600340911056 3.62916610364057846 1.00356506225336561\nF  -5.78655996679741857 3.22967345420663232 -0.53262905040040542\nC  -5.19338076141921956 0.55374837924439935 -0.00758381830619198\nC  -4.88857542446560078 -0.81099327392325360 0.09216029710486072\nC  -5.98790800791982125 -1.84415054130335787 0.15493386863131678\nF  -6.36044888942217934 -2.27405829863394304 -1.08086731079364107\nF  -7.12035913563407430 -1.38485817995865879 0.75376816217768472\nF  -5.62585471813701243 -2.96066177706581124 0.84650360942543135\nC  -3.54015376190725695 -1.20711915723216889 0.09672226660668863\nN  1.09424261479392393 -0.88815359569472752 -0.00383344141109454\nC  2.46100665510126237 -0.53809555466978498 0.03723753504233255\nC  2.93311182690861827 0.76635707601686243 0.19455744544318801\nC  4.31231554278815210 1.04127450933191001 0.22888058296361002\nC  4.78937193342163159 2.46747280482898379 0.37856006925084840\nF  4.13160798141593943 3.14697448758001075 1.35696345875325997\nF  4.62826698171469797 3.19057799659058849 -0.76256300590357051\nF  6.11289641199850298 2.55663254110120164 0.69201153853498398\nC  5.22328814054294455 -0.01733964776731703 0.09616699935510648\nC  4.77196855504313433 -1.33663852677098216 -0.04943896120299709\nC  5.75221321752243586 -2.47395413643234097 -0.20931609514058494\nF  6.06726812131013116 -2.70236799542568695 -1.51282178723386651\nF  6.93205862804359629 -2.25761727329308037 0.43349917987698022\nF  5.27494308232479625 -3.65515493112087597 0.27347710637091033\nC  3.38841166834969520 -1.58131262759298608 -0.08328236964312050\nH  -1.09335483726411287 -1.76651815021341529 0.10809236849463917\nH  -2.05865262356390355 1.85100513361286079 -0.13230605350157229\nH  -6.23681494110607737 0.87416222637102226 -0.01944474763492469\nH  -3.30977637892368071 -2.26976449343180375 0.16433131885259439\nH  0.89525113373332366 -1.87004214477693731 -0.11296265151262672\nH  2.24817031407048340 1.60528850558314740 0.29705976936560408\nH  6.29534836003834108 0.18766696423775914 0.11013897373681260\nH  3.04390323420519193 -2.60720378837207090 -0.20868819723189685\n"

xyzview = p3d.view(width=400,height=400)
xyzview.addModel(xyz,'xyz')
xyzview.setStyle({'stick':{}})
xyzview.zoomTo()

[xyzview.show() for _ in range(17)]

You can get this first case where viewers are blank without the broken image icon.

Case 2

Scrolling up and down should give you a repro where some viewers are empty but with the broken viewer icon.

Case 3

Ugh. This is bit harder to reproduce. It seems to happen in my larger notebook which has animations and viewers in it and relies upon a lot of local data... But this seems to get somewhere close:

In a second notebook add this:

import py3Dmol as p3d
multi_xyz = """39
qcio_charge=-1 qcio_multiplicity=1
O  0.06508690357467388 1.18479992729861894 0.06867751492175411
C  -0.00165813140263107 -0.03609502912925949 0.03946922866737634
N  -1.18395611498071029 -0.76480792759355631 0.04492333226176047
C  -2.50437064141043964 -0.26640734759553025 0.02475447177600293
C  -2.83121423839798325 1.08774845980741164 -0.06879894815307737
C  -4.17221326322076447 1.51199018811511610 -0.09265431412728496
C  -4.49245959335727996 2.98636059607553594 -0.18031988636583643
F  -3.73077387416199224 3.64241504435516772 -1.09741164451164885
F  -4.30224600340911056 3.62916610364057846 1.00356506225336561
F  -5.78655996679741857 3.22967345420663232 -0.53262905040040542
C  -5.19338076141921956 0.55374837924439935 -0.00758381830619198
C  -4.88857542446560078 -0.81099327392325360 0.09216029710486072
C  -5.98790800791982125 -1.84415054130335787 0.15493386863131678
F  -6.36044888942217934 -2.27405829863394304 -1.08086731079364107
F  -7.12035913563407430 -1.38485817995865879 0.75376816217768472
F  -5.62585471813701243 -2.96066177706581124 0.84650360942543135
C  -3.54015376190725695 -1.20711915723216889 0.09672226660668863
N  1.09424261479392393 -0.88815359569472752 -0.00383344141109454
C  2.46100665510126237 -0.53809555466978498 0.03723753504233255
C  2.93311182690861827 0.76635707601686243 0.19455744544318801
C  4.31231554278815210 1.04127450933191001 0.22888058296361002
C  4.78937193342163159 2.46747280482898379 0.37856006925084840
F  4.13160798141593943 3.14697448758001075 1.35696345875325997
F  4.62826698171469797 3.19057799659058849 -0.76256300590357051
F  6.11289641199850298 2.55663254110120164 0.69201153853498398
C  5.22328814054294455 -0.01733964776731703 0.09616699935510648
C  4.77196855504313433 -1.33663852677098216 -0.04943896120299709
C  5.75221321752243586 -2.47395413643234097 -0.20931609514058494
F  6.06726812131013116 -2.70236799542568695 -1.51282178723386651
F  6.93205862804359629 -2.25761727329308037 0.43349917987698022
F  5.27494308232479625 -3.65515493112087597 0.27347710637091033
C  3.38841166834969520 -1.58131262759298608 -0.08328236964312050
H  -2.05865262356390355 1.85100513361286079 -0.13230605350157229
H  -6.23681494110607737 0.87416222637102226 -0.01944474763492469
H  -3.30977637892368071 -2.26976449343180375 0.16433131885259439
H  0.89525113373332366 -1.87004214477693731 -0.11296265151262672
H  2.24817031407048340 1.60528850558314740 0.29705976936560408
H  6.29534836003834108 0.18766696423775914 0.11013897373681260
H  3.04390323420519193 -2.60720378837207090 -0.20868819723189685
39
qcio_charge=-1 qcio_multiplicity=1
O  0.18599070968241074 1.28530515138102053 0.06723857239928188
C  -0.01207254838224274 0.07232779746735205 0.03939834652167531
N  -1.13129992230213472 -0.69454180151290490 0.04299774575093092
C  -2.41081868297662671 -0.20923704645681712 0.02337036020062570
C  -2.79712829047371558 1.13605088064699866 -0.06616261894439972
C  -4.14210924020554216 1.49224840769636335 -0.08587621027381621
C  -4.47995075658529629 2.95055160285084517 -0.16802997538517672
F  -3.73338852353812634 3.62138078576941025 -1.07486669639307242
F  -4.30089959656272125 3.59751937331498217 1.00847035789642092
F  -5.76790811337735398 3.18534247036481366 -0.51640357602048059
C  -5.14262477242935123 0.52760172473482470 -0.00471493136696402
C  -4.76178776506527068 -0.80913604641234205 0.08882577492585489
C  -5.84119575882836273 -1.84747901129276215 0.14598488919322539
F  -6.21451252923270836 -2.28109729124083138 -1.08216741137179429
F  -6.97565891361280599 -1.41096094739997913 0.73947199730646185
F  -5.47732685137970154 -2.95866842882807379 0.82718222571798750
C  -3.42207610757408442 -1.17712551886582140 0.09301949117293899
N  1.04892974710020415 -0.82409128479113325 -0.00416922127391406
C  2.40209789460681700 -0.54073244958955480 0.03280324011560728
C  2.87783673437329224 0.75880006308570558 0.18688548402941699
C  4.25068330530056127 0.99091525578148354 0.22001586331239950
C  4.71044798667371989 2.41152647242117135 0.36496279855977143
F  4.04771838405097650 3.08691576351261121 1.32998974155966332
F  4.54952182420136886 3.12933467811496380 -0.77064304338262313
F  6.02207072197618221 2.51730843395969028 0.68029635760214402
C  5.16290236244963463 -0.05317530383327621 0.09620611217413116
C  4.67678504758962799 -1.34992590342207364 -0.04412470153886852
C  5.66210576981594293 -2.47115702898350165 -0.19479306346284644
F  5.98949401045105745 -2.70428788487943050 -1.48713953698830648
F  6.82957169060768532 -2.24489985587631313 0.44685713327164095
F  5.19992711497728255 -3.64857900169555371 0.28384253253402775
C  3.30895866176367104 -1.59992730593015109 -0.08280084603667054
H  -2.05661108515790181 1.92367990112747633 -0.12800937500791859
H  -6.19070079107886873 0.80899637945854563 -0.01423987250126435
H  -3.16220282313379597 -2.22693970007249931 0.15729239260726346
H  0.80026899402411422 -1.79580287482004430 -0.10985887398939732
H  2.19992917889513029 1.59792999291092053 0.28386090106530965
H  6.23062144382108141 0.13855973606241923 0.11288473011405055
H  2.95776632680019347 -2.61801203454487030 -0.20441758579522909
39
qcio_charge=-1 qcio_multiplicity=1
O  -0.06950096695669866 1.40102636988731066 0.08013041354999888
C  -0.10144609408506469 0.17040043450230768 0.05152388318684731
N  -1.14739248836654162 -0.65183763703712105 0.05119477608786234
C  -2.40896821207066347 -0.20983831460747326 0.02752705169541108
C  -2.82759559264962990 1.13313983855996558 -0.06106081583509705
C  -4.17199146022684531 1.44534824760649006 -0.08588782010737843
C  -4.54226576340315447 2.88892095684641470 -0.16462681404667190
F  -3.81227364028090232 3.58234530524103434 -1.05864080347883416
F  -4.38566017219606419 3.54037315452052326 1.00811295368988785
F  -5.82655974389006470 3.10202108487781203 -0.51527829381595613
C  -5.15646831467040556 0.47163549664174753 -0.01380547028053166
C  -4.74100573070006170 -0.85196999430210207 0.07740228965827799
C  -5.79132949539057318 -1.91290248688834952 0.12439629822054589
F  -6.15274786165477305 -2.35396567535029133 -1.10090742865544278
F  -6.93695881985822194 -1.51284662726633656 0.70721348318622446
F  -5.41442150904895048 -3.01611670245779395 0.79765279006023893
C  -3.40900755077821671 -1.19926735278626784 0.08916172459971851
N  1.05474277767000491 -0.63168666531301210 0.01567243327555532
C  2.39713916766545232 -0.38931915212747531 0.04896581767162338
C  2.97994919604457165 0.87127800157005453 0.19637478388334484
C  4.35755451199888633 1.00517305797600698 0.21927428274628993
C  4.91026428421166106 2.38764859286280862 0.35589078214099390
F  4.30504078565449788 3.10788797262299932 1.31602593902953902
F  4.79122035440989258 3.11204524661685156 -0.77445493617547589
F  6.22110149896871079 2.41249612683446024 0.65920511123802306
C  5.20673708713018790 -0.08159350878882785 0.09499758628741961
C  4.62185033968609016 -1.33203278425394767 -0.03755816308414764
C  5.51763398025467389 -2.52066191386323402 -0.19118860218683653
F  5.82105281060392343 -2.78371828323111492 -1.47875691769177786
F  6.69773027530770726 -2.38309336815874895 0.43588320221159560
F  4.97951374622058118 -3.65580154000801372 0.28853891676070692
C  3.25126106197093767 -1.49365688104763339 -0.06754923549642922
H  -2.10185093719935834 1.92998005200726763 -0.11616965717545000
H  -6.20337616886130760 0.73118554679292658 -0.02834090841488124
H  -3.12615002962545940 -2.23779875147274376 0.15212400973172710
H  0.82654572346650956 -1.61026741885788627 -0.08670209580865033
H  2.36143771006732006 1.74808302998432241 0.29438139844843741
H  6.27854218225379945 0.03850581988602624 0.10563766707408978
H  2.84100789559186584 -2.48460112780523668 -0.18292012388269305
39
qcio_charge=-1 qcio_multiplicity=1
O  0.05836118105519023 1.33525567034107717 0.07236651802281936
C  -0.05742511273777719 0.11066714006426902 0.04108972470251935
N  -1.14454030760081360 -0.66149432461445057 0.04089374433048576
C  -2.40023206692476077 -0.18642881988815246 0.02249144908272870
C  -2.82443968874469808 1.16001259540128343 -0.05984966115056584
C  -4.16740292113874755 1.48319390851915833 -0.07845871670247771
C  -4.54235171616266520 2.92788852657967968 -0.14954603763518892
F  -3.81813092810645660 3.62884100682415145 -1.04259692892351774
F  -4.38129690330305799 3.57568087723365347 1.02580773058806107
F  -5.82864548350089162 3.14210199462578510 -0.49210742020460391
C  -5.16086877157970481 0.51588803571218655 -0.00651791710712485
C  -4.75397176561608603 -0.81317220430481318 0.07785804230186763
C  -5.79460839242142978 -1.88662198835583372 0.12435072348855451
F  -6.15776185234458140 -2.32545260844160095 -1.10258426355080386
F  -6.94304576313959387 -1.50172641930238582 0.71190762945775576
F  -5.40621402782146809 -2.99073693463495882 0.78933524727526949
C  -3.42203908367929888 -1.16174437576388767 0.08369933372346408
N  1.06683075713338105 -0.74812191517720961 0.00350913548409034
C  2.40043191713612103 -0.48705524129755157 0.03841717441851958
C  2.92779738621664887 0.80173085426735768 0.18376367172304153
C  4.29842296753798792 0.99535036814172151 0.21310258744293045
C  4.81342379030601819 2.39582344744194220 0.34488355622657030
F  4.18470401967830430 3.10475990723016748 1.29813027873755393
F  4.67718668744236066 3.11099490656922439 -0.79012427054066381
F  6.12182643509416913 2.46046627736597134 0.65123526919445351
C  5.18985115468686864 -0.06107320769908893 0.09804576745917905
C  4.66286393531280652 -1.34124572238242368 -0.03294973435258194
C  5.59726723005611415 -2.50460724988089511 -0.17765031517932564
F  5.91494133687338230 -2.76278011892084630 -1.46356588594845061
F  6.76999246160709678 -2.32747311079817987 0.45231960102079788
F  5.09393610932357621 -3.65483585740742978 0.30302986828447326
C  3.30017074629140117 -1.56094445083246303 -0.06958867130801845
H  -2.09299000827253456 1.94996655838977540 -0.11452747894263557
H  -6.20423338486789966 0.78325493400008972 -0.01634898636047775
H  -3.14210886512331422 -2.20058526522098541 0.14213358699704745
H  0.81024700332531574 -1.72192249979317280 -0.09528441776403199
H  2.26454994360858297 1.64581104953099344 0.27353033531761084
H  6.25399309452598562 0.10397423455894450 0.11485809395908854
H  2.92886372313876242 -2.56712182786735754 -0.18161885527030422
39
qcio_charge=-1 qcio_multiplicity=1
O  0.08868772274142338 1.24523107362540664 0.07073789884439652
C  -0.05442647540699046 0.02443968111139458 0.03859574904170019
N  -1.14897551883780880 -0.73927841159155250 0.03932391637220945
C  -2.40116360938490203 -0.25158966372300834 0.02527742930125900
C  -2.76996727806179832 1.11141074521420791 -0.05290646093223093
C  -4.10139064725282143 1.48030650810953790 -0.06977106562103430
C  -4.42532740247577294 2.93909236723659317 -0.13564070730147088
F  -3.67572765935045620 3.61755074517288921 -1.02669037580306477
F  -4.23982634031724182 3.57601135820553973 1.04389440338556017
F  -5.70390922448694049 3.19991851823141715 -0.47613595424911598
C  -5.13080181703664273 0.54858944785529395 -0.00062925482634580
C  -4.77169522118266620 -0.79571135176117214 0.07914212998018022
C  -5.85714907572955745 -1.82518106963681359 0.12126842557506358
F  -6.23714972050962491 -2.24227044028871303 -1.10993101641248182
F  -6.98934896867781319 -1.39242506991768322 0.70941746263588890
F  -5.51566920181378428 -2.94765707906758445 0.78180610229638448
C  -3.45314210827029466 -1.19757532152574120 0.08411182918955627
N  1.06402869091520458 -0.84666857711690235 -0.00084120645823329
C  2.38889775570604002 -0.55351875374075665 0.03296672588675121
C  2.86849316527752274 0.75609509331362268 0.17450131896440399
C  4.23123049962731645 0.99898767761621210 0.20444920268248057
C  4.69046158636919586 2.42079950464147764 0.33140082979695662
F  4.03138359918351075 3.10811715944682954 1.28131333694547234
F  4.52618746911766401 3.12483301856609330 -0.80856043789238619
F  5.99532751955854515 2.53862216813850017 0.63850237861827797
C  5.16450735755140400 -0.02419234279165721 0.09462326624608292
C  4.68204920126563273 -1.32313851605686916 -0.03244944681703298
C  5.66465680566318408 -2.44858253387384073 -0.17125838292551807
F  5.99454697790071567 -2.69654789319444799 -1.45767552758798979
F  6.82865127004695882 -2.21967547431858225 0.46008640646143373
F  5.20768899009006869 -3.61720728165209104 0.31225646754056513
C  3.32717638164873453 -1.59621069027854312 -0.07039826675005313
H  -2.00555432394598387 1.87103361992341721 -0.10500637464998651
H  -6.16404350830744008 0.85326033535559598 -0.00914125126181583
H  -3.20428250148010907 -2.24536268554980323 0.13928515659172316
H  0.80657059427347522 -1.82081655087254113 -0.09638345405586055
H  2.16953064909078241 1.57237908876660004 0.25981429781219573
H  6.22230087788302022 0.17901031909193721 0.11277900184785605
H  2.99052832588254081 -2.61556057245051488 -0.17869504417366203
39
qcio_charge=-1 qcio_multiplicity=1
O  0.09477082787033969 1.32052509131030638 0.09207143970793684
C  -0.05692193694749745 0.10171864531621029 0.04738966223439423
N  -1.14198023689305406 -0.67497485254199752 0.03289044259910844
C  -2.40490418762880598 -0.21113406444485658 0.02625501786970143
C  -2.81493715527839417 1.14233650469792991 -0.02267434098601771
C  -4.15491568872964034 1.47810202351929298 -0.03679285033466580
C  -4.51756681721374687 2.93022624269942433 -0.06609091522336867
F  -3.78180363821530552 3.65150125469899312 -0.93568925970594385
F  -4.35048774951828499 3.53965612099819094 1.13196703257428921
F  -5.80189662310626009 3.16683866691810856 -0.40271309928155169
C  -5.16201961128413878 0.51996512427228236 0.00368916251937069
C  -4.76354703189746687 -0.81464201877426479 0.05040159880421483
C  -5.82328707764270792 -1.87207911895409129 0.05292875875399111
F  -6.18162245106210850 -2.25944476819823281 -1.19571283602578249
F  -6.97175067696056505 -1.48324173529993231 0.64159296280227818
F  -5.45910427919160401 -3.00537488663347174 0.68187540854082151
C  -3.43446464502925775 -1.18242314213161004 0.05684342883585320
N  1.06677741181990715 -0.76799218168406436 0.01331439837222504
C  2.39686836433222927 -0.50043447995213186 0.04023621415085294
C  2.92294005799341461 0.79647685155817938 0.14892901812838694
C  4.29191676550219814 0.99807924923581670 0.17003720299439187
C  4.78965280459212384 2.41098773502745001 0.25650444890644380
F  4.15150164887267614 3.14194659101738916 1.18876140018723730
F  4.63796163743808343 3.08653026662674623 -0.90356178458052216
F  6.09876001560797221 2.50270470777493870 0.55459690333920308
C  5.19747877022264948 -0.05349284552496385 0.08789470763240124
C  4.67197455616795310 -1.33779414801864616 -0.00719077409748662
C  5.61887869610752855 -2.49766864485236706 -0.11693231539923112
F  5.93973959305541221 -2.78608893458972551 -1.39842692567875737
F  6.79071288589214195 -2.28867509928023338 0.50786647922023409
F  5.12506350509437336 -3.63938352796615527 0.39400363219271262
C  3.30870246473254781 -1.56912567097548350 -0.03782329676209436
H  -2.06684387818814619 1.91940271355448555 -0.05231995710436965
H  -6.20337837823583271 0.79606531849020790 -0.00261235528904427
H  -3.15238285371270299 -2.22311752615038927 0.09079230237344013
H  0.78883745566057317 -1.73799183361133069 -0.06117332073825779
H  2.24441984675644646 1.63219750549599163 0.21227400689620501
H  6.26127697978221853 0.11639410190175628 0.10607199088551666
H  2.93893546649904724 -2.58005708531604672 -0.11603408101600768
39
qcio_charge=-1 qcio_multiplicity=1
O  0.07736720615778084 1.30171569690067646 0.12048499593616159
C  -0.05667687805227923 0.08140983977266503 0.06656256315920293
N  -1.14454743220010680 -0.68415017001660361 0.03653636115498147
C  -2.40004126942733542 -0.20671641186338363 0.03410765609208929
C  -2.80963970298916443 1.14854835065357630 0.01683466052224653
C  -4.14730193235731992 1.48666437295987741 0.00222982223167033
C  -4.50959496681989069 2.93888545880820562 0.01092112617465061
F  -3.76838662445741912 3.68388085269671750 -0.83290165339651678
F  -4.34874483315787153 3.51481781361955115 1.22640076319756064
F  -5.79100145625422513 3.18607740625257385 -0.32537434356483563
C  -5.15494693535740733 0.52943302146068072 0.00823821995291193
C  -4.76061748024652243 -0.80617053506401215 0.02142346209508902
C  -5.81394489032090345 -1.86904468858434369 -0.02138861060322665
F  -6.15650280003921324 -2.21609093768284637 -1.28637661236472556
F  -6.97128859655035615 -1.50658510185576899 0.56540578613567893
F  -5.45135876627333271 -3.02055384361208246 0.57234236192427801
C  -3.43326735164919272 -1.17304855302687328 0.03182385263811136
N  1.07027327465261046 -0.78947903248590356 0.03504189215981000
C  2.39724300281251512 -0.51786034284286864 0.05013921088130117
C  2.90965607132360171 0.78799367689954403 0.11827477343207429
C  4.27523454670933489 1.00003051110804431 0.12801130146662393
C  4.76867514739392817 2.41611297758707710 0.16857199811681281
F  4.13417621721602391 3.17388864298037410 1.08092966741291363
F  4.60674276839242580 3.05504727622294947 -1.01069260092660707
F  6.07870308684692340 2.52194532341995670 0.45406272895099525
C  5.18619066834249143 -0.04736845048526384 0.07526755241426317
C  4.67535511166981443 -1.33877877135547263 0.01804778856039804
C  5.62663724572603385 -2.49709890244596888 -0.06323139396856504
F  5.94450679470703047 -2.81797342709570042 -1.33788446025995467
F  6.79982707980159873 -2.26635978509320246 0.54989732033763539
F  5.14115216627127314 -3.62703049024857371 0.47876792654333922
C  3.31597151598467699 -1.58248680383958118 -0.00096314817525944
H  -2.05794231264075256 1.92224787272175224 0.01345863973035578
H  -6.19521080763301946 0.80716009251285703 0.00043071764758557
H  -3.15033363921628329 -2.21344921412592077 0.04249654483437940
H  0.78682000021440113 -1.75941329922902301 -0.01603962697927100
H  2.22004727312314243 1.61572814402439113 0.15851342613397262
H  6.24779948092352555 0.13197483032555421 0.08917983817276874
H  2.95232485463779204 -2.59738524975996699 -0.04611099947278623
39
qcio_charge=-1 qcio_multiplicity=1
O  0.08012436888123370 1.29997171076628981 0.12614496038934281
C  -0.05832390553475926 0.08011096430572237 0.07358539490198795
N  -1.14489239537302567 -0.69009655044429008 0.04013563356218491
C  -2.40332098234269553 -0.21688199147727102 0.03395164304019843
C  -2.80247335251406549 1.14115357002496154 0.02002240271915608
C  -4.13949591105532466 1.48327063305229667 0.00344249838732102
C  -4.49457662248049772 2.93711218385162054 0.01666098333284721
F  -3.74888512001685026 3.68132489987560962 -0.82404379688245699
F  -4.33248487865987020 3.50756811814758507 1.23480513436998041
F  -5.77421367209641545 3.19152704968871959 -0.32049734598705831
C  -5.15042366204062674 0.52897544665070317 0.00428725162259204
C  -4.76393569880318868 -0.80902732701307178 0.01739290468298208
C  -5.82372541548756661 -1.86561832005934303 -0.02775436251738753
F  -6.16785479098451717 -2.20807907439829698 -1.29380230895399828
F  -6.97917469753353359 -1.49805522978159722 0.55999532145858011
F  -5.46834120211033881 -3.02033740718897814 0.56380288928087530
C  -3.43776413233746636 -1.18234852321827244 0.02804823220229789
N  1.06749353430696448 -0.79140578421994323 0.04216033422462201
C  2.39494579026323517 -0.51911846803261608 0.05451545867872110
C  2.90571370708573129 0.78769480551325377 0.11461598810664989
C  4.27121995456782955 1.00297918847927692 0.12322129015528141
C  4.76385553609597867 2.41958266395676391 0.16103638173804785
F  4.13047353364905057 3.17852338555875624 1.07341797181352216
F  4.59965604128116023 3.05713165109396812 -1.01899518000311495
F  6.07426389890563279 2.52721020897991666 0.44452666543480557
C  5.18301114482778491 -0.04419566420621163 0.07228130458327395
C  4.67345808256519657 -1.33678774654524690 0.02097967733345309
C  5.62886521732124034 -2.49145200876120398 -0.06124184065329537
F  5.94403674090979717 -2.81303733509725573 -1.33671873396351937
F  6.80319927402225400 -2.25578068728999259 0.54833024140467657
F  5.14953364988261431 -3.62239309365213957 0.48411128804399423
C  3.31383412131731525 -1.58344157616641579 0.00622256929417727
H  -2.04773024296495132 1.91224163584486306 0.02050573216466395
H  -6.18967377440147537 0.81153620605554344 -0.00524127585347755
H  -3.15966444565474269 -2.22426959024505688 0.03685514936165461
H  0.78455414902391352 -1.76176578995073330 -0.00440978683415645
H  2.21559747873285406 1.61515808195758481 0.15399893451801044
H  6.24472249219033859 0.13664675518401354 0.08279009721188597
H  2.95175102382607246 -2.59910884102578299 -0.03570019407121011
39
qcio_charge=-1 qcio_multiplicity=1
O  0.08387024852022201 1.29171709426461567 0.12081180808752351
C  -0.05603260260147165 0.07222657751590088 0.06699141861319002
N  -1.14404173447494251 -0.69672761100424851 0.03211715912324897
C  -2.40222915738766263 -0.22125541937793897 0.02785730507795311
C  -2.80020148262891722 1.13689302029531358 0.02351130489814289
C  -4.13670734480391467 1.48300099079617165 0.01003696598281136
C  -4.48951571750734857 2.93721492998063960 0.03458630141221283
F  -3.74444694116667565 3.68638805778161460 -0.80227664612702088
F  -4.32332146818897112 3.49767107602253935 1.25700125893445791
F  -5.76945577466903181 3.19640948886719167 -0.29749289613393753
C  -5.14958359268538057 0.53075062356599534 0.00534646537842684
C  -4.76344746978960654 -0.80748809680884348 0.01138230055965911
C  -5.82948546870315809 -1.85726696378902223 -0.03754070563907073
F  -6.17930440331645858 -2.18903115839582219 -1.30509151781198374
F  -6.98093758884084448 -1.48653300060562366 0.55634318913031078
F  -5.47893100394933974 -3.01765502735035351 0.54533285816713961
C  -3.43775429374516550 -1.18514227861175869 0.01734117344091187
N  1.06865997957939207 -0.80069230201347785 0.04016205382186102
C  2.39545070488170975 -0.52417762572189153 0.05337112809445081
C  2.90311205188302512 0.78410990773927280 0.10373373137022461
C  4.26846064240222400 1.00180904936549631 0.11468970039935479
C  4.75254809447908411 2.42135830337419566 0.14570404373415913
F  4.11337603563532284 3.18103280239277098 1.05357013340006067
F  4.58579344106197873 3.05216300331540991 -1.03789362424390452
F  6.06188745003901719 2.53824063801901367 0.43022616003338399
C  5.18457792587266209 -0.04256560555899040 0.07258827095399695
C  4.67688264418079847 -1.33623460289255536 0.02916917823753649
C  5.63639241309217365 -2.48776765800932420 -0.04601510980421671
F  5.95451819957919426 -2.81370371405052389 -1.31991561180743444
F  6.80915560422160926 -2.24536098236472537 0.56429018400851294
F  5.16020561261728261 -3.61790256589519554 0.50362355128384773
C  3.31738755949042075 -1.58597825614443022 0.01415213359773605
H  -2.04443339223855469 1.90688628434066509 0.02874433497788001
H  -6.18874680852897097 0.81479149786206584 -0.00127619535821243
H  -3.16251712794771844 -2.22792514939115005 0.01984737118518536
H  0.78657227090482917 -1.77160999060798341 -0.00019528056095731
H  2.21146930222005178 1.61069072676437330 0.13691827163404452
H  6.24604280128217138 0.14101135665961242 0.08358163539905829
H  2.95808522849528233 -2.60282927011525578 -0.02189429515242807
39
qcio_charge=-1 qcio_multiplicity=1
O  0.08266587224301489 1.29570143463695242 0.12074860363290575
C  -0.05717899992478577 0.07622796989947400 0.06682161252312735
N  -1.14426318752505907 -0.69356305560616005 0.03037934386847993
C  -2.40240890969334675 -0.21883746654071626 0.02639917359706525
C  -2.80128488666804243 1.13898968041663351 0.02674817735296626
C  -4.13820659073811381 1.48316695418364120 0.01354588120689542
C  -4.49192710846858478 2.93697772171619587 0.04379974457240993
F  -3.74778418540839731 3.69004776102836862 -0.79032086137308333
F  -4.32526323010171510 3.49247333789216929 1.26843926267791995
F  -5.77215483825441300 3.19672410012988983 -0.28633600322346575
C  -5.15010974028200685 0.52983808927370990 0.00506073835312003
C  -4.76355282610749953 -0.80832742223678988 0.00694158108225199
C  -5.82587278138910225 -1.86180096480751267 -0.04541776395017039
F  -6.17579683080271469 -2.18961683177200372 -1.31400824790623405
F  -6.97811828949962543 -1.49758221042926953 0.55084076812369220
F  -5.47077975928418958 -3.02333022482047431 0.53227228096354962
C  -3.43735257273102635 -1.18326819345649925 0.01213313951439401
N  1.06793967967366266 -0.79615412415270392 0.04136182612125747
C  2.39501095120767538 -0.52151262423491729 0.05405901328566422
C  2.90415540277854323 0.78639275316846491 0.09940168527227643
C  4.26966506056068962 1.00276967126310068 0.11025077010584960
C  4.75729251936188646 2.42120027501165591 0.13626239927026201
F  4.12089879074752563 3.18518903635976347 1.04239432856955427
F  4.59078671051999443 3.04890517093428581 -1.04906302402801832
F  6.06717755833941919 2.53572405266129586 0.41893927042381784
C  5.18385706830819792 -0.04326577278903796 0.07249341782598522
C  4.67532850783203280 -1.33669517618805611 0.03343422740738417
C  5.63249675711054376 -2.49036935864490694 -0.03802323153924646
F  5.95103587003893786 -2.81971342334863539 -1.31097805047836746
F  6.80527545275365586 -2.24883866803764532 0.57250634405140510
F  5.15370813097938907 -3.61833331839614969 0.51365718747422962
C  3.31566635518228070 -1.58461921734542055 0.01895278600862995
H  -2.04630485162563680 1.90972221441611345 0.03525506531367268
H  -6.18938514909922777 0.81316140965813488 -0.00094862596277649
H  -3.16097280707329054 -2.22566640980766772 0.01166380868164086
H  0.78513273165044772 -1.76693653715182797 0.00421661181011425
H  2.21337480897837668 1.61376804761430170 0.12937179132046256
H  6.24542505074402499 0.13913140568909749 0.08339571865512596
H  2.95517910293081343 -2.60116193597310996 -0.01321124230663821
39
qcio_charge=-1 qcio_multiplicity=1
O  0.08185580387245894 1.29598194409964629 0.12010173617628914
C  -0.05738650676368402 0.07635158278067376 0.06761108459392107
N  -1.14448558143983403 -0.69335254582601724 0.03060243265002929
C  -2.40258343744180136 -0.21864330410557764 0.02567165766840114
C  -2.80181312319362075 1.13910271252754236 0.02685363565841229
C  -4.13877376188610935 1.48294202667614861 0.01294775037087824
C  -4.49269402430386489 2.93663928409915975 0.04407949543027351
F  -3.74961073453677729 3.69030719647377614 -0.79038011978866818
F  -4.32471855156286189 3.49151585521670738 1.26883102296028261
F  -5.77326886896065972 3.19642778752102164 -0.28448174746976906
C  -5.15042695231286363 0.52947315733119671 0.00387476025043221
C  -4.76360729963678864 -0.80859771335531561 0.00534823297482831
C  -5.82584386226578221 -1.86214641423580463 -0.04664454741108354
F  -6.17805968639900804 -2.18869657714389598 -1.31491649462564775
F  -6.97710428489094436 -1.49858542261524907 0.55188330904374505
F  -5.46981142521161612 -3.02426161790013648 0.52916995242965237
C  -3.43743340252566831 -1.18326930075442660 0.01052147813532316
N  1.06796801079008130 -0.79563083603104812 0.04209743417028267
C  2.39513486002920484 -0.52150135177068280 0.05468860292166710
C  2.90436777798363366 0.78635965570208333 0.09920496612067489
C  4.26983061166677746 1.00302976894246143 0.11018802463054582
C  4.75859354315698280 2.42111018341583950 0.13572168660486200
F  4.12456501759820338 3.18511694363570186 1.04346341698838052
F  4.59014457471065196 3.04968856570905311 -1.04884797689025744
F  6.06909725458484406 2.53459444628442387 0.41575237969727097
C  5.18353026795899741 -0.04323758319916030 0.07305181372967035
C  4.67501731740420645 -1.33667130941685763 0.03453166531525445
C  5.63266267839921664 -2.48987169526342855 -0.03693897044950108
F  5.95279343827728180 -2.81755355691142695 -1.30992247110691751
F  6.80464566809920957 -2.24842771116900719 0.57508894908210650
F  5.15386388190220224 -3.61866628199306239 0.51287867847699509
C  3.31547597328049148 -1.58492873502014753 0.02017164704298186
H  -2.04720962893716862 1.91019391094448920 0.03613957389010938
H  -6.18970204785996003 0.81259161534119440 -0.00223180475912280
H  -3.16106861137380735 -2.22567371836627181 0.00986550359205456
H  0.78546574892477639 -1.76654175253369639 0.00606485536935092
H  2.21379037248006405 1.61387429919006853 0.12878187517592393
H  6.24507161589793647 0.13902417934390959 0.08390743174648431
H  2.95508221174992869 -2.60154953741016781 -0.01129141209800890
39
qcio_charge=-1 qcio_multiplicity=1
O  0.08127458893815613 1.29672083157502915 0.11299918979553072
C  -0.05736126759163644 0.07682066907861358 0.06398229230977499
N  -1.14440722204683665 -0.69297029792354459 0.02775218939554610
C  -2.40249472009245491 -0.21847465208367967 0.02260219794018241
C  -2.80212613384974185 1.13915111556988147 0.02706779290904475
C  -4.13921666857503467 1.48242307747755597 0.01308443055747621
C  -4.49330543576768537 2.93594941447142288 0.04775430875197249
F  -3.75383476544453476 3.69127708549103462 -0.78833339778764944
F  -4.32023828688535882 3.48869751373819659 1.27283724605172810
F  -5.77516754496294116 3.19619579564596634 -0.27500941893002062
C  -5.15046008250633225 0.52866695454291202 0.00257125476059399
C  -4.76340794598386452 -0.80937289840773874 0.00150660427199059
C  -5.82536070015385210 -1.86323561071579014 -0.05020367885727289
F  -6.18414571442564043 -2.18462857568541891 -1.31796043781984729
F  -6.97373645825991328 -1.50246934778251306 0.55557988280598269
F  -5.46627198820109239 -3.02764706571203002 0.51882603886899237
C  -3.43720883397876831 -1.18342120999393585 0.00550341029200051
N  1.06814318896561966 -0.79475346857775675 0.04058016039447021
C  2.39533354330855763 -0.52062038289565915 0.05454631967033959
C  2.90466948250522350 0.78716616151735352 0.09680666315810256
C  4.27022335099304939 1.00341383578291010 0.10930363174201460
C  4.75870353538671687 2.42161324450523407 0.13339966195467567
F  4.12873031866534390 3.18447094814704812 1.04497188018818910
F  4.58421838886208377 3.05150895324010385 -1.04957111567899286
F  6.07042170807994719 2.53531895043824340 0.40711905015141026
C  5.18364515747098142 -0.04305689625599776 0.07528594841886907
C  4.67502552191627796 -1.33651523254618354 0.03864284677615864
C  5.63241062346628940 -2.49004538461909997 -0.03063572043710518
F  5.95830200145358102 -2.81479885867061252 -1.30295735648670918
F  6.80168379738712225 -2.25031376083143853 0.58717850689939188
F  5.15095488331839935 -3.61992529548158837 0.51430457941013508
C  3.31551863593344054 -1.58431603950620747 0.02327008760830473
H  -2.04813941847448300 1.91084151458450879 0.03801520896956286
H  -6.18973977395317476 0.81150049796395840 -0.00285090216768164
H  -3.16081208893572763 -2.22581757284932324 0.00303162960979911
H  0.78651789275233719 -1.76605504777519373 0.00777206375220781
H  2.21470273911086890 1.61524591904224746 0.12401177383396693
H  6.24517151043428242 0.13897459621772512 0.08695947730986595
H  2.95513901840508719 -2.60100133050262938 -0.00630479209486361
39
qcio_charge=-1 qcio_multiplicity=1
O  0.08097784579767693 1.29717424477737953 0.09312517054950585
C  -0.05730165463657952 0.07676598388332154 0.05469182262861199
N  -1.14436139515232371 -0.69314365138739809 0.02267528375812054
C  -2.40234894210954453 -0.21886152383641477 0.01742007650930217
C  -2.80312438368157046 1.13832802560546331 0.03009157825952080
C  -4.14047927397811577 1.48080299181936947 0.01559006231513147
C  -4.49444602185255349 2.93409358581645563 0.05910620525441621
F  -3.76437666364916801 3.69263825776542776 -0.78229408216601481
F  -4.30719795925413251 3.48223035313926621 1.28441281943391239
F  -5.77967401734706332 3.19570269641757099 -0.24807902933419493
C  -5.15113772818210158 0.52667875547204535 -0.00049102691273287
C  -4.76307452413917876 -0.81119221654382323 -0.00868686679997103
C  -5.82529545990443598 -1.86461701679447933 -0.06372950708790713
F  -6.19912655848921457 -2.16845320440274847 -1.33152360549062254
F  -6.96667641391027637 -1.51172517262152684 0.56008238417404044
F  -5.46029178816492067 -3.03671301514879666 0.48493644467119124
C  -3.43676458933215079 -1.18426640453146814 -0.00563644321680097
N  1.06820204157811594 -0.79448934985276620 0.03783448476425470
C  2.39539503283213406 -0.52010350899575308 0.05520452400500700
C  2.90479590558232958 0.78769665830867697 0.09091374203655174
C  4.27040596447959331 1.00446226293285967 0.10586650748717252
C  4.75825234766998584 2.42298898475752278 0.12502093065248623
F  4.14237376377441091 3.18239808973450611 1.04934013282064620
F  4.56331829515697418 3.05631072715681773 -1.05281211015103837
F  6.07400384686044781 2.53740511226096244 0.37743962570597889
C  5.18360143811052865 -0.04214174563046495 0.07996364948307184
C  4.67492547969869854 -1.33585483989584120 0.04980959788256415
C  5.63413563201430456 -2.48825488343966628 -0.01240981048769746
F  5.97743543337450589 -2.80507604821421719 -1.28233393283956709
F  6.79487226637162411 -2.25019442015127380 0.62205191352936540
F  5.14742045670048132 -3.62167602855848925 0.51959386016732745
C  3.31559702272357537 -1.58409559032109204 0.03265704516882829
H  -2.05013999113058443 1.91093822775334998 0.04590286956548734
H  -6.19056551880444417 0.80876499970738924 -0.00562837804783101
H  -3.15986825961228979 -2.22650486010110216 -0.01350780199045787
H  0.78789466496389760 -1.76645570455994649 0.01386816029686885
H  2.21536196866147161 1.61638112690564228 0.11137705671266103
H  6.24512364716885493 0.13963764825060807 0.09295909975516843
H  2.95551292707517899 -2.60106139726405816 0.00863705523589249
39
qcio_charge=-1 qcio_multiplicity=1
O  0.08098649575722135 1.29798844761074972 0.06817160926563266
C  -0.05673625513946457 0.07704848152019977 0.04571409984550034
N  -1.14360286924752375 -0.69356940327396988 0.02087336698103820
C  -2.40190697750136239 -0.22024032049699335 0.01353208804186405
C  -2.80386701461000643 1.13649515104497456 0.03244469448730235
C  -4.14150381228583964 1.47813943947937498 0.01611727316882729
C  -4.49543102888051127 2.93129206568898892 0.06497118895127510
F  -3.77985346127726718 3.68947605627373987 -0.78931346639839950
F  -4.28677945917000969 3.48026814368615600 1.28660800040795853
F  -5.78559525266823105 3.19274486204162589 -0.22012266941051253
C  -5.15129045404936470 0.52341109252304774 -0.00599325829730555
C  -4.76203695566884555 -0.81424313064104648 -0.01956872177806279
C  -5.82540807611507105 -1.86626435807951196 -0.07912887584900188
F  -6.21892563861993519 -2.14558298668579051 -1.34660804391883815
F  -6.95715459930602176 -1.52378926078707577 0.56831189169365892
F  -5.45391497837400152 -3.04865974130388029 0.44180542201753537
C  -3.43563116703899496 -1.18651178811721247 -0.01494566762702064
N  1.06911858182070563 -0.79353877714776233 0.03648000303336806
C  2.39633039902743628 -0.51899517795202754 0.05777811550195997
C  2.90494841756370725 0.78904354771334928 0.08851555557712677
C  4.27070039770981413 1.00556264889139357 0.10523143133735713
C  4.75475647059326256 2.42540427434327954 0.12187961525405695
F  4.16324894269815360 3.17389184344315867 1.07137231670042987
F  4.52274616515347638 3.06870652307459446 -1.04340701502750210
F  6.07665203195762604 2.54262650118216493 0.33712343577864706
C  5.18431355402057559 -0.04070588466236047 0.08597963113777503
C  4.67602122281469068 -1.33485736132472588 0.06149406341435282
C  5.63674716489459282 -2.48638715870093385 0.00547491531911738
F  6.00624706779182560 -2.78733601914541440 -1.26113641792122566
F  6.78433803367981003 -2.25456554137674603 0.66600615492581194
F  5.14101897930847063 -3.62629672669646297 0.51386043907502599
C  3.31686573164286758 -1.58300317096746923 0.04294580629038840
H  -2.05172102643127818 1.90984964265176460 0.05269430250198055
H  -6.19099198856066213 0.80441055905402703 -0.01303110455496909
H  -3.15754510870373917 -2.22839887499010825 -0.02697545042214399
H  0.78985641331406076 -1.76599217023893962 0.02201607942633873
H  2.21575581070952765 1.61810314513476272 0.10286282837729159
H  6.24583448407854380 0.14105015712779381 0.09983649997683161
H  2.95676459637567302 -2.60005657968393189 0.02356937101491772
39
qcio_charge=-1 qcio_multiplicity=1
O  0.08102072104682864 1.29631094268528724 0.04066514856481464
C  -0.05666932860892133 0.07517921720755803 0.03309255456611874
N  -1.14339643477611475 -0.69580194885640601 0.01729127674484650
C  -2.40181672447333705 -0.22279855100963489 0.00902132900800418
C  -2.80419781684094982 1.13368907302837685 0.03332834096524168
C  -4.14200766728242620 1.47487094000084662 0.01698383290715129
C  -4.49464063396411717 2.92819480148986155 0.06936599725575972
F  -3.79724314037979394 3.68288919307079077 -0.80333881140934726
F  -4.25850215733528437 3.48140154709239935 1.28395645959099980
F  -5.79040582908674484 3.18960204686779214 -0.18829232597250584
C  -5.15127214202733885 0.51986517733378201 -0.01124330611759715
C  -4.76149686247963544 -0.81771185048475048 -0.02957775049115357
C  -5.82626648410523362 -1.86796476930417565 -0.09510031249633705
F  -6.24157144668826280 -2.11722651721770738 -1.36182937049236208
F  -6.94684212685238744 -1.53912719154873590 0.57902754878564633
F  -5.44802957501259044 -3.06216587447911914 0.39223829672463612
C  -3.43507638103742430 -1.18949723886135716 -0.02351962870707579
N  1.06908428766877894 -0.79566519299799521 0.03338689517297686
C  2.39570134814690672 -0.51857884756476524 0.05925765928698926
C  2.90438859934824878 0.78950585626874537 0.08622755834607018
C  4.26999881282366189 1.00742250501551811 0.10541490436123323
C  4.75078205898973938 2.42833304671432604 0.12141620446624257
F  4.19203284816781618 3.16195873934355376 1.10275430778684180
F  4.47327623569993715 3.08566914299978245 -1.02530653733457555
F  6.07907512475097445 2.54799674381814389 0.28999637996030614
C  5.18423376256507407 -0.03818572298093157 0.09342682295673689
C  4.67597945868641585 -1.33260631104063121 0.07364250361763132
C  5.64072799402789382 -2.48111452903840402 0.02576699473138374
F  6.04446415851751162 -2.76188220894033476 -1.23506281292499964
F  6.77020533336805297 -2.25527958171135667 0.71939395746977219
F  5.13612794551241247 -3.62961397699807975 0.50423424198234879
C  3.31711101182652035 -1.58187736514558708 0.05242579369759735
H  -2.05223097765341755 1.90711732323873706 0.05716675950686648
H  -6.19121542807361092 0.80008334734671349 -0.01979424190865748
H  -3.15580336637954062 -2.23096792674749578 -0.03942743911164649
H  0.79017078683185948 -1.76834740396572010 0.02697961725829082
H  2.21470334203281816 1.61822250235277365 0.09394167833367845
H  6.24577872588757899 0.14364124096021094 0.10899087146264810
H  2.95717680442179232 -2.59902222772983293 0.03653810975397448
39
qcio_charge=-1 qcio_multiplicity=1
O  0.08084749301001107 1.29733027016670421 0.03721080078512812
C  -0.05660428033332907 0.07629004615846909 0.03369853681050804
N  -1.14254159919062226 -0.69601547066447611 0.01988438903793382
C  -2.40172339156935921 -0.22431235180043080 0.01022500378570185
C  -2.80495452724916605 1.13180289082295782 0.03622305885123325
C  -4.14299256690920981 1.47254876482422969 0.01932698011970814
C  -4.49567532485018795 2.92588517196824593 0.07221028398224284
F  -3.80853300982538601 3.67766667850924200 -0.81173341587212766
F  -4.24499758818720263 3.48307085560791796 1.28166480568688357
F  -5.79444107438483957 3.18622652434784470 -0.17108027618514898
C  -5.15158967625906961 0.51695567680625143 -0.01528811863044345
C  -4.76050693619129461 -0.82025640724968130 -0.03540206506940557
C  -5.82638761749438849 -1.86875501264410326 -0.10949170225830196
F  -6.24949539989365377 -2.09714555648942591 -1.37756529305893038
F  -6.94260226683007087 -1.54923287055193937 0.57668469621227503
F  -5.44648326950325146 -3.07063808084752354 0.35679564513915013
C  -3.43383578621550489 -1.19180662657482239 -0.02626668310160052
N  1.06989093076573205 -0.79425020458149365 0.03807507655549651
C  2.39669259115229361 -0.51852446359225024 0.06282423507496374
C  2.90392735315011752 0.79027568034581386 0.08612656075068083
C  4.26948905942321755 1.00845240650254242 0.10371203738750383
C  4.74804745395438665 2.43004207124854910 0.11782015107168956
F  4.21333748336445524 3.15453594375070034 1.11990434884871459
F  4.43910424194729281 3.09538606832375462 -1.01564111769656895
F  6.07997703914271170 2.55150499115695695 0.25343458828230286
C  5.18432324744299766 -0.03687173743081017 0.09541293074977156
C  4.67712438457737623 -1.33187877320359704 0.07927173194782551
C  5.64382247371093193 -2.47899775034481440 0.03631066909286485
F  6.06684410469584279 -2.74926626456441969 -1.22037641435719557
F  6.76281727883821215 -2.25666411870998029 0.74849451620356877
F  5.13417011751900443 -3.63186218431652863 0.49853654524281288
C  3.31835288619712276 -1.58180875867178550 0.05909227262040401
H  -2.05294181757276828 1.90506457968660903 0.06358666361955022
H  -6.19195887389857447 0.79612063952306988 -0.02584662200779916
H  -3.15320410464359080 -2.23287605919561738 -0.04388505910540496
H  0.78908814186517728 -1.76632086995671700 0.03328836294619116
H  2.21302698878655368 1.61812201782525444 0.09065421228761861
H  6.24586000679863673 0.14559442797063429 0.10999333574791401
H  2.95808067192299307 -2.59887399394356899 0.04555383680095968
39
qcio_charge=-1 qcio_multiplicity=1
O  0.08075269693665327 1.29629168497732961 0.05340195810409488
C  -0.05687675349835189 0.07541840125406774 0.04428696092758382
N  -1.14247086420176247 -0.69710722667984704 0.02533570048306685
C  -2.40172267828920338 -0.22531920301776276 0.01359083914450824
C  -2.80465682128398441 1.13090233538176821 0.03692014288279871
C  -4.14262252184724478 1.47182758900401489 0.01902307212012311
C  -4.49502701271398841 2.92537666257267315 0.06802649283684931
F  -3.80999407691021030 3.67355318760394622 -0.82108961278418136
F  -4.24120764076845180 3.48718652399916751 1.27409723985296397
F  -5.79441206470884218 3.18492585114234039 -0.17324165839759653
C  -5.15112399570911261 0.51614462760480206 -0.01804351924152345
C  -4.76035622371174316 -0.82113598173491475 -0.03590466401196615
C  -5.82600241968190335 -1.86956778452466166 -0.11443387191616936
F  -6.24784832197913431 -2.09204145143606457 -1.38395498351050783
F  -6.94278761160026292 -1.55340497889996110 0.57228650908478929
F  -5.44626232845518299 -3.07340475931508594 0.34681373909528157
C  -3.43364929453599776 -1.19269928022619398 -0.02426134408531937
N  1.06972573899229184 -0.79562878325349329 0.04702562627838040
C  2.39612214756156394 -0.51837923007849129 0.06693829267876247
C  2.90342810982554589 0.79054236807794798 0.08967823211692758
C  4.26885312586741517 1.00916577354846981 0.10381332934872070
C  4.74652304650001788 2.43098534119937026 0.11810925260556869
F  4.22353966761405086 3.15087717458734362 1.13000451471795493
F  4.42326032211759390 3.10072806807916956 -1.00832819114733563
F  6.07996165609152150 2.55305211040247126 0.23838109047922521
C  5.18428400078850782 -0.03575383221581675 0.09398464029195022
C  4.67722439042437887 -1.33077445664583727 0.07748992517836478
C  5.64447564246120947 -2.47727036732808736 0.03349598950047613
F  6.07147197860466203 -2.74380298400122413 -1.22234664845571439
F  6.76129368999640157 -2.25641914100055541 0.74993531379452716
F  5.13395262586241774 -3.63169918869492969 0.49121287555511395
C  3.31844633032499603 -1.58095416465081806 0.06037282531619763
H  -2.05228737568777886 1.90373428066186134 0.06557835932179512
H  -6.19152754323619625 0.79531264077129016 -0.02981334322677700
H  -3.15302236242366707 -2.23375559414000158 -0.04027601462576720
H  0.78796089415488646 -1.76738849048474789 0.03708815665624091
H  2.21188281382183094 1.61781911235779208 0.09583406853172223
H  6.24580141035630376 0.14716320621004364 0.10628471405684393
H  2.95825246020438293 -2.59798189089595377 0.04612349874075693
39
qcio_charge=-1 qcio_multiplicity=1
O  0.07993525278425637 1.29615440563386008 0.06665780795172706
C  -0.05714943762753591 0.07534870489395618 0.04921790065903218
N  -1.14250004341591938 -0.69738281004332747 0.02469853736541911
C  -2.40189524429380974 -0.22581076589068635 0.01284418400065176
C  -2.80498871443230824 1.13034932634075425 0.03454050213222287
C  -4.14306466750332181 1.47083087402955504 0.01686377031442993
C  -4.49485319874918066 2.92460360539859821 0.06306789790665804
F  -3.81283017950524172 3.66975863285430082 -0.83123111221974511
F  -4.23644516547182448 3.49005816154809123 1.26597942808033914
F  -5.79503971899387160 3.18386760922240475 -0.17458090598785997
C  -5.15142488540348698 0.51500305370170696 -0.01982697867114792
C  -4.76042863492404056 -0.82219942915412858 -0.03613738140198735
C  -5.82605733928736846 -1.87071016385988442 -0.11438500813258665
F  -6.25080373968921421 -2.09049195925215558 -1.38340480271376953
F  -6.94127339172102253 -1.55620614237675570 0.57550825385681359
F  -5.44515954595080220 -3.07545370770123583 0.34345386884825913
C  -3.43361262137629097 -1.19339368995459494 -0.02495325936337074
N  1.06979249376517749 -0.79544563710486205 0.05208824679700883
C  2.39622241333294816 -0.51847591943572413 0.06901915950782085
C  2.90304753661492132 0.79061365418803853 0.09260759021866292
C  4.26834897644583844 1.00985973951847807 0.10545349166253216
C  4.74590471795795388 2.43170523016858509 0.12146593687903429
F  4.23298594954501262 3.14668852147090350 1.14218128811375208
F  4.41131299311736935 3.10675948678575597 -0.99817397686848419
F  6.08049539410383577 2.55356399453748395 0.22921112886578388
C  5.18386164001459360 -0.03488426774516751 0.09422299545308296
C  4.67729215503045648 -1.33007736930560050 0.07606227562456391
C  5.64567267933361627 -2.47552582938669197 0.03085472327197973
F  6.07664991705702118 -2.73772484279322548 -1.22426081474156079
F  6.76021034278783972 -2.25577948048179877 0.75142284889916533
F  5.13510318842604185 -3.63195991454239842 0.48371919213979342
C  3.31863958807131576 -1.58098435171100493 0.06000836197055969
H  -2.05296245587440973 1.90352169881320776 0.06314783341070614
H  -6.19188378935624240 0.79396096784667114 -0.03057814844445562
H  -3.15316249181559893 -2.23450922638220950 -0.03982309039984932
H  0.78797270072663017 -1.76709362547517790 0.03617279939965751
H  2.21132979663272433 1.61770626238953574 0.10040887722065915
H  6.24528694146331098 0.14840917160369507 0.10576539855532413
H  2.95882542544421856 -2.59813581813782957 0.04415068813798051
39
qcio_charge=-1 qcio_multiplicity=1
O  0.07932564333441036 1.29623005547053194 0.08524116241581915
C  -0.05729366700360433 0.07544582939108138 0.06148209896030973
N  -1.14225100981480399 -0.69748230146558432 0.02991093008437604
C  -2.40163211650687192 -0.22627256387896250 0.01518439153791847
C  -2.80549529774499762 1.12967233263961986 0.03471777402954389
C  -4.14364563901067573 1.46976292277420795 0.01315838200738530
C  -4.49621740882416443 2.92344501842688986 0.05666531874185834
F  -3.81712447752599981 3.66663802523798177 -0.84168774540179803
F  -4.23463226029772688 3.49220155428639822 1.25710366418872810
F  -5.79718767437411575 3.18146610604503577 -0.17817567534583895
C  -5.15136514016600700 0.51346719742670777 -0.02503595296069352
C  -4.75980848078909702 -0.82365445956552241 -0.03927159122661744
C  -5.82517737524125323 -1.87235575014496969 -0.11846523806495408
F  -6.25259592753044036 -2.08920593489837314 -1.38712245736511441
F  -6.93906941444137804 -1.55960908633927131 0.57436169638717360
F  -5.44320364967291503 -3.07812380502058636 0.33561365486937617
C  -3.43295503108827571 -1.19429377845161566 -0.02504666713885581
N  1.06985933808528477 -0.79491703339015940 0.06340562425128270
C  2.39627143133591947 -0.51755759610237007 0.07552226300785748
C  2.90307807158263920 0.79149251209377058 0.09835697038138454
C  4.26846555833588770 1.01092404963074789 0.10707514273258394
C  4.74586282323349540 2.43280089768341767 0.12322828654207282
F  4.24823206441163759 3.14184037437387165 1.15577871281027833
F  4.39409510528535208 3.11392288263844685 -0.98725525987941154
F  6.08187082190972816 2.55455401146403638 0.21152074606523025
C  5.18382889970647920 -0.03379185746349041 0.09263382927432841
C  4.67741908158486730 -1.32908545056619087 0.07483703675485379
C  5.64592697100372831 -2.47431366761011207 0.02586663722919141
F  6.07881445692050892 -2.73074727424573016 -1.22964288521624687
F  6.75940001888175246 -2.25742708428195726 0.74908926485592797
F  5.13516631360702647 -3.63291679074426277 0.47289128454288953
C  3.31879688619986180 -1.57997373519859519 0.06271583961444059
H  -2.05415797942694844 1.90346605077827413 0.06482928399007565
H  -6.19186923353625129 0.79197379056688266 -0.03778684380270481
H  -3.15237240806020491 -2.23540406390555146 -0.03840768167861395
H  0.78889353768443216 -1.76675220920952714 0.04325784117616778
H  2.21165908138758072 1.61880364325031745 0.10892056932638727
H  6.24524283573801142 0.14950447664724278 0.10108671663290433
H  2.95920008809061219 -2.59720913813183651 0.04688238396937158
39
qcio_charge=-1 qcio_multiplicity=1
O  0.07894615218666842 1.29642768780040796 0.09364852844025617
C  -0.05730661880519101 0.07562902247316955 0.06629038507772304
N  -1.14233047017414524 -0.69712720072300871 0.03121756234468290
C  -2.40174531309977990 -0.22613008504493412 0.01560408104781528
C  -2.80608776865655862 1.12967239005184483 0.03509445993574211
C  -4.14439415020819801 1.46905972785843519 0.01152618997724358
C  -4.49693696829081180 2.92272218557498542 0.05545841777703343
F  -3.81876764413703507 3.66610123002004595 -0.84338081969711065
F  -4.23407125438325593 3.49134251827026754 1.25581337246832336
F  -5.79810217154814733 3.18080194148178919 -0.17792182252435609
C  -5.15191231159145691 0.51259957011990087 -0.02735468149133040
C  -4.75985177026204465 -0.82440383060321798 -0.04174871936713159
C  -5.82476825661648867 -1.87355424888922406 -0.12096536926594008
F  -6.25374700399455641 -2.08969059147926473 -1.38923410003445991
F  -6.93801032198840417 -1.56171853633223923 0.57341491643162412
F  -5.44181262744872196 -3.07953485828284546 0.33166009921396117
C  -3.43291410734435853 -1.19441028633030033 -0.02606988160571308
N  1.06991461315636993 -0.79439470197683359 0.06833749075970778
C  2.39642277579771612 -0.51702058101045023 0.07845330921099215
C  2.90319048858431739 0.79197758567841692 0.10041236967151182
C  4.26868210891831446 1.01130366745870193 0.10731530028743509
C  4.74609024318224648 2.43315419743336170 0.12260587971380849
F  4.25560009984992504 3.14026882334601742 1.15988840747663247
F  4.38652042391264008 3.11624582437136510 -0.98418918117048948
F  6.08261521104187963 2.55481107001504215 0.20171038017489645
C  5.18403224877683311 -0.03333864672682969 0.09188427719075169
C  4.67745611672642791 -1.32857547977550272 0.07510604143437082
C  5.64622686793320039 -2.47351789870726124 0.02467627273042904
F  6.07907769584994107 -2.72800839404732987 -1.23131691482658434
F  6.75969158339314724 -2.25718025140641698 0.74802457659695154
F  5.13591339822360649 -3.63283137345332152 0.47009502377410450
C  3.31887414291326355 -1.57952220228023665 0.06444316261872862
H  -2.05526077340234226 1.90395051609119581 0.06609319942082294
H  -6.19246243570930588 0.79079248385798517 -0.04139061610753252
H  -3.15193954914994379 -2.23541755046406099 -0.03953801284861418
H  0.78969239466104235 -1.76643822705265952 0.04729006087099663
H  2.21198319267455101 1.61947854889610787 0.11192957595604956
H  6.24548971856324808 0.14980491803680976 0.09911574647671481
H  2.95935687772877154 -2.59681081403922986 0.04944054015882489
39
qcio_charge=-1 qcio_multiplicity=1
O  0.07881657712999626 1.29618881936796937 0.09613399027502337
C  -0.05730274385228207 0.07537233265641634 0.06732870683391380
N  -1.14213996023824382 -0.69758495851879898 0.03111632736047554
C  -2.40155111177597513 -0.22679489829923496 0.01532364679579525
C  -2.80593024070009767 1.12901117345737778 0.03504638165146884
C  -4.14415822718923632 1.46867632580830310 0.01083444824008162
C  -4.49734944828356031 2.92215957447248664 0.05563807741609409
F  -3.81971137869253052 3.66645159783578611 -0.84272597948851768
F  -4.23440373079686960 3.49011184967964150 1.25648339149314059
F  -5.79865813835422461 3.17985713258121727 -0.17711560522947675
C  -5.15154612580257165 0.51214650498536951 -0.02817074844125967
C  -4.75951743643389147 -0.82489810790308071 -0.04297464778385780
C  -5.82478602532956558 -1.87369759643325340 -0.12181126894427312
F  -6.25455805076205085 -2.08966475755688608 -1.38982949687908897
F  -6.93759658719114114 -1.56145758253791911 0.57318268294846686
F  -5.44204696589779591 -3.07982306951373408 0.33059132288113463
C  -3.43266918279219713 -1.19517334780215667 -0.02665691997921108
N  1.06996515188772734 -0.79436930443578546 0.06972005817724825
C  2.39645864897467042 -0.51665147040632786 0.07932217441725110
C  2.90305475029585169 0.79239735360020880 0.10104422010071029
C  4.26851185283287471 1.01198325977719650 0.10735678271423207
C  4.74609772506025607 2.43380978461316166 0.12227035508435800
F  4.25889962285712098 3.14022655077327251 1.16154758172389361
F  4.38308062882068405 3.11773629581327727 -0.98294658026901183
F  6.08282896640540471 2.55534081602808527 0.19723644100042137
C  5.18386910955662650 -0.03262547960711059 0.09162741343788811
C  4.67760971288051230 -1.32803221045902053 0.07537672978122296
C  5.64623199449047597 -2.47313231819131518 0.02451635163334386
F  6.07859178873564776 -2.72740628880188929 -1.23180874230772730
F  6.75999515558305220 -2.25704549989366132 0.74737677063255525
F  5.13597659357177072 -3.63242857605396052 0.46982443292854131
C  3.31905679771273343 -1.57904143435042976 0.06494418253551426
H  -2.05505092983560811 1.90321520360842533 0.06630713538326304
H  -6.19208038669519834 0.79032400474651820 -0.04300373855240187
H  -3.15155805106808362 -2.23614899481223217 -0.04038633116099459
H  0.79023835470318449 -1.76656285201173269 0.04884181654528991
H  2.21174276281099935 1.61980313278663313 0.11288640228150403
H  6.24530277089096320 0.15061525629297171 0.09860019114793181
H  2.95964059375392274 -2.59637007108512430 0.05039155191393296
39
qcio_charge=-1 qcio_multiplicity=1
O  0.07893661754739410 1.29608172347332995 0.09637006705702908
C  -0.05723059414447520 0.07526027639738184 0.06789544108775718
N  -1.14213828995761069 -0.69763176708764363 0.03174996205601415
C  -2.40154615679369554 -0.22678198376232561 0.01564241936122434
C  -2.80598075341413900 1.12900987540826314 0.03528575310642781
C  -4.14424103143881517 1.46850999853254827 0.01074527675468835
C  -4.49721378718848097 2.92202122721844715 0.05589110361979290
F  -3.81913609294260947 3.66652236008506716 -0.84191383974536182
F  -4.23453061337070391 3.48946332511770052 1.25713861438074015
F  -5.79839290380143346 3.18001815963097423 -0.17710992732682826
C  -5.15165998424218419 0.51197170225823130 -0.02855554710996302
C  -4.75954338078488615 -0.82504801230462388 -0.04337587568574881
C  -5.82461818525597597 -1.87403923873957923 -0.12242162706729197
F  -6.25404326143935663 -2.08998177730957080 -1.39054751859820080
F  -6.93766585907927702 -1.56204846811467357 0.57236647621590020
F  -5.44176765943436624 -3.08011367877396980 0.33003579102782127
C  -3.43264939575429651 -1.19515893219869063 -0.02641369793214268
N  1.06998127432345402 -0.79452282667305574 0.07027465830527230
C  2.39647625733754843 -0.51675012071909965 0.07969325845905306
C  2.90292389495642089 0.79235979257529121 0.10132736491638551
C  4.26835800095438866 1.01200456901509783 0.10723801577231987
C  4.74540206133421627 2.43401707084005903 0.12202282082195702
F  4.25961943856002279 3.13978803334105017 1.16240783858237529
F  4.38020713919082105 3.11822263304143465 -0.98233008213336126
F  6.08219226833102677 2.55609034630577492 0.19483965079785120
C  5.18395060994079238 -0.03242928334649293 0.09133531210172585
C  4.67771731897993170 -1.32785609618404354 0.07534391620831456
C  5.64662305428005240 -2.47271326087833598 0.02434900903126873
F  6.07855526915486610 -2.72712245343343040 -1.23216744603803896
F  6.76062445385070188 -2.25620816945764657 0.74668033967144365
F  5.13681406999760704 -3.63202467782406702 0.47003893217866438
C  3.31916577285259651 -1.57905768556437076 0.06511658066100687
H  -2.05509482996477688 1.90320124398812696 0.06671873546598130
H  -6.19221473192758332 0.79008786888148630 -0.04403384990314940
H  -3.15134284579730473 -2.23607526477336904 -0.04010223209193997
H  0.79018969896336233 -1.76670199953859774 0.04980056902560538
H  2.21146449623195629 1.61964720530509210 0.11328562044372070
H  6.24538074581546709 0.15090841486275297 0.09810807498754355
H  2.95978275139268598 -2.59640197938385597 0.05070954983304781
39
qcio_charge=-1 qcio_multiplicity=1
O  0.07889955226038980 1.29613388910587046 0.09665595172691568
C  -0.05718028962449671 0.07530492499209405 0.06820211632306004
N  -1.14206280583289455 -0.69767225299862856 0.03219928015929189
C  -2.40155025695300184 -0.22693416450254664 0.01603867479116318
C  -2.80607958233516142 1.12883667146648481 0.03558826271751388
C  -4.14438545039150519 1.46812772047334184 0.01103240969263838
C  -4.49736832438272582 2.92160942478854979 0.05653381993536145
F  -3.81821773023994249 3.66662922336966712 -0.83995787254649512
F  -4.23609031586791041 3.48830166337297598 1.25852425933801815
F  -5.79826081130416870 3.17977070889370772 -0.17777622887845870
C  -5.15176405626362932 0.51151348346475090 -0.02848181947900530
C  -4.75948077239631040 -0.82543141342588988 -0.04336271916673140
C  -5.82439858749091588 -1.87455808209429398 -0.12273110400618482
F  -6.25272753952311700 -2.09100498296786119 -1.39111585892986112
F  -6.93805221404552430 -1.56247819864261217 0.57106631531837970
F  -5.44174339209458591 -3.08040134043254898 0.33053324896354114
C  -3.43253931256726252 -1.19540435940133416 -0.02596928586312654
N  1.07007735049178621 -0.79443773540930107 0.07048013822672694
C  2.39653751103790080 -0.51652917829444200 0.07972851771651415
C  2.90287199047335687 0.79264679452673703 0.10143050285586336
C  4.26828832304399697 1.01235470041545517 0.10697056052409365
C  4.74512401926788030 2.43442170680323944 0.12171640440332608
F  4.26074823961715232 3.13967759994556772 1.16311088969149790
F  4.37816075923166625 3.11895134085464942 -0.98185376470633745
F  6.08199955788464841 2.55669223897767584 0.19263734101200514
C  5.18403154608205252 -0.03197752955212814 0.09090729421916043
C  4.67787622725079810 -1.32741633378474533 0.07494808256431584
C  5.64677246809197442 -2.47225836011136124 0.02388372796321933
F  6.07716181464965555 -2.72795320630797322 -1.23295779564920571
F  6.76164806424533182 -2.25505079813210152 0.74459707303647293
F  5.13746216945876988 -3.63111459271059012 0.47131748946914925
C  3.31933293717903544 -1.57871850749529097 0.06487099798869927
H  -2.05519491009981303 1.90302522167504939 0.06712159800672825
H  -6.19235670937128901 0.78951993289915912 -0.04436225281356919
H  -3.15104402816955220 -2.23626508067834173 -0.03961041192103214
H  0.79018678313157587 -1.76658814520275453 0.05010201104512228
H  2.21123298917241140 1.61979178706270632 0.11351377941179058
H  6.24545064286951312 0.15147165917900748 0.09752120621895211
H  2.95998898077720174 -2.59606827991131128 0.05038666893941874
39
qcio_charge=-1 qcio_multiplicity=1
O  0.07872410535499702 1.29628957894720731 0.09699638614877350
C  -0.05706591494933460 0.07544210196498076 0.06838143212873778
N  -1.14175377808859912 -0.69788415529019587 0.03265317676509539
C  -2.40143188994312329 -0.22750163946897861 0.01661606792680542
C  -2.80628800442619131 1.12818647707989395 0.03616745161028952
C  -4.14468275980673528 1.46710337260168000 0.01193443679883157
C  -4.49834619214919584 2.92037059947486055 0.05850158039465204
F  -3.81604318360443351 3.66732421257667474 -0.83378168693879551
F  -4.24197790770048222 3.48483962848667561 1.26278706322203904
F  -5.79842670247302827 3.17846947516978684 -0.18020933167954917
C  -5.15178107307608357 0.51012934570209145 -0.02783320613136897
C  -4.75918134411734872 -0.82668533538559485 -0.04297945209532535
C  -5.82353272925034915 -1.87638727758107260 -0.12275893567818699
F  -6.24898381358061528 -2.09492827174964802 -1.39169466268106667
F  -6.93879412599901535 -1.56389278370253382 0.56826800948884459
F  -5.44118873632334576 -3.08134455037006516 0.33321807023832573
C  -3.43209409977902213 -1.19625439321869709 -0.02514627749816844
N  1.07038696729856420 -0.79408108060699989 0.07035751171702308
C  2.39677072659757684 -0.51589526991652401 0.07925752000248988
C  2.90271966694897987 0.79347130838413438 0.10133611571668436
C  4.26805790845111321 1.01349899471352689 0.10623370719470031
C  4.74415751900530935 2.43579383890773560 0.12134869959894024
F  4.26416229716132200 3.13896047292675684 1.16620886143009761
F  4.37167751146879624 3.12189591841687619 -0.97937103800572345
F  6.08127062856853229 2.55878140310453306 0.18639977443062430
C  5.18425677447711042 -0.03049746604503932 0.08979169839407229
C  4.67837861612935768 -1.32600472082379461 0.07359746982150786
C  5.64741360740617893 -2.47068278276372411 0.02228671564203744
F  6.07259535160809438 -2.73064527399575363 -1.23557113584965106
F  6.76520363455661666 -2.25096502052066727 0.73754220308956819
F  5.14003154618043556 -3.62811259565242095 0.47563946204587892
C  3.31986602700592481 -1.57777114121229323 0.06370514451562416
H  -2.05544377983017545 1.90239820085477085 0.06784858695690574
H  -6.19245876439675058 0.78787317941361790 -0.04416383020544865
H  -3.15020232809883005 -2.23699920347701386 -0.03874267102707344
H  0.79033672789500631 -1.76617812863331936 0.04992473722165137
H  2.21063331158522525 1.62025459300121555 0.11375809247272083
H  6.24562502204169778 0.15334229261601101 0.09613701862337649
H  2.96076401511524434 -2.59519575371809186 0.04879474249303106
39
qcio_charge=-1 qcio_multiplicity=1
O  0.07823134698865923 1.29648931639184184 0.09738855613880350
C  -0.05693279698539428 0.07559128675681973 0.06842394730705351
N  -1.14121994838494389 -0.69832517750661927 0.03283154791097709
C  -2.40118642460255760 -0.22861970570822931 0.01714899165719901
C  -2.80672227610568781 1.12686239704861868 0.03700112797056398
C  -4.14532774834986739 1.46489631280980359 0.01329923555280131
C  -4.49961567827791420 2.91794119821133924 0.06117874815861113
F  -3.81227877333758736 3.66740074797919302 -0.82487571382651459
F  -4.25071986870021234 3.47931845601258072 1.26866588094617772
F  -5.79835274579767912 3.17621458908740273 -0.18450763306941226
C  -5.15209062600703671 0.50748457512070111 -0.02653734163022485
C  -4.75862828397676019 -0.82901513479704658 -0.04213006181921246
C  -5.82230332358316804 -1.87938934930090773 -0.12217842438840257
F  -6.24409876221992910 -2.10119547419947272 -1.39171621788206945
F  -6.93957411046413775 -1.56597314719152769 0.56512287140595341
F  -5.44042509911271566 -3.08304132503984851 0.33774648875199109
C  -3.43129476409945289 -1.19789420678696668 -0.02443468392666595
N  1.07095006187334096 -0.79341968726591261 0.06982593048891218
C  2.39714671785006139 -0.51443851411099872 0.07828131422571129
C  2.90247505466505284 0.79520932945731815 0.10095802560848435
C  4.26768142233459535 1.01593368072578794 0.10526920559393819
C  4.74305186658376599 2.43845120911746438 0.12139890647963955
F  4.27065252108168902 3.13781080452257877 1.17234598376231691
F  4.36165540184427325 3.12786939888946680 -0.97409443981636024
F  6.08054738582558674 2.56214284635987122 0.17669328260865880
C  5.18440584734750232 -0.02764407035438968 0.08826771153469429
C  4.67928720667725173 -1.32340978669830811 0.07147769639591750
C  5.64797030302959691 -2.46835215638192684 0.01948392115411805
F  6.06472176028955268 -2.73491059775804013 -1.23991125919975564
F  6.77044047561563556 -2.24547050316973484 0.72615403819019697
F  5.14316729138015560 -3.62340986743655691 0.48190163340872549
C  3.32084571796889438 -1.57572755885744931 0.06179952764030116
H  -2.05620350730953350 1.90138597664454245 0.06877942443028344
H  -6.19292752293280913 0.78473101464386352 -0.04282257925072535
H  -3.14886836013935145 -2.23848898342278257 -0.03816581212059644
H  0.79112851602197520 -1.76557605824665442 0.04897507657116840
H  2.20983410445406703 1.62153039713421365 0.11387863167961840
H  6.24565272164295848 0.15687696531269057 0.09428649198282213
H  2.96227973417553203 -2.59332104778218442 0.04622947767335236
39
qcio_charge=-1 qcio_multiplicity=1
O  0.07707492032659950 1.29709186141986521 0.09790815645654248
C  -0.05668268509248591 0.07607093761197242 0.06813710034009550
N  -1.14004657141956001 -0.69915041540995393 0.03236633837439410
C  -2.40063352426072329 -0.23101301600485874 0.01751863682699407
C  -2.80773589787765054 1.12400732591971941 0.03880725651137536
C  -4.14671081099364525 1.46055920275102791 0.01612234668047381
C  -4.50388065280712979 2.91282129252647026 0.06664613349348959
F  -3.80898501181847315 3.66760043405838276 -0.80856671683905301
F  -4.26858517947615201 3.46899251619992555 1.27949707789187039
F  -5.80056825438432000 3.16987618642071745 -0.19100916345700625
C  -5.15222220422684707 0.50181028845191711 -0.02411749942152566
C  -4.75734254661558253 -0.83420644275210620 -0.04122794302173918
C  -5.81933356719519956 -1.88625824251363094 -0.12204819813269044
F  -6.23627006705887332 -2.11232869445366767 -1.39239028808577592
F  -6.93940501020648171 -1.57268457913440263 0.56048306104669676
F  -5.43717172099154222 -3.08807383419821102 0.34261581196030960
C  -3.42953321364435881 -1.20149972141719341 -0.02452844337801598
N  1.07221935183659989 -0.79168912459766150 0.06889647152036514
C  2.39811110893757640 -0.51141025071759150 0.07649965117988859
C  2.90213416811290026 0.79875773236635761 0.09977071246911126
C  4.26713886967925760 1.02079637098600728 0.10321770006687145
C  4.74067216826973059 2.44384326055600454 0.12169248892103934
F  4.28883267220880793 3.13297773773713262 1.18863381629984910
F  4.33569866624403222 3.14214630153039876 -0.95930457697036919
F  6.07880523698189101 2.56941006117036830 0.15090704454564974
C  5.18501386942736264 -0.02178559556476582 0.08566663702220065
C  4.68112629187508311 -1.31793604323799385 0.06813875487179742
C  5.64992289355339850 -2.46268677679287862 0.01501338244907111
F  6.05175116546420622 -2.74072754885572722 -1.24683684353429447
F  6.78042846854925596 -2.23345431335716293 0.70631911759863508
F  5.15064245011924449 -3.61371962639887379 0.49360357382986148
C  3.32289915066933839 -1.57167148785161959 0.05883346845860357
H  -2.05801296871402872 1.89927169043641730 0.07106184691076586
H  -6.19335812255679397 0.77795731066374241 -0.03965427058802274
H  -3.14600043827490783 -2.24178166050884142 -0.03922300794825122
H  0.79319952680126593 -1.76405723649281354 0.04716468409784052
H  2.20859654071527567 1.62435027695011391 0.11320412315832540
H  6.24604643288805317 0.16398024068807787 0.09112269758009919
H  2.96551933221806507 -2.58966826797434857 0.04249836911381725
39
qcio_charge=-1 qcio_multiplicity=1
O  0.07520061141094360 1.29814796115733322 0.09783544548020158
C  -0.05659176674846563 0.07693006144350500 0.06754693095762922
N  -1.13857543573098341 -0.70009610823335489 0.03118268756099294
C  -2.39995106622208976 -0.23427314450898679 0.01658843742903611
C  -2.80956511966871814 1.11995996600149361 0.03892903205732120
C  -4.14916345120106733 1.45408839432997605 0.01674306673034254
C  -4.50947660343179102 2.90559874182767341 0.06765634734829754
F  -3.81204088948061237 3.66307289270248182 -0.80310838101780047
F  -4.28133372213497854 3.46062195797174210 1.28237889691382145
F  -5.80551164552340015 3.16024307872435672 -0.19594653622713892
C  -5.15290085671796572 0.49349297523194185 -0.02333413426215470
C  -4.75555155612648583 -0.84180601582718317 -0.04127847361879265
C  -5.81580595895115326 -1.89560865624412989 -0.12208955300703164
F  -6.23474245206717814 -2.12042864525546593 -1.39200614686381430
F  -6.93513252799808377 -1.58497943620589887 0.56297518265775004
F  -5.43073417433138772 -3.09752253022562352 0.33990224998385249
C  -3.42706788815158570 -1.20665614654064823 -0.02602179054406401
N  1.07370757420871854 -0.78903176785800011 0.06836167738383078
C  2.39918709220681237 -0.50687752001221575 0.07521944031413563
C  2.90160850267033599 0.80385932991836273 0.09988797757316872
C  4.26646272626620782 1.02753015901904488 0.10316188446366352
C  4.73844036390039669 2.45101966613644295 0.12749418218636527
F  4.32511577148355109 3.12061453217682683 1.22281668743838745
F  4.29314301020399736 3.16709008135638692 -0.92497230524201812
F  6.07651404152675756 2.57884562646224147 0.11044130003961709
C  5.18542161385247979 -0.01402587952977312 0.08471228482019885
C  4.68319797724773235 -1.31076594462774998 0.06537892055752427
C  5.65252558704986363 -2.45501338100357724 0.01037183242289223
F  6.04610786178639348 -2.73789582042700630 -1.25292862500031377
F  6.78732011318278428 -2.22259391008916385 0.69338733710300737
F  5.15690521218199915 -3.60451471054296180 0.49674612561482545
C  3.32528170405352297 -1.56599056178674978 0.05602715886931971
H  -2.06134449674376841 1.89667755727328169 0.07121301399527068
H  -6.19453806880762059 0.76776022346714823 -0.03771334644842014
H  -3.14177699129665200 -2.24645499388350434 -0.04149314260772265
H  0.79635562876765098 -1.76184746979468887 0.04489449949967322
H  2.20716920374579217 1.62875086662190038 0.11403501986227678
H  6.24621025821480291 0.17305121746414392 0.09001734037917035
H  2.96928465463600366 -2.58445449647990788 0.03842698349638640
39
qcio_charge=-1 qcio_multiplicity=1
O  0.07586951711937646 1.29737980485675553 0.09553749915902156
C  -0.05679481056370776 0.07623352086773322 0.06593558695480710
N  -1.13938175620532856 -0.69990736168223788 0.02959502065460384
C  -2.40031636231540313 -0.23295605127757996 0.01556534271459342
C  -2.80883103557754898 1.12157469623788475 0.03956574696997381
C  -4.14812977179886921 1.45693607288416027 0.01774368676527164
C  -4.50689590810566010 2.90881245169456459 0.06952557421995303
F  -3.81373660008487114 3.66470290600078519 -0.80631118549304437
F  -4.27115697074910106 3.46498591084248497 1.28201783475060460
F  -5.80417608952412500 3.16439507865109793 -0.18704431694955820
C  -5.15268846785787460 0.49731506810212445 -0.02312975350002681
C  -4.75647639831390556 -0.83834278917063287 -0.04253409489437181
C  -5.81784004857065984 -1.89091995420802461 -0.12426141335110845
F  -6.23957228907297168 -2.11191929688921443 -1.39402694789003623
F  -6.93554656866706143 -1.58094066609170336 0.56373183753651446
F  -5.43316489827302540 -3.09446637759561005 0.33364213273343180
C  -3.42834603386470560 -1.20438995393711412 -0.02827260582618785
N  1.07295911735482274 -0.79043218183766517 0.06716657263560005
C  2.39864508567278145 -0.50907831792692004 0.07517792649571245
C  2.90175576362074095 0.80138489897248399 0.09742149339319994
C  4.26663928454208996 1.02450673508855261 0.10208218762541488
C  4.73984394156708611 2.44775905338926236 0.12255506707622901
F  4.31061398047069755 3.12687739039190626 1.20565115124047506
F  4.31185896118006351 3.15618838787969658 -0.94238029665295409
F  6.07821606777030343 2.57372311608913229 0.12489336635582747
C  5.18502496686987602 -0.01755316589224615 0.08647002891306131
C  4.68219659469257454 -1.31415436420109355 0.06928806062670438
C  5.65155458273730638 -2.45854048028792782 0.01696079112511561
F  6.05364900540745676 -2.73688781017749339 -1.24452958878512887
F  6.78182090487654765 -2.22847775723245389 0.70848555753552866
F  5.15280562487962435 -3.60964613660573352 0.49611228054722079
C  3.32419008534646787 -1.56877548988368698 0.05912699921479367
H  -2.06008373866820760 1.89776304710117683 0.07246807315920353
H  -6.19408861893131757 0.77244279273430438 -0.03656621373090423
H  -3.14398338275549794 -2.24442948411434662 -0.04519000641641255
H  0.79534700082512255 -1.76320941878493387 0.04542105692818191
H  2.20795485865005592 1.62676770738823651 0.10930104100577749
H  6.24590930890059415 0.16891044650650686 0.09260855002211187
H  2.96770993467904898 -2.58711387767236634 0.04363546543035086
39
qcio_charge=-1 qcio_multiplicity=1
O  0.07622312665382681 1.29815521474862461 0.09484225503439803
C  -0.05692053729823857 0.07704844649587328 0.06525323876533634
N  -1.13977319259023657 -0.69868724411030680 0.02888386354805247
C  -2.40057031161861101 -0.23146154359359966 0.01510644700966653
C  -2.80886682685831079 1.12312930347937212 0.03948858753774830
C  -4.14811793910408522 1.45874059233186393 0.01783736837780846
C  -4.50663537560883043 2.91069350778044367 0.06950365196001609
F  -3.81624326419766113 3.66559689678690859 -0.80955479502151284
F  -4.26686287818131316 3.46814644809540296 1.28043961119633387
F  -5.80472741434460549 3.16612458641727867 -0.18322825196339068
C  -5.15279722952138819 0.49928350789370612 -0.02293163665448825
C  -4.75685522832510976 -0.83648112976476297 -0.04265691639153083
C  -5.81838990354621544 -1.88888042805176481 -0.12423517531595726
F  -6.24139744966901233 -2.10889089181458855 -1.39381055451129532
F  -6.93542287497847632 -1.57924643692163347 0.56499638552950260
F  -5.43348016902737019 -3.09283730269348389 0.33233998137644682
C  -3.42880774374206743 -1.20272772868419264 -0.02893128693847286
N  1.07245286225072367 -0.79004433030615462 0.06614897626810558
C  2.39830876706373086 -0.50950048148630700 0.07511705106744321
C  2.90227805894548174 0.80064636158745206 0.09646679710691128
C  4.26739113827978667 1.02262805914076438 0.10191577878159790
C  4.74239362706754619 2.44528297496100189 0.12063528112704823
F  4.30430314139360171 3.12984138370667297 1.19663969620166188
F  4.32545387787775404 3.14962371371405547 -0.95147055730611740
F  6.08091362674295421 2.56911860831150873 0.13462344909502291
C  5.18495337917394306 -0.02016038362074605 0.08737445712171962
C  4.68116962992411967 -1.31639030493175779 0.07105053726160658
C  5.65004655032352243 -2.46124198462860289 0.01961830047961926
F  6.05620267368565024 -2.73700903689830355 -1.24104110059367745
F  6.77815504175174688 -2.23306938920823628 0.71542528976398401
F  5.14927412495461034 -3.61309329848822713 0.49476252925624359
C  3.32301258249127596 -1.56997665901291961 0.06043524712918278
H  -2.06005838592237955 1.89927002842637971 0.07227207976478020
H  -6.19414970507448270 0.77454448949497867 -0.03588446572040924
H  -3.14458979549634110 -2.24280604846287535 -0.04631281393700079
H  0.79465543025787111 -1.76278644566898191 0.04505136704811775
H  2.20909502234027411 1.62660827029682165 0.10747047141709480
H  6.24598669556112629 0.16538964291351238 0.09400915435324851
H  2.96575170562820389 -2.58806281802512617 0.04578920907463559
39
qcio_charge=-1 qcio_multiplicity=1
O  0.07608999998351831 1.29815787919539050 0.09493019391524982
C  -0.05691276484679315 0.07704008634945463 0.06517924872902570
N  -1.13968209416496213 -0.69881133356463954 0.02870245961699868
C  -2.40052844625790307 -0.23174524161613513 0.01498942632023198
C  -2.80900192233162871 1.12278176789596884 0.03971421808337161
C  -4.14829658638157195 1.45821694762994869 0.01812687580332556
C  -4.50694085077466600 2.91012233782949359 0.07017400793261096
F  -3.81694168976793380 3.66522222037234879 -0.80905078879756887
F  -4.26676149306601982 3.46740979557895246 1.28107681638518822
F  -5.80514813852115275 3.16548027453172631 -0.18204966193674244
C  -5.15285182101883787 0.49864877772019051 -0.02291406232661456
C  -4.75672814319014758 -0.83706164428378560 -0.04297665598325453
C  -5.81817727709413113 -1.88952239018685209 -0.12481536145288778
F  -6.24183057451176371 -2.10859158146136894 -1.39434533894768609
F  -6.93489227540366926 -1.58052383775810812 0.56522566768356652
F  -5.43292632548017540 -3.09378572148567121 0.33062823706987188
C  -3.42864117989609385 -1.20313689686486169 -0.02931716610015560
N  1.07256475233313164 -0.78990372945863085 0.06596553867537885
C  2.39840398089414109 -0.50921329943982729 0.07501889414397639
C  2.90225232000153177 0.80097571466922102 0.09612401808189348
C  4.26732005697050365 1.02312863018832001 0.10157148507376319
C  4.74206355264185753 2.44589049115236135 0.12039662911634502
F  4.30813280174583824 3.12870388408661348 1.19926416000981284
F  4.32061961786544746 3.15175160426647949 -0.94886230828713569
F  6.08058655563206329 2.57013318269751689 0.12925981217039451
C  5.18498764451991967 -0.01956289139119413 0.08731507784601594
C  4.68135390337829360 -1.31587528929257092 0.07123584993063488
C  5.65033354906538676 -2.46065169573978570 0.01999272745744698
F  6.05658824517194461 -2.73650832199544691 -1.24060430881193651
F  6.77837847036029295 -2.23230268606702964 0.71585105961149254
F  5.14963549915773733 -3.61249522793690625 0.49523135324980566
C  3.32322004863176579 -1.56960127283616679 0.06058503028657077
H  -2.06029613011934298 1.89901193296130821 0.07269038138406428
H  -6.19424356299190126 0.77376169580820353 -0.03580413717601746
H  -3.14426781708773451 -2.24316398597201028 -0.04698358831197024
H  0.79488729111357836 -1.76268024916397437 0.04493413286552381
H  2.20895840915617914 1.62683863123120220 0.10689347096409176
H  6.24599633866889370 0.16610032821900730 0.09395445619326079
H  2.96605089287740498 -2.58772073565874461 0.04613165783156227
39
qcio_charge=-1 qcio_multiplicity=1
O  0.07615790437988487 1.29815820090626932 0.09561070187531709
C  -0.05691450671281626 0.07706224230349738 0.06520205117516656
N  -1.13974713705471409 -0.69870678882840964 0.02868058363606914
C  -2.40055931118202492 -0.23157282845805452 0.01513236640119844
C  -2.80895357863721662 1.12298404810410912 0.03944861733973138
C  -4.14823610902307305 1.45847161651261970 0.01798664512055966
C  -4.50672993664371901 2.91042834493973057 0.06960584658439618
F  -3.81693076764125205 3.66511627658767836 -0.81016554919843375
F  -4.26612523957052936 3.46816377492967209 1.28017451131625615
F  -5.80499457203912339 3.16581483423730647 -0.18234401333871983
C  -5.15286589638804760 0.49895606199957548 -0.02255643348932765
C  -4.75681317486582333 -0.83678207922451386 -0.04225914549805811
C  -5.81828632868625562 -1.88925748741352528 -0.12356813038139201
F  -6.24177530763105270 -2.10909260123882136 -1.39302756644403769
F  -6.93508088097397302 -1.57983983774650727 0.56614100468456485
F  -5.43310531458026880 -3.09325388573438387 0.33265130056574510
C  -3.42874320135189992 -1.20291402994870178 -0.02867488711950965
N  1.07250555197558706 -0.78992322142021398 0.06518222167698996
C  2.39837604488208944 -0.50932538585258447 0.07456768920189066
C  2.90230350839108819 0.80082735099578717 0.09601349410662663
C  4.26737134538416019 1.02288955611118526 0.10163477416750083
C  4.74224019141395825 2.44561578351997033 0.12075511125358479
F  4.30781212137897995 3.12843195879556024 1.19941047757003316
F  4.32145159327191841 3.15151786122569666 -0.94872056923702197
F  6.08077918137028117 2.56977697074575717 0.13033510115088301
C  5.18497667537508722 -0.01985919621840491 0.08715829871828014
C  4.68127191373197427 -1.31615048776339383 0.07079937996835911
C  5.65015262270460372 -2.46100296493101611 0.01933242911488254
F  6.05610885915620756 -2.73688037958906571 -1.24133937252889326
F  6.77836036090798899 -2.23276574378483827 0.71496752723855950
F  5.14943912066847886 -3.61280444048755234 0.49467157481260182
C  3.32311607759129313 -1.56977794843397400 0.05997196886030073
H  -2.06019079040700026 1.89917595189035837 0.07201300567905849
H  -6.19424644118639645 0.77411692904188134 -0.03537668035511394
H  -3.14441022384100810 -2.24295323664124302 -0.04607707938584053
H  0.79478409510423320 -1.76267946340119530 0.04387145364212125
H  2.20900181978912569 1.62667932191545739 0.10700301666375976
H  6.24599391756622868 0.16573527102669305 0.09394016811633692
H  2.96586065063601012 -2.58786219846232024 0.04528761463505405
"""

xyzview = p3d.view(width=400,height=400)
xyzview.addModelsAsFrames(multi_xyz,'xyz')
xyzview.setStyle({'stick':{}})
xyzview.animate({"loop": "forward"})
xyzview.zoomTo()
[xyzview.show() for i in range(17)]

This reliably gives me one "broken" viewer with the broken icon and one viewer that is just blank. Re-running the cells never fills in the empty viewers. I think it's this blank state that is happening upon tab switching. If you want a full repro I'm happy to bundle up my local data and notebooks and send them to you, but I think these examples already cover the two error cases--an empty viewer with the broken icon and an empty viewer without the broken icon. I think that tab switching somehow produces the empty viewer without the icon more often, but it's probably caused by the same thing causing the single-tab empty viewer with no icon seen here.

Let me know if you need more details or want my full notebooks!

coltonbh commented 1 month ago

Also, just by way of update here's the visualizations I've built on using py3Dmol. Super helpful for my research so thank you. If you want to use qcio (data structures) or qcop (interoperable driver for QC programs) or bigchem (runs calculations across many nodes efficiently) in any of your research to structure your data let me know, I'd be happy to help get you up to speed :) Thanks again for your help with py3Dmol. Very nice visualizations!

dkoes commented 1 month ago

I've only played around with Case 1 above. I could always get the view to regenerate by scrolling it off and onto the screen though. I've committed a change that will attempt to keep viewport visible contexts alive (up to the first 16).

It is probably worth evaluating using a single shared OffscreenCanvas,but this feature is uncomfortably new.

coltonbh commented 1 month ago

Followed up via email with a link to a Jupyer server where you can interact with my notebooks and reproduce what I'm seeing :) Any questions let me know! Thanks for your time on this :)

OffscreenCanvas seems cool! Sometimes the page does get quite bogged down with 16 WebGL contexts running--would be cool to improve the performance for higher-throughput visualizations somehow!

dkoes commented 4 weeks ago

Are things working better with 2.3.0?

coltonbh commented 3 weeks ago

Two issues:

  1. I still get cells that remain blank. If I scroll far enough away from them and come back they will often fill in:

image

  1. This one seems more important. Pretty reliably if I say "run all" on the second notebook and then open the third notebook and say "run all" I get this experience where it crashes the browser. If I refresh and run the cells again things usually work ok. image

Are you able to reproduce these experiences with the Jupyter Lab link I sent you?

coltonbh commented 3 weeks ago

Hi @dkoes. I keep expanding the number of molecules I'd like to view, for example with conformer search studies, and the individual WebGL context for each molecule continues to create issues. I understand there is the GridViewer; however, I often need to annotate the images with additional data (relative energies, etc.) to place them in context and so the GridViewer can't work.

I used to do frontend web dev but it's been a minute and I never worked with WebGL before, so I did a little sleuthing with ChatGPT to educate myself. I might be overstepping my bounds here, but take the following as a thought from someone who really likes your package and would like to see it scale to support more high-throughput research :)

When I asked if it's possible for a single WebGL instance to back all the viewers so we don't hit the 16 WebGL instance maximum you mentioned:

Yes, but it comes with performance penalties and I'm not going to do it.

After some back and forth to educate myself this was the feedback from ChatGPT on single vs. multiple WebGL instances:

My Question

In the py3dmol python library backed by the 3dmol.org JavaScript library, a new WebGL instance is started for every molecule on the screen. Is this correct design for using WebGL instances or should only one instance back all the molecules on the screen?

ChatGPT 4o Response

Starting a new WebGL instance for every molecule on the screen, as done in the py3Dmol Python library backed by the 3dmol.org JavaScript library, is generally not optimal for performance and resource usage.

Considerations:

  1. WebGL Context Limits:
    • WebGL contexts are resource-intensive, and the number of contexts that can be active simultaneously is limited by the browser. Excessive WebGL instances can lead to issues like context loss, especially if many molecules are being visualized simultaneously.
  2. Performance:
    • Managing multiple WebGL instances can significantly increase memory usage and degrade rendering performance, particularly when handling complex or numerous molecules. It also increases the overhead for context management and can result in slower interaction times.
  3. Shared Resources:
    • A single WebGL instance can share resources (like shaders, buffers, and textures) across multiple objects or scenes, which is more efficient than duplicating these resources for each instance.

Recommended Design:

A better design approach would be to use a single WebGL instance to render all the molecules on the screen. This approach allows for shared resources, reduces the overall memory footprint, and generally results in better performance.

Conclusion:

Using a single WebGL instance for all molecules on the screen is typically the more efficient and scalable approach. However, if independent rendering contexts are absolutely required, it should be done sparingly and with careful management of the number of WebGL instances to avoid performance degradation.

My Thoughts

This feedback could be completely off base due to specific considerations I am not aware of; however, this feels relatively optimistic! I suspect your GridViewer backs all viewers with a single WebGL instance. Would there be any chance to extend this functionality to all viewers on a page as an optional setting even if you don't think this is the right approach for the default case? An alternative option could be to add the ability to pass state (titles and subtitles) to the GridViewer--that could also open doors :)

Ultimately I'd like to be able to have hundreds of molecules on a page and be able to scroll through them to visualize conformer diversity etc. Py3Dmol has a great interface, is easy to use, creates beautiful images, and for me all that's lacking is an ability to scale beyond 16 images reliably. Given the hard browser limit of 16 WebGL context, my though is these will need to get shared in order to reliably scale.

Thoughts? Other packages/approaches you'd recommend for viewing 100's - 1000's of molecules in a browser?

Thanks again for your time and thoughtful consideration of this request!

Example

For example I'd like to be able to have hundreds/thousands of structures laid out like this with associated metadata (like relative energies or other structure metadata) so I can run through them visually:

image

coltonbh commented 2 weeks ago

Here's a web page that should show most of these issues. This is running py3Dmol v2.3.0 :)

https://catalysis-dev.coltonhicks.com/voila/render/04_CREST.ipynb

coltonbh commented 2 weeks ago

Ok the viewergrid definitely gives me the performance I need for viewing lots of images without the browser crashing or getting super laggy!

Do you have any ideas/suggestions for hacking in some metadata onto these images? Ideally, I'd like to be able to have the relative energy data shown above but put this into the gridViewer somehow. I understand there isn't a supported API for this, but are there any documentIds or other clever approaches you might know about based on the implementation so I could hack in some titles/subtitles on the images in the viewer? :)

I'm looking at this code in the class view def __init__ method and wondering if I could run a little JavaScript to grab some div element and then hack in a title/subtitle. Do you think this would be possible?

        if viewergrid: #create split view
            if len(viewergrid) != 2:
                raise ValueError("Incorrectly formated viewergrid arguments.  Must specify rows x columns",viewergrid)
            self.startjs += "var viewergrid_UNIQUEID = null;\n";
            self.startjs += 'viewergrid_UNIQUEID = $3Dmol.createViewerGrid(document.getElementById("%s"),{rows: %d, cols: %d, control_all: %s},{backgroundColor:"white"});\n' % (divid, viewergrid[0],viewergrid[1],'true' if linked else 'false')
            self.startjs += "viewer_UNIQUEID = viewergrid_UNIQUEID[0][0];\n"
            self.viewergrid = viewergrid

Thanks!

Here's what I'm running to get the layout:

image

dkoes commented 2 weeks ago

Sounds like you want to add a screen label: https://3dmol.org/tests/auto/generate_test.cgi?test=testlabelscreen

coltonbh commented 2 weeks ago

Getting warmer! The positioning of the labels doesn't seem to be respected. What am I doing wrong here?

viewers = p3d.view(viewergrid=(9, 2), linked=False, width=1200, height=450 * 9)
for i, conf in enumerate(crest_syn.results.conformers + crest_anti.results.conformers):
    grid = divmod(i, 2)
    viewers.addModel(conf.to_xyz(), "xyz", viewer=grid)
    viewers.addLabel(f"Fake Label {i}!", {"alignment": "topCenter"}, viewer=grid)

viewers.setStyle({"stick": {}, "sphere": {"scale": 0.3}})
viewers.zoomTo()
viewers.render()
viewers.show()

image

dkoes commented 2 weeks ago

You aren't specifying a position, so it should be placing the label at the origin in model coordinates. I think what you want is a label that stays on the screen in a fixed position, so you need to set useScreen and specify a position as in the example above

viewer.addLabel("Screen Label",{position:{x:0,y:0,z:0},useScreen: true, fontSize: 24});
coltonbh commented 2 weeks ago

Ok. Nice! The origin appears to be here based on setting the position with 0,0,0:

image

However if I don't specify a position at all they all end up centerLeft by default:

image

I think your useScreen option is the right move though! Is there any way to align the screen labels to the topCenter and bottomCenter of the viewer? I think that would get me there :)

This code doesn't work, but it gives an idea of what I'd want:

viewers.addLabel(f"Rel Energy: {rel_energies[i]:.3f} kcal/mol", {"alignment": "topCenter" ,"useScreen": True}, viewer=grid)
coltonbh commented 2 weeks ago

Ohhh. I see where I'm messing up. I thought alignment was relative to the frame (viewer) itself. It's a positioning relative the position that is specified. So the correct way to put a label where I want it is through doing math on the pixels and placing the labels according to the pixel size of the viewer, correct?

dkoes commented 2 weeks ago

Yes, that is correct.

coltonbh commented 2 weeks ago

Looks like this is the way. Do you have any additional suggestions or modifications you'd recommend for doing this this "right" way? Thanks for your help!

import numpy as np
viewers = p3d.view(viewergrid=(9, 2), linked=False, width=1200, height=450 * 9)
rel_energies = np.array(crest_syn.results.conformer_energies_relative.tolist() + crest_anti.results.conformer_energies_relative.tolist()) * HARTREE_TO_KCAL_PER_MOL
for i, conf in enumerate(crest_syn.results.conformers + crest_anti.results.conformers):
    grid = divmod(i, 2)
    viewers.addModel(conf.to_xyz(), "xyz", viewer=grid)
    viewers.addLabel(f"U1-", {"position" : {"x":300,"y":0,"z":0}, "alignment": "topCenter","useScreen": True}, viewer=grid)
    viewers.addLabel(f"Rel Energy: {rel_energies[i]:.3f} kcal/mol", {"position" : {"x":300,"y":450,"z":0}, "alignment": "bottomCenter","useScreen": True}, viewer=grid)
    if i == 3:
        break

viewers.setStyle({"stick": {}, "sphere": {"scale": 0.3}})
viewers.zoomTo()
viewers.render()
viewers.show()

image

dkoes commented 2 weeks ago

Looks good - I would make the label transparent so it doesn't obscure as much (backgroundOpacity: 0; fontcolor: "black")

coltonbh commented 2 weeks ago

That looks pretty damn good! Thank you :)

image

dkoes commented 1 week ago

I've pushed changes that use a single shared OffscreenCanvas. This gets rid of the lost context problem. The bad news is I can't use this approach with viewer grids since there doesn't seem to be anyway way to transferFromImageBitmap to part of a bitmaprenderer context. I did try using 2D contexts and drawImage, but the performance was noticeably laggy.

What this means is you can still run into the WebGL context limit, but only if using lots of viewer grids. So in a flip from previous best practices, you will be better off creating many individual viewers rather than using a grid (unless you want features specific to grids like shared mouse controls).

coltonbh commented 1 week ago

Ok cool! Excited to try this out.

I tended to see things get laggy when I had lots of contexts running, often in different Jupyter tabs, as it seemed like the browser struggled to activate/deactivate contexts performantly as they came in/out of view (this is just a guess at what was causing the issue). However, the grid viewer performed great for viewing up to a few dozen molecules without even making the browse sweat.

Viewer grid still seems like the right choice when I have a bunch of molecules I want to view using a shared context (like the conformers above), yes? I.e., there is no advantage to using independent viewers instead of a single grid viewer, correct? However, if I need lots of viewers (and not just lots of molecules in a single viewer) then these updates will apply to those viewers if they are not grid viewers, correct?

So in practice are these takeaways correct?

  1. Use grid viewer for viewing lots of molecules in a single context.
  2. Do NOT use grid viewer for viewing only a few molecules and then have many grid viewer context running because they will not benefit from these updates. Use regular viewers instead for the case of many molecules which cannot share a context via a grid viewer.

Thanks for all your time on this! Not many tools in our field are built to scale and I appreciate the extra effort to make Py3Dmol scale up a bit :) It's helping my research quite a lot!

dkoes commented 1 week ago

Yes, that's correct. If you are able to test this on Windows browsers I would appreciate it - my virtual machine decided to stop working and I don't have time to reinstall it right now.

coltonbh commented 1 week ago

I fortunately do not own a windows machine 😂! Thanks for the updates. Will give these a test once released to pypi :)