Copy disabled (too large)
Download .txt
Showing preview only (33,904K chars total). Download the full file to get everything.
Repository: ncbi/icn3d
Branch: master
Commit: 4d0ce46f2908
Files: 350
Total size: 32.3 MB
Directory structure:
gitextract_1bkdhxzz/
├── .gitignore
├── CHANGELOG.md
├── CODE_OF_CONDUCT.md
├── LICENSE.md
├── README.md
├── SECURITY.md
├── build/
│ ├── icn3d.js
│ └── icn3d.module.js
├── css/
│ └── icn3d.css
├── dist/
│ ├── CHANGELOG.md
│ ├── CODE_OF_CONDUCT.md
│ ├── LICENSE.md
│ ├── README.md
│ ├── example/
│ │ ├── addAnnoLocal.html
│ │ ├── annoLocal.js
│ │ ├── example.html
│ │ ├── loadStateFile.js
│ │ └── module.html
│ ├── full.html
│ ├── full2.html
│ ├── full2_3.49.0.html
│ ├── full_3.49.0.html
│ ├── icn3d.css
│ ├── icn3d.html
│ ├── icn3d.js
│ ├── icn3d.module.js
│ ├── icn3d_3.49.0.css
│ ├── index.html
│ ├── mtz.wasm
│ ├── notfound.html
│ ├── script/
│ │ ├── d3v4-force-all.js
│ │ ├── jszip.js
│ │ ├── mtz.js
│ │ ├── mtz.wasm
│ │ └── pako.js
│ ├── share.html
│ └── share2.html
├── example/
│ ├── addAnnoLocal.html
│ ├── annoLocal.js
│ ├── collection/
│ │ ├── 1wfa.pdb
│ │ └── json_only.json
│ ├── example-simple.html
│ ├── example.html
│ ├── loadStateFile.js
│ └── module.html
├── full.html
├── full2.html
├── gulpfile.js
├── icn3d.html
├── icn3dnode/
│ ├── README.md
│ ├── addmissingatoms.js
│ ├── annotation.js
│ ├── cdsearch.js
│ ├── delphipot.js
│ ├── epitope.js
│ ├── epitope_neighbor.js
│ ├── general_id_cmd.js
│ ├── interaction.js
│ ├── interaction2.js
│ ├── interactiondetail.js
│ ├── interactiondetail2.js
│ ├── ligand.js
│ ├── refnum.js
│ ├── refnum_file.js
│ ├── refpdb/
│ │ ├── 1B2Microglobulin_7phrL_human_C1.pdb
│ │ ├── 1BTLA_2aw2A_human_Iset.pdb
│ │ ├── 1CD19_6al5A_human-n1.pdb
│ │ ├── 1CD28_1yjdC_human_V.pdb
│ │ ├── 1CD2_1hnfA_human_C2-n2.pdb
│ │ ├── 1CD2_1hnfA_human_V-n1.pdb
│ │ ├── 1CD3d_6jxrd_human_C1.pdb
│ │ ├── 1CD3e_6jxrf_human_C1.pdb
│ │ ├── 1CD3g_6jxrg_human_C2.pdb
│ │ ├── 1CD8a_1cd8A_human_V.pdb
│ │ ├── 1Contactin1_2ee2A_human_FN3-n9.pdb
│ │ ├── 1Contactin1_3s97C_human_Iset-n2.pdb
│ │ ├── 1ECadherin_4zt1A_human_n2.pdb
│ │ ├── 1FAB-HEAVY_5esv_C1-n2.pdb
│ │ ├── 1FAB-HEAVY_5esv_V-n1.pdb
│ │ ├── 1FAB-LIGHT_5esv_C1-n2.pdb
│ │ ├── 1FAB-LIGHT_5esv_V-n1.pdb
│ │ ├── 1GHR_1axiB_human_C1-n1.pdb
│ │ ├── 1ICOS_6x4gA_human_V.pdb
│ │ ├── 1IL6Rb_1bquB_human_FN3-n2.pdb
│ │ ├── 1IL6Rb_1bquB_human_FN3-n3.pdb
│ │ ├── 1InsulinR_8guyE_human_FN3-n1.pdb
│ │ ├── 1InsulinR_8guyE_human_FN3-n2.pdb
│ │ ├── 1JAM1_1nbqA_human_Iset-n2.pdb
│ │ ├── 1LAG3_7tzgD_human_C1-n2.pdb
│ │ ├── 1LAG3_7tzgD_human_V-n1.pdb
│ │ ├── 1LaminAC_1ifrA_human.pdb
│ │ ├── 1MHCIa_7phrH_human_C1.pdb
│ │ ├── 1PD1_4zqkB_human_V.pdb
│ │ ├── 1PDL1_4z18B_human_V-n1.pdb
│ │ ├── 1Palladin_2dm3A_human_Iset-n1.pdb
│ │ ├── 1Sidekick2_1wf5A_human_FN3-n7.pdb
│ │ ├── 1Siglec3_5j0bB_human_C1-n2.pdb
│ │ ├── 1TCRa_6jxrm_human_C1-n2.pdb
│ │ ├── 1TCRa_6jxrm_human_V-n1.pdb
│ │ ├── 1Titin_4uowM_human_Iset-n152.pdb
│ │ ├── 1VISTA_6oilA_human_V.pdb
│ │ ├── 1VNAR_1t6vN_shark_V.pdb
│ │ ├── 1VTCN1_Q7Z7D3_human_C1-n2.pdb
│ │ ├── B2Microglobulin_7phrL_human_C1.pdb
│ │ ├── BTLA_2aw2A_human_Iset.pdb
│ │ ├── CD19_6al5A_human-n1.pdb
│ │ ├── CD28_1yjdC_human_V.pdb
│ │ ├── CD2_1hnfA_human_C2-n2.pdb
│ │ ├── CD2_1hnfA_human_V-n1.pdb
│ │ ├── CD3d_6jxrd_human_C1.pdb
│ │ ├── CD3e_6jxrf_human_C1.pdb
│ │ ├── CD3g_6jxrg_human_C2.pdb
│ │ ├── CD8a_1cd8A_human_V.pdb
│ │ ├── Contactin1_2ee2A_human_FN3-n9.pdb
│ │ ├── Contactin1_3s97C_human_Iset-n2.pdb
│ │ ├── ECadherin_4zt1A_human_n2.pdb
│ │ ├── FAB-HEAVY_5esv_C1-n2.pdb
│ │ ├── FAB-HEAVY_5esv_V-n1.pdb
│ │ ├── FAB-LIGHT_5esv_C1-n2.pdb
│ │ ├── FAB-LIGHT_5esv_V-n1.pdb
│ │ ├── GHR_1axiB_human_C1-n1.pdb
│ │ ├── ICOS_6x4gA_human_V.pdb
│ │ ├── IL6Rb_1bquB_human_FN3-n2.pdb
│ │ ├── IL6Rb_1bquB_human_FN3-n3.pdb
│ │ ├── InsulinR_8guyE_human_FN3-n1.pdb
│ │ ├── InsulinR_8guyE_human_FN3-n2.pdb
│ │ ├── JAM1_1nbqA_human_Iset-n2.pdb
│ │ ├── LAG3_7tzgD_human_C1-n2.pdb
│ │ ├── LAG3_7tzgD_human_V-n1.pdb
│ │ ├── LaminAC_1ifrA_human.pdb
│ │ ├── MHCIa_7phrH_human_C1.pdb
│ │ ├── PD1_4zqkB_human_V.pdb
│ │ ├── PDL1_4z18B_human_V-n1.pdb
│ │ ├── Palladin_2dm3A_human_Iset-n1.pdb
│ │ ├── Sidekick2_1wf5A_human_FN3-n7.pdb
│ │ ├── Siglec3_5j0bB_human_C1-n2.pdb
│ │ ├── TCRa_6jxrm_human_C1-n2.pdb
│ │ ├── TCRa_6jxrm_human_V-n1.pdb
│ │ ├── Titin_4uowM_human_Iset-n152.pdb
│ │ ├── VISTA_6oilA_human_V.pdb
│ │ ├── VNAR_1t6vN_shark_V.pdb
│ │ └── VTCN1_Q7Z7D3_human_C1-n2.pdb
│ ├── rename_structure_id.sh
│ ├── rmhet.js
│ ├── secondarystructure.js
│ ├── surfacearea.js
│ ├── tmalign-af.js
│ ├── tmalign-icn3dnode/
│ │ ├── Makefile
│ │ ├── TMalign.cpp
│ │ ├── igstrand2imgt.cpp
│ │ ├── igstrand2kabat.cpp
│ │ ├── resi2igstrand.cpp
│ │ ├── tmalignCgi.cpp
│ │ └── tmalignCgi.hpp
│ └── tmalign.js
├── icn3dpython/
│ ├── README.md
│ ├── icn3d_url/
│ │ ├── README.md
│ │ ├── batch_export_panel.py
│ │ ├── batch_export_png.py
│ │ ├── batch_export_refnum.py
│ │ └── batch_export_ss.py
│ └── web_scraping/
│ ├── README.md
│ ├── config.py
│ └── downloadInteraction.py
├── iframe.html
├── index.html
├── jupyternotebook/
│ ├── README.md
│ ├── icn3dpy/
│ │ └── __init__.py
│ └── setup.py
├── notfound.html
├── package.json
├── script/
│ ├── d3v4-force-all.js
│ ├── jszip.js
│ ├── mtz.js
│ ├── mtz.wasm
│ └── pako.js
├── share.html
├── share2.html
├── simple.html
├── src/
│ ├── html/
│ │ ├── alignSeq.js
│ │ ├── clickMenu.js
│ │ ├── dialog.js
│ │ ├── events.js
│ │ ├── html.js
│ │ ├── setDialog.js
│ │ ├── setHtml.js
│ │ └── setMenu.js
│ ├── icn3d/
│ │ ├── analysis/
│ │ │ ├── alignSW.js
│ │ │ ├── analysis.js
│ │ │ ├── applySymd.js
│ │ │ ├── cartoon2d.js
│ │ │ ├── delphi.js
│ │ │ ├── diagram2d.js
│ │ │ ├── dssp.js
│ │ │ ├── scap.js
│ │ │ └── symd.js
│ │ ├── annotations/
│ │ │ ├── addTrack.js
│ │ │ ├── annoCddSite.js
│ │ │ ├── annoContact.js
│ │ │ ├── annoCrossLink.js
│ │ │ ├── annoDomain.js
│ │ │ ├── annoIg.js
│ │ │ ├── annoPTM.js
│ │ │ ├── annoSnpClinVar.js
│ │ │ ├── annoSsbond.js
│ │ │ ├── annoTransMem.js
│ │ │ ├── annotation.js
│ │ │ ├── domain3d.js
│ │ │ ├── refnum.js
│ │ │ ├── showAnno.js
│ │ │ └── showSeq.js
│ │ ├── display/
│ │ │ ├── alternate.js
│ │ │ ├── applyCenter.js
│ │ │ ├── applyClbonds.js
│ │ │ ├── applyDisplay.js
│ │ │ ├── applyMissingRes.js
│ │ │ ├── applyOther.js
│ │ │ ├── applySsbonds.js
│ │ │ ├── camera.js
│ │ │ ├── draw.js
│ │ │ ├── fog.js
│ │ │ ├── legendTable.js
│ │ │ ├── scene.js
│ │ │ ├── setColor.js
│ │ │ ├── setOption.js
│ │ │ └── setStyle.js
│ │ ├── export/
│ │ │ ├── export3D.js
│ │ │ ├── saveFile.js
│ │ │ ├── shareLink.js
│ │ │ └── threeDPrint.js
│ │ ├── geometry/
│ │ │ ├── axes.js
│ │ │ ├── box.js
│ │ │ ├── brick.js
│ │ │ ├── cartoonNucl.js
│ │ │ ├── curve.js
│ │ │ ├── curveStripArrow.js
│ │ │ ├── cylinder.js
│ │ │ ├── glycan.js
│ │ │ ├── impostor.js
│ │ │ ├── instancing.js
│ │ │ ├── label.js
│ │ │ ├── line.js
│ │ │ ├── reprSub.js
│ │ │ ├── residueLabels.js
│ │ │ ├── sphere.js
│ │ │ ├── stick.js
│ │ │ ├── strand.js
│ │ │ ├── strip.js
│ │ │ └── tube.js
│ │ ├── highlight/
│ │ │ ├── hlObjects.js
│ │ │ ├── hlSeq.js
│ │ │ └── hlUpdate.js
│ │ ├── icn3d.js
│ │ ├── interaction/
│ │ │ ├── contact.js
│ │ │ ├── contactMap.js
│ │ │ ├── drawGraph.js
│ │ │ ├── getGraph.js
│ │ │ ├── hBond.js
│ │ │ ├── ligplot.js
│ │ │ ├── lineGraph.js
│ │ │ ├── piHalogen.js
│ │ │ ├── saltbridge.js
│ │ │ ├── showInter.js
│ │ │ └── viewInterPairs.js
│ │ ├── parsers/
│ │ │ ├── alignParser.js
│ │ │ ├── bcifParser.js
│ │ │ ├── ccp4Parser.js
│ │ │ ├── chainalignParser.js
│ │ │ ├── dcdParser.js
│ │ │ ├── densityCifParser.js
│ │ │ ├── dsn6Parser.js
│ │ │ ├── loadAtomData.js
│ │ │ ├── loadCIF.js
│ │ │ ├── loadPDB.js
│ │ │ ├── mmcifParser.js
│ │ │ ├── mmdbParser.js
│ │ │ ├── mol2Parser.js
│ │ │ ├── msaParser.js
│ │ │ ├── mtzParser.js
│ │ │ ├── opmParser.js
│ │ │ ├── parserUtils.js
│ │ │ ├── pdbParser.js
│ │ │ ├── realignParser.js
│ │ │ ├── sdfParser.js
│ │ │ ├── setSeqAlign.js
│ │ │ ├── vastplus.js
│ │ │ ├── xtcParser.js
│ │ │ └── xyzParser.js
│ │ ├── picking/
│ │ │ ├── control.js
│ │ │ ├── picking.js
│ │ │ └── ray.js
│ │ ├── selection/
│ │ │ ├── applyCommand.js
│ │ │ ├── definedSets.js
│ │ │ ├── firstAtomObj.js
│ │ │ ├── loadScript.js
│ │ │ ├── resid2spec.js
│ │ │ ├── selectByCommand.js
│ │ │ ├── selectCollections.js
│ │ │ └── selection.js
│ │ ├── surface/
│ │ │ ├── applyMap.js
│ │ │ ├── electronMap.js
│ │ │ ├── marchingCube.js
│ │ │ ├── proteinSurface.js
│ │ │ └── surface.js
│ │ └── transform/
│ │ ├── resizeCanvas.js
│ │ └── transform.js
│ ├── icn3dui.js
│ ├── thirdparty/
│ │ ├── CIFTools.js
│ │ ├── CIFToolsMod.js
│ │ ├── FileSaver.js
│ │ ├── canvas-to-blob.js
│ │ ├── color-pick/
│ │ │ ├── color-picker.css
│ │ │ └── color-picker.js
│ │ ├── defineWindow.js
│ │ ├── shader/
│ │ │ ├── CylinderImpostor.frag
│ │ │ ├── CylinderImpostor.vert
│ │ │ ├── CylinderInstancing.frag
│ │ │ ├── CylinderInstancing.vert
│ │ │ ├── Instancing.frag
│ │ │ ├── Instancing.vert
│ │ │ ├── NGL_Shaders.js
│ │ │ ├── SphereImpostor.frag
│ │ │ ├── SphereImpostor.vert
│ │ │ ├── SphereInstancing.frag
│ │ │ └── SphereInstancing.vert
│ │ └── three/
│ │ ├── OrthographicTrackballControls.js
│ │ ├── Projector.js
│ │ ├── StereoEffect.js
│ │ ├── TrackballControls.js
│ │ └── vr/
│ │ ├── ARButton.js
│ │ ├── CanvasKeyboard.js
│ │ ├── CanvasUI.js
│ │ ├── ControllerGestures.js
│ │ ├── GLTFLoader.js
│ │ ├── VRButton.js
│ │ ├── XRControllerModelFactory.js
│ │ └── motion-controllers.module.js
│ └── utils/
│ ├── convertTypeCls.js
│ ├── hashUtilsCls.js
│ ├── myEventCls.js
│ ├── parasCls.js
│ ├── rmsdSuprCls.js
│ ├── subdivideCls.js
│ └── utilsCls.js
└── template/
├── igstrand_template_IgC1.xlsx
├── igstrand_template_IgC2.xlsx
├── igstrand_template_IgI.xlsx
├── igstrand_template_IgV.xlsx
├── igstrand_template_IgV_A.xlsx
└── igstrand_template_IgV_A_Adash.xlsx
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitignore
================================================
node_modules/
icn3dnpm/
tmpdir/
================================================
FILE: CHANGELOG.md
================================================
## Change Log
[icn3d-3.49.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.49.0.zip) was release on April 29, 2026. Added "2D Diagram for Nucleotides" using the R2DT diagram, and "2D Diagram for Ig Domains" with predetermined Ig templates. The features are available via the menu "Analysis > 2D Diagram" in iCn3D.
[icn3d-3.48.1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.48.1.zip) was release on April 15, 2026. Fixed the issue in changing backgroound color.
[icn3d-3.48.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.48.0.zip) was release on April 14, 2026. The IgStrand numbering scheme for Ig-fold has been upgraded to version 1.2 by removing the templates for six IgE, seven IgFN3-like, and three other Igs.
[icn3d-3.47.1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.47.1.zip) was release on January 21, 2026. Showed the count of hydrogen bonds over time for MD trajectories.
[icn3d-3.47.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.47.0.zip) was release on December 29, 2025. Added the support to load trajectory file (DCD or XTC) via the menu "File > Open File > MD Trajectory File", and draw a plane among three sets with the menu "Style > Plane among 3 Sets".
[icn3d-3.46.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.46.0.zip) was release on December 10, 2025. Added an external link "AI Tutor" in the Help menu to use AI as a tutor to show users step-by-step instructions about how to build a custom view with five methods: Interactive, Sharable URL, Jupyter Notebook, Node.js script, and Python script.
[icn3d-3.45.5](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.45.5.zip) was release on December 2, 2025. Fixed alternation display for aligned structures. Added a general Node.js script "general_id_cmd.js" to output results based on PDB/AlphaFold ID and commands from sharable URLs.
[icn3d-3.45.4](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.45.4.zip) was release on November 13, 2025. AlphaFold models were upgraded from version 4 to version 6, e.g., AF-Q12860-F1-model_v6.pdb.
[icn3d-3.45.3](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.45.3.zip) was release on September 22, 2025. Enabled to input long PDB IDs starting with pdb_0000. Fixed sequence alignment view and camera viewpoint-related issues.
[icn3d-3.45.2](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.45.2.zip) was release on August 20, 2025. Switched from Google Firebase Dynamic Link to our own short URL service; removed the line "global.THREE = require('three')" in iCn3D node.js scripts since three.js has been compiled into icn3d.js since iCn3D 3.44.0.
[icn3d-3.45.1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.45.1.zip) was release on July 28, 2025. Fixed bugs in assigning specific template and VAST+ alignment sequence display.
[icn3d-3.45.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.45.0.zip) was release on July 10, 2025. Switched the transformation description in share links from trackball parameters to camera parameters used in BCF files. Fixed a bug in using node.js script.
[icn3d-3.44.2](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.44.2.zip) was release on June 30, 2025. Enabled to drag and drop to open mmCIF, PDB, PNG, and BCF files.
[icn3d-3.44.1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.44.1.zip) was release on June 26, 2025. Output BCF viewpoint file via the menu "File > Save File > BCF Viewpoint".
[icn3d-3.44.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.44.0.zip) was release on June 11, 2025. Upgraded three.js to version 177 and compiled three.js directly into iCn3D library. No need to include three.js as a separate library.
[icn3d-3.43.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.43.0.zip) was release on May 27, 2025. Replaced Google Firebase dynamic links with our own short URL service.
[icn3d-3.42.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.42.0.zip) was release on May 12, 2025. Allowed to input MSA files (CLUSTALW or FASTA formats) to show both MSA and structure alignment via the menu "File > Open File > Multiple Seq. Alignment" in the "All Menus" mode; Added the "Stereo View" option in the menu "View"; allowed to save canvas video via the menu "File > Save File > Video"; added "NCBI" logo.
[icn3d-3.41.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.41.0.zip) was release on April 2, 2025. Added a menu at the top-left corner to allow users to choose simple or complete menus; added buttons at the top of the aligned sequences (menu Analysis > Aligned Seq.) to allow users to save the alignemnts in FASTA, CLUSTALW, or Residue by Residue formats.
[icn3d-3.40.5](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.40.5.zip) was release on March 20, 2025. Fixed the electron density map after switching from DSN6 to volume data from PDBe.
[icn3d-3.40.4](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.40.4.zip) was release on March 3, 2025. Fixed the URL for the "Side by Side" view.
[icn3d-3.40.3](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.40.3.zip) was release on February 13, 2025. Fixed DelPhi potential calculations for chains with more than one letter.
[icn3d-3.40.2](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.40.2.zip) was release on January 8, 2025. Collections update - fixed gz and zip functionality and collections parsing.
[icn3d-3.40.1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.40.1.zip) was release on December 20, 2024. Collections update - added strucure append and clear commands, fix collections example directory.
[icn3d-3.40.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.40.0.zip) was release on December 11, 2024. Added the feature to show 2D Depiction/Diagram for chemical view with cid or smiles as input via the menu "Analysis > 2D Depiction"; fixed the positions of point lights relative to the camera.
[icn3d-3.39.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.39.0.zip) was release on November 25, 2024. Collections update - added multi file format support for zip, command history and JSON export, gz&ent file support.
[icn3d-3.38.1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.38.1.zip) was release on November 14, 2024. Improved the conversion of chemical SMILES to 3D structure by showing double bonds.
[icn3d-3.38.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.38.0.zip) was release on November 12, 2024. Enabled to convert chemical SMILES to 3D structure via the menu "File > Retrieve by ID > Chemical SMILES".
[icn3d-3.37.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.37.0.zip) was release on October 16, 2024. Added a menu "Style > Clashed Residues > Hide" to hide clashed residues.
[icn3d-3.36.1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.36.1.zip) was release on October 7, 2024. Fixed an issue related to previous chain IDs such as "A_1" (changed to "A1") in previous sharable links.
[icn3d-3.36.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.36.0.zip) was release on October 3, 2024. Allowed to load multiple iCn3D PNG images.
[icn3d-3.35.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.35.0.zip) was release on September 12, 2024. Retrieved updated ClinVar annotations directly from NCBI ClinVar database.
[icn3d-3.34.1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.34.1.zip) was release on August 5, 2024. Switched VAST search alignment from backend to dynamic alignment in iCn3D.
[icn3d-3.34.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.34.0.zip) was release on July 29, 2024. Show atom details for the interaction of one ligand/residue with protein via the menu "Analysis > Interaction" and then the button "2D Interaction for One Ligand/Residue".
[icn3d-3.33.3](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.33.3.zip) was release on July 15, 2024. Switch electron density data from RCSB DSN6 to PDBe Density Server.
[icn3d-3.33.2](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.33.2.zip) was release on June 25, 2024. Enabled to measure angles between sets in the menu "Analysis > Angle".
[icn3d-3.33.1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.33.1.zip) was release on June 18, 2024. Draw coils for the whole structure with zero radius for the secondary structure parts.
[icn3d-3.33.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.33.0.zip) was release on June 12, 2024. Users can use iCn3D to detect Ig domains for any structures and assign IgStrand reference numbers for each residue. The instruction is at https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d.html#igrefnum.
[icn3d-3.32.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.32.0.zip) was release on May 28, 2024. Allowed to load multiple mmCIF text files, which could contain multiple structures separated by "ENDMDL\n".
[icn3d-3.31.4](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.31.4.zip) was release on May 11, 2024. Release Ig templates for assigning reference numbers.
[icn3d-3.31.3](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.31.3.zip) was release on April 15, 2024. Jack Lin fixed some issues in loading a collection file.
[icn3d-3.31.2](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.31.2.zip) was release on April 9, 2024. Fixed the secondary structure ranges in CIF files.
[icn3d-3.31.1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.31.1.zip) was release on March 21, 2024. Switched from "let xArray = atom_site.getColumn('Cartn_x').data" to "let xArray = atom_site.getColumn('Cartn_x')" when accessing data from Binary or text CIF data.
[icn3d-3.31.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.31.0.zip) was release on March 21, 2024. Replaced MMTF data with Binary CIF data. Both "mmtfid" and "bcifid" inputs get the Binary CIF data.
[icn3d-3.30.1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.30.1.zip) was release on March 11, 2024. Fixed 3D domain summary view.
[icn3d-3.30.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.30.0.zip) was release on February 27, 2024. Calculate 3D domains on-the-fly and show 3D domains even when only one domain is available.
[icn3d-3.29.5](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.29.5.zip) was release on February 5, 2024. Added an option to load MTZ files from RCSB to show electrondensity maps; fixed a bug in saving sets; fixed a bug in the replay of rotating structures with a matrix.
[icn3d-3.29.4](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.29.4.zip) was release on January 19, 2024. Added the options to translate the coordinates (View > Translate XYZ) and rotate the coordinates with a matrix (View > Rotate with Matrix).
[icn3d-3.29.3](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.29.3.zip) was release on January 11, 2024. Fixed the "Sequences & Annotations" view when a collection of structure is loaded.
[icn3d-3.29.2](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.29.2.zip) was release on January 8, 2024. Simplified code to make icn3dnode calls simpler.
[icn3d-3.29.1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.29.1.zip) was release on December 14, 2023. Allowed users to load a collection of structures via the menu "File > Open File > Collection File". The example collection file is at https://github.com/ncbi/icn3d/blob/master/example/collection.json.
[icn3d-3.29.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.29.0.zip) was release on December 13, 2023. Added the feature to load electron density maps from ccp4 or MTZ files either locally or via URLs.
[icn3d-3.28.4](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.28.4.zip) was release on November 7, 2023. Enabled to show DelPhi potential for multiple structures.
[icn3d-3.28.3](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.28.3.zip) was release on October 5, 2023. Fixed the async/await issue for electron density maps and EM density maps.
[icn3d-3.28.2](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.28.2.zip) was release on September 14, 2023. Upgraded three.js to version 151, and improved the image quality.
[icn3d-3.28.1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.28.1.zip) was release on August 23, 2023. Added logs for menu usages, and updated iCn3D tutorials at https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d.html#videos.
[icn3d-3.28.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.28.0.zip) was release on July 31, 2023. Added the feature to show isoforms and exons as tracks with the button "Add Track" in the "Sequences & Annotations" window via the menu "Analysis > Sequences & Annotations". Also displayed pathogenic ClinVars in red and the rest in green in the ClinVar track.
[icn3d-3.27.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.27.0.zip) was release on July 13, 2023. Added the feature to search AlphaFold structures with protein/gene names directly in iCn3D via the menu "File > Search Structures > AlphaFold Structures".
[icn3d-3.26.1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.26.1.zip) was release on July 10, 2023. Fixed a bug in TM-align and updated Python scripts.
[icn3d-3.26.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.26.0.zip) was release on June 20, 2023. Added the feature to run ESMFold on the fly via the menu "File > AlphaFold/ESM > ESMFold" in iCn3D.
[icn3d-3.25.4](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.25.4.zip) was release on June 15, 2023. Fixed the extra side chains of disulfide bonds when the disulfide bonds are not showing; fixed the extra tracks in Sequences & Annotations window.
[icn3d-3.25.3](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.25.3.zip) was release on May 24, 2023. Fixed a bug in Node.js scripts about retrieving data from Ajax calls.
[icn3d-3.25.2](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.25.2.zip) was release on May 17, 2023. Fixed a bug in VAST alignment.
[icn3d-3.25.1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.25.1.zip) was release on May 3, 2023. Fixed a bug in relaigning structures.
[icn3d-3.25.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.25.0.zip) was release on April 26, 2023. To improve the performance of embedding several structures in a single page, added the URL parameter "imageonly=1" to render the structure into a static image instead of interactive 3D view. The image is clickable to launch an interactive 3D view.
[icn3d-3.24.2](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.24.2.zip) was release on April 24, 2023. Fixed the secondary structures of mutant in the mutation analysis; fixed the lower case in the sequences of VAST+ alignment.
[icn3d-3.24.1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.24.1.zip) was release on April 14, 2023. Added more menus to the VR view of iCn3D to measure distance, toggle highlight, etc.
[icn3d-3.24.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.24.0.zip) was release on April 10, 2023. Improved the use of iCn3D in Jupyter Notebook by making the dialogs closable, and adding DelPhi potential and mutation analysis; added DelPhi potential as one option in the Virtual Reality (VR) view of iCn3D.
[icn3d-3.23.3](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.23.3.zip) was release on April 6, 2023. Fixed the VR view when only one controller is available.
[icn3d-3.23.2](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.23.2.zip) was release on April 2, 2023. Added the document at https://pypi.org/project/icn3dpy/ for loading a local/remote PDB file or iCn3D PNG Image into iCn3D in Jupyter Notebook; added both "Load" and "Append" options when launching a structure.
[icn3d-3.23.1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.23.1.zip) was release on March 22, 2023. Added the feature to scale in AR view of iCn3D; changed the default coloring to "AlphaFold Confidence" when lining from BLAST to iCn3D for AlphaFold structures; added the wildcard symbol "*" for atom name selection.
[icn3d-3.23.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.23.0.zip) was release on March 16, 2023. Added more VR features to allow users to select residues, change style and color, and show interactions in VR. When users input PDB/AlphaFold IDs, the structures append to the existing structures.
[icn3d-3.22.4](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.22.4.zip) was release on March 7, 2023. Fixed the menu "View > Reset > All" for side chains. Added a new Node.js script "interactiondetail.js" to show the interaction details between two chains.
[icn3d-3.22.3](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.22.3.zip) was release on March 1, 2023. Fixed Node.js scripts cdsearch.js, and also fixed some iCn3D code to make Node.j scripts work.
[icn3d-3.22.2](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.22.2.zip) was release on February 23, 2023. Fixed a bug when the input is NCBI protein accession.
[icn3d-3.22.1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.22.1.zip) was release on February 17, 2023. Enabled to align a sequence to a protein structure with similar sequence. If the protein accession is not a PDB chain, the corresponding AlphaFold UniProt structure is used. Added a Node.js script to add missing atoms to an exported PDB file.
[icn3d-3.22.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.22.0.zip) was release on February 14, 2023. Enabled to export PDB files with missing atoms or with hydrogen; added the option to show Multiple Sequence Alignment (MSA) when realigning multiple chains based on structure alignment.
[icn3d-3.21.3](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.21.3.zip) was release on February 3, 2023. Updated the description about custom reference numbers.
[icn3d-3.21.2](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.21.2.zip) was release on January 20, 2023. Added instructions (https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d.html#saveview) to host iCn3D PNG Images at any web server, which can be accessed by iCn3D, e.g., https://www.ncbi.nlm.nih.gov/Structure/icn3d/?type=icn3dpng&url=https://api.figshare.com/v2/file/download/39125801, or https://www.ncbi.nlm.nih.gov/Structure/icn3d/?type=icn3dpng&url=https://zenodo.org/api/files/1a3325c8-0c84-4f1e-be2c-c143b08c6563/3GVU-XCxR6fSTmXHxR3o1A.png.
[icn3d-3.21.1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.21.1.zip) was release on January 17, 2023. Fixed a bug in selecting a conserved domain and a bug in the secondary structure display for pdbid input.
[icn3d-3.21.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.21.0.zip) was release on January 11, 2023. Mapped PDB residue numbers with NCBI residue numbers; replaced jQuery promise with JavaScript Promise, await, and async.
[icn3d-3.20.1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.20.1.zip) was release on December 19, 2022. Removed unnecessary import and cleaned some codes.
[icn3d-3.20.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.20.0.zip) was release on December 12, 2022. Enabled users to show AlphaFold structures with NCBI RefSeq IDs as input.
[icn3d-3.19.1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.19.1.zip) was release on December 1, 2022. Fixed bugs in retrieving data with the POST method, in aligning two chains from the same structure, in mutational analysis, and in launching several PDB/AlphaFold IDs.
[icn3d-3.19.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.19.0.zip) was release on November 16, 2022. Enabled users to add custom reference residue number with the menu "Analysis > Ref. Number", add (transparent) spheres or cubes for any sets with the menu "Style > Cartoon for a Set", add a line between two sets with the menu "Style > Line btw. Two Sets". Also improved the color legends.
[icn3d-3.18.1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.18.1.zip) was release on November 8, 2022. Added the annotation "Transmembrane" for PDB or AlphaFold structures based on data from OPM, Membranome, and UniProt; enabled to load a PAE file from a URL in the same domain.
[icn3d-3.18.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.18.0.zip) was release on November 3, 2022. Merged Jack Lin's branch with the following new features: show some basic color legends when coloring a structure; add local Smith-Waterman alignment when aligning two sequences; add a preference in the menu "Style > Prefereces" to enlarge the command window.
[icn3d-3.17.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.17.0.zip) was release on October 27, 2022. Showed membranes for AlphaFold structures, which are single-spanning transmembrane proteins; enabled to load recent version of PAE json files for AlphaFold Structures.
[icn3d-3.16.3](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.16.3.zip) was release on September 29, 2022. Fixed a bug in VAST chain alignment. Updated the video of iCn3D tutorial.
[icn3d-3.16.2](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.16.2.zip) was release on September 19, 2022. Enabled to submit loaded structures to VAST and Foldseek to search similar structures directly.
[icn3d-3.16.1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.16.1.zip) was release on September 12, 2022. Fixed a bug in VAST+ alignment based on TM-align.
[icn3d-3.16.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.16.0.zip) was release on September 8, 2022. Added dynamic VAST+ based on TM-align for any two structure assemblies in the menus "File > Align > Protein Complexes > Two PDB Structures" and "File > Realign Selection > Protein Complexes". Added the angle restriction for hydrogen bonds back.
[icn3d-3.15.1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.15.1.zip) was release on August 18, 2022. Fixed the stickiness of menus and the TM-align output for a subset of residues.
[icn3d-3.15.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.15.0.zip) was release on August 16, 2022. Enabled users to switch between "All Menus" and "Simple Menus", or customize the menus and save them in a file to be loaded by others. The customized menus are sticky and saved in cache.
[icn3d-3.14.3](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.14.3.zip) was release on August 12, 2022. Enabled to show 200 million AlphaFold UniProt structures in the recent release.
[icn3d-3.14.2](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.14.2.zip) was release on August 9, 2022. Added the "FAQ" section in the "Help" menu.
[icn3d-3.14.1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.14.1.zip) was release on August 3, 2022. Enabled to show mutation analysis for currently loaded structures or structures to be loaded with PDB IDs or AlphaFold UniProt IDs in the menu "Analysis > Mutation".
[icn3d-3.14.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.14.0.zip) was release on August 1, 2022. Added Post-Translational Modification (PTM) annotation from UniProt.
[icn3d-3.13.2](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.13.2.zip) was release on July 27, 2022. jQuery UI was upgraded from version 1.12.1 to 1.13.2.
[icn3d-3.13.1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.13.1.zip) was release on July 25, 2022. Split the menu "File > Align > Multiple Chains" into three categories: by Structure Alignment, by Sequence Alignment, and Residue by Residue".
[icn3d-3.13.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.13.0.zip) was release on July 21, 2022. In addition to "VAST" alignment, users can also use "TM-align" to align two chains. The feature is available in the menus "File > Align > Multiple Chains" and "File > Realign Selection > by Structure Alignment".
[icn3d-3.12.8](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.12.8.zip) was release on July 15, 2022. Expanded Python scripts to download any output in iCn3D; Added a new Node.js script to retrieve all annotations (e.g., SNP, ClinVar, domain, etc) from iCn3D; added an exmaple to add users' own annotation and hide default annotations at https://github.com/ncbi/icn3d/tree/master/example/addAnnoLocal.html.
[icn3d-3.12.7](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.12.7.zip) was release on July 7, 2022. Fixed the iCn3D view from VAST search.
[icn3d-3.12.6](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.12.6.zip) was release on July 5, 2022. Enabled to load a mmCIF file from a URL in the menu "File > Open File > URL(CORS)".
[icn3d-3.12.5](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.12.5.zip) was release on July 1, 2022. Output the full mutant PDB file in mutation analysis, and fixed the alignment of same chain IDs.
[icn3d-3.12.4](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.12.4.zip) was release on June 21, 2022. Added some basic navigation controls in VR and AR views. In the VR view, users can use the right trigger to move forward and the left trigger to move backward. In the AR view, users can tap once on the screen to locate a minimized 3D structure in the tapped location, and tap twice quickly to scale up the 3D structure.
[icn3d-3.12.3](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.12.3.zip) was release on June 13, 2022. Users now can have Augmented Reality (AR) view on any iCn3D display by clicking the "START AR" button. Currently the AR view is only available to Chrome browser in an Android phone.
[icn3d-3.12.2](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.12.2.zip) was release on June 10, 2022. Made two kinds of transparent surfaces available in the menu "Style > Surface Opacity": "Fast Transparency" and "Slow Transparency".
[icn3d-3.12.1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.12.1.zip) was release on June 8, 2022. Fixed the bug about exporting iCn3D PNG Image.
[icn3d-3.12.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.12.0.zip) was release on June 6, 2022. Users now can have Virtual Reality (VR) view on any iCn3D display; enabled to view multiple sequence alignment (MSA) instead of pairwise alignment; changed the tools in toolbar from buttons to icons; switched to WegGL2 from WebGL1.
[icn3d-3.11.8](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.11.8.zip) was release on May 20, 2022. Enabled to import "icn3d.css" and "three.module.js" from npm icn3d to work with React.
[icn3d-3.11.7](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.11.7.zip) was release on May 18, 2022. Enabled to import "icn3d.module.js" from npm icn3d to work with React.
[icn3d-3.11.6](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.11.6.zip) was release on May 11, 2022. Fixed a bug in the dynamic VAST alignment in iCn3D with the menu "File > Realign Selection > by Structure Alignment".
[icn3d-3.11.5](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.11.5.zip) was release on May 3, 2022. Added VAST+ and VAST Search interface in the menu "File > Search Similar". Enabled to assign rainbow/spectrum colors for a list of sets in the menu "Color > Rainbow/Spectrum > for Sets".
[icn3d-3.11.4](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.11.4.zip) was release on April 26, 2022. Added two examples in https://www.ncbi.nlm.nih.gov/Structure/icn3d/example.html to show the predefined alignment of two PDB files, or the predefined alignment of one PDB file to other chains.
[icn3d-3.11.3](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.11.3.zip) was release on April 22, 2022. Added the menu "Style > Nucl. Bases" to display the bases of nucleotides.
[icn3d-3.11.2](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.11.2.zip) was release on April 18, 2022. Added "[comment]" in front of logs to diferentiate from commands in the command window. If "mmdbid" is the input and the parameter "bu" is not defined, set "bu" as 1 (biological unit).
[icn3d-3.11.1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.11.1.zip) was release on April 13, 2022. Users can input multiple PDB, MMDB, or AlphaFold IDs with the menu "File > Retrieve by ID > MMDB or AlphaFold IDs". Users can also load multiple PDB files at the same time with the menu "File > Open File > PDB Files (appendable)". The color legend became draggable.
[icn3d-3.11.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.11.0.zip) was release on March 28, 2022. Users can align AlphaFold structures or PDB structures with the menu "File > Align > Multiple Chains" or "File > Align > Protein Complexes > Two AlphaFold Structures". Users can also load any structures as usual, then load your custom PDB file with the menu "File > Open File > PDB File (appendable)", then relaign these structures with the menu "File > Realign Selection > by Structure Alignment".
[icn3d-3.10.1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.10.1.zip) was release on March 9, 2022. Added the color option "Structure" and the style option "Hydrogens". Fixed some bugs on loading PDB files without headers.
[icn3d-3.10.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.10.0.zip) was release on March 7, 2022. Showed SNP and ClinVar annotations for AlphaFold structures.
[icn3d-3.9.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.9.0.zip) was release on February 28, 2022. Showed 3D domains for AlphaFold structures or any custom structures.
[icn3d-3.8.4](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.8.4.zip) was release on February 22, 2022. Enabled to export the content of any iCn3D dialog/popup window using a Python script in the command line. One example is at https://github.com/ncbi/icn3d/blob/master/icn3dpython/batch_export_panel.py.
[icn3d-3.8.3](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.8.3.zip) was release on February 17, 2022. Another paper about iCn3D was published in Frontiers (https://www.frontiersin.org/articles/10.3389/fmolb.2022.831740/full). Fixed some bugs as well.
[icn3d-3.8.2](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.8.2.zip) was release on February 7, 2022. Enabled to show mutations for AlphaFold structures in the menu "Analysis > Mutation". Fixed the 2D interaction network view of mutations.
[icn3d-3.8.1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.8.1.zip) was release on January 28, 2022. Upgrade three.js from version 128 to 137 to avoid the security issues related to iframe.
[icn3d-3.8.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.8.0.zip) was release on January 27, 2022. Enabled to show the map of AlphaFold Predicted Aligned Error (PAE) on the fly in the menu "File > Retrieve by ID > AlphaFold UniProt ID", and load custom PAE files in the menu "File > Open File > AlphaFold PAE File". Switched the parameter "buidx" to "bu" for asymmetric units and biological units.
[icn3d-3.7.2](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.7.2.zip) was release on January 21, 2022. Now users can see all interactions, common interactions, and different interactions when several structures are aligned and their interactions are shown, e.g., https://www.ncbi.nlm.nih.gov/Structure/icn3d/share.html?9FD78C7YsE9zKyi18.
[icn3d-3.7.1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.7.1.zip) was release on January 19, 2022. Modified the Node.js example script to use the URL parameter "&bu=0" to get the asymmetric unit data from MMDB. Fixed the fog view when zooming in or out.
[icn3d-3.7.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.7.0.zip) was release on January 18, 2022. Now users can see the common interactions in several structures when they are aligned and their interactions are shown. iCn3D now shows asymmetric unit instead of biological unit since asymmetric unit contains all chains. Added the menu "File > Search Structure".
[icn3d-3.6.1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.6.1.zip) was release on January 11, 2022. Enabled users to change the color for all lables in the menu "Analysis > Label > Change Label Color".
[icn3d-3.6.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.6.0.zip) was release on January 7, 2022. Added some example Python scripts in the directory "icn3dpython" to export secondary structures or PNG images. Changed the background color from "transparent/white" to "black".
[icn3d-3.5.1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.5.1.zip) was release on December 27, 2021. Changed the canvas background color from "black" to "white". The "Style > Background" is still "transparent", but the display will be white by default.
[icn3d-3.5.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.5.0.zip) was release on December 21, 2021. Enabled to use the global Smith Waterman algorithm to align a sequence to a structure in the menu "File > Align > Sequence to Structure". Improved the labels by removing the background boxes and adjusting the text color when switching the canvas background color. Simplified the menus when the URL parameter "simplemenu=1" is used.
[icn3d-3.4.13](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.4.13.zip) was release on December 13, 2021. Added the menu "File > Save File > Selection Details" to export selected residues in a human readable format.
[icn3d-3.4.12](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.4.12.zip) was release on November 24, 2021. Fixed some bugs including the selection on 1D sequences in mobile devices.
[icn3d-3.4.11](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.4.11.zip) was release on November 19, 2021. Relaxed the angle restriction on hydrogen bonds and pi-stacking.
[icn3d-3.4.10](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.4.10.zip) was release on November 15, 2021. Fixed the base URL when launching iCn3D from a non-NCBI server.
[icn3d-3.4.9](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.4.9.zip) was release on November 8, 2021. Enabled to export secondary structure information for any subset of any structure, including AlphaFold UniProt structures. The feature is available in the menu "File > Save File > Secondary Structure".
[icn3d-3.4.8](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.4.8.zip) was release on October 22, 2021. Fixed the mapping between PDB residue numbers and NCBI residue numbers for 3D domains, conserved domains, and sites.
[icn3d-3.4.7](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.4.7.zip) was release on October 15, 2021. Fixed the 3D display of a single residue without any secondary structure, and fixed the selection of a chain in the sequence window.
[icn3d-3.4.6](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.4.6.zip) was release on October 6, 2021. Fixed the PDB file export for multiple structures.
[icn3d-3.4.5](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.4.5.zip) was release on September 28, 2021. Showed Conserved Domains for all structures in the Sequences & Annotations window.
[icn3d-3.4.4](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.4.4.zip) was release on September 16, 2021. Users can load multiple structures by appending PDB files with the menu "File > Open File > PDB File (appendable)" to othe PDB files or other structures, which are retrieved by IDs such as "mmdbid" or "mmmtfid". A new color method "Color > Hydrophobicity > Normalized" was added to show hydrophobicity for any residues with different green color.
[icn3d-3.4.3](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.4.3.zip) was release on September 10, 2021. Replaced delphi.fcgi with delphi.cgi.
[icn3d-3.4.2](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.4.2.zip) was release on August 26, 2021. AlphaFold predicted structures can be viewed at iCn3D with the menu "File > Retrieve by ID > AlphaFold UniProt ID". The domain annotation can be displayed by clicking the menu "Analysis > Seq. & Annotations".
[icn3d-3.4.1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.4.1.zip) was release on August 23, 2021. Added a Python script to export PNG images for any structures in the batch mode. The script is in the directory icn3dnode.
[icn3d-3.4.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.4.0.zip) was release on August 19, 2021. Dynamically generate "2D Cartoon" in the chain, domain, or secondary structure levels for selected residues in the menu "Analysis". The cartoons are draggable and clickable.
[icn3d-3.3.5](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.3.5.zip) was release on August 11, 2021. Added a new color method "Rainbow" to show colors ranging from red to violet. This is different from the previous "Spectrum" method, which shows colors ranging from violet to red.
[icn3d-3.3.4](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.3.4.zip) was release on July 28, 2021. The license of scap for side chain prediction was waived by Dr. Barry Honig. Replaced 'var' with 'let' in iCn3D JavaScript files.
[icn3d-3.3.2](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.3.2.zip) was release on July 14, 2021. Now users can choose the color gradient and show the color legend for the "Custom Color" button in the Sequences & Annotations window.
[icn3d-3.3.1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.3.1.zip) was release on July 7, 2021. Enabled to use as an input a URL containing a saved iCn3D PNG image in the menu "File > Open File > URL (CORS)". Fixed a bug in displaying an assembly with multiple copies of a structure.
[icn3d-3.3.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.3.0.zip) was release on June 30, 2021. Added the feature to show contact map for any selected residues in the menu "Analysis > Contact Map".
[icn3d-3.2.3](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.2.3.zip) was release on June 25, 2021. Enabled to set the URL parameter "menuicon" to 1 to show icons for those menus requiring internet access or license.
[icn3d-3.2.2](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.2.2.zip) was release on June 20, 2021. Skipped the secondary structure calculation when the input is a PDB file of nucleotides.
[icn3d-3.2.1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.2.1.zip) was release on June 18, 2021. Export all classes so that functions in these classes can be manually modified as shown in the file example.html.
[icn3d-3.2.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.2.0.zip) was release on June 8, 2021. Added the option to load UniProt ID in the menu "File > Retrieve by ID > UniProt ID".
[icn3d-3.1.6](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.1.6.zip) was release on June 4, 2021. Fixed file export in 3D printing due to the change of Geometry to BufferGeometry in three.js version 128.
[icn3d-3.1.5](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.1.5.zip) was release on June 2, 2021. Added an option to load predefined alignments in the menu "File > Align > Multiple Chains". Enabled to change the shininess, lights, and thickness in the menu "Style > Preferences".
[icn3d-3.1.4](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.1.4.zip) was release on May 27, 2021. Remove "alert" in the npm icn3d package.
[icn3d-3.1.3](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.1.3.zip) was release on May 25, 2021. Switched residue numbers from integers to strings such as "100A".
[icn3d-3.1.2](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.1.2.zip) was release on May 17, 2021. iCn3D could hide the features requiring licenses, such as "Analysis > DelPhi Potential" and "Analysis > Mutaion" using the URL parameter "hidelicense=1".
[icn3d-3.1.1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.1.1.zip) was release on May 10, 2021. Fixed the URL parameters in full.html.
[icn3d-3.1.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.1.0.zip) was release on May 7, 2021. Added icn3d.module.js in the build directory. Upgraded three.js from version 103 to version 128. THREE.Geometry was replaced with THREE.BufferGeometry.
[icn3d-3.0.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.0.0.zip) was release on May 3, 2021. iCn3D version 3.0.0 was converted to ES6 with classes and is available in npm with the package "icn3d". Users can use npm to install icn3d and generate Node.js scripts by calling icn3d functions. All previously embedded iCn3D will not be affected. To embed iCn3D version 3, iCn3D JavaScript and CSS library files were renamed from "icn3d_full_ui" to "icn3d". A global variable "icn3d" was used to access the class iCn3DUI: "var icn3dui = new icn3d.iCn3DUI(cfg)".
[icn3d-2.24.6](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.24.6.zip) was release on March 22, 2021. Broke large files into small ones and stopped upgrading the basic/simple UI.
[icn3d-2.24.5](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.24.5.zip) was release on March 4, 2021. Changed the default 3D view (https://www.ncbi.nlm.nih.gov/Structure/icn3d/index.html) from the basic view (https://www.ncbi.nlm.nih.gov/Structure/icn3d/simple.html) to the advanced view (https://www.ncbi.nlm.nih.gov/Structure/icn3d/full.html).
[icn3d-2.24.4](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.24.4.zip) was release on February 12, 2021. Added an option to save a sharable link with your note/window title in the menu "File > Share Link".
[icn3d-2.24.3](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.24.3.zip) was release on February 9, 2021. Added a few more Node.js scripts in icn3dnode to retrieve ligand-protein and protein-protein interactions, change of interactions, binding site and domain information in the command line.
[icn3d-2.24.2](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.24.2.zip) was release on February 3, 2021. Enabled to show multiple mutations together in the menu "Analysis > Mutation".
[icn3d-2.24.1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.24.1.zip) was release on February 1, 2021. Enabled to show multiple mutations together ( https://www.ncbi.nlm.nih.gov/Structure/icn3d/share.html?tKz5GiA2pTVQEWwy6). Fixed the alternation in multiple chain alignment.
[icn3d-2.24.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.24.0.zip) was release on January 27, 2021. Converted the interaction part of iCn3D to Node.js (in the directory icn3dnode) to allow batch-mode analysis. Expanded the chain-chain alignment to multiple chain alignment in the menu "File > Align > Multiple Chains". You could focus on part of the chains for the multiple chain alignment.
[icn3d-2.23.2](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.23.2.zip) was release on January 8, 2021. Adjust the chain IDs according to the data from the backend cgi that aligns a sequence to a structure.
[icn3d-2.23.1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.23.1.zip) was release on January 6, 2021. Added version number and improved Principle Axes view.
[icn3d-2.23.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.23.0.zip) was release on December 22, 2020. Use PDB residue numbers when the input is MMDB ID.
[icn3d-2.22.2](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.22.2.zip) was release on December 15, 2020. Enabled to show secondary structures for a PDB file containing multiple structures.
[icn3d-2.22.1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.22.1.zip) was release on December 1, 2020. Added cartoons for glycan display by default. The cartoons can be toggled in the menu "Style > Glycans".
[icn3d-2.22.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.22.0.zip) was release on November 24, 2020. Users now can alternate wild type and mutant, and their interaction networks in 3D for each SNP/ClinVar in the "Sequences & Annotation" window.
[icn3d-2.21.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.21.0.zip) was release on November 17, 2020. Symmetry can be calculated dynamically for selected residues using SymD. The menu is at "Analysis > Symmetry (SymD, dynamic)". Speeded up the loading of VAST+ structure alignment.
[icn3d-2.20.2](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.20.2.zip) was release on October 29, 2020. Fixed the DelPhi potential map in VAST+ alignment. Added back the usage tracking.
[icn3d-2.20.1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.20.1.zip) was release on October 13, 2020. Reverted the label scale to 0.3. Updated the LICENSE.
[icn3d-2.20.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.20.0.zip) was release on October 6, 2020. Users can show electrostatic potential on surface or as equipotential map for any subsets of proteins/nucleotides/membrane/ligands. The PQR file (modified PDB file with partial charges and radii) can also be downloaded. The display of helices, tubes, and axes were improved. Users can change the helix display at the menu "Style > Two-color Helix".
[icn3d-2.19.1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.19.1.zip) was release on September 15, 2020. Added shade to 3D display using multiple lights.
[icn3d-2.19.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.19.0.zip) was release on August 12, 2020. DelPhi potential map can be displayed for PDB structures at "Analysis > DelPhi Potential". The PDB file can be loaded in the URL with "pdbid=" or at "File > Open File". The DelPhi potential file can be calculated at DelPhi Web Server and be exported as a Cube file. The potential file can be accessed in a URL if it is located in the same host as iCn3D.
[icn3d-2.18.4](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.18.4.zip) was release on August 10, 2020. Fixed bugs in recently modified dropdown menus.
[icn3d-2.18.3](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.18.3.zip) was release on August 3, 2020. Moved "H-Bonds & Interactions" to "Analysis" menu and merged "Windows" menu with "Analysis" menu. Changed the default dialog color to blue. Users can change it at the menu "Style > Dialog Color".
[icn3d-2.18.2](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.18.2.zip) was release on July 28, 2020. Use strict mode and shrink code size.
[icn3d-2.18.1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.18.1.zip) was release on July 23, 2020. Fixed the issue in the Jupyter Notebook widget icn3dpy; fixed the synchronized issue of the function show3DStructure().
[icn3d-2.18.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.18.0.zip) was release on July 20, 2020. Showed SNPs for SARS-CoV-2 proteins; generated icn3dpy (the Jupyter Notebook widget of iCn3D) at https://pypi.org/project/icn3dpy; added "2D Interaction Map" in the menu "View > H-Bonds & Interactions"; added the shrink/expand icon in each orange dialog/window.
[icn3d-2.17.7](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.17.7.zip) was release on July 7, 2020. Added iCn3D tutorial videos and slides.
[icn3d-2.17.6](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.17.6.zip) was release on June 29, 2020. All "Share Link" URLs can show the original view using the archived version of iCn3D at "File > Open File > Share Link URL in Fixed Ver.".
[icn3d-2.17.5](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.17.5.zip) was release on June 26, 2020. Made a versioned full_[version].html file so that "Share Link" URL could point to a fixed version by replacing "full.html" with "full_[version].html".
[icn3d-2.17.4](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.17.4.zip) was release on June 24, 2020. Users now can select options for cross structure interaction in alignment. Get ClinVar annotations from database.
[icn3d-2.17.3](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.17.3.zip) was release on June 18, 2020. Added the track "Cross-Linkages" for glycans, etc.
[icn3d-2.17.2](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.17.2.zip) was release on June 17, 2020. Added pinger to log usage.
[icn3d-2.17.1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.17.1.zip) was release on June 15, 2020. Enabled to accept RID from BLAST result page.
[icn3d-2.17.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.17.0.zip) was release on June 12, 2020. Users can now show "2D Interaction Graph" and also "Highlight Interactions in Table" in the menu "View > H-Bonds & Interactions". Users can also replay the share link step by step to learn how to generate a custom display in the menu "File > Replay Each Step".
[icn3d-2.16.4](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.16.4.zip) was release on June 8, 2020. Enabled to turn force off in 2D Graph so that users can manually arrange the nodes.
[icn3d-2.16.3](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.16.3.zip) was release on June 5, 2020. Added halogen bonds, pi-cation, and pi-stacking interactions in the menu "View > H-Bonds & Interaction" and showed the interactions in sorted tables.
[icn3d-2.16.2](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.16.2.zip) was release on May 29, 2020. Added the following features: 1. save contents in any dialog/window using the save icon next to the closeicon, 2. set names for each tab/window using the menu "Windows > Your Note / Window Title", 3. select by property (such as residue type, solvent accessibilty, etc) in the "Select" menu, 4. Use a custom file to define the color or tube size for each residue by clicking the button "Custom Color / Tube" in the "Sequences & Annotations" window.
[icn3d-2.16.1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.16.1.zip) was release on May 27, 2020. Enabled to show gaps when adding multiple sequence alignment data as tracks.
[icn3d-2.16.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.16.0.zip) was release on May 21, 2020. Enabled to show interactions using force-directed graph in the menu "View > H-Bonds & Interactions > Force-Directed Graph". Enabled to calculate Solvent Accessible Surface Area (SASA) in the menu "View > Surface Area", or color by SASA in the menu "Color > Solvent Accessibility". Fixed ClinVar and SNP annotations.
[icn3d-2.15.3](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.15.3.zip) was release on May 8, 2020. Enabled to update the short "Share Link" URL; enabled to save in a sharable URL the "Side by Side" view, which is useful to view two aligned structures.
[icn3d-2.15.2](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.15.2.zip) was release on May 5, 2020. Fixed the display of electron density map and EM map.
[icn3d-2.15.1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.15.1.zip) was release on April 27, 2020. Improved the unionHash function to speed up selection. Improved the message when loading a list of commands.
[icn3d-2.15.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.15.0.zip) was release on April 21, 2020. Enabled to show the same structure "Side by Side" in two views in the "View" menu. Each view has the same orientation, but can have independent 3D display. Enabled to add multiple sequence alignments as tracks when clicking "Add Track" in the "Sequences & Annotations" window. Added "Hide Selection" in the "View" menu. Improved selection on "H-Bonds & Interactions". Improved the UI for "Realign Selection" in the "File" menu. The gallery shows COVID-19-related structures at the top.
[icn3d-2.14.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.14.0.zip) was release on April 15, 2020. Added the features to load Electron Density data in the menu "File > Open File > Electron Density", resize the 3D window, realign two structures in the menu "File > Realign", color residues with custom colors in the menu "Color > Residue > Custom", and add custom colors when aligning a sequence to a structure.
[icn3d-2.13.1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.13.1.zip) was release on March 26, 2020. Showed membranes for transmembrane proteins in VAST+ alignment.
[icn3d-2.13.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.13.0.zip) was release on March 23, 2020. Added the "Symmetry" feature in the View menu.
[icn3d-2.12.1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.12.1.zip) was release on March 12, 2020. Fixed a bug on hydrogen bonds between residues with the same residue number but different chain names. Removed duplicated names in the menu of "Defined Sets".
[icn3d-2.12.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.12.0.zip) was release on March 2, 2020. Enabled to realign selected residues in VAST+ structure alignment. The option "Realign Selection" is in the View menu.
[icn3d-2.11.5](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.11.5.zip) was release on Fearuary 11, 2020. Add colors to aligned sequence track based on Blosum62.
[icn3d-2.11.4](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.11.4.zip) was release on January 14, 2020. The compiling tool gulp was upgraded to version 4.
[icn3d-2.11.3](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.11.3.zip) was release on January 7, 2020. A bug was fixed to have predefined sets available for hydrogen bonds/interations.
[icn3d-2.11.2](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.11.2.zip) was release on December 20, 2019. Added the style Backbone and added 'use strict' to each function.
[icn3d-2.11.1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.11.1.zip) was release on December 19, 2019. Fixed a bug in chain alignment due to the introduction of membranes.
[icn3d-2.11.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.11.0.zip) was release on December 16, 2019. Enabled to show membranes for transmembrane proteins for data from PDB or MMDB by aligning the coordinates to the data from Orientations of Proteins in Membranes (OPM) database. Users could adjust the location of the membrane as well.
[icn3d-2.10.1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.10.1.zip) was release on December 9, 2019. Enabled to select the currently displayed set in the Select menu and fixed some bugs on H-Bonds & Interactions.
[icn3d-2.10.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.10.0.zip) was release on December 5, 2019. Enabled to show each hydrogen bond and contact in 3D using the menu "View > H-Bonds & Interactions".
[icn3d-2.9.2](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.9.2.zip) was release on November 18, 2019. Added Transmembrane track if the input is opmid. Added angle constraint for hydrogen bonds.
[icn3d-2.9.1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.9.1.zip) was release on November 14, 2019. Enable to select regions between two X-Y membranes for transmembrane proteins.
[icn3d-2.9.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.9.0.zip) was release on November 8, 2019. Display membranes for transmembrane proteins using data from Orientations of Proteins in Membranes (OPM). The feature is at "File > Retrieve by ID > OPM PDB ID".
[icn3d-2.8.3](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.8.3.zip) was release on November 5, 2019. Display/output salt bridges; color helices and sheets with spectrum in the menu "Color > Secondary > Spectrum".
[icn3d-2.8.2](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.8.2.zip) was release on October 29, 2019. Reduced the size of three.js (version 103) library. Added links to dbSNP in the mouseover texts of SNP annotations.
[icn3d-2.8.1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.8.1.zip) was release on October 21, 2019. Fixed the 2D interaction display in structure alignment. The bug was introduced in the last release.
[icn3d-2.8.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.8.0.zip) was release on October 10, 2019. Allowed to align any chain to another chain in the menu "File > Align > Chain to Chain".
[icn3d-2.7.19](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.7.19.zip) was release on September 9, 2019. Fixed the input width and height with "%".
[icn3d-2.7.18](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.7.18.zip) was release on September 4, 2019. Added the option to view in Full Screen mode by clicking the expansion icon in the top-right corner when "mobilemenu" is turned on, or by clicking "Full Screen" in the View menu.
[icn3d-2.7.17](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.7.17.zip) was release on September 3, 2019. Made it easy to save interactive work by clicking "File > Save File > iCn3D PNG Images". This saves both "iCn3D PNG Image" and an HTML file with a clickable PNG image, which is link to the custom display via a sharable link.
[icn3d-2.7.16](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.7.16.zip) was release on August 29, 2019. Fixed the transparent display by switching three.js from version 107 to 103.
[icn3d-2.7.15](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.7.15.zip) was release on August 21, 2019. Added an example page to embed multiple iCn3D viewers in one page.
[icn3d-2.7.14](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.7.14.zip) was release on August 21, 2019. Enabled the mobile style menu with the URL parameter "mobilemenu=1".
[icn3d-2.7.13](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.7.13.zip) was release on August 14, 2019. Fixed the calculations on contacting atoms by considering the centers of atoms and not radii of atoms. Minimized the code size by retrieving some rarely used code on the fly.
[icn3d-2.7.12](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.7.12.zip) was release on August 8, 2019. The backend to retrieve ClinVar annotation was fixed.
[icn3d-2.7.11](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.7.11.zip) was release on August 6, 2019. Added "Label Scale" in the View menu to scale all labels.
[icn3d-2.7.10](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.7.10.zip) was release on August 5, 2019. Improved the display of binding sites with fog and slab.
[icn3d-2.7.9](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.7.9.zip) was release on August 1, 2019. Fixed the effect of Fog on sticks and spheres.
[icn3d-2.7.8](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.7.8.zip) was release on July 31, 2019. Fixed SNP annotation in the sequences and annotations window.
[icn3d-2.7.7](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.7.7.zip) was release on July 30, 2019. Added the option to show or hide hydrogens when displaying PubChem compounds.
[icn3d-2.7.6](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.7.6.zip) was release on July 18, 2019. Enabled to show disulfide bonds when a custom pdb file is input; added the option to output pairs for disulfide bonds, hydrogen bonds, and interacting/contacting residues by distance.
[icn3d-2.7.5](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.7.5.zip) was release on July 16, 2019. Added a Gallery section. Fixed the picking and centering issues in some Mac computers. Optimized the width and height of embedded iCn3D viewer.
[icn3d-2.7.4](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.7.4.zip) was release on July 8, 2019. Included Miniland1333's fix on clickTab for the basic display; auto-detected lipids and treated them as chemicals; improved the display of modified PDB files; mouseover showed the structure names when there are more than one structures.
[icn3d-2.7.3](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.7.3.zip) was release on June 6, 2019. Improved the display of transparent surfaces.
[icn3d-2.7.2](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.7.2.zip) was release on June 5, 2019. Fixed the display of transparent surfaces.
[icn3d-2.7.1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.7.1.zip) was release on June 3, 2019. Fixed the sequence display when there are insertion codes or missing coordinates.
[icn3d-2.7.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.7.0.zip) was release on May 20, 2019. "Share Link" can be used to reproduce a custom display when the input is a known ID. "iCn3D PNG Image" can be saved and opened in the File menu to reproduce a custom display for all cases, even when the input is a PDB file or other files.
[icn3d-2.6.6](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.6.6.zip) was release on May 16, 2019. The sequence display was fixed when the input is a MMTF ID or a mmCIF ID.
[icn3d-2.6.5](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.6.5.zip) was release on May 14, 2019. The sequence display was fixed when the input is a pdb file.
[icn3d-2.6.4](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.6.4.zip) was release on April 29, 2019. jQuery was upgraded to version 3.4.0.
[icn3d-2.6.3](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.6.3.zip) was release on April 23, 2019. Showed SNP annotations for more 3D structures.
[icn3d-2.6.2](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.6.2.zip) was release on April 15, 2019. Enabled to show large structure such as HIV-1 capsid (3J3Q): (https://www.ncbi.nlm.nih.gov/Structure/icn3d/?mmtfid=3j3q).
[icn3d-2.6.1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.6.1.zip) was release on April 1, 2019. Enabled to link from BLAST result page to iCn3D.
[icn3d-2.6.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.6.0.zip) was release on March 19, 2019. Users can now align any sequence to a hit structure by clicking "Align > Sequence to Structure" in the File menu. The default color scheme is color by sequence "Conservation" for sequence-structure or structure-structure alignments.
[icn3d-2.5.3](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.5.3.zip) was release on March 12, 2019. Added commands for up arraow and down arrow after picking a residue.
[icn3d-2.5.2](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.5.2.zip) was release on March 5, 2019. The style Lines was fixed by replacing THREE.Line with THREE.LineSegments.
[icn3d-2.5.1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.5.1.zip) was release on February 14, 2019. Change log was moved to the file CHANGELOG.md. Share Link was changed from https://d55qc.app.goo.gl/### to https://icn3d.page.link/###. All previous share links still work. iCn3D library file was renamed from full_ui_all_#.#.#.min.js to icn3d_full_ui_#.#.#.min.js. Both files are available to make it backward compatible.
[icn3d-2.5.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.5.0.zip) was release on January 31, 2019. Updated Three.js from version 80 to version 99. Enabled the basic version (simple_ui_all.min.js) to hide the Tools menu and title. Fixed a bug in picking an atom for distance or labeling.
[icn3d-2.4.3](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.4.3.zip) was release on January 22, 2019. Non-standard proteins or nucleotides were still displayed as "Biopolymer" in 2D interactions and were displayed in the style of protein or nucleotide in 3D. The usage tracking was implemented in iCn3D.
[icn3d-2.4.2](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.4.2.zip) was release on January 16, 2019. Non-standard proteins or nucleotides were displayed as "Biopolymer" in 2D interactions and were displayed in the style of "Stick" in 3D. A new kind of annotation "Disulfie Bonds" was added to the "Sequences and Annotations" window.
[icn3d-2.4.1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.4.1.zip) was release on January 7, 2019. Enabled users to show EM density map for any subset of an EM structure.
[icn3d-2.4.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.4.0.zip) was release on December 17, 2018. Enabled users to show electron density map for any subset of a crystal structure.
[icn3d-2.3.4](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.3.4.zip) was release on December 12, 2018. Enabled users to load a saved iCn3D PNG image into iCn3D to reproduce the display using the URL embedded in the image.
[icn3d-2.3.3](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.3.3.zip) was release on December 6, 2018. Made the list of interacting residues consistent in "File -> Save File -> Interaction List" and in the "Sequences and Annotations" window.
[icn3d-2.3.2](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.3.2.zip) was release on October 30, 2018. Water molecules were enabled to be shown when the structure is not a biological assembly. Gene symbols were shown for each chain in the "Sequences and Annotations" window.
[icn3d-2.3.1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.3.1.zip) was release on October 25, 2018. The color of the the first residue in a coil was fixed.
[icn3d-2.3.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.3.0.zip) was release on October 18, 2018. Added set operations (union,intersection, exclusion) in "Defined Sets"; added buttons "Helix Sets" and "Sheet Sets" in the "Sequences and Annotations" window to define helix sets and sheet sets in the window "Defined Sets"; added "Save Color" and "Apply Saved Color" in the menu "Color"; added "Save Style" and "Apply Saved Style" in the menu "Style"; added "Side Chains" in the menu "Select" to select side chains; added two options for color by "Secondary" structures: "Sheets in Green" and "Sheets in Yellow"; added color by "B-factor" that is normalized with "Original" values or "Percentile" values.
[icn3d-2.2.5](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.2.5.zip) was release on September 17, 2018. A bug in loading local PDB file was fixed.
[icn3d-2.2.4](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.2.4.zip) was release on September 6, 2018. The location of 2D interaction dialog was optimized.
[icn3d-2.2.3](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.2.3.zip) was release on August 30, 2018. Added an option to show N- and C-terminal labels.
[icn3d-2.2.2](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.2.2.zip) was release on August 9, 2018. Defined sets can be combined using "or", "and", and "not".
[icn3d-2.2.1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.2.1.zip) was release on August 3, 2018. Mouseover on the 3D structure shows the residue or atom name. Some Ajax calls are combined into one Ajax call.
[icn3d-2.2.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.2.0.zip) was release on July 30, 2018. The smoothing algorithm was switched from Catmull-Rom spline to cubic spline to make the curves more smooth. The thickness of ribbon was decreased to make the sides of the ribbons less apparent. The radio buttons in the menus was replaced by the check sign. A "Save Image" button was added in the "Toolbar".
[icn3d-2.1.8](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.1.8.zip) was release on July 12, 2018. Checked the code with the strict mode.
[icn3d-2.1.7](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.1.7.zip) was release on June 28, 2018. Simplified the addition of custom text as a track in the Sequences and Annotations window.
[icn3d-2.1.6](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.1.6.zip) was release on June 21, 2018. A color picker was added to the color menu.
[icn3d-2.1.5](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.1.5.zip) was release on June 18, 2018. 3D printing are enabled for biological assemblies.
[icn3d-2.1.4](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.1.4.zip) was release on June 7, 2018. The retrieval of transformation matrix from mmCIF was fixed for Mac.
[icn3d-2.1.3](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.1.3.zip) was release on May 30, 2018. "Sequences and Annotations" is now able to be highlighted even if some annotations didn't show up.
[icn3d-2.1.2](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.1.2.zip) was release on May 23, 2018. The surface display was improved by adding light reflection. Light was added to the display of instanced biological assemblies.
[icn3d-2.1.1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.1.1.zip) was release on May 22, 2018. The option of color by "Spectrum" was added back.
[icn3d-2.1.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.1.0.zip) was release on May 21, 2018. The instancing method is used to display a biological assembly. It significantly improved the rendering speed by sending only the geometry of its assymmetruic unit to GPU and applying transformation matrices to display the assembly.
[icn3d-2.0.3](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.0.3.zip) was release on May 2, 2018. Removed the "Description" field when saving a set of atoms. This made "Share Link" URL shorter. Made the size of stabilizer thicker for 3D printing.
[icn3d-2.0.2](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.0.2.zip) was release on April 30, 2018. Reset WebGLRenderer when WebGL context is lost in Internet Explore 11.
[icn3d-2.0.1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.0.1.zip) was release on April 23, 2018. The bug about extra 3D domains in the "Sequences & Annotations" window was fixed. The stabilizers for 3D printing were improved.
[icn3d-2.0.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-2.0.0.zip) was release on April 17, 2018. By clicking the menu "Windows: View Sequences & Annotations", users can view all kinds of annotations: ClinVar, SNPs, CDD domains, 3D domains, binding sites, interactions, and custom tracks. Users can click the menu "View: Chemical Binding" to show the chemical binding sites. Users can also export files for 3D printing at the menu "File: 3D Printing: VRML (Color, W/ Stabilizers)".
[icn3d-1.4.1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-1.4.1.zip) was release on November 3, 2017. The version of THREE.js in the zip file was fixed.
[icn3d-1.4.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-1.4.0.zip) was release on November 2, 2017. The rendering speed has been significantly improved by using the Imposter shaders from NGL Viewer. A bug in "Share Link" was fixed.
[icn3d-1.3.10](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-1.3.10.zip) was release on October 27, 2017. The "Save File" issue in Chrome 60 and after was fixed.
[icn3d-1.3.9](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-1.3.9.zip) was release on September 5, 2017. The handling of residues with insertion codes was fixed in structure alignment.
[icn3d-1.3.8](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-1.3.8.zip) was release on August 7, 2017. The handling of residues with insertion codes was fixed.
[icn3d-1.3.7](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-1.3.7.zip) was release on April 18, 2017. A bug in the output order of commands was fixed.
[icn3d-1.3.6](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-1.3.6.zip) was release on April 10, 2017. A bug introduced in the version of icn3d-1.3.5 was fixed in the function unionHash.
[icn3d-1.3.5](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-1.3.5.zip) was release on March 23, 2017. The codes were optimized to show 3D structures as soon as possible. Vast+ structure alignment was optimized as well.
[icn3d-1.3.4](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-1.3.4.zip) was release on March 1, 2017. The backend of structure alignment was updated.
[icn3d-1.3.3](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-1.3.3.zip) was release on November 15, 2016. Now users can save the image with "transparent" background using a single url, e.g., [](https://www.ncbi.nlm.nih.gov/Structure/icn3d/?mmdbid=1tup&width=300&height=300&command=set%20background%20transparent;%20export%20canvas)https://www.ncbi.nlm.nih.gov/Structure/icn3d/?mmdbid=1tup&width=300&height=300&command=set%20background%20transparent;%20export%20canvas.
[icn3d-1.3.2](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-1.3.2.zip) was release on October 18, 2016. The atom specification in "Advanced set selection" was modified to use "$" instead of "#" in front of structure IDs. This modification avoids to the problem of showing multiple "#" in the urls of "Share Link".
[icn3d-1.3.1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-1.3.1.zip) was release on October 4, 2016. Partial diplay of helices or beta-sheets are enabled. The side chains, if displayed, are connected to C-alphas.
[icn3d-1.2.3](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-1.2.3.zip) was release on September 13, 2016. The MMTF format started to support https.
[icn3d-1.2.2](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-1.2.2.zip) was release on August 18, 2016. Added a switch button to switch between all atoms and selected atoms. When the mode is "selected atoms", the switch and the text "selection" next to it are colored in orange. The menu "Style", "Color", and "Surface" are colored in orange and only apply to selected atoms.
[icn3d-1.2.1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-1.2.1.zip) was release on August 18, 2016. Some bugs were fixed.
[icn3d-1.2.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-1.2.0.zip) was release on August 17, 2016. The dialog of 2D interactions was added to show the interactions among different chains. Both the nodes (chains) and lines (interactions) can be selected. Secondary structures will be calculated if the input PDB file has no defined secondary structure information. The previous files src/icn3d.js, src/full_ui.js, and src/simple_ui.js were separated into small files.
[icn3d-1.1.1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-1.1.1.zip) was release on July 25, 2016. Some bugs were fixed.
[icn3d-1.1.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-1.1.0.zip) was release on July 18, 2016. The new binary MMTF file format was supported. A new "Analysis" menu was added with an option to show disulfide bonds. Users can also input data from a url, either through the UI or through a encoded url parameter "?type=pdb&url=...", e.g., [](https://www.ncbi.nlm.nih.gov/Structure/icn3d/?type=pdb&url=https%3A%2F%2Ffiles.rcsb.org%2Fview%2F1gpk.pdb)https://www.ncbi.nlm.nih.gov/Structure/icn3d/?type=pdb&url=https%3A%2F%2Ffiles.rcsb.org%2Fview%2F1gpk.pdb.
[icn3d-1.0.1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-1.0.1.zip) was release on May 16, 2016.
[icn3d-1.0.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-1.0.0.zip) was release on April 28, 2016.
The beta version [icn3d-0.9.6-dev](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-0.9.6-dev.zip) was release on April 21, 2016. Enabled to export and import selection file where each custom sets of atoms are defined. Javascript files and CSS files are versioned. Developers can use the default latest version or specify the specific version in their pages.
The beta version [icn3d-0.9.5-dev](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-0.9.5-dev.zip) was release on April 4, 2016. Enabled to import Mol2, SDF, XYZ, PDB, and mmCIF files. Added "Schematic" style for chemicals. Improved the coordination between pk on 3D structure and selection on sequences.
The beta version [icn3d-0.9.4-dev](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-0.9.4-dev.zip) was release on March 14, 2016. Added "Fog" and "Slab" features.
The beta version [icn3d-0.9.3-dev](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-0.9.3-dev.zip) was release on March 9, 2016. Improved the following features: "Back" and "Forward" button, Export State, Open State.
The beta version [icn3d-0.9.2-dev](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-0.9.2-dev.zip) was release on March 4, 2016. CSS namespace was added. The file simple_ui.js was reorganized to share some codes with full_ui.js. A "Schematic" style was added to show one letter residue name in the C-alpha (for protein) or O3' (for nucleotide) position.
The beta version [icn3d-0.9.1-dev](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-0.9.1-dev.zip) was release on Feb 9, 2016. The surface generation was switched from the iview version (surface.js) to the more efficient 3Dmol version (ProteinSurface4.js and marchingcube.js).
The beta version [icn3d-0.9.0-dev](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-0.9.0-dev.zip) was release on Jan 17, 2016.
================================================
FILE: CODE_OF_CONDUCT.md
================================================
## Contributor Code of Conduct
### Purpose
Our goal is to foster an open and welcoming community where contributors from all backgrounds can collaborate in a respectful and constructive manner. This Code of Conduct outlines our expectations for all those who participate in our project and the consequences for unacceptable behavior.
### Our Pledge
In the interest of fostering an open and welcoming community, we as contributors and maintainers pledge to make participation in our project and community a harassment-free experience for everyone, regardless of level of experience, gender identity and expression, sexual orientation, disability, personal appearance, body size, race, ethnicity, age, religion, or nationality.
### Our Standards
Examples of behavior that contributes to a positive environment include:
* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy toward other community members
Examples of unacceptable behavior include:
* Harassment, discrimination, or bullying of any kind
* Inappropriate sexual language
* Trolling, insulting or derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others’ private information without explicit permission
### Our Responsibilities
Project maintainers are responsible for:
* Clarifying the standards of acceptable behavior
* Taking appropriate and fair corrective action in response to any instances of unacceptable behavior
* Maintaining the confidentiality of anyone reporting incidents
### Scope
This Code of Conduct applies within all project spaces and also applies when an individual is representing the project or community in public spaces.
### Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by opening an issue or contacting one or more of the project maintainers. All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances.
### Attribution
This Code of Conduct is adapted from the [Contributor Covenant](https://www.contributor-covenant.org/), version 2.1.
================================================
FILE: LICENSE.md
================================================
iCn3D incorporates the DelPhi code to dynamically show the
electrostatic potential map. The DelPhi code is licensed by Columbia
University, which does not permit commercial use without contacting the
DelPhi project for permission.
The remaining code is a "United States Government Work" and is provided
by the terms described below:
PUBLIC DOMAIN NOTICE
National Center for Biotechnology Information
This software/database is a "United States Government Work" under the
terms of the United States Copyright Act. It was written as part of
the author's official duties as a United States Government employee and
thus cannot be copyrighted. This software/database is freely available
to the public for use. The National Library of Medicine and the U.S.
Government have not placed any restriction on its use or reproduction.
Although all reasonable efforts have been taken to ensure the accuracy
and reliability of the software and data, the NLM and the U.S.
Government do not and cannot warrant the performance or results that
may be obtained by using this software or data. The NLM and the U.S.
Government disclaim all warranties, express or implied, including
warranties of performance, merchantability or fitness for any particular
purpose.
Please cite the author in any work or product based on this material.
================================================
FILE: README.md
================================================
# iCn3D Structure Viewer
<!--
## [Gallery with live examples](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d.html#gallery), [Tutorial](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d.html#videos)
-->
## [AI Tutor for iCn3D](https://vizomics.org/ai-tutor): shows step-by-step instructions about how to build a custom view
## About iCn3D
"I see in 3D" (iCn3D) Structure Viewer is not only a web-based 3D viewer, but also a structure analysis tool interactively or in the batch mode using NodeJS scripts based on the npm package icn3d. iCn3D synchronizes the display of 3D structure, 2D interaction, and 1D sequences and annotations. Users' custom display can be saved in a short URL or a PNG image. <b>The complete package of iCn3D</b> including Three.js and jQuery is in the directory "dist" after you get the source code with the "Code" button. You can click the file "index.html" in the "dist" directory to launch a local version of iCn3D.
* <b>View a 3D structure in iCn3D</b>:
Open the link [https://www.ncbi.nlm.nih.gov/Structure/icn3d](https://www.ncbi.nlm.nih.gov/Structure/icn3d), input a PDB ID, and click "Load". You can also click "File" menu to "Open File" to load PDB files or MD trajectories, or input other IDs.
As mentioned in the menu "Help > Transformation Hints", you can use Left mouse button for rotation, Middle mouse wheel for zooming, and Right mouse button for translation.
The most important point about using iCn3D is the current selection. Any operations on color, style, etc. are working on the current selection. By default, all atoms are selected. Once you select any subset, your operation will work ONLY on the subset. You can switch the selection using the toggle next to the Help menu.
* <b>VR and AR views in iCn3D</b>:
The Virtual Reality (VR) and Augmented Reality (AR) views are shown in this [video](https://youtu.be/XvjiK5bOtd0).
You can open a bowser in your Virtual Reality (VR) headset and view a 3D structure in iCn3D. Then click the button "Enter VR" at the bottom center of your browser to enter the VR view. You can select residues with the trigger button, open the menu with the squeeze button and click menus with the trigger, navigate with the thumbstick pressed forward/backward and press the trigger. There are menus for Select, Style, Color, and Analysis. You need to make one selection before clicking the Interaction button and make two selections before clicking the Distance button.
The Augmented Reality (AR) view is currently only available to iCn3D views in Chrome browser using Android phones. You can view a 3D structure in iCn3D and click the button "START AR" at the bottom center to see the 3D structure in your surroundings. You can tap twice quickly on the screen to locate a minimized 3D structure in your tapped location, and pinch to scale the 3D structure.
* <b>Create custom 3D view</b>:
You first open a structure in "File" menu, then select a subset in "Select" menu, view only the selected subset by clicking "View Only Selection" in View menu, finally change styles or colors in "Style" and "Color" menus.
Each operation has a corresponding command as listed at https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d.html#commands. These commands will show up in the command/log window right beneath the 3D display. To view all previous commands, you can click "Share Link" in "File" menu. Both the original URL and the short URL can be used to display your custom view.
* <b>Save your work</b>:
You can save "iCn3D PNG Image" in the menu "File > Save File". Both the PNG file and an HTML file are saved. Click the HTML file to see the PNG image, which is linked to the custom display via a shorten URL. The downloaded "iCn3D PNG Image" itself can also be used as an input in the menu "File > Open File" to reproduce the custom display. You can combine these HTML files to generate your own galleries.
The "iCn3D PNG Image" can also be stored in a web server (e.g., [https://figshare.com](https://figshare.com), [https://zenodo.org](https://zenodo.org)). The PNG image can then be loaded into iCn3D via the URL, e.g., [https://www.ncbi.nlm.nih.gov/Structure/icn3d/?type=icn3dpng&url=https://api.figshare.com/v2/file/download/39125801](https://www.ncbi.nlm.nih.gov/Structure/icn3d/?type=icn3dpng&url=https://api.figshare.com/v2/file/download/39125801), or [https://www.ncbi.nlm.nih.gov/Structure/icn3d/?type=icn3dpng&url=https://zenodo.org/api/files/1a3325c8-0c84-4f1e-be2c-c143b08c6563/3GVU-XCxR6fSTmXHxR3o1A.png](https://www.ncbi.nlm.nih.gov/Structure/icn3d/?type=icn3dpng&url=https://zenodo.org/api/files/1a3325c8-0c84-4f1e-be2c-c143b08c6563/3GVU-XCxR6fSTmXHxR3o1A.png), where the URL of the PNG image is retrieved from the JSON blob at https://zenodo.org/api/records/7599970.
You can also save "Share Link" in "File" menu to share with your colleagues. These URLs are lifelong. You can click "Replay Each Step > On" in "File" menu to learn how a [custom display](https://www.ncbi.nlm.nih.gov/Structure/icn3d/share.html?u7gp4xS9rn4hahcLA) was generated. (<b>Note: Due to the retirement of Google Firebase Dynamic Link, any short URL containing "https://icn3d.page.link/" should be replaced with "https://www.ncbi.nlm.nih.gov/Structure/icn3d/share.html?". For example, "https://icn3d.page.link/2rZWsy1LZmtTS3kBA" should be replaced with "https://www.ncbi.nlm.nih.gov/Structure/icn3d/share.html?2rZWsy1LZmtTS3kBA".</b>)
All "Share Link" URLs can show the original view using the archived version of iCn3D by clicking "Open File > Share Link in Archived Ver." in "File" menu.
* <b>Python scripts to batch process structures</b>:
Python scripts can be used to process 3D structures (e.g., export secondary structures, PNG images, or analysis output) in batch mode. The example scripts are at [icn3dpython](https://github.com/ncbi/icn3d/tree/master/icn3dpython).
* <b>Node.js scripts using npm "icn3d" to batch process structures</b>:
You can download [npm "icn3d" package](https://www.npmjs.com/package/icn3d) to write Node.js scripts by calling iCn3D functions. These scripts can be used to process 3D structures (e.g., calculate interactions) in batch mode. The example scripts are at [icn3dnode](https://github.com/ncbi/icn3d/tree/master/icn3dnode).
* <b>Annotations for AlphaFold structures</b>:
For any custom structures such as AlphaFold structures, you can show [conserved domain and 3D domain annotations](https://www.ncbi.nlm.nih.gov/Structure/icn3d/share.html?bPSkpeshtiH1TxbP8). For AlphaFold structures, you can also show [SNP and ClinVar annotations](https://www.ncbi.nlm.nih.gov/Structure/icn3d/share.html?XSQ5oqDCTfEQ3iAY7).
* <b>Align AlphaFold structures</b>:
You can align [AlphaFold structures or PDB structures](https://www.ncbi.nlm.nih.gov/Structure/icn3d/?chainalign=P69905_A,P01942_A,1HHO_A&showalignseq=1&bu=0) with the menu "File > Align > Multiple Chains" or "File > Align > Protein Complexes > Two AlphaFold Structures". You can also load any structures as usual, then load your custom PDB file with the menu "File > Open File > PDB File (appendable)", then relaign these structures with the menu "File > Realign Selection > by Structure Alignment".
* <b>Alternate SNPs in 3D</b>:
You can [alternate in 3D wild type and mutant of SNPs](https://www.ncbi.nlm.nih.gov/Structure/icn3d/share.html?fNpzDuUE287SBFtz8) by clicking the menu "Analysis > Sequences & Annotations", the tab "Details", the checkbox "SNP", and mouseover on SNPs.
* <b>DelPhi Electrostatic Potential</b>:
You can view the [DelPhi Electrostatic Potential](https://www.ncbi.nlm.nih.gov/Structure/icn3d/share.html?31DFceJiYw7SfStQA) in the menu "Analysis > DelPhi Potential".
* <b>Isoforms and Exons</b>:
You can view the [Isoforms and Exons](https://www.ncbi.nlm.nih.gov/Structure/icn3d/share.html?pA3pPu7LxdiuZDVX7) by clicking the button "Add Track" in the "Sequences & Annotations" window via the menu "Analysis > Sequences & Annotations".
* <b>Multiple Sequence Alignment (MSA) Input</b>:
You can input a MSA file (CLUSTALW or FASTA format) into iCn3D via the menu "File > Open File > Muleiple Seq. Alignment" in the "All Menus" mode. The view can be shared with others, e.g., [GPCR MSA](https://www.ncbi.nlm.nih.gov/Structure/icn3d/share.html?zvKpsn7PPJG4QEXY6).
* <b>Symmetry</b>:
You can show [precalculated symmetry](https://www.ncbi.nlm.nih.gov/Structure/icn3d/share.html?bGH1BfLsiGFhhTDn8), or calculate [symmetry dynamically](https://www.ncbi.nlm.nih.gov/Structure/icn3d/share.html?6NvhQ45XrnbuXyGe6) using SymD.
* <b>Use iCn3D in Jupyter Notebook</b>:
You can use iCn3D in Jupyter Notebook with the widget "icn3dpy". The instructions are at [pypi.org/project/icn3dpy](https://pypi.org/project/icn3dpy/).
* <b>2D Cartoons in the chain, domain, and secondary structure levels</b>:
You can use click "Analysis > 2D Cartoon" to show 2D Cartoons in the [chain](https://www.ncbi.nlm.nih.gov/Structure/icn3d/share.html?pzmT7EMTAxXKVbZu7), [domain](https://www.ncbi.nlm.nih.gov/Structure/icn3d/share.html?Arh4H9VTMuHQURY5A), and [secondary structure](https://www.ncbi.nlm.nih.gov/Structure/icn3d/share.html?5iZSHNbXcJisp7gQ6) levels.
* <b>Contact Map for any Selected Residues</b>:
You can click the menu "Analysis > Contact Map" to show the interactive [contact map](https://www.ncbi.nlm.nih.gov/Structure/icn3d/share.html?rnMbe26tNsAjJLGK9) for any selected residues. You can export the map in PNG or SVG.
* More features are listed at [www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d.html](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d.html): [binding site](https://www.ncbi.nlm.nih.gov/Structure/icn3d/share.html?JR5B), [interaction interface](https://www.ncbi.nlm.nih.gov/Structure/icn3d/share.html?CuXYgGLCukDeUKnJ6), [3D printing](https://www.ncbi.nlm.nih.gov/Structure/icn3d/?mmdbid=1tup&command=export+stl+stabilizer+file), [transmembrane proteins](https://www.ncbi.nlm.nih.gov/Structure/icn3d/share.html?TuSd), [surface](https://www.ncbi.nlm.nih.gov/Structure/icn3d/share.html?aYAjP4S3NbrBJX3x6), [EM map](https://www.ncbi.nlm.nih.gov/Structure/icn3d/share.html?L4C4WYE85tYRiFeK7), [electron density map from MTZ, CCP4, or DSN6](https://www.ncbi.nlm.nih.gov/Structure/icn3d/share.html?QpqNZ3k65ToYFvUB6), 1D sequences and 2D interactions, [align two structures](https://www.ncbi.nlm.nih.gov/Structure/icn3d/share.html?PfsQFtZRTgFAW2LG6), [align multiple chains](https://www.ncbi.nlm.nih.gov/Structure/icn3d/share.html?ijnf), [align a protein sequence to a structure](https://www.ncbi.nlm.nih.gov/Structure/icn3d/share.html?Mmm82craCwGMAxru9), [realign](https://www.ncbi.nlm.nih.gov/Structure/icn3d/share.html?UccFrXLDNeVB7Jk16), [custom tracks](https://www.ncbi.nlm.nih.gov/Structure/icn3d/share.html?pUzP), [force-directed graph for interactions](https://www.ncbi.nlm.nih.gov/Structure/icn3d/share.html?rshvjTFXpAFu8GDa9), [solvent accessible surface area](https://www.ncbi.nlm.nih.gov/Structure/icn3d/share.html?xKSyfd1umbKstGh29), save videos, etc.
## Embed iCn3D with iframe or JavaScript libraries
iCn3D can be embedded in a web page by including the URL in HTML iframe, e.g. <iframe allow="xr-spatial-tracking *" src="https://www.ncbi.nlm.nih.gov/Structure/icn3d/?mmdbid=1tup&width=300&height=300&showcommand=0&mobilemenu=1&showtitle=0" width="320" height="320" style="border:none"></iframe>. This method always shows the most recent version of iCn3D.
To embed iCn3D with JavaScript libraries, the following libraries need to be included: jQuery, jQuery UI, Three.js, and iCn3D library. An html div tag to hold the 3D viewer is added. The iCn3D widget is initialized with the custom defined parameter "cfg": "let icn3dui = new icn3d.iCn3DUI(cfg); await icn3dui.show3DStructure();". Multiple iCn3D widgets can be embedded in a single page. Please see the source code of the [example page](https://www.ncbi.nlm.nih.gov/Structure/icn3d/example-simple.html) for reference.
Users can choose to show the most recent version of iCn3D, or a locked version of iCn3D. To show the most recent version, use the library files without the version postfix as shown in the [iCn3D Doc page](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d.html#HowToUse). To show a locked version, use the library files with the version postfix as shown in the source code of [iCn3D page](https://www.ncbi.nlm.nih.gov/Structure/icn3d/?mmdbid=1tup). If the input is provided as an MMDB ID, both library files and backend cgis are versioned so that the 3D display will be stable.
## Data Sources
iCn3D accepts the following IDs:
* <b>mmdbafid</b>: A list of PDB or AlphaFold UniProt IDs for realignment, e.g., [https://www.ncbi.nlm.nih.gov/Structure/icn3d/?mmdbafid=1HHO,4N7N,P69905,P01942](https://www.ncbi.nlm.nih.gov/Structure/icn3d/?mmdbafid=1HHO,4N7N,P69905,P01942). You can then input multiple PDB files with the menu "File > Open File > PDB Files (appendable)". Next you can click the menu "File > Realign Selection > by Structure Alignment" to realign all loaded structures.
* <b>protein</b>: Protein/Gene name to search AlphaFold structures, e.g., [https://www.ncbi.nlm.nih.gov/Structure/icn3d/?protein=TP53&showanno=1&showsets=1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/?protein=TP53&showanno=1&showsets=1)
* <b>mmdbid</b>: NCBI MMDB ID, e.g., [https://www.ncbi.nlm.nih.gov/Structure/icn3d/?mmdbid=1tup&showanno=1&show2d=1&showsets=1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/?mmdbid=1tup&showanno=1&show2d=1&showsets=1)
* <b>bcifid or mmtfid</b>: Binary CIF ID or MMTF ID, e.g., [https://www.ncbi.nlm.nih.gov/Structure/icn3d/?bcifid=1tup&show2d=1&showsets=1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/?bcifid=1tup&showanno=1&showsets=1)
* <b>pdbid</b>: PDB ID, e.g., [https://www.ncbi.nlm.nih.gov/Structure/icn3d/?pdbid=1tup&showanno=1&showsets=1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/?pdbid=1tup&showanno=1&showsets=1)
* <b>afid</b>: AlphaFold Structure with UniProt ID, e.g., [https://www.ncbi.nlm.nih.gov/Structure/icn3d/?afid=A0A061AD48&showanno=1&showsets=1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/?afid=A0A061AD48&showanno=1&showsets=1)
* <b>refseqid</b>: AlphaFold Structure with NCBI Protein Accession, e.g., [https://www.ncbi.nlm.nih.gov/Structure/icn3d/?refseqid=NP_001743.1&show2d=1&showsets=1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/?refseqid=NP_001743.1&show2d=1&showsets=1)
* <b>opmid</b>: Orientations of Proteins in Membranes(OPM) PDB ID, e.g., [https://www.ncbi.nlm.nih.gov/Structure/icn3d/?opmid=6jxr&show2d=1&showsets=1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/?opmid=6jxr&showanno=1&showsets=1)
* <b>mmcifid</b>: mmCIF ID, e.g., [https://www.ncbi.nlm.nih.gov/Structure/icn3d/?mmcifid=1tup&show2d=1&showsets=1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/?mmcifid=1tup&showanno=1&showsets=1)
* <b>cid</b>: PubChem Compound ID, e.g., [https://www.ncbi.nlm.nih.gov/Structure/icn3d/?cid=2244](https://www.ncbi.nlm.nih.gov/Structure/icn3d/?cid=2244)
* <b>align two structures</b>: two PDB IDs or MMDB IDs for structure alignment, e.g., [https://www.ncbi.nlm.nih.gov/Structure/icn3d/?align=1hho,4n7n&showalignseq=1&show2d=1&showsets=1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/?align=1hho,4n7n&showalignseq=1&show2d=1&showsets=1)
* <b>align multiple chains</b>: any multiple chains for structure alignment, e.g., [https://www.ncbi.nlm.nih.gov/Structure/icn3d/?chainalign=1HHO_A,4N7N_A&showalignseq=1&show2d=1&showsets=1](https://www.ncbi.nlm.nih.gov/Structure/icn3d/?chainalign=1HHO_A,4N7N_A&showalignseq=1&show2d=1&showsets=1)
* <b>blast_rep_id and query_id</b>: NCBI protein accessions of a protein sequence and a chain of a 3D structure for sequence-structure alignment, e.g., [https://www.ncbi.nlm.nih.gov/Structure/icn3d/?from=icn3d&blast_rep_id=1TSR_A&query_id=NP_001108451.1&command=view annotations; set annotation cdd; set annotation site; set view detailed view; select chain 1TSR_A; show selection](https://www.ncbi.nlm.nih.gov/Structure/icn3d/?from=icn3d&blast_rep_id=1TSR_A&query_id=NP_001108451.1&command=view annotations; set annotation cdd; set annotation site; set view detailed view; select chain 1TSR_A; show selection)
iCn3D also accepts the following file types: PDB, mmCIF, Mol2, SDF, XYZ, and iCn3D PNG. The files can be passed through a url, e.g., [https://www.ncbi.nlm.nih.gov/Structure/icn3d/?type=pdb&url=https://storage.googleapis.com/membranome-assets/pdb_files/proteins/FCG2A_HUMAN.pdb](https://www.ncbi.nlm.nih.gov/Structure/icn3d/?type=pdb&url=https://storage.googleapis.com/membranome-assets/pdb_files/proteins/FCG2A_HUMAN.pdb), [https://www.ncbi.nlm.nih.gov/Structure/icn3d/?type=mmcif&url=https://files.rcsb.org/download/1GPK.cif](https://www.ncbi.nlm.nih.gov/Structure/icn3d/?type=mmcif&url=https://files.rcsb.org/download/1GPK.cif), or [https://www.ncbi.nlm.nih.gov/Structure/icn3d/?type=icn3dpng&url=https://api.figshare.com/v2/file/download/39125801](https://www.ncbi.nlm.nih.gov/Structure/icn3d/?type=icn3dpng&url=https://api.figshare.com/v2/file/download/39125801). See the [help page](https://www.ncbi.nlm.nih.gov/Structure/icn3d/docs/icn3d_help.html) or the [Doc page](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d.html) for more details.
## Third-party libraries used in Frontend
* **[jQuery and jQuery UI](https://jquery.com/)**: used as a general tool to write Javascript code. Some jQuery UI features are used.
* **[Three.js](http://threejs.org/)**: used to set up the 3D view.
* **[Force-Directed Graph](https://gist.github.com/pkerpedjiev/f2e6ebb2532dae603de13f0606563f5b)**: "2D Graph (Force-Directed)" in the menu "Analysis > Interactions" is based on Force-Directed Graph.
## Third-party libraries used in Backend
* **[DelPhi](http://honig.c2b2.columbia.edu/delphi)**: used to calculate electrostatic potential dynamically and is <b>licensed</b> from Columbia University.
* **[DelPhiPKa](http://compbio.clemson.edu/pka_webserver)**: used to add hydrogens and partial charges to proteins and nucleotides.
* **[Open Babel](http://openbabel.org/wiki/Main_Page)**: used to add hydrogens to ligands, convert PDB to SVG, and convert SMILES to PDB.
* **[Antechamber](http://ambermd.org/antechamber/ac.html)**: used to add partial charges to ligands.
* **[SymD](https://symd.nci.nih.gov/)**: used to calculate symmetry dynamically.
* **[scap/Jackal](http://honig.c2b2.columbia.edu/scap)**: used to predict side chain conformation dynamically.
* **[TM-align](https://zhanggroup.org/TM-align/)**: used to align two chains of 3D structures.
## Tools based on
* **[iview](https://bmcbioinformatics.biomedcentral.com/articles/10.1186/1471-2105-15-56)**: The drawing of 3D objects is based on iview.
* **[GLmol](https://webglmol.osdn.jp/index-en.html)**: The drawing of nucleotides cartoon is based on GLmol.
* **[3Dmol](https://3dmol.csb.pitt.edu/)**: The surface generation and labeling are based on 3Dmol.
* **[NGL Viewer](https://github.com/arose/ngl)**: The Imposter shaders are based on NGL Viewer.
* **[Mol\*](https://github.com/molstar/molstar)**: The parsers of MD trajectory files (DCD and XTC formats) and EM density data from PDBe are based on Mol\*.
* **[py3Dmol](https://pypi.org/project/py3Dmol/)**: The Jupyter Notebook widget "icn3dpy" is based on py3Dmol.
* **[Orientations of Proteins in Membranes (OPM)](https://opm.phar.umich.edu/)**: The membrane data of transmembrane proteins are from OPM.
* **[Membranome](https://membranome.org)**: For AlphaFold Structures, the membrane data of single-spanning transmembrane proteins are from Membranome.
* **[Post-Translational Modification (PTM)](https://www.ebi.ac.uk/proteins/api/doc/#/features)**: The PTM data are from UniProt.
* **[UglyMol](https://github.com/uglymol/uglymol.github.io)**: The electron density maps from CCP4 map or MTZ format are based on UglyMol.
## Building
If you want to build your code easily, you'll need to install nodejs and npm.
Next, clone this repository, and then perform the following setup steps in your working copy of icn3d.
```
npm config set -g production false
npm install -g gulp
npm install
npm install uglify-js@3.3.9
delete package-lock.json
```
The first line sets the npm default as dev so that all modules will be installed. The second line installs the gulp build tool globally, making the `gulp` command available on the command line. The third line install all modules. The fourth line changes the version of uglify-js to an old version, which does not compress class names. The last line may be required for a fresh build to remove old package-lock.json.
You only have to perform the above steps once, to set up your working directory. From then on, to build, simply enter:
```
gulp
```
## Contact
Please send all comments to wangjiy@ncbi.nlm.nih.gov.
## Citing
Wang J, Youkharibache P, Zhang D, Lanczycki CJ, Geer RC, Madej T, Phan L, Ward M, Lu S, Marchler GH, Wang Y, Bryant SH, Geer LY, Marchler-Bauer A. *iCn3D, a Web-based 3D Viewer for Sharing 1D/2D/3D Representations of Biomolecular Structures.* **_Bioinformatics_. 2020** Jan 1; 36(1):131-135. (Epub 2019 June 20.) [doi: 10.1093/bioinformatics/btz502](https://dx.doi.org/10.1093/bioinformatics/btz502). [PubMed PMID: 31218344](https://www.ncbi.nlm.nih.gov/pubmed/31218344), [Full Text at Oxford Academic](https://academic.oup.com/bioinformatics/article/36/1/131/5520951)
Wang J, Youkharibache P, Marchler-Bauer A, Lanczycki C, Zhang D, Lu S, Madej T, Marchler GH, Cheng T, Chong LC, Zhao S, Yang K, Lin J, Cheng Z, Dunn R, Malkaram SA, Tai C-H, Enoma D, Busby B, Johnson NL, Tabaro F, Song G, Ge Y. *iCn3D: From Web-Based 3D Viewer to Structural Analysis Tool in Batch Mode.* **_Front. Mol. Biosci._ 2022** 9:831740. (Epub 2022 Feb 17.) [doi: 10.3389/fmolb.2022.831740](https://dx.doi.org/10.3389/fmolb.2022.831740). [PubMed PMID: 35252351](https://www.ncbi.nlm.nih.gov/pubmed/35252351), [Full Text at Frontiers](https://www.frontiersin.org/articles/10.3389/fmolb.2022.831740/full)
================================================
FILE: SECURITY.md
================================================
# Security Policy
## Supported Versions
| Version | Supported |
| ------- | ------------------ |
| 3.0.x | :white_check_mark: |
| < 3.0 | :x: |
## Reporting a Vulnerability
Please send an email to wangjiy@ncbi.nlm.nih.gov to report a vulnerability.
================================================
FILE: build/icn3d.js
================================================
var $NGL_shaderTextHash = {};
$NGL_shaderTextHash['SphereImpostor.frag'] = ["#define STANDARD",
"#define IMPOSTOR",
"",
"uniform vec3 diffuse;",
"uniform vec3 emissive;",
"uniform float roughness;",
"uniform float metalness;",
"uniform float opacity;",
"uniform float nearClip;",
"uniform mat4 projectionMatrix;",
"uniform float ortho;",
"",
"varying float vRadius;",
"varying float vRadiusSq;",
"varying vec3 vPoint;",
"varying vec3 vPointViewPosition;",
"",
"#ifdef PICKING",
" uniform float objectId;",
" varying vec3 vPickingColor;",
"#else",
" #include common",
" #include color_pars_fragment",
" #include fog_pars_fragment",
" #include bsdfs",
" #include lights_pars_begin",
" #include lights_physical_pars_fragment",
"#endif",
"",
"bool flag2 = false;",
"bool interior = false;",
"vec3 cameraPos;",
"vec3 cameraNormal;",
"",
"// Calculate depth based on the given camera position.",
"float calcDepth( in vec3 cameraPos ){",
" vec2 clipZW = cameraPos.z * projectionMatrix[2].zw + projectionMatrix[3].zw;",
" return 0.5 + 0.5 * clipZW.x / clipZW.y;",
"}",
"",
"float calcClip( vec3 cameraPos ){",
" return dot( vec4( cameraPos, 1.0 ), vec4( 0.0, 0.0, 1.0, nearClip - 0.5 ) );",
"}",
"",
"bool Impostor( out vec3 cameraPos, out vec3 cameraNormal ){",
"",
" vec3 cameraSpherePos = -vPointViewPosition;",
" cameraSpherePos.z += vRadius;",
"",
" vec3 rayOrigin = mix( vec3( 0.0, 0.0, 0.0 ), vPoint, ortho );",
" vec3 rayDirection = mix( normalize( vPoint ), vec3( 0.0, 0.0, 1.0 ), ortho );",
" vec3 cameraSphereDir = mix( cameraSpherePos, rayOrigin - cameraSpherePos, ortho );",
"",
" float B = dot( rayDirection, cameraSphereDir );",
" float det = B * B + vRadiusSq - dot( cameraSphereDir, cameraSphereDir );",
"",
" if( det < 0.0 ){",
" discard;",
" return false;",
" }",
" float sqrtDet = sqrt( det );",
" float posT = mix( B + sqrtDet, B + sqrtDet, ortho );",
" float negT = mix( B - sqrtDet, sqrtDet - B, ortho );",
"",
" cameraPos = rayDirection * negT + rayOrigin;",
"",
" #ifdef NEAR_CLIP",
"if( calcDepth( cameraPos ) <= 0.0 ){",
" cameraPos = rayDirection * posT + rayOrigin;",
" interior = true;",
" return false;",
"}else if( calcClip( cameraPos ) > 0.0 ){",
" cameraPos = rayDirection * posT + rayOrigin;",
" interior = true;",
" flag2 = true;",
" return false;",
"}else{",
" cameraNormal = normalize( cameraPos - cameraSpherePos );",
"}",
" #else",
"if( calcDepth( cameraPos ) <= 0.0 ){",
" cameraPos = rayDirection * posT + rayOrigin;",
" interior = true;",
" return false;",
"}else{",
" cameraNormal = normalize( cameraPos - cameraSpherePos );",
"}",
" #endif",
"",
" cameraNormal = normalize( cameraPos - cameraSpherePos );",
" cameraNormal *= float(!interior) * 2.0 - 1.0;",
" return !interior;",
"",
"}",
"",
"void main(void){",
"",
" bool flag = Impostor( cameraPos, cameraNormal );",
"",
" #ifdef NEAR_CLIP",
" if( calcClip( cameraPos ) > 0.0 )",
" discard;",
" #endif",
"",
" // FIXME not compatible with custom clipping plane",
" //Set the depth based on the new cameraPos.",
" gl_FragDepthEXT = calcDepth( cameraPos );",
" if( !flag ){",
"",
" // clamp to near clipping plane and add a tiny value to",
" // make spheres with a greater radius occlude smaller ones",
" #ifdef NEAR_CLIP",
"if( flag2 ){",
" gl_FragDepthEXT = max( 0.0, calcDepth( vec3( - ( nearClip - 0.5 ) ) ) + ( 0.0000001 / vRadius ) );",
"}else if( gl_FragDepthEXT >= 0.0 ){",
" gl_FragDepthEXT = 0.0 + ( 0.0000001 / vRadius );",
"}",
" #else",
"if( gl_FragDepthEXT >= 0.0 ){",
" gl_FragDepthEXT = 0.0 + ( 0.0000001 / vRadius );",
"}",
" #endif",
"",
" }",
"",
" // bugfix (mac only?)",
" if (gl_FragDepthEXT < 0.0)",
" discard;",
" if (gl_FragDepthEXT > 1.0)",
" discard;",
"",
" #ifdef PICKING",
"",
" gl_FragColor = vec4( vPickingColor, objectId );",
"",
" #else",
"",
" vec3 vNormal = cameraNormal;",
" vec3 vViewPosition = -cameraPos;",
"",
" vec4 diffuseColor = vec4( diffuse, opacity );",
" ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );",
" vec3 totalEmissiveLight = emissive;",
"",
" #include color_fragment",
" #include roughnessmap_fragment",
" #include metalnessmap_fragment",
"",
" // don't use include normal_fragment",
" vec3 normal = normalize( vNormal );",
"",
" #include lights_physical_fragment",
" //include lights_template",
" #include lights_fragment_begin",
" #include lights_fragment_end",
"",
" vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveLight;",
"",
" gl_FragColor = vec4( outgoingLight, diffuseColor.a );",
" //gl_FragColor = vec4( reflectedLight.directSpecular, diffuseColor.a );",
"",
" #include premultiplied_alpha_fragment",
" #include tonemapping_fragment",
" #include encodings_fragment",
" //include fog_fragment",
" #ifdef USE_FOG",
" #ifdef USE_LOGDEPTHBUF_EXT",
" float depth = gl_FragDepthEXT / gl_FragCoord.w;",
" #else",
" float depth = gl_FragCoord.z / gl_FragCoord.w;",
" #endif",
" #ifdef FOG_EXP2",
" float fogFactor = whiteCompliment( exp2( - fogDensity * fogDensity * depth * depth * LOG2 ) );",
" #else",
" float fogFactor = smoothstep( fogNear, fogFar, depth );",
" #endif",
" gl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );",
" #endif",
"",
" #endif",
"",
"}"
].join("\n");
$NGL_shaderTextHash['SphereImpostor.vert'] = ["uniform mat4 projectionMatrixInverse;",
"uniform float nearClip;",
"",
"varying float vRadius;",
"varying float vRadiusSq;",
"varying vec3 vPoint;",
"varying vec3 vPointViewPosition;",
"varying float fogDepth;",
"varying float fogNear;",
"varying float fogFar;",
"",
"attribute vec2 mapping;",
"//attribute vec3 position;",
"attribute float radius;",
"",
"#ifdef PICKING",
" #include unpack_clr",
" attribute float primitiveId;",
" varying vec3 vPickingColor;",
"#else",
" #include color_pars_vertex",
"#endif",
"",
"//include matrix_scale",
"float matrixScale( in mat4 m ){",
" vec4 r = m[ 0 ];",
" return sqrt( r[ 0 ] * r[ 0 ] + r[ 1 ] * r[ 1 ] + r[ 2 ] * r[ 2 ] );",
"}",
"",
"const mat4 D = mat4(",
" 1.0, 0.0, 0.0, 0.0,",
" 0.0, 1.0, 0.0, 0.0,",
" 0.0, 0.0, 1.0, 0.0,",
" 0.0, 0.0, 0.0, -1.0",
");",
"",
"mat4 transposeTmp( in mat4 inMatrix ) {",
" vec4 i0 = inMatrix[0];",
" vec4 i1 = inMatrix[1];",
" vec4 i2 = inMatrix[2];",
" vec4 i3 = inMatrix[3];",
"",
" mat4 outMatrix = mat4(",
" vec4(i0.x, i1.x, i2.x, i3.x),",
" vec4(i0.y, i1.y, i2.y, i3.y),",
" vec4(i0.z, i1.z, i2.z, i3.z),",
" vec4(i0.w, i1.w, i2.w, i3.w)",
" );",
" return outMatrix;",
"}",
"",
"//------------------------------------------------------------------------------",
"// Compute point size and center using the technique described in:",
"// 'GPU-Based Ray-Casting of Quadratic Surfaces'",
"// by Christian Sigg, Tim Weyrich, Mario Botsch, Markus Gross.",
"//",
"// Code based on",
"/*=========================================================================",
"",
" Program: Visualization Toolkit",
" Module: Quadrics_fs.glsl and Quadrics_vs.glsl",
"",
" Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen",
" All rights reserved.",
" See Copyright.txt or http://www.kitware.com/Copyright.htm for details.",
"",
" This software is distributed WITHOUT ANY WARRANTY; without even",
" the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR",
" PURPOSE. See the above copyright notice for more information.",
"",
" =========================================================================*/",
"",
"// .NAME Quadrics_fs.glsl and Quadrics_vs.glsl",
"// .SECTION Thanks",
"// <verbatim>",
"//",
"// This file is part of the PointSprites plugin developed and contributed by",
"//",
"// Copyright (c) CSCS - Swiss National Supercomputing Centre",
"// EDF - Electricite de France",
"//",
"// John Biddiscombe, Ugo Varetto (CSCS)",
"// Stephane Ploix (EDF)",
"//",
"// </verbatim>",
"//",
"// Contributions by Alexander Rose",
"// - ported to WebGL",
"// - adapted to work with quads",
"void ComputePointSizeAndPositionInClipCoordSphere(){",
"",
" vec2 xbc;",
" vec2 ybc;",
"",
" mat4 T = mat4(",
" radius, 0.0, 0.0, 0.0,",
" 0.0, radius, 0.0, 0.0,",
" 0.0, 0.0, radius, 0.0,",
" position.x, position.y, position.z, 1.0",
" );",
"",
" mat4 R = transposeTmp( projectionMatrix * modelViewMatrix * T );",
" float A = dot( R[ 3 ], D * R[ 3 ] );",
" float B = -2.0 * dot( R[ 0 ], D * R[ 3 ] );",
" float C = dot( R[ 0 ], D * R[ 0 ] );",
" xbc[ 0 ] = ( -B - sqrt( B * B - 4.0 * A * C ) ) / ( 2.0 * A );",
" xbc[ 1 ] = ( -B + sqrt( B * B - 4.0 * A * C ) ) / ( 2.0 * A );",
" float sx = abs( xbc[ 0 ] - xbc[ 1 ] ) * 0.5;",
"",
" A = dot( R[ 3 ], D * R[ 3 ] );",
" B = -2.0 * dot( R[ 1 ], D * R[ 3 ] );",
" C = dot( R[ 1 ], D * R[ 1 ] );",
" ybc[ 0 ] = ( -B - sqrt( B * B - 4.0 * A * C ) ) / ( 2.0 * A );",
" ybc[ 1 ] = ( -B + sqrt( B * B - 4.0 * A * C ) ) / ( 2.0 * A );",
" float sy = abs( ybc[ 0 ] - ybc[ 1 ] ) * 0.5;",
"",
" gl_Position.xy = vec2( 0.5 * ( xbc.x + xbc.y ), 0.5 * ( ybc.x + ybc.y ) );",
" gl_Position.xy -= mapping * vec2( sx, sy );",
" gl_Position.xy *= gl_Position.w;",
"",
"}",
"",
"void main(void){",
"",
" #ifdef PICKING",
" vPickingColor = unpackColor( primitiveId );",
" #else",
" #include color_vertex",
" #endif",
"",
" vRadius = radius * matrixScale( modelViewMatrix );",
"",
" vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );",
" // avoid clipping, added again in fragment shader",
" mvPosition.z -= vRadius;",
"",
" gl_Position = projectionMatrix * vec4( mvPosition.xyz, 1.0 );",
" ComputePointSizeAndPositionInClipCoordSphere();",
"",
"",
" vRadiusSq = vRadius * vRadius;",
" vec4 vPoint4 = projectionMatrixInverse * gl_Position;",
" vPoint = vPoint4.xyz / vPoint4.w;",
" vPointViewPosition = -mvPosition.xyz / mvPosition.w;",
"",
"}"
].join("\n");
$NGL_shaderTextHash['CylinderImpostor.frag'] = ["#define STANDARD",
"#define IMPOSTOR",
"",
"// Open-Source PyMOL is Copyright (C) Schrodinger, LLC.",
"//",
"// All Rights Reserved",
"//",
"// Permission to use, copy, modify, distribute, and distribute modified",
"// versions of this software and its built-in documentation for any",
"// purpose and without fee is hereby granted, provided that the above",
"// copyright notice appears in all copies and that both the copyright",
"// notice and this permission notice appear in supporting documentation,",
"// and that the name of Schrodinger, LLC not be used in advertising or",
"// publicity pertaining to distribution of the software without specific,",
"// written prior permission.",
"//",
"// SCHRODINGER, LLC DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,",
"// INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN",
"// NO EVENT SHALL SCHRODINGER, LLC BE LIABLE FOR ANY SPECIAL, INDIRECT OR",
"// CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS",
"// OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE",
"// OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE",
"// USE OR PERFORMANCE OF THIS SOFTWARE.",
"",
"// Contributions by Alexander Rose",
"// - ported to WebGL",
"// - dual color",
"// - pk color",
"// - custom clipping",
"// - three.js lighting",
"",
"uniform vec3 diffuse;",
"uniform vec3 emissive;",
"uniform float roughness;",
"uniform float metalness;",
"uniform float opacity;",
"uniform float nearClip;",
"uniform mat4 projectionMatrix;",
"uniform float ortho;",
"",
"varying vec3 axis;",
"varying vec4 base_radius;",
"varying vec4 end_b;",
"varying vec3 U;",
"varying vec3 V;",
"varying vec4 w;",
"",
"#ifdef PICKING",
" uniform float objectId;",
" varying vec3 vPickingColor;",
"#else",
" varying vec3 vColor1;",
" varying vec3 vColor2;",
" #include common",
" #include fog_pars_fragment",
" #include bsdfs",
" #include lights_pars_begin",
" #include lights_physical_pars_fragment",
"#endif",
"",
"bool interior = false;",
"",
"float distSq3( vec3 v3a, vec3 v3b ){",
" return (",
" ( v3a.x - v3b.x ) * ( v3a.x - v3b.x ) +",
" ( v3a.y - v3b.y ) * ( v3a.y - v3b.y ) +",
" ( v3a.z - v3b.z ) * ( v3a.z - v3b.z )",
" );",
"}",
"",
"// Calculate depth based on the given camera position.",
"float calcDepth( in vec3 cameraPos ){",
" vec2 clipZW = cameraPos.z * projectionMatrix[2].zw + projectionMatrix[3].zw;",
" return 0.5 + 0.5 * clipZW.x / clipZW.y;",
"}",
"",
"float calcClip( vec3 cameraPos ){",
" return dot( vec4( cameraPos, 1.0 ), vec4( 0.0, 0.0, 1.0, nearClip - 0.5 ) );",
"}",
"",
"void main(){",
"",
" vec3 point = w.xyz / w.w;",
"",
" // unpacking",
" vec3 base = base_radius.xyz;",
" float vRadius = base_radius.w;",
" vec3 end = end_b.xyz;",
" float b = end_b.w;",
"",
" vec3 end_cyl = end;",
" vec3 surface_point = point;",
"",
" vec3 ray_target = surface_point;",
" vec3 ray_origin = vec3(0.0);",
" vec3 ray_direction = mix(normalize(ray_origin - ray_target), vec3(0.0, 0.0, 1.0), ortho);",
" mat3 basis = mat3( U, V, axis );",
"",
" vec3 diff = ray_target - 0.5 * (base + end_cyl);",
" vec3 P = diff * basis;",
"",
" // angle (cos) between cylinder cylinder_axis and ray direction",
" float dz = dot( axis, ray_direction );",
"",
" float radius2 = vRadius*vRadius;",
"",
" // calculate distance to the cylinder from ray origin",
" vec3 D = vec3(dot(U, ray_direction),",
" dot(V, ray_direction),",
" dz);",
" float a0 = P.x*P.x + P.y*P.y - radius2;",
" float a1 = P.x*D.x + P.y*D.y;",
" float a2 = D.x*D.x + D.y*D.y;",
"",
" // calculate a dicriminant of the above quadratic equation",
" float d = a1*a1 - a0*a2;",
" if (d < 0.0)",
" // outside of the cylinder",
" discard;",
"",
" float dist = (-a1 + sqrt(d)) / a2;",
"",
" // point of intersection on cylinder surface",
" vec3 new_point = ray_target + dist * ray_direction;",
"",
" vec3 tmp_point = new_point - base;",
" vec3 _normal = normalize( tmp_point - axis * dot(tmp_point, axis) );",
"",
" ray_origin = mix( ray_origin, surface_point, ortho );",
"",
" // test caps",
" float front_cap_test = dot( tmp_point, axis );",
" float end_cap_test = dot((new_point - end_cyl), axis);",
"",
" // to calculate caps, simply check the angle between",
" // the point of intersection - cylinder end vector",
" // and a cap plane normal (which is the cylinder cylinder_axis)",
" // if the angle < 0, the point is outside of cylinder",
" // test front cap",
"",
" #ifndef CAP",
" vec3 new_point2 = ray_target + ( (-a1 - sqrt(d)) / a2 ) * ray_direction;",
" vec3 tmp_point2 = new_point2 - base;",
" #endif",
"",
" // flat",
" if (front_cap_test < 0.0)",
" {",
" // ray-plane intersection",
" float dNV = dot(-axis, ray_direction);",
" if (dNV < 0.0)",
" discard;",
" float near = dot(-axis, (base)) / dNV;",
" vec3 front_point = ray_direction * near + ray_origin;",
" // within the cap radius?",
" if (dot(front_point - base, front_point-base) > radius2)",
" discard;",
"",
" #ifdef CAP",
" new_point = front_point;",
" _normal = axis;",
" #else",
" new_point = ray_target + ( (-a1 - sqrt(d)) / a2 ) * ray_direction;",
" dNV = dot(-axis, ray_direction);",
" near = dot(axis, end_cyl) / dNV;",
" new_point2 = ray_direction * near + ray_origin;",
" if (dot(new_point2 - end_cyl, new_point2-base) < radius2)",
" discard;",
" interior = true;",
" #endif",
" }",
"",
" // test end cap",
"",
"",
" // flat",
" if( end_cap_test > 0.0 )",
" {",
" // ray-plane intersection",
" float dNV = dot(axis, ray_direction);",
" if (dNV < 0.0)",
" discard;",
" float near = dot(axis, end_cyl) / dNV;",
" vec3 end_point = ray_direction * near + ray_origin;",
" // within the cap radius?",
" if( dot(end_point - end_cyl, end_point-base) > radius2 )",
" discard;",
"",
" #ifdef CAP",
" new_point = end_point;",
" _normal = axis;",
" #else",
" new_point = ray_target + ( (-a1 - sqrt(d)) / a2 ) * ray_direction;",
" dNV = dot(-axis, ray_direction);",
" near = dot(-axis, (base)) / dNV;",
" new_point2 = ray_direction * near + ray_origin;",
" if (dot(new_point2 - base, new_point2-base) < radius2)",
" discard;",
" interior = true;",
" #endif",
" }",
"",
" gl_FragDepthEXT = calcDepth( new_point );",
"",
" #ifdef NEAR_CLIP",
" if( calcClip( new_point ) > 0.0 ){",
" dist = (-a1 - sqrt(d)) / a2;",
" new_point = ray_target + dist * ray_direction;",
" if( calcClip( new_point ) > 0.0 )",
" discard;",
" interior = true;",
" gl_FragDepthEXT = calcDepth( new_point );",
" if( gl_FragDepthEXT >= 0.0 ){",
" gl_FragDepthEXT = max( 0.0, calcDepth( vec3( - ( nearClip - 0.5 ) ) ) + ( 0.0000001 / vRadius ) );",
" }",
" }else if( gl_FragDepthEXT <= 0.0 ){",
" dist = (-a1 - sqrt(d)) / a2;",
" new_point = ray_target + dist * ray_direction;",
" interior = true;",
" gl_FragDepthEXT = calcDepth( new_point );",
" if( gl_FragDepthEXT >= 0.0 ){",
" gl_FragDepthEXT = 0.0 + ( 0.0000001 / vRadius );",
" }",
" }",
" #else",
" if( gl_FragDepthEXT <= 0.0 ){",
" dist = (-a1 - sqrt(d)) / a2;",
" new_point = ray_target + dist * ray_direction;",
" interior = true;",
" gl_FragDepthEXT = calcDepth( new_point );",
" if( gl_FragDepthEXT >= 0.0 ){",
" gl_FragDepthEXT = 0.0 + ( 0.0000001 / vRadius );",
" }",
" }",
" #endif",
"",
" // this is a workaround necessary for Mac",
" // otherwise the modified fragment won't clip properly",
" if (gl_FragDepthEXT < 0.0)",
" discard;",
" if (gl_FragDepthEXT > 1.0)",
" discard;",
"",
" #ifdef PICKING",
"",
" gl_FragColor = vec4( vPickingColor, objectId );",
"",
" #else",
"",
" vec3 vViewPosition = -new_point;",
" vec3 vNormal = _normal;",
" vec3 vColor;",
"",
" if( distSq3( new_point, end_cyl ) < distSq3( new_point, base ) ){",
" if( b < 0.0 ){",
" vColor = vColor1;",
" }else{",
" vColor = vColor2;",
" }",
" }else{",
" if( b > 0.0 ){",
" vColor = vColor1;",
" }else{",
" vColor = vColor2;",
" }",
" }",
"",
" vec4 diffuseColor = vec4( diffuse, opacity );",
" ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );",
" vec3 totalEmissiveLight = emissive;",
"",
" #include color_fragment",
" //ifdef USE_COLOR",
" //diffuseColor.r *= vColor[0];",
" //diffuseColor.g *= vColor[1];",
" //diffuseColor.b *= vColor[2];",
" //endif",
" #include roughnessmap_fragment",
" #include metalnessmap_fragment",
"",
" // don't use include normal_fragment",
" vec3 normal = normalize( vNormal );",
"",
" #include lights_physical_fragment",
" //include lights_template",
" #include lights_fragment_begin",
" #include lights_fragment_end",
"",
" vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveLight;",
"",
" gl_FragColor = vec4( outgoingLight, diffuseColor.a );",
" //gl_FragColor = vec4( reflectedLight.directSpecular, diffuseColor.a );",
"",
" #include premultiplied_alpha_fragment",
" #include tonemapping_fragment",
" #include encodings_fragment",
" //include fog_fragment",
" #ifdef USE_FOG",
" #ifdef USE_LOGDEPTHBUF_EXT",
" float depth = gl_FragDepthEXT / gl_FragCoord.w;",
" #else",
" float depth = gl_FragCoord.z / gl_FragCoord.w;",
" #endif",
" #ifdef FOG_EXP2",
" float fogFactor = whiteCompliment( exp2( - fogDensity * fogDensity * depth * depth * LOG2 ) );",
" #else",
" float fogFactor = smoothstep( fogNear, fogFar, depth );",
" #endif",
" gl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );",
" #endif",
"",
" #endif",
"",
"}"
].join("\n");
$NGL_shaderTextHash['CylinderImpostor.vert'] = ["// Open-Source PyMOL is Copyright (C) Schrodinger, LLC.",
"//",
"// All Rights Reserved",
"//",
"// Permission to use, copy, modify, distribute, and distribute modified",
"// versions of this software and its built-in documentation for any",
"// purpose and without fee is hereby granted, provided that the above",
"// copyright notice appears in all copies and that both the copyright",
"// notice and this permission notice appear in supporting documentation,",
"// and that the name of Schrodinger, LLC not be used in advertising or",
"// publicity pertaining to distribution of the software without specific,",
"// written prior permission.",
"//",
"// SCHRODINGER, LLC DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,",
"// INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN",
"// NO EVENT SHALL SCHRODINGER, LLC BE LIABLE FOR ANY SPECIAL, INDIRECT OR",
"// CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS",
"// OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE",
"// OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE",
"// USE OR PERFORMANCE OF THIS SOFTWARE.",
"",
"// Contributions by Alexander Rose",
"// - ported to WebGL",
"// - dual color",
"// - pk color",
"// - shift",
"",
"attribute vec3 mapping;",
"attribute vec3 position1;",
"attribute vec3 position2;",
"attribute float radius;",
"",
"varying vec3 axis;",
"varying vec4 base_radius;",
"varying vec4 end_b;",
"varying vec3 U;",
"varying vec3 V;",
"varying vec4 w;",
"varying float fogDepth;",
"varying float fogNear;",
"varying float fogFar;",
"",
"#ifdef PICKING",
" #include unpack_clr",
" attribute float primitiveId;",
" varying vec3 vPickingColor;",
"#else",
" //attribute vec3 color;",
" attribute vec3 color2;",
" varying vec3 vColor1;",
" varying vec3 vColor2;",
"#endif",
"",
"uniform mat4 modelViewMatrixInverse;",
"uniform float ortho;",
"",
"//include matrix_scale",
"float matrixScale( in mat4 m ){",
" vec4 r = m[ 0 ];",
" return sqrt( r[ 0 ] * r[ 0 ] + r[ 1 ] * r[ 1 ] + r[ 2 ] * r[ 2 ] );",
"}",
"",
"void main(){",
"",
" #ifdef PICKING",
" vPickingColor = unpackColor( primitiveId );",
" #else",
" vColor1 = color;",
" vColor2 = color2;",
" #endif",
"",
" // vRadius = radius;",
" base_radius.w = radius * matrixScale( modelViewMatrix );",
"",
" //vec3 center = position;",
" vec3 center = ( position2 + position1 ) / 2.0;",
" vec3 dir = normalize( position2 - position1 );",
" float ext = length( position2 - position1 ) / 2.0;",
"",
" // using cameraPosition fails on some machines, not sure why",
" // vec3 cam_dir = normalize( cameraPosition - mix( center, vec3( 0.0 ), ortho ) );",
" vec3 cam_dir;",
" if( ortho == 0.0 ){",
" cam_dir = ( modelViewMatrixInverse * vec4( 0, 0, 0, 1 ) ).xyz - center;",
" }else{",
" cam_dir = ( modelViewMatrixInverse * vec4( 0, 0, 1, 0 ) ).xyz;",
" }",
" cam_dir = normalize( cam_dir );",
"",
" vec3 ldir;",
"",
" float b = dot( cam_dir, dir );",
" end_b.w = b;",
" // direction vector looks away, so flip",
" if( b < 0.0 )",
" ldir = -ext * dir;",
" // direction vector already looks in my direction",
" else",
" ldir = ext * dir;",
"",
" vec3 left = normalize( cross( cam_dir, ldir ) );",
" left = radius * left;",
" vec3 up = radius * normalize( cross( left, ldir ) );",
"",
" // transform to modelview coordinates",
" axis = normalize( normalMatrix * ldir );",
" U = normalize( normalMatrix * up );",
" V = normalize( normalMatrix * left );",
"",
" vec4 base4 = modelViewMatrix * vec4( center - ldir, 1.0 );",
" base_radius.xyz = base4.xyz / base4.w;",
"",
" vec4 top_position = modelViewMatrix * vec4( center + ldir, 1.0 );",
" vec4 end4 = top_position;",
" end_b.xyz = end4.xyz / end4.w;",
"",
" w = modelViewMatrix * vec4(",
" center + mapping.x*ldir + mapping.y*left + mapping.z*up, 1.0",
" );",
"",
" gl_Position = projectionMatrix * w;",
"",
" // avoid clipping (1.0 seems to induce flickering with some drivers)",
" gl_Position.z = 0.99;",
"",
"}"
].join("\n");
$NGL_shaderTextHash['SphereInstancing.frag'] = $NGL_shaderTextHash['SphereImpostor.frag'];
$NGL_shaderTextHash['SphereInstancing.vert'] = ["uniform mat4 projectionMatrixInverse;",
"uniform float nearClip;",
"",
"varying float vRadius;",
"varying float vRadiusSq;",
"varying vec3 vPoint;",
"varying vec3 vPointViewPosition;",
"varying float fogDepth;",
"varying float fogNear;",
"varying float fogFar;",
"",
"attribute vec2 mapping;",
"//attribute vec3 position;",
"attribute float radius;",
"attribute vec4 matrix1;",
"attribute vec4 matrix2;",
"attribute vec4 matrix3;",
"attribute vec4 matrix4;",
"",
"#ifdef PICKING",
" #include unpack_clr",
" attribute float primitiveId;",
" varying vec3 vPickingColor;",
"#else",
" #include color_pars_vertex",
"#endif",
"",
"//include matrix_scale",
"float matrixScale( in mat4 m ){",
" vec4 r = m[ 0 ];",
" return sqrt( r[ 0 ] * r[ 0 ] + r[ 1 ] * r[ 1 ] + r[ 2 ] * r[ 2 ] );",
"}",
"",
"const mat4 D = mat4(",
" 1.0, 0.0, 0.0, 0.0,",
" 0.0, 1.0, 0.0, 0.0,",
" 0.0, 0.0, 1.0, 0.0,",
" 0.0, 0.0, 0.0, -1.0",
");",
"",
"mat4 transposeTmp( in mat4 inMatrix ) {",
" vec4 i0 = inMatrix[0];",
" vec4 i1 = inMatrix[1];",
" vec4 i2 = inMatrix[2];",
" vec4 i3 = inMatrix[3];",
"",
" mat4 outMatrix = mat4(",
" vec4(i0.x, i1.x, i2.x, i3.x),",
" vec4(i0.y, i1.y, i2.y, i3.y),",
" vec4(i0.z, i1.z, i2.z, i3.z),",
" vec4(i0.w, i1.w, i2.w, i3.w)",
" );",
" return outMatrix;",
"}",
"",
"//------------------------------------------------------------------------------",
"// Compute point size and center using the technique described in:",
"// 'GPU-Based Ray-Casting of Quadratic Surfaces'",
"// by Christian Sigg, Tim Weyrich, Mario Botsch, Markus Gross.",
"//",
"// Code based on",
"/*=========================================================================",
"",
" Program: Visualization Toolkit",
" Module: Quadrics_fs.glsl and Quadrics_vs.glsl",
"",
" Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen",
" All rights reserved.",
" See Copyright.txt or http://www.kitware.com/Copyright.htm for details.",
"",
" This software is distributed WITHOUT ANY WARRANTY; without even",
" the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR",
" PURPOSE. See the above copyright notice for more information.",
"",
" =========================================================================*/",
"",
"// .NAME Quadrics_fs.glsl and Quadrics_vs.glsl",
"// .SECTION Thanks",
"// <verbatim>",
"//",
"// This file is part of the PointSprites plugin developed and contributed by",
"//",
"// Copyright (c) CSCS - Swiss National Supercomputing Centre",
"// EDF - Electricite de France",
"//",
"// John Biddiscombe, Ugo Varetto (CSCS)",
"// Stephane Ploix (EDF)",
"//",
"// </verbatim>",
"//",
"// Contributions by Alexander Rose",
"// - ported to WebGL",
"// - adapted to work with quads",
"void ComputePointSizeAndPositionInClipCoordSphere(vec4 updatePosition){",
"",
" vec2 xbc;",
" vec2 ybc;",
"",
" mat4 T = mat4(",
" radius, 0.0, 0.0, 0.0,",
" 0.0, radius, 0.0, 0.0,",
" 0.0, 0.0, radius, 0.0,",
" updatePosition.x, updatePosition.y, updatePosition.z, 1.0",
" );",
"",
" mat4 R = transposeTmp( projectionMatrix * modelViewMatrix * T );",
" float A = dot( R[ 3 ], D * R[ 3 ] );",
" float B = -2.0 * dot( R[ 0 ], D * R[ 3 ] );",
" float C = dot( R[ 0 ], D * R[ 0 ] );",
" xbc[ 0 ] = ( -B - sqrt( B * B - 4.0 * A * C ) ) / ( 2.0 * A );",
" xbc[ 1 ] = ( -B + sqrt( B * B - 4.0 * A * C ) ) / ( 2.0 * A );",
" float sx = abs( xbc[ 0 ] - xbc[ 1 ] ) * 0.5;",
"",
" A = dot( R[ 3 ], D * R[ 3 ] );",
" B = -2.0 * dot( R[ 1 ], D * R[ 3 ] );",
" C = dot( R[ 1 ], D * R[ 1 ] );",
" ybc[ 0 ] = ( -B - sqrt( B * B - 4.0 * A * C ) ) / ( 2.0 * A );",
" ybc[ 1 ] = ( -B + sqrt( B * B - 4.0 * A * C ) ) / ( 2.0 * A );",
" float sy = abs( ybc[ 0 ] - ybc[ 1 ] ) * 0.5;",
"",
" gl_Position.xy = vec2( 0.5 * ( xbc.x + xbc.y ), 0.5 * ( ybc.x + ybc.y ) );",
" gl_Position.xy -= mapping * vec2( sx, sy );",
" gl_Position.xy *= gl_Position.w;",
"",
"}",
"",
" mat4 computeMat(vec4 v1, vec4 v2, vec4 v3, vec4 v4) {",
" return mat4(",
" v1.x, v1.y, v1.z, v1.w,",
" v2.x, v2.y, v2.z, v2.w,",
" v3.x, v3.y, v3.z, v3.w,",
" v4.x, v4.y, v4.z, v4.w",
" );",
" }",
"",
"void main(void){",
"",
" #ifdef PICKING",
" vPickingColor = unpackColor( primitiveId );",
" #else",
" #include color_vertex",
" #endif",
"",
" vRadius = radius * matrixScale( modelViewMatrix );",
"",
" mat4 matrix = computeMat(matrix1, matrix2, matrix3, matrix4);",
" vec4 updatePosition = matrix * vec4(position, 1.0);",
"",
"// vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );",
" vec4 mvPosition = modelViewMatrix * vec4( updatePosition.xyz, 1.0 );",
" // avoid clipping, added again in fragment shader",
" mvPosition.z -= vRadius;",
"",
"// gl_Position = projectionMatrix * vec4( mvPosition.xyz, 1.0 );",
" gl_Position = projectionMatrix * vec4( mvPosition.xyz, 1.0 );",
" ComputePointSizeAndPositionInClipCoordSphere(updatePosition);",
"",
"",
" vRadiusSq = vRadius * vRadius;",
" vec4 vPoint4 = projectionMatrixInverse * gl_Position;",
" vPoint = vPoint4.xyz / vPoint4.w;",
" vPointViewPosition = -mvPosition.xyz / mvPosition.w;",
"",
"}"
].join("\n");
$NGL_shaderTextHash['CylinderInstancing.frag'] = $NGL_shaderTextHash['CylinderImpostor.frag'];
$NGL_shaderTextHash['CylinderInstancing.vert'] = ["// Open-Source PyMOL is Copyright (C) Schrodinger, LLC.",
"//",
"// All Rights Reserved",
"//",
"// Permission to use, copy, modify, distribute, and distribute modified",
"// versions of this software and its built-in documentation for any",
"// purpose and without fee is hereby granted, provided that the above",
"// copyright notice appears in all copies and that both the copyright",
"// notice and this permission notice appear in supporting documentation,",
"// and that the name of Schrodinger, LLC not be used in advertising or",
"// publicity pertaining to distribution of the software without specific,",
"// written prior permission.",
"//",
"// SCHRODINGER, LLC DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,",
"// INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN",
"// NO EVENT SHALL SCHRODINGER, LLC BE LIABLE FOR ANY SPECIAL, INDIRECT OR",
"// CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS",
"// OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE",
"// OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE",
"// USE OR PERFORMANCE OF THIS SOFTWARE.",
"",
"// Contributions by Alexander Rose",
"// - ported to WebGL",
"// - dual color",
"// - pk color",
"// - shift",
"",
"attribute vec3 mapping;",
"attribute vec3 position1;",
"attribute vec3 position2;",
"attribute float radius;",
"attribute vec4 matrix1;",
"attribute vec4 matrix2;",
"attribute vec4 matrix3;",
"attribute vec4 matrix4;",
"",
"varying vec3 axis;",
"varying vec4 base_radius;",
"varying vec4 end_b;",
"varying vec3 U;",
"varying vec3 V;",
"varying vec4 w;",
"varying float fogDepth;",
"varying float fogNear;",
"varying float fogFar;",
"",
"#ifdef PICKING",
" #include unpack_clr",
" attribute float primitiveId;",
" varying vec3 vPickingColor;",
"#else",
" //attribute vec3 color;",
" attribute vec3 color2;",
" varying vec3 vColor1;",
" varying vec3 vColor2;",
"#endif",
"",
"uniform mat4 modelViewMatrixInverse;",
"uniform float ortho;",
"",
"//include matrix_scale",
"float matrixScale( in mat4 m ){",
" vec4 r = m[ 0 ];",
" return sqrt( r[ 0 ] * r[ 0 ] + r[ 1 ] * r[ 1 ] + r[ 2 ] * r[ 2 ] );",
"}",
"",
" mat4 computeMat(vec4 v1, vec4 v2, vec4 v3, vec4 v4) {",
" return mat4(",
" v1.x, v1.y, v1.z, v1.w,",
" v2.x, v2.y, v2.z, v2.w,",
" v3.x, v3.y, v3.z, v3.w,",
" v4.x, v4.y, v4.z, v4.w",
" );",
" }",
"",
"void main(){",
"",
" #ifdef PICKING",
" vPickingColor = unpackColor( primitiveId );",
" #else",
" vColor1 = color;",
" vColor2 = color2;",
" #endif",
"",
" // vRadius = radius;",
" base_radius.w = radius * matrixScale( modelViewMatrix );",
"",
" //vec3 center = ( position2 + position1 ) / 2.0;",
"",
" mat4 matrix = computeMat(matrix1, matrix2, matrix3, matrix4);",
" vec4 updatePosition1 = matrix * vec4(position1, 1.0);",
" vec4 updatePosition2 = matrix * vec4(position2, 1.0);",
" vec3 center = ( updatePosition2.xyz + updatePosition1.xyz ) / 2.0;",
"",
" //vec3 dir = normalize( position2 - position1 );",
" vec3 dir = normalize( updatePosition2.xyz - updatePosition1.xyz );",
" float ext = length( position2 - position1 ) / 2.0;",
"",
" // using cameraPosition fails on some machines, not sure why",
" // vec3 cam_dir = normalize( cameraPosition - mix( center, vec3( 0.0 ), ortho ) );",
" vec3 cam_dir;",
" if( ortho == 0.0 ){",
" cam_dir = ( modelViewMatrixInverse * vec4( 0, 0, 0, 1 ) ).xyz - center;",
" }else{",
" cam_dir = ( modelViewMatrixInverse * vec4( 0, 0, 1, 0 ) ).xyz;",
" }",
" cam_dir = normalize( cam_dir );",
"",
" vec3 ldir;",
"",
" float b = dot( cam_dir, dir );",
" end_b.w = b;",
" // direction vector looks away, so flip",
" if( b < 0.0 )",
" ldir = -ext * dir;",
" // direction vector already looks in my direction",
" else",
" ldir = ext * dir;",
"",
" vec3 left = normalize( cross( cam_dir, ldir ) );",
" left = radius * left;",
" vec3 up = radius * normalize( cross( left, ldir ) );",
"",
" // transform to modelview coordinates",
" axis = normalize( normalMatrix * ldir );",
" U = normalize( normalMatrix * up );",
" V = normalize( normalMatrix * left );",
"",
" vec4 base4 = modelViewMatrix * vec4( center - ldir, 1.0 );",
" base_radius.xyz = base4.xyz / base4.w;",
"",
" vec4 top_position = modelViewMatrix * vec4( center + ldir, 1.0 );",
" vec4 end4 = top_position;",
" end_b.xyz = end4.xyz / end4.w;",
"",
" w = modelViewMatrix * vec4(",
" center + mapping.x*ldir + mapping.y*left + mapping.z*up, 1.0",
" );",
"",
" gl_Position = projectionMatrix * w;",
"",
" // avoid clipping (1.0 seems to induce flickering with some drivers)",
" gl_Position.z = 0.99;",
"",
"}"
].join("\n");
$NGL_shaderTextHash['Instancing.frag'] = ["#define STANDARD",
"uniform vec3 diffuse;",
"uniform vec3 emissive;",
"uniform float roughness;",
"uniform float metalness;",
"uniform float opacity;",
"uniform float nearClip;",
"uniform float clipRadius;",
"uniform mat4 projectionMatrix;",
"uniform float ortho;",
"varying float bCylinder;",
"",
"#if defined( NEAR_CLIP ) || defined( RADIUS_CLIP ) || ( !defined( PICKING ) && !defined( NOLIGHT ) )",
" varying vec3 vViewPosition;",
"#endif",
"",
"#if defined( RADIUS_CLIP )",
" varying vec3 vClipCenter;",
"#endif",
"",
"#if defined( PICKING )",
" uniform float objectId;",
" varying vec3 vPickingColor;",
"#elif defined( NOLIGHT )",
" varying vec3 vColor;",
"#else",
" #ifndef FLAT_SHADED",
" varying vec3 vNormal;",
" #endif",
" #include common",
" #include color_pars_fragment",
" #include fog_pars_fragment",
" #include bsdfs",
" #include lights_pars_begin",
" #include lights_physical_pars_fragment",
"#endif",
"",
"void main(){",
" #include nearclip_fragment",
" #include radiusclip_fragment",
"",
" #if defined( PICKING )",
"",
" gl_FragColor = vec4( vPickingColor, objectId );",
"",
" #elif defined( NOLIGHT )",
"",
" gl_FragColor = vec4( vColor, opacity );",
"",
" #else",
"",
" vec4 diffuseColor = vec4( diffuse, opacity );",
" ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );",
" vec3 totalEmissiveLight = emissive;",
"",
" #include color_fragment",
" #include roughnessmap_fragment",
" #include metalnessmap_fragment",
" #include normal_flip",
" #include normal_fragment_begin",
"",
" //include dull_interior_fragment",
"",
" #include lights_physical_fragment",
" //include lights_template",
" #include lights_fragment_begin",
" #include lights_fragment_end",
"",
" vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveLight;",
"",
" #include interior_fragment",
"",
" gl_FragColor = vec4( outgoingLight, diffuseColor.a );",
"",
" #include premultiplied_alpha_fragment",
" #include tonemapping_fragment",
" #include encodings_fragment",
" #include fog_fragment",
"",
" #include opaque_back_fragment",
"",
" #endif",
"",
"}"
].join("\n");
$NGL_shaderTextHash['Instancing.vert'] = ["#define STANDARD",
"",
"uniform mat4 projectionMatrixInverse;",
"uniform float nearClip;",
"uniform vec3 clipCenter;",
"attribute vec4 matrix1;",
"attribute vec4 matrix2;",
"attribute vec4 matrix3;",
"attribute vec4 matrix4;",
"attribute float cylinder;",
"varying float bCylinder;",
"",
"#if defined( NEAR_CLIP ) || defined( RADIUS_CLIP ) || ( !defined( PICKING ) && !defined( NOLIGHT ) )",
" varying vec3 vViewPosition;",
"#endif",
"",
"#if defined( RADIUS_CLIP )",
" varying vec3 vClipCenter;",
"#endif",
"",
"#if defined( PICKING )",
" #include unpack_color",
" attribute float primitiveId;",
" varying vec3 vPickingColor;",
"#elif defined( NOLIGHT )",
" varying vec3 vColor;",
"#else",
" #include color_pars_vertex",
" #ifndef FLAT_SHADED",
" varying vec3 vNormal;",
" #endif",
"#endif",
"",
"#include common",
"",
" mat4 computeMat(vec4 v1, vec4 v2, vec4 v3, vec4 v4) {",
" return mat4(",
" v1.x, v1.y, v1.z, v1.w,",
" v2.x, v2.y, v2.z, v2.w,",
" v3.x, v3.y, v3.z, v3.w,",
" v4.x, v4.y, v4.z, v4.w",
" );",
" }",
"",
"void main(){",
" bCylinder = cylinder;",
"",
" mat4 matrix = computeMat(matrix1, matrix2, matrix3, matrix4);",
" vec4 updatePosition = matrix * vec4(position, 1.0);",
"",
" #if defined( PICKING )",
" vPickingColor = unpackColor( primitiveId );",
" #elif defined( NOLIGHT )",
" vColor = color;",
" #else",
" #include color_vertex",
" //include beginnormal_vertex",
" //vec3 objectNormal = vec3( normal );",
" vec3 objectNormal = vec3(matrix * vec4(normal,0.0));",
" #include defaultnormal_vertex",
" // Normal computed with derivatives when FLAT_SHADED",
" #ifndef FLAT_SHADED",
" vNormal = normalize( transformedNormal );",
" #endif",
" #endif",
"",
" //include begin_vertex",
" vec3 transformed = updatePosition.xyz;",
" //include project_vertex",
" vec4 mvPosition = modelViewMatrix * vec4( transformed, 1.0 );",
" gl_Position = projectionMatrix * mvPosition;",
"",
" #if defined( NEAR_CLIP ) || defined( RADIUS_CLIP ) || ( !defined( PICKING ) && !defined( NOLIGHT ) )",
" vViewPosition = -mvPosition.xyz;",
" #endif",
"",
" #if defined( RADIUS_CLIP )",
" vClipCenter = -( modelViewMatrix * vec4( clipCenter, 1.0 ) ).xyz;",
" #endif",
"",
" #include nearclip_vertex",
"",
"}"
].join("\n");
// ; var __CIFTools = function () {
// 'use strict';
/*
* Copyright (c) 2016 - now David Sehnal, licensed under MIT License, See LICENSE file for more info.
*/
var CIFTools;
(function (CIFTools) {
CIFTools.VERSION = { number: "1.1.7", date: "Oct 30 2018" };
// })(CIFTools || (CIFTools = {}));
/*
* Copyright (c) 2016 - now David Sehnal, licensed under MIT License, See LICENSE file for more info.
*/
// var CIFTools;
// (function (CIFTools) {
var Utils;
(function (Utils) {
var ChunkedArray;
(function (ChunkedArray) {
function is(x) {
return x.creator && x.chunkSize;
}
ChunkedArray.is = is;
function add4(array, x, y, z, w) {
if (array.currentIndex >= array.chunkSize) {
array.currentIndex = 0;
array.current = array.creator(array.chunkSize);
array.parts[array.parts.length] = array.current;
}
array.current[array.currentIndex++] = x;
array.current[array.currentIndex++] = y;
array.current[array.currentIndex++] = z;
array.current[array.currentIndex++] = w;
return array.elementCount++;
}
ChunkedArray.add4 = add4;
function add3(array, x, y, z) {
if (array.currentIndex >= array.chunkSize) {
array.currentIndex = 0;
array.current = array.creator(array.chunkSize);
array.parts[array.parts.length] = array.current;
}
array.current[array.currentIndex++] = x;
array.current[array.currentIndex++] = y;
array.current[array.currentIndex++] = z;
return array.elementCount++;
}
ChunkedArray.add3 = add3;
function add2(array, x, y) {
if (array.currentIndex >= array.chunkSize) {
array.currentIndex = 0;
array.current = array.creator(array.chunkSize);
array.parts[array.parts.length] = array.current;
}
array.current[array.currentIndex++] = x;
array.current[array.currentIndex++] = y;
return array.elementCount++;
}
ChunkedArray.add2 = add2;
function add(array, x) {
if (array.currentIndex >= array.chunkSize) {
array.currentIndex = 0;
array.current = array.creator(array.chunkSize);
array.parts[array.parts.length] = array.current;
}
array.current[array.currentIndex++] = x;
return array.elementCount++;
}
ChunkedArray.add = add;
function compact(array) {
var ret = array.creator(array.elementSize * array.elementCount), offset = (array.parts.length - 1) * array.chunkSize, offsetInner = 0, part;
if (array.parts.length > 1) {
if (array.parts[0].buffer) {
for (var i = 0; i < array.parts.length - 1; i++) {
ret.set(array.parts[i], array.chunkSize * i);
}
}
else {
for (var i = 0; i < array.parts.length - 1; i++) {
offsetInner = array.chunkSize * i;
part = array.parts[i];
for (var j = 0; j < array.chunkSize; j++) {
ret[offsetInner + j] = part[j];
}
}
}
}
if (array.current.buffer && array.currentIndex >= array.chunkSize) {
ret.set(array.current, array.chunkSize * (array.parts.length - 1));
}
else {
for (var i = 0; i < array.currentIndex; i++) {
ret[offset + i] = array.current[i];
}
}
return ret;
}
ChunkedArray.compact = compact;
function forVertex3D(chunkVertexCount) {
if (chunkVertexCount === void 0) { chunkVertexCount = 262144; }
return create(function (size) { return new Float32Array(size); }, chunkVertexCount, 3);
}
ChunkedArray.forVertex3D = forVertex3D;
function forIndexBuffer(chunkIndexCount) {
if (chunkIndexCount === void 0) { chunkIndexCount = 262144; }
return create(function (size) { return new Uint32Array(size); }, chunkIndexCount, 3);
}
ChunkedArray.forIndexBuffer = forIndexBuffer;
function forTokenIndices(chunkTokenCount) {
if (chunkTokenCount === void 0) { chunkTokenCount = 131072; }
return create(function (size) { return new Int32Array(size); }, chunkTokenCount, 2);
}
ChunkedArray.forTokenIndices = forTokenIndices;
function forIndices(chunkTokenCount) {
if (chunkTokenCount === void 0) { chunkTokenCount = 131072; }
return create(function (size) { return new Int32Array(size); }, chunkTokenCount, 1);
}
ChunkedArray.forIndices = forIndices;
function forInt32(chunkSize) {
if (chunkSize === void 0) { chunkSize = 131072; }
return create(function (size) { return new Int32Array(size); }, chunkSize, 1);
}
ChunkedArray.forInt32 = forInt32;
function forFloat32(chunkSize) {
if (chunkSize === void 0) { chunkSize = 131072; }
return create(function (size) { return new Float32Array(size); }, chunkSize, 1);
}
ChunkedArray.forFloat32 = forFloat32;
function forArray(chunkSize) {
if (chunkSize === void 0) { chunkSize = 131072; }
return create(function (size) { return []; }, chunkSize, 1);
}
ChunkedArray.forArray = forArray;
function create(creator, chunkElementCount, elementSize) {
chunkElementCount = chunkElementCount | 0;
if (chunkElementCount <= 0)
chunkElementCount = 1;
var chunkSize = chunkElementCount * elementSize;
var current = creator(chunkSize);
return {
elementSize: elementSize,
chunkSize: chunkSize,
creator: creator,
current: current,
parts: [current],
currentIndex: 0,
elementCount: 0
};
}
ChunkedArray.create = create;
})(ChunkedArray = Utils.ChunkedArray || (Utils.ChunkedArray = {}));
})(Utils = CIFTools.Utils || (CIFTools.Utils = {}));
// })(CIFTools || (CIFTools = {}));
/*
* Copyright (c) 2016 - now David Sehnal, licensed under MIT License, See LICENSE file for more info.
*/
/**
* Efficient integer and float parsers.
*
* For the purposes of parsing numbers from the mmCIF data representations,
* up to 4 times faster than JS parseInt/parseFloat.
*/
// var CIFTools;
// (function (CIFTools) {
// var Utils;
(function (Utils) {
var FastNumberParsers;
(function (FastNumberParsers) {
"use strict";
function parseIntSkipTrailingWhitespace(str, start, end) {
while (start < end && str.charCodeAt(start) === 32)
start++;
return parseInt(str, start, end);
}
FastNumberParsers.parseIntSkipTrailingWhitespace = parseIntSkipTrailingWhitespace;
function parseInt(str, start, end) {
var ret = 0, neg = 1;
if (str.charCodeAt(start) === 45 /* - */) {
neg = -1;
start++;
}
for (; start < end; start++) {
var c = str.charCodeAt(start) - 48;
if (c > 9 || c < 0)
return (neg * ret) | 0;
else
ret = (10 * ret + c) | 0;
}
return neg * ret;
}
FastNumberParsers.parseInt = parseInt;
function parseScientific(main, str, start, end) {
// handle + in '1e+1' separately.
if (str.charCodeAt(start) === 43 /* + */)
start++;
return main * Math.pow(10.0, parseInt(str, start, end));
}
function parseFloatSkipTrailingWhitespace(str, start, end) {
while (start < end && str.charCodeAt(start) === 32)
start++;
return parseFloat(str, start, end);
}
FastNumberParsers.parseFloatSkipTrailingWhitespace = parseFloatSkipTrailingWhitespace;
function parseFloat(str, start, end) {
var neg = 1.0, ret = 0.0, point = 0.0, div = 1.0;
if (str.charCodeAt(start) === 45) {
neg = -1.0;
++start;
}
while (start < end) {
var c = str.charCodeAt(start) - 48;
if (c >= 0 && c < 10) {
ret = ret * 10 + c;
++start;
}
else if (c === -2) { // .
++start;
while (start < end) {
c = str.charCodeAt(start) - 48;
if (c >= 0 && c < 10) {
point = 10.0 * point + c;
div = 10.0 * div;
++start;
}
else if (c === 53 || c === 21) { // 'e'/'E'
return parseScientific(neg * (ret + point / div), str, start + 1, end);
}
else {
return neg * (ret + point / div);
}
}
return neg * (ret + point / div);
}
else if (c === 53 || c === 21) { // 'e'/'E'
return parseScientific(neg * ret, str, start + 1, end);
}
else
break;
}
return neg * ret;
}
FastNumberParsers.parseFloat = parseFloat;
})(FastNumberParsers = Utils.FastNumberParsers || (Utils.FastNumberParsers = {}));
})(Utils = CIFTools.Utils || (CIFTools.Utils = {}));
// })(CIFTools || (CIFTools = {}));
/*
* Copyright (c) 2016 - now David Sehnal, licensed under MIT License, See LICENSE file for more info.
*/
// var CIFTools;
// (function (CIFTools) {
// var Utils;
(function (Utils) {
var __paddingSpaces = [];
(function () {
var s = '';
for (var i = 0; i < 512; i++) {
__paddingSpaces[i] = s;
s = s + ' ';
}
})();
var StringWriter;
(function (StringWriter) {
function create(chunkCapacity) {
if (chunkCapacity === void 0) { chunkCapacity = 512; }
return {
chunkData: [],
chunkOffset: 0,
chunkCapacity: chunkCapacity,
data: []
};
}
StringWriter.create = create;
function asString(writer) {
if (!writer.data.length) {
if (writer.chunkData.length === writer.chunkOffset)
return writer.chunkData.join('');
return writer.chunkData.splice(0, writer.chunkOffset).join('');
}
if (writer.chunkOffset > 0) {
writer.data[writer.data.length] = writer.chunkData.splice(0, writer.chunkOffset).join('');
}
return writer.data.join('');
}
StringWriter.asString = asString;
function writeTo(writer, stream) {
finalize(writer);
for (var _i = 0, _a = writer.data; _i < _a.length; _i++) {
var s = _a[_i];
stream.writeString(s);
}
}
StringWriter.writeTo = writeTo;
function finalize(writer) {
if (writer.chunkOffset > 0) {
if (writer.chunkData.length === writer.chunkOffset)
writer.data[writer.data.length] = writer.chunkData.join('');
else
writer.data[writer.data.length] = writer.chunkData.splice(0, writer.chunkOffset).join('');
writer.chunkOffset = 0;
}
}
function newline(writer) {
write(writer, '\n');
}
StringWriter.newline = newline;
function whitespace(writer, len) {
write(writer, __paddingSpaces[len]);
}
StringWriter.whitespace = whitespace;
function write(writer, val) {
if (val === undefined || val === null) {
return;
}
if (writer.chunkOffset === writer.chunkCapacity) {
writer.data[writer.data.length] = writer.chunkData.join('');
writer.chunkOffset = 0;
}
writer.chunkData[writer.chunkOffset++] = val;
}
StringWriter.write = write;
function writeSafe(writer, val) {
if (writer.chunkOffset === writer.chunkCapacity) {
writer.data[writer.data.length] = writer.chunkData.join('');
writer.chunkOffset = 0;
}
writer.chunkData[writer.chunkOffset++] = val;
}
StringWriter.writeSafe = writeSafe;
function writePadLeft(writer, val, totalWidth) {
if (val === undefined || val === null) {
write(writer, __paddingSpaces[totalWidth]);
}
var padding = totalWidth - val.length;
if (padding > 0)
write(writer, __paddingSpaces[padding]);
write(writer, val);
}
StringWriter.writePadLeft = writePadLeft;
function writePadRight(writer, val, totalWidth) {
if (val === undefined || val === null) {
write(writer, __paddingSpaces[totalWidth]);
}
var padding = totalWidth - val.length;
write(writer, val);
if (padding > 0)
write(writer, __paddingSpaces[padding]);
}
StringWriter.writePadRight = writePadRight;
function writeInteger(writer, val) {
write(writer, '' + val);
}
StringWriter.writeInteger = writeInteger;
function writeIntegerPadLeft(writer, val, totalWidth) {
var s = '' + val;
var padding = totalWidth - s.length;
if (padding > 0)
write(writer, __paddingSpaces[padding]);
write(writer, s);
}
StringWriter.writeIntegerPadLeft = writeIntegerPadLeft;
function writeIntegerPadRight(writer, val, totalWidth) {
var s = '' + val;
var padding = totalWidth - s.length;
write(writer, s);
if (padding > 0)
write(writer, __paddingSpaces[padding]);
}
StringWriter.writeIntegerPadRight = writeIntegerPadRight;
/**
* @example writeFloat(123.2123, 100) -- 2 decim
*/
function writeFloat(writer, val, precisionMultiplier) {
write(writer, '' + Math.round(precisionMultiplier * val) / precisionMultiplier);
}
StringWriter.writeFloat = writeFloat;
function writeFloatPadLeft(writer, val, precisionMultiplier, totalWidth) {
var s = '' + Math.round(precisionMultiplier * val) / precisionMultiplier;
var padding = totalWidth - s.length;
if (padding > 0)
write(writer, __paddingSpaces[padding]);
write(writer, s);
}
StringWriter.writeFloatPadLeft = writeFloatPadLeft;
function writeFloatPadRight(writer, val, precisionMultiplier, totalWidth) {
var s = '' + Math.round(precisionMultiplier * val) / precisionMultiplier;
var padding = totalWidth - s.length;
write(writer, s);
if (padding > 0)
write(writer, __paddingSpaces[padding]);
}
StringWriter.writeFloatPadRight = writeFloatPadRight;
})(StringWriter = Utils.StringWriter || (Utils.StringWriter = {}));
})(Utils = CIFTools.Utils || (CIFTools.Utils = {}));
// })(CIFTools || (CIFTools = {}));
/*
* Copyright (c) 2016 - now David Sehnal, licensed under MIT License, See LICENSE file for more info.
*/
// var CIFTools;
// (function (CIFTools) {
// "use strict";
/**
* Represents a column that is not present.
*/
var _UndefinedColumn = /** @class */ (function () {
function _UndefinedColumn() {
this.isDefined = false;
}
_UndefinedColumn.prototype.getString = function (row) { return null; };
;
_UndefinedColumn.prototype.getInteger = function (row) { return 0; };
_UndefinedColumn.prototype.getFloat = function (row) { return 0.0; };
_UndefinedColumn.prototype.getValuePresence = function (row) { return 1 /* NotSpecified */; };
_UndefinedColumn.prototype.areValuesEqual = function (rowA, rowB) { return true; };
_UndefinedColumn.prototype.stringEquals = function (row, value) { return value === null; };
return _UndefinedColumn;
}());
CIFTools.UndefinedColumn = new _UndefinedColumn();
/**
* Helper functions for categoies.
*/
var Category;
(function (Category) {
/**
* Extracts a matrix from a category from a specified rowIndex.
*
* _category.matrix[1][1] v11
* ....
* ....
* _category.matrix[rows][cols] vRowsCols
*/
function getMatrix(category, field, rows, cols, rowIndex) {
var ret = [];
for (var i = 1; i <= rows; i++) {
var row = [];
for (var j = 1; j <= cols; j++) {
row[j - 1] = category.getColumn(field + "[" + i + "][" + j + "]").getFloat(rowIndex);
}
ret[i - 1] = row;
}
return ret;
}
Category.getMatrix = getMatrix;
/**
* Extracts a vector from a category from a specified rowIndex.
*
* _category.matrix[1][1] v11
* ....
* ....
* _category.matrix[rows][cols] vRowsCols
*/
function getVector(category, field, rows, cols, rowIndex) {
var ret = [];
for (var i = 1; i <= rows; i++) {
ret[i - 1] = category.getColumn(field + "[" + i + "]").getFloat(rowIndex);
}
return ret;
}
Category.getVector = getVector;
})(Category = CIFTools.Category || (CIFTools.Category = {}));
// })(CIFTools || (CIFTools = {}));
/*
* Copyright (c) 2016 - now David Sehnal, licensed under MIT License, See LICENSE file for more info.
*/
// var CIFTools;
// (function (CIFTools) {
// "use strict";
var ParserResult;
(function (ParserResult) {
function error(message, line) {
if (line === void 0) { line = -1; }
return new ParserError(message, line);
}
ParserResult.error = error;
function success(result, warnings) {
if (warnings === void 0) { warnings = []; }
return new ParserSuccess(result, warnings);
}
ParserResult.success = success;
})(ParserResult = CIFTools.ParserResult || (CIFTools.ParserResult = {}));
var ParserError = /** @class */ (function () {
function ParserError(message, line) {
this.message = message;
this.line = line;
this.isError = true;
}
ParserError.prototype.toString = function () {
if (this.line >= 0) {
return "[Line " + this.line + "] " + this.message;
}
return this.message;
};
return ParserError;
}());
CIFTools.ParserError = ParserError;
var ParserSuccess = /** @class */ (function () {
function ParserSuccess(result, warnings) {
this.result = result;
this.warnings = warnings;
this.isError = false;
}
return ParserSuccess;
}());
CIFTools.ParserSuccess = ParserSuccess;
// })(CIFTools || (CIFTools = {}));
/*
* Copyright (c) 2016 - now David Sehnal, licensed under MIT License, See LICENSE file for more info.
*/
/*
* Copyright (c) 2016 - now David Sehnal, licensed under MIT License, See LICENSE file for more info.
*/
/*
On data representation of molecular files
Consider an mmCIF file that stores a molecule with 100k atoms. For the sake of simplicity,
lets ignore things like symmetry or assemblies, and assume, that the file only stores the
_atom_site records. The atom site "table" in the standard mmCIF from PDB database currently
has 26 columns.
So the data looks something like this:
loop_
_atom_site.column1
....
_atom_site.column26
t1,1 .... t1,26
t100000,1 .... t100000,26
The straightforward way to represent this data in JavaScript is to have an array of objects
with properties named "column1" ..., "column26":
[{ column1: "t1,1", ..., column26: "t1,26" },
...,
{ column1: "t100000,1", ..., column26: "t100000,26" }]
So in order to represent the atoms sites, we would need 100k objects and 2.6 million strings.
Is this bad? well, sort of. It would not be so bad if this representation would be the only
thing we need to keep in memory and/or the life time of the object was short. But usually
we would need to keep the object around for the entire lifetime of the app. This alone
adds a very non-significant overhead for the garbage collector (which increases the app's
latency). What's worse is that we usually only need a fraction of this data, but this can
vary application for application. For just 100k atoms, the overhead is not "that bad", but
consider 1M atoms and suddenly we have a problem.
The following data model shows an alternative way of storing molecular file s
in memory that is very efficient, fast and introduces a very minimal overhead.
*/
// var CIFTools;
// (function (CIFTools) {
var Text;
(function (Text) {
"use strict";
var ShortStringPool;
(function (ShortStringPool) {
function create() { return Object.create(null); }
ShortStringPool.create = create;
function get(pool, str) {
if (str.length > 6)
return str;
var value = pool[str];
if (value !== void 0)
return value;
pool[str] = str;
return str;
}
ShortStringPool.get = get;
})(ShortStringPool || (ShortStringPool = {}));
/**
* Represents the input file.
*/
var File = /** @class */ (function () {
function File(data) {
/**
* Data blocks inside the file. If no data block is present, a "default" one is created.
*/
this.dataBlocks = [];
this.data = data;
}
File.prototype.toJSON = function () {
return this.dataBlocks.map(function (b) { return b.toJSON(); });
};
return File;
}());
Text.File = File;
/**
* Represents a single data block.
*/
var DataBlock = /** @class */ (function () {
function DataBlock(data, header) {
this.header = header;
this.data = data;
this.categoryList = [];
this.additionalData = {};
this.categoryMap = new Map();
}
Object.defineProperty(DataBlock.prototype, "categories", {
/**
* Categories of the block.
* block.categories._atom_site / ['_atom_site']
*/
get: function () {
return this.categoryList;
},
enumerable: true,
configurable: true
});
/**
* Gets a category by its name.
*/
DataBlock.prototype.getCategory = function (name) {
return this.categoryMap.get(name);
};
/**
* Adds a category.
*/
DataBlock.prototype.addCategory = function (category) {
this.categoryList[this.categoryList.length] = category;
this.categoryMap.set(category.name, category);
};
DataBlock.prototype.toJSON = function () {
return {
id: this.header,
categories: this.categoryList.map(function (c) { return c.toJSON(); }),
additionalData: this.additionalData
};
};
return DataBlock;
}());
Text.DataBlock = DataBlock;
/**
* Represents a single CIF category.
*/
var Category = /** @class */ (function () {
function Category(data, name, startIndex, endIndex, columns, tokens, tokenCount) {
this.name = name;
this.tokens = tokens;
this.data = data;
this.startIndex = startIndex;
this.endIndex = endIndex;
this.columnCount = columns.length;
this.rowCount = (tokenCount / columns.length) | 0;
this.columnIndices = new Map();
this.columnNameList = [];
for (var i = 0; i < columns.length; i++) {
var colName = columns[i].substr(name.length + 1);
this.columnIndices.set(colName, i);
this.columnNameList.push(colName);
}
}
Object.defineProperty(Category.prototype, "columnNames", {
/**
* The array of columns.
*/
get: function () {
return this.columnNameList;
},
enumerable: true,
configurable: true
});
/**
* Get a column object that makes accessing data easier.
* @returns undefined if the column isn't present, the Column object otherwise.
*/
Category.prototype.getColumn = function (name) {
var i = this.columnIndices.get(name);
if (i !== void 0)
return new Column(this, this.data, name, i);
return CIFTools.UndefinedColumn;
};
Category.prototype.toJSON = function () {
var rows = [], data = this.data, tokens = this.tokens;
var colNames = this.columnNameList;
var strings = ShortStringPool.create();
for (var i = 0; i < this.rowCount; i++) {
var item = {};
for (var j = 0; j < this.columnCount; j++) {
var tk = (i * this.columnCount + j) * 2;
item[colNames[j]] = ShortStringPool.get(strings, data.substring(tokens[tk], tokens[tk + 1]));
}
rows[i] = item;
}
return { name: this.name, columns: colNames, rows: rows };
};
return Category;
}());
Text.Category = Category;
var fastParseInt = CIFTools.Utils.FastNumberParsers.parseInt;
var fastParseFloat = CIFTools.Utils.FastNumberParsers.parseFloat;
/**
* Represents a single column of a CIF category.
*/
var Column = /** @class */ (function () {
function Column(category, data, name, index) {
this.data = data;
this.name = name;
this.index = index;
this.stringPool = ShortStringPool.create();
this.isDefined = true;
this.tokens = category.tokens;
this.columnCount = category.columnCount;
}
/**
* Returns the string value at given row.
*/
Column.prototype.getString = function (row) {
var i = (row * this.columnCount + this.index) * 2;
var ret = ShortStringPool.get(this.stringPool, this.data.substring(this.tokens[i], this.tokens[i + 1]));
if (ret === "." || ret === "?")
return null;
return ret;
};
/**
* Returns the integer value at given row.
*/
Column.prototype.getInteger = function (row) {
var i = (row * this.columnCount + this.index) * 2;
return fastParseInt(this.data, this.tokens[i], this.tokens[i + 1]);
};
/**
* Returns the float value at given row.
*/
Column.prototype.getFloat = function (row) {
var i = (row * this.columnCount + this.index) * 2;
return fastParseFloat(this.data, this.tokens[i], this.tokens[i + 1]);
};
/**
* Returns true if the token has the specified string value.
*/
Column.prototype.stringEquals = function (row, value) {
var aIndex = (row * this.columnCount + this.index) * 2, s = this.tokens[aIndex], len = value.length;
if (len !== this.tokens[aIndex + 1] - s)
return false;
for (var i = 0; i < len; i++) {
if (this.data.charCodeAt(i + s) !== value.charCodeAt(i))
return false;
}
return true;
};
/**
* Determines if values at the given rows are equal.
*/
Column.prototype.areValuesEqual = function (rowA, rowB) {
var aIndex = (rowA * this.columnCount + this.index) * 2, bIndex = (rowB * this.columnCount + this.index) * 2;
var aS = this.tokens[aIndex], bS = this.tokens[bIndex], len = this.tokens[aIndex + 1] - aS;
if (len !== this.tokens[bIndex + 1] - bS)
return false;
for (var i = 0; i < len; i++) {
if (this.data.charCodeAt(i + aS) !== this.data.charCodeAt(i + bS)) {
return false;
}
}
return true;
};
/**
* Returns true if the value is not defined (. or ? token).
*/
Column.prototype.getValuePresence = function (row) {
var index = row * this.columnCount + this.index;
var s = this.tokens[2 * index];
if (this.tokens[2 * index + 1] - s !== 1)
return 0 /* Present */;
var v = this.data.charCodeAt(s);
if (v === 46 /* . */)
return 1 /* NotSpecified */;
if (v === 63 /* ? */)
return 2 /* Unknown */;
return 0 /* Present */;
};
return Column;
}());
Text.Column = Column;
})(Text = CIFTools.Text || (CIFTools.Text = {}));
// })(CIFTools || (CIFTools = {}));
/*
* Copyright (c) 2016 - now David Sehnal, licensed under MIT License, See LICENSE file for more info.
*/
// var CIFTools;
// (function (CIFTools) {
// var Text;
(function (Text) {
"use strict";
var TokenIndexBuilder;
(function (TokenIndexBuilder) {
function resize(builder) {
// scale the size using golden ratio, because why not.
var newBuffer = new Int32Array((1.61 * builder.tokens.length) | 0);
newBuffer.set(builder.tokens);
builder.tokens = newBuffer;
builder.tokensLenMinus2 = (newBuffer.length - 2) | 0;
}
function addToken(builder, start, end) {
if (builder.count >= builder.tokensLenMinus2) {
resize(builder);
}
builder.tokens[builder.count++] = start;
builder.tokens[builder.count++] = end;
}
TokenIndexBuilder.addToken = addToken;
function create(size) {
return {
tokensLenMinus2: (size - 2) | 0,
count: 0,
tokens: new Int32Array(size)
};
}
TokenIndexBuilder.create = create;
})(TokenIndexBuilder || (TokenIndexBuilder = {}));
/**
* Eat everything until a whitespace/newline occurs.
*/
function eatValue(state) {
while (state.position < state.length) {
switch (state.data.charCodeAt(state.position)) {
case 9: // \t
case 10: // \n
case 13: // \r
case 32: // ' '
state.currentTokenEnd = state.position;
return;
default:
++state.position;
break;
}
}
state.currentTokenEnd = state.position;
}
/**
* Eats an escaped values. Handles the "degenerate" cases as well.
*
* "Degenerate" cases:
* - 'xx'x' => xx'x
* - 'xxxNEWLINE => 'xxx
*
*/
function eatEscaped(state, esc) {
var next, c;
++state.position;
while (state.position < state.length) {
c = state.data.charCodeAt(state.position);
if (c === esc) {
next = state.data.charCodeAt(state.position + 1);
switch (next) {
case 9: // \t
case 10: // \n
case 13: // \r
case 32: // ' '
// get rid of the quotes.
state.currentTokenStart++;
state.currentTokenEnd = state.position;
state.isEscaped = true;
++state.position;
return;
default:
if (next === void 0) { // = "end of stream"
// get rid of the quotes.
state.currentTokenStart++;
state.currentTokenEnd = state.position;
state.isEscaped = true;
++state.position;
return;
}
++state.position;
break;
}
}
else {
// handle 'xxxNEWLINE => 'xxx
if (c === 10 || c === 13) {
state.currentTokenEnd = state.position;
return;
}
++state.position;
}
}
state.currentTokenEnd = state.position;
}
/**
* Eats a multiline token of the form NL;....NL;
*/
function eatMultiline(state) {
var prev = 59, pos = state.position + 1, c;
while (pos < state.length) {
c = state.data.charCodeAt(pos);
if (c === 59 && (prev === 10 || prev === 13)) { // ;, \n \r
state.position = pos + 1;
// get rid of the ;
state.currentTokenStart++;
// remove trailing newlines
pos--;
c = state.data.charCodeAt(pos);
while (c === 10 || c === 13) {
pos--;
c = state.data.charCodeAt(pos);
}
state.currentTokenEnd = pos + 1;
state.isEscaped = true;
return;
}
else {
// handle line numbers
if (c === 13) { // \r
state.currentLineNumber++;
}
else if (c === 10 && prev !== 13) { // \r\n
state.currentLineNumber++;
}
prev = c;
++pos;
}
}
state.position = pos;
return prev;
}
/**
* Skips until \n or \r occurs -- therefore the newlines get handled by the "skipWhitespace" function.
*/
function skipCommentLine(state) {
while (state.position < state.length) {
var c = state.data.charCodeAt(state.position);
if (c === 10 || c === 13) {
return;
}
++state.position;
}
}
/**
* Skips all the whitespace - space, tab, newline, CR
* Handles incrementing line count.
*/
function skipWhitespace(state) {
var prev = 10;
while (state.position < state.length) {
var c = state.data.charCodeAt(state.position);
switch (c) {
case 9: // '\t'
case 32: // ' '
prev = c;
++state.position;
break;
case 10: // \n
// handle \r\n
if (prev !== 13) {
++state.currentLineNumber;
}
prev = c;
++state.position;
break;
case 13: // \r
prev = c;
++state.position;
++state.currentLineNumber;
break;
default:
return prev;
}
}
return prev;
}
function isData(state) {
// here we already assume the 5th char is _ and that the length >= 5
// d/D
var c = state.data.charCodeAt(state.currentTokenStart);
if (c !== 68 && c !== 100)
return false;
// a/A
c = state.data.charCodeAt(state.currentTokenStart + 1);
if (c !== 65 && c !== 97)
return false;
// t/t
c = state.data.charCodeAt(state.currentTokenStart + 2);
if (c !== 84 && c !== 116)
return false;
// a/A
c = state.data.charCodeAt(state.currentTokenStart + 3);
if (c !== 65 && c !== 97)
return false;
return true;
}
function isSave(state) {
// here we already assume the 5th char is _ and that the length >= 5
// s/S
var c = state.data.charCodeAt(state.currentTokenStart);
if (c !== 83 && c !== 115)
return false;
// a/A
c = state.data.charCodeAt(state.currentTokenStart + 1);
if (c !== 65 && c !== 97)
return false;
// v/V
c = state.data.charCodeAt(state.currentTokenStart + 2);
if (c !== 86 && c !== 118)
return false;
// e/E
c = state.data.charCodeAt(state.currentTokenStart + 3);
if (c !== 69 && c !== 101)
return false;
return true;
}
function isLoop(state) {
// here we already assume the 5th char is _ and that the length >= 5
if (state.currentTokenEnd - state.currentTokenStart !== 5)
return false;
// l/L
var c = state.data.charCodeAt(state.currentTokenStart);
if (c !== 76 && c !== 108)
return false;
// o/O
c = state.data.charCodeAt(state.currentTokenStart + 1);
if (c !== 79 && c !== 111)
return false;
// o/O
c = state.data.charCodeAt(state.currentTokenStart + 2);
if (c !== 79 && c !== 111)
return false;
// p/P
c = state.data.charCodeAt(state.currentTokenStart + 3);
if (c !== 80 && c !== 112)
return false;
return true;
}
/**
* Checks if the current token shares the namespace with string at <start,end).
*/
function isNamespace(state, start, end) {
var i, nsLen = end - start, offset = state.currentTokenStart - start, tokenLen = state.currentTokenEnd - state.currentTokenStart;
if (tokenLen < nsLen)
return false;
for (i = start; i < end; ++i) {
if (state.data.charCodeAt(i) !== state.data.charCodeAt(i + offset))
return false;
}
if (nsLen === tokenLen)
return true;
if (state.data.charCodeAt(i + offset) === 46) { // .
return true;
}
return false;
}
/**
* Returns the index of '.' in the current token. If no '.' is present, returns currentTokenEnd.
*/
function getNamespaceEnd(state) {
var i;
for (i = state.currentTokenStart; i < state.currentTokenEnd; ++i) {
if (state.data.charCodeAt(i) === 46)
return i;
}
return i;
}
/**
* Get the namespace string. endIndex is obtained by the getNamespaceEnd() function.
*/
function getNamespace(state, endIndex) {
return state.data.substring(state.currentTokenStart, endIndex);
}
/**
* String representation of the current token.
*/
function getTokenString(state) {
return state.data.substring(state.currentTokenStart, state.currentTokenEnd);
}
/**
* Move to the next token.
*/
function moveNextInternal(state) {
var prev = skipWhitespace(state);
if (state.position >= state.length) {
state.currentTokenType = 6 /* End */;
return;
}
state.currentTokenStart = state.position;
state.currentTokenEnd = state.position;
state.isEscaped = false;
var c = state.data.charCodeAt(state.position);
switch (c) {
case 35: // #, comment
skipCommentLine(state);
state.currentTokenType = 5 /* Comment */;
break;
case 34: // ", escaped value
case 39: // ', escaped value
eatEscaped(state, c);
state.currentTokenType = 3 /* Value */;
break;
case 59: // ;, possible multiline value
// multiline value must start at the beginning of the line.
if (prev === 10 || prev === 13) { // /n or /r
eatMultiline(state);
}
else {
eatValue(state);
}
state.currentTokenType = 3 /* Value */;
break;
default:
eatValue(state);
// escaped is always Value
if (state.isEscaped) {
state.currentTokenType = 3 /* Value */;
// _ always means column name
}
else if (state.data.charCodeAt(state.currentTokenStart) === 95) { // _
state.currentTokenType = 4 /* ColumnName */;
// 5th char needs to be _ for data_ or loop_
}
else if (state.currentTokenEnd - state.currentTokenStart >= 5 && state.data.charCodeAt(state.currentTokenStart + 4) === 95) {
if (isData(state))
state.currentTokenType = 0 /* Data */;
else if (isSave(state))
state.currentTokenType = 1 /* Save */;
else if (isLoop(state))
state.currentTokenType = 2 /* Loop */;
else
state.currentTokenType = 3 /* Value */;
// all other tests failed, we are at Value token.
}
else {
state.currentTokenType = 3 /* Value */;
}
break;
}
}
/**
* Moves to the next non-comment token.
*/
function moveNext(state) {
moveNextInternal(state);
while (state.currentTokenType === 5 /* Comment */)
moveNextInternal(state);
}
function createTokenizer(data) {
return {
data: data,
length: data.length,
position: 0,
currentTokenStart: 0,
currentTokenEnd: 0,
currentTokenType: 6 /* End */,
currentLineNumber: 1,
isEscaped: false
};
}
/**
* Reads a category containing a single row.
*/
function handleSingle(tokenizer, block) {
var nsStart = tokenizer.currentTokenStart, nsEnd = getNamespaceEnd(tokenizer), name = getNamespace(tokenizer, nsEnd), column, columns = [], tokens = TokenIndexBuilder.create(512), tokenCount = 0, readingNames = true;
while (readingNames) {
if (tokenizer.currentTokenType !== 4 /* ColumnName */ || !isNamespace(tokenizer, nsStart, nsEnd)) {
readingNames = false;
break;
}
column = getTokenString(tokenizer);
moveNext(tokenizer);
if (tokenizer.currentTokenType !== 3 /* Value */) {
return {
hasError: true,
errorLine: tokenizer.currentLineNumber,
errorMessage: "Expected value."
};
}
columns[columns.length] = column;
TokenIndexBuilder.addToken(tokens, tokenizer.currentTokenStart, tokenizer.currentTokenEnd);
tokenCount++;
moveNext(tokenizer);
}
block.addCategory(new Text.Category(block.data, name, nsStart, tokenizer.currentTokenStart, columns, tokens.tokens, tokenCount));
return {
hasError: false,
errorLine: 0,
errorMessage: ""
};
}
/**
* Reads a loop.
*/
function handleLoop(tokenizer, block) {
var start = tokenizer.currentTokenStart, loopLine = tokenizer.currentLineNumber;
moveNext(tokenizer);
var name = getNamespace(tokenizer, getNamespaceEnd(tokenizer)), columns = [], tokens = TokenIndexBuilder.create(name === "_atom_site" ? (block.data.length / 1.85) | 0 : 1024), tokenCount = 0;
while (tokenizer.currentTokenType === 4 /* ColumnName */) {
columns[columns.length] = getTokenString(tokenizer);
moveNext(tokenizer);
}
while (tokenizer.currentTokenType === 3 /* Value */) {
TokenIndexBuilder.addToken(tokens, tokenizer.currentTokenStart, tokenizer.currentTokenEnd);
tokenCount++;
moveNext(tokenizer);
}
if (tokenCount % columns.length !== 0) {
return {
hasError: true,
errorLine: tokenizer.currentLineNumber,
errorMessage: "The number of values for loop starting at line " + loopLine + " is not a multiple of the number of columns."
};
}
block.addCategory(new Text.Category(block.data, name, start, tokenizer.currentTokenStart, columns, tokens.tokens, tokenCount));
return {
hasError: false,
errorLine: 0,
errorMessage: ""
};
}
/**
* Creates an error result.
*/
function error(line, message) {
return CIFTools.ParserResult.error(message, line);
}
/**
* Creates a data result.
*/
function result(data) {
return CIFTools.ParserResult.success(data);
}
/**
* Parses an mmCIF file.
*
* @returns CifParserResult wrapper of the result.
*/
function parseInternal(data) {
var tokenizer = createTokenizer(data), cat, id, file = new Text.File(data), block = new Text.DataBlock(data, "default"), saveFrame = new Text.DataBlock(data, "empty"), inSaveFrame = false, blockSaveFrames;
moveNext(tokenizer);
while (tokenizer.currentTokenType !== 6 /* End */) {
var token = tokenizer.currentTokenType;
// Data block
if (token === 0 /* Data */) {
if (inSaveFrame) {
return error(tokenizer.currentLineNumber, "Unexpected data block inside a save frame.");
}
if (block.categories.length > 0) {
file.dataBlocks.push(block);
}
block = new Text.DataBlock(data, data.substring(tokenizer.currentTokenStart + 5, tokenizer.currentTokenEnd));
moveNext(tokenizer);
// Save frame
}
else if (token === 1 /* Save */) {
id = data.substring(tokenizer.currentTokenStart + 5, tokenizer.currentTokenEnd);
if (id.length === 0) {
if (saveFrame.categories.length > 0) {
blockSaveFrames = block.additionalData["saveFrames"];
if (!blockSaveFrames) {
blockSaveFrames = [];
block.additionalData["saveFrames"] = blockSaveFrames;
}
blockSaveFrames[blockSaveFrames.length] = saveFrame;
}
inSaveFrame = false;
}
else {
if (inSaveFrame) {
return error(tokenizer.currentLineNumber, "Save frames cannot be nested.");
}
inSaveFrame = true;
saveFrame = new Text.DataBlock(data, id);
}
moveNext(tokenizer);
// Loop
}
else if (token === 2 /* Loop */) {
cat = handleLoop(tokenizer, inSaveFrame ? saveFrame : block);
if (cat.hasError) {
return error(cat.errorLine, cat.errorMessage);
}
// Single row
}
else if (token === 4 /* ColumnName */) {
cat = handleSingle(tokenizer, inSaveFrame ? saveFrame : block);
if (cat.hasError) {
return error(cat.errorLine, cat.errorMessage);
}
// Out of options
}
else {
return error(tokenizer.currentLineNumber, "Unexpected token. Expected data_, loop_, or data name.");
}
}
// Check if the latest save frame was closed.
if (inSaveFrame) {
return error(tokenizer.currentLineNumber, "Unfinished save frame (`" + saveFrame.header + "`).");
}
if (block.categories.length > 0) {
file.dataBlocks.push(block);
}
return result(file);
}
function parse(data) {
return parseInternal(data);
}
Text.parse = parse;
})(Text = CIFTools.Text || (CIFTools.Text = {}));
// })(CIFTools || (CIFTools = {}));
/*
* Copyright (c) 2016 - now David Sehnal, licensed under MIT License, See LICENSE file for more info.
*/
// var CIFTools;
// (function (CIFTools) {
// var Text;
(function (Text) {
"use strict";
var StringWriter = CIFTools.Utils.StringWriter;
var Writer = /** @class */ (function () {
function Writer() {
this.writer = StringWriter.create();
this.encoded = false;
this.dataBlockCreated = false;
}
Writer.prototype.startDataBlock = function (header) {
this.dataBlockCreated = true;
StringWriter.write(this.writer, "data_" + (header || '').replace(/[ \n\t]/g, '').toUpperCase() + "\n#\n");
};
Writer.prototype.writeCategory = function (category, contexts) {
if (this.encoded) {
throw new Error('The writer contents have already been encoded, no more writing.');
}
if (!this.dataBlockCreated) {
throw new Error('No data block created.');
}
var src = !contexts || !contexts.length ? [category(void 0)] : contexts.map(function (c) { return category(c); });
var data = src.filter(function (c) { return c && c.count > 0; });
if (!data.length)
return;
var count = data.reduce(function (a, c) { return a + (c.count === void 0 ? 1 : c.count); }, 0);
if (!count)
return;
else if (count === 1) {
writeCifSingleRecord(data[0], this.writer);
}
else {
writeCifLoop(data, this.writer);
}
};
Writer.prototype.encode = function () {
this.encoded = true;
};
Writer.prototype.flush = function (stream) {
StringWriter.writeTo(this.writer, stream);
};
return Writer;
}());
Text.Writer = Writer;
functi
gitextract_1bkdhxzz/
├── .gitignore
├── CHANGELOG.md
├── CODE_OF_CONDUCT.md
├── LICENSE.md
├── README.md
├── SECURITY.md
├── build/
│ ├── icn3d.js
│ └── icn3d.module.js
├── css/
│ └── icn3d.css
├── dist/
│ ├── CHANGELOG.md
│ ├── CODE_OF_CONDUCT.md
│ ├── LICENSE.md
│ ├── README.md
│ ├── example/
│ │ ├── addAnnoLocal.html
│ │ ├── annoLocal.js
│ │ ├── example.html
│ │ ├── loadStateFile.js
│ │ └── module.html
│ ├── full.html
│ ├── full2.html
│ ├── full2_3.49.0.html
│ ├── full_3.49.0.html
│ ├── icn3d.css
│ ├── icn3d.html
│ ├── icn3d.js
│ ├── icn3d.module.js
│ ├── icn3d_3.49.0.css
│ ├── index.html
│ ├── mtz.wasm
│ ├── notfound.html
│ ├── script/
│ │ ├── d3v4-force-all.js
│ │ ├── jszip.js
│ │ ├── mtz.js
│ │ ├── mtz.wasm
│ │ └── pako.js
│ ├── share.html
│ └── share2.html
├── example/
│ ├── addAnnoLocal.html
│ ├── annoLocal.js
│ ├── collection/
│ │ ├── 1wfa.pdb
│ │ └── json_only.json
│ ├── example-simple.html
│ ├── example.html
│ ├── loadStateFile.js
│ └── module.html
├── full.html
├── full2.html
├── gulpfile.js
├── icn3d.html
├── icn3dnode/
│ ├── README.md
│ ├── addmissingatoms.js
│ ├── annotation.js
│ ├── cdsearch.js
│ ├── delphipot.js
│ ├── epitope.js
│ ├── epitope_neighbor.js
│ ├── general_id_cmd.js
│ ├── interaction.js
│ ├── interaction2.js
│ ├── interactiondetail.js
│ ├── interactiondetail2.js
│ ├── ligand.js
│ ├── refnum.js
│ ├── refnum_file.js
│ ├── refpdb/
│ │ ├── 1B2Microglobulin_7phrL_human_C1.pdb
│ │ ├── 1BTLA_2aw2A_human_Iset.pdb
│ │ ├── 1CD19_6al5A_human-n1.pdb
│ │ ├── 1CD28_1yjdC_human_V.pdb
│ │ ├── 1CD2_1hnfA_human_C2-n2.pdb
│ │ ├── 1CD2_1hnfA_human_V-n1.pdb
│ │ ├── 1CD3d_6jxrd_human_C1.pdb
│ │ ├── 1CD3e_6jxrf_human_C1.pdb
│ │ ├── 1CD3g_6jxrg_human_C2.pdb
│ │ ├── 1CD8a_1cd8A_human_V.pdb
│ │ ├── 1Contactin1_2ee2A_human_FN3-n9.pdb
│ │ ├── 1Contactin1_3s97C_human_Iset-n2.pdb
│ │ ├── 1ECadherin_4zt1A_human_n2.pdb
│ │ ├── 1FAB-HEAVY_5esv_C1-n2.pdb
│ │ ├── 1FAB-HEAVY_5esv_V-n1.pdb
│ │ ├── 1FAB-LIGHT_5esv_C1-n2.pdb
│ │ ├── 1FAB-LIGHT_5esv_V-n1.pdb
│ │ ├── 1GHR_1axiB_human_C1-n1.pdb
│ │ ├── 1ICOS_6x4gA_human_V.pdb
│ │ ├── 1IL6Rb_1bquB_human_FN3-n2.pdb
│ │ ├── 1IL6Rb_1bquB_human_FN3-n3.pdb
│ │ ├── 1InsulinR_8guyE_human_FN3-n1.pdb
│ │ ├── 1InsulinR_8guyE_human_FN3-n2.pdb
│ │ ├── 1JAM1_1nbqA_human_Iset-n2.pdb
│ │ ├── 1LAG3_7tzgD_human_C1-n2.pdb
│ │ ├── 1LAG3_7tzgD_human_V-n1.pdb
│ │ ├── 1LaminAC_1ifrA_human.pdb
│ │ ├── 1MHCIa_7phrH_human_C1.pdb
│ │ ├── 1PD1_4zqkB_human_V.pdb
│ │ ├── 1PDL1_4z18B_human_V-n1.pdb
│ │ ├── 1Palladin_2dm3A_human_Iset-n1.pdb
│ │ ├── 1Sidekick2_1wf5A_human_FN3-n7.pdb
│ │ ├── 1Siglec3_5j0bB_human_C1-n2.pdb
│ │ ├── 1TCRa_6jxrm_human_C1-n2.pdb
│ │ ├── 1TCRa_6jxrm_human_V-n1.pdb
│ │ ├── 1Titin_4uowM_human_Iset-n152.pdb
│ │ ├── 1VISTA_6oilA_human_V.pdb
│ │ ├── 1VNAR_1t6vN_shark_V.pdb
│ │ ├── 1VTCN1_Q7Z7D3_human_C1-n2.pdb
│ │ ├── B2Microglobulin_7phrL_human_C1.pdb
│ │ ├── BTLA_2aw2A_human_Iset.pdb
│ │ ├── CD19_6al5A_human-n1.pdb
│ │ ├── CD28_1yjdC_human_V.pdb
│ │ ├── CD2_1hnfA_human_C2-n2.pdb
│ │ ├── CD2_1hnfA_human_V-n1.pdb
│ │ ├── CD3d_6jxrd_human_C1.pdb
│ │ ├── CD3e_6jxrf_human_C1.pdb
│ │ ├── CD3g_6jxrg_human_C2.pdb
│ │ ├── CD8a_1cd8A_human_V.pdb
│ │ ├── Contactin1_2ee2A_human_FN3-n9.pdb
│ │ ├── Contactin1_3s97C_human_Iset-n2.pdb
│ │ ├── ECadherin_4zt1A_human_n2.pdb
│ │ ├── FAB-HEAVY_5esv_C1-n2.pdb
│ │ ├── FAB-HEAVY_5esv_V-n1.pdb
│ │ ├── FAB-LIGHT_5esv_C1-n2.pdb
│ │ ├── FAB-LIGHT_5esv_V-n1.pdb
│ │ ├── GHR_1axiB_human_C1-n1.pdb
│ │ ├── ICOS_6x4gA_human_V.pdb
│ │ ├── IL6Rb_1bquB_human_FN3-n2.pdb
│ │ ├── IL6Rb_1bquB_human_FN3-n3.pdb
│ │ ├── InsulinR_8guyE_human_FN3-n1.pdb
│ │ ├── InsulinR_8guyE_human_FN3-n2.pdb
│ │ ├── JAM1_1nbqA_human_Iset-n2.pdb
│ │ ├── LAG3_7tzgD_human_C1-n2.pdb
│ │ ├── LAG3_7tzgD_human_V-n1.pdb
│ │ ├── LaminAC_1ifrA_human.pdb
│ │ ├── MHCIa_7phrH_human_C1.pdb
│ │ ├── PD1_4zqkB_human_V.pdb
│ │ ├── PDL1_4z18B_human_V-n1.pdb
│ │ ├── Palladin_2dm3A_human_Iset-n1.pdb
│ │ ├── Sidekick2_1wf5A_human_FN3-n7.pdb
│ │ ├── Siglec3_5j0bB_human_C1-n2.pdb
│ │ ├── TCRa_6jxrm_human_C1-n2.pdb
│ │ ├── TCRa_6jxrm_human_V-n1.pdb
│ │ ├── Titin_4uowM_human_Iset-n152.pdb
│ │ ├── VISTA_6oilA_human_V.pdb
│ │ ├── VNAR_1t6vN_shark_V.pdb
│ │ └── VTCN1_Q7Z7D3_human_C1-n2.pdb
│ ├── rename_structure_id.sh
│ ├── rmhet.js
│ ├── secondarystructure.js
│ ├── surfacearea.js
│ ├── tmalign-af.js
│ ├── tmalign-icn3dnode/
│ │ ├── Makefile
│ │ ├── TMalign.cpp
│ │ ├── igstrand2imgt.cpp
│ │ ├── igstrand2kabat.cpp
│ │ ├── resi2igstrand.cpp
│ │ ├── tmalignCgi.cpp
│ │ └── tmalignCgi.hpp
│ └── tmalign.js
├── icn3dpython/
│ ├── README.md
│ ├── icn3d_url/
│ │ ├── README.md
│ │ ├── batch_export_panel.py
│ │ ├── batch_export_png.py
│ │ ├── batch_export_refnum.py
│ │ └── batch_export_ss.py
│ └── web_scraping/
│ ├── README.md
│ ├── config.py
│ └── downloadInteraction.py
├── iframe.html
├── index.html
├── jupyternotebook/
│ ├── README.md
│ ├── icn3dpy/
│ │ └── __init__.py
│ └── setup.py
├── notfound.html
├── package.json
├── script/
│ ├── d3v4-force-all.js
│ ├── jszip.js
│ ├── mtz.js
│ ├── mtz.wasm
│ └── pako.js
├── share.html
├── share2.html
├── simple.html
├── src/
│ ├── html/
│ │ ├── alignSeq.js
│ │ ├── clickMenu.js
│ │ ├── dialog.js
│ │ ├── events.js
│ │ ├── html.js
│ │ ├── setDialog.js
│ │ ├── setHtml.js
│ │ └── setMenu.js
│ ├── icn3d/
│ │ ├── analysis/
│ │ │ ├── alignSW.js
│ │ │ ├── analysis.js
│ │ │ ├── applySymd.js
│ │ │ ├── cartoon2d.js
│ │ │ ├── delphi.js
│ │ │ ├── diagram2d.js
│ │ │ ├── dssp.js
│ │ │ ├── scap.js
│ │ │ └── symd.js
│ │ ├── annotations/
│ │ │ ├── addTrack.js
│ │ │ ├── annoCddSite.js
│ │ │ ├── annoContact.js
│ │ │ ├── annoCrossLink.js
│ │ │ ├── annoDomain.js
│ │ │ ├── annoIg.js
│ │ │ ├── annoPTM.js
│ │ │ ├── annoSnpClinVar.js
│ │ │ ├── annoSsbond.js
│ │ │ ├── annoTransMem.js
│ │ │ ├── annotation.js
│ │ │ ├── domain3d.js
│ │ │ ├── refnum.js
│ │ │ ├── showAnno.js
│ │ │ └── showSeq.js
│ │ ├── display/
│ │ │ ├── alternate.js
│ │ │ ├── applyCenter.js
│ │ │ ├── applyClbonds.js
│ │ │ ├── applyDisplay.js
│ │ │ ├── applyMissingRes.js
│ │ │ ├── applyOther.js
│ │ │ ├── applySsbonds.js
│ │ │ ├── camera.js
│ │ │ ├── draw.js
│ │ │ ├── fog.js
│ │ │ ├── legendTable.js
│ │ │ ├── scene.js
│ │ │ ├── setColor.js
│ │ │ ├── setOption.js
│ │ │ └── setStyle.js
│ │ ├── export/
│ │ │ ├── export3D.js
│ │ │ ├── saveFile.js
│ │ │ ├── shareLink.js
│ │ │ └── threeDPrint.js
│ │ ├── geometry/
│ │ │ ├── axes.js
│ │ │ ├── box.js
│ │ │ ├── brick.js
│ │ │ ├── cartoonNucl.js
│ │ │ ├── curve.js
│ │ │ ├── curveStripArrow.js
│ │ │ ├── cylinder.js
│ │ │ ├── glycan.js
│ │ │ ├── impostor.js
│ │ │ ├── instancing.js
│ │ │ ├── label.js
│ │ │ ├── line.js
│ │ │ ├── reprSub.js
│ │ │ ├── residueLabels.js
│ │ │ ├── sphere.js
│ │ │ ├── stick.js
│ │ │ ├── strand.js
│ │ │ ├── strip.js
│ │ │ └── tube.js
│ │ ├── highlight/
│ │ │ ├── hlObjects.js
│ │ │ ├── hlSeq.js
│ │ │ └── hlUpdate.js
│ │ ├── icn3d.js
│ │ ├── interaction/
│ │ │ ├── contact.js
│ │ │ ├── contactMap.js
│ │ │ ├── drawGraph.js
│ │ │ ├── getGraph.js
│ │ │ ├── hBond.js
│ │ │ ├── ligplot.js
│ │ │ ├── lineGraph.js
│ │ │ ├── piHalogen.js
│ │ │ ├── saltbridge.js
│ │ │ ├── showInter.js
│ │ │ └── viewInterPairs.js
│ │ ├── parsers/
│ │ │ ├── alignParser.js
│ │ │ ├── bcifParser.js
│ │ │ ├── ccp4Parser.js
│ │ │ ├── chainalignParser.js
│ │ │ ├── dcdParser.js
│ │ │ ├── densityCifParser.js
│ │ │ ├── dsn6Parser.js
│ │ │ ├── loadAtomData.js
│ │ │ ├── loadCIF.js
│ │ │ ├── loadPDB.js
│ │ │ ├── mmcifParser.js
│ │ │ ├── mmdbParser.js
│ │ │ ├── mol2Parser.js
│ │ │ ├── msaParser.js
│ │ │ ├── mtzParser.js
│ │ │ ├── opmParser.js
│ │ │ ├── parserUtils.js
│ │ │ ├── pdbParser.js
│ │ │ ├── realignParser.js
│ │ │ ├── sdfParser.js
│ │ │ ├── setSeqAlign.js
│ │ │ ├── vastplus.js
│ │ │ ├── xtcParser.js
│ │ │ └── xyzParser.js
│ │ ├── picking/
│ │ │ ├── control.js
│ │ │ ├── picking.js
│ │ │ └── ray.js
│ │ ├── selection/
│ │ │ ├── applyCommand.js
│ │ │ ├── definedSets.js
│ │ │ ├── firstAtomObj.js
│ │ │ ├── loadScript.js
│ │ │ ├── resid2spec.js
│ │ │ ├── selectByCommand.js
│ │ │ ├── selectCollections.js
│ │ │ └── selection.js
│ │ ├── surface/
│ │ │ ├── applyMap.js
│ │ │ ├── electronMap.js
│ │ │ ├── marchingCube.js
│ │ │ ├── proteinSurface.js
│ │ │ └── surface.js
│ │ └── transform/
│ │ ├── resizeCanvas.js
│ │ └── transform.js
│ ├── icn3dui.js
│ ├── thirdparty/
│ │ ├── CIFTools.js
│ │ ├── CIFToolsMod.js
│ │ ├── FileSaver.js
│ │ ├── canvas-to-blob.js
│ │ ├── color-pick/
│ │ │ ├── color-picker.css
│ │ │ └── color-picker.js
│ │ ├── defineWindow.js
│ │ ├── shader/
│ │ │ ├── CylinderImpostor.frag
│ │ │ ├── CylinderImpostor.vert
│ │ │ ├── CylinderInstancing.frag
│ │ │ ├── CylinderInstancing.vert
│ │ │ ├── Instancing.frag
│ │ │ ├── Instancing.vert
│ │ │ ├── NGL_Shaders.js
│ │ │ ├── SphereImpostor.frag
│ │ │ ├── SphereImpostor.vert
│ │ │ ├── SphereInstancing.frag
│ │ │ └── SphereInstancing.vert
│ │ └── three/
│ │ ├── OrthographicTrackballControls.js
│ │ ├── Projector.js
│ │ ├── StereoEffect.js
│ │ ├── TrackballControls.js
│ │ └── vr/
│ │ ├── ARButton.js
│ │ ├── CanvasKeyboard.js
│ │ ├── CanvasUI.js
│ │ ├── ControllerGestures.js
│ │ ├── GLTFLoader.js
│ │ ├── VRButton.js
│ │ ├── XRControllerModelFactory.js
│ │ └── motion-controllers.module.js
│ └── utils/
│ ├── convertTypeCls.js
│ ├── hashUtilsCls.js
│ ├── myEventCls.js
│ ├── parasCls.js
│ ├── rmsdSuprCls.js
│ ├── subdivideCls.js
│ └── utilsCls.js
└── template/
├── igstrand_template_IgC1.xlsx
├── igstrand_template_IgC2.xlsx
├── igstrand_template_IgI.xlsx
├── igstrand_template_IgV.xlsx
├── igstrand_template_IgV_A.xlsx
└── igstrand_template_IgV_A_Adash.xlsx
Showing preview only (1,309K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (16238 symbols across 186 files)
FILE: build/icn3d.js
function is (line 1285) | function is(x) {
function add4 (line 1289) | function add4(array, x, y, z, w) {
function add3 (line 1302) | function add3(array, x, y, z) {
function add2 (line 1314) | function add2(array, x, y) {
function add (line 1325) | function add(array, x) {
function compact (line 1335) | function compact(array) {
function forVertex3D (line 1364) | function forVertex3D(chunkVertexCount) {
function forIndexBuffer (line 1369) | function forIndexBuffer(chunkIndexCount) {
function forTokenIndices (line 1374) | function forTokenIndices(chunkTokenCount) {
function forIndices (line 1379) | function forIndices(chunkTokenCount) {
function forInt32 (line 1384) | function forInt32(chunkSize) {
function forFloat32 (line 1389) | function forFloat32(chunkSize) {
function forArray (line 1394) | function forArray(chunkSize) {
function create (line 1399) | function create(creator, chunkElementCount, elementSize) {
function parseIntSkipTrailingWhitespace (line 1435) | function parseIntSkipTrailingWhitespace(str, start, end) {
function parseInt (line 1441) | function parseInt(str, start, end) {
function parseScientific (line 1457) | function parseScientific(main, str, start, end) {
function parseFloatSkipTrailingWhitespace (line 1463) | function parseFloatSkipTrailingWhitespace(str, start, end) {
function parseFloat (line 1469) | function parseFloat(str, start, end) {
function create (line 1528) | function create(chunkCapacity) {
function asString (line 1538) | function asString(writer) {
function writeTo (line 1550) | function writeTo(writer, stream) {
function finalize (line 1558) | function finalize(writer) {
function newline (line 1567) | function newline(writer) {
function whitespace (line 1571) | function whitespace(writer, len) {
function write (line 1575) | function write(writer, val) {
function writeSafe (line 1586) | function writeSafe(writer, val) {
function writePadLeft (line 1594) | function writePadLeft(writer, val, totalWidth) {
function writePadRight (line 1604) | function writePadRight(writer, val, totalWidth) {
function writeInteger (line 1614) | function writeInteger(writer, val) {
function writeIntegerPadLeft (line 1618) | function writeIntegerPadLeft(writer, val, totalWidth) {
function writeIntegerPadRight (line 1626) | function writeIntegerPadRight(writer, val, totalWidth) {
function writeFloat (line 1637) | function writeFloat(writer, val, precisionMultiplier) {
function writeFloatPadLeft (line 1641) | function writeFloatPadLeft(writer, val, precisionMultiplier, totalWidth) {
function writeFloatPadRight (line 1649) | function writeFloatPadRight(writer, val, precisionMultiplier, totalWidth) {
function _UndefinedColumn (line 1670) | function _UndefinedColumn() {
function getMatrix (line 1696) | function getMatrix(category, field, rows, cols, rowIndex) {
function getVector (line 1716) | function getVector(category, field, rows, cols, rowIndex) {
function error (line 1734) | function error(message, line) {
function success (line 1739) | function success(result, warnings) {
function ParserError (line 1746) | function ParserError(message, line) {
function ParserSuccess (line 1761) | function ParserSuccess(result, warnings) {
function create (line 1820) | function create() { return Object.create(null); }
function get (line 1822) | function get(pool, str) {
function File (line 1837) | function File(data) {
function DataBlock (line 1854) | function DataBlock(data, header) {
function Category (line 1899) | function Category(data, name, startIndex, endIndex, columns, tokens, tok...
function Column (line 1958) | function Column(category, data, name, index) {
function resize (line 2049) | function resize(builder) {
function addToken (line 2056) | function addToken(builder, start, end) {
function create (line 2064) | function create(size) {
function eatValue (line 2076) | function eatValue(state) {
function eatEscaped (line 2100) | function eatEscaped(state, esc) {
function eatMultiline (line 2145) | function eatMultiline(state) {
function skipCommentLine (line 2182) | function skipCommentLine(state) {
function skipWhitespace (line 2195) | function skipWhitespace(state) {
function isData (line 2224) | function isData(state) {
function isSave (line 2244) | function isSave(state) {
function isLoop (line 2264) | function isLoop(state) {
function isNamespace (line 2289) | function isNamespace(state, start, end) {
function getNamespaceEnd (line 2307) | function getNamespaceEnd(state) {
function getNamespace (line 2318) | function getNamespace(state, endIndex) {
function getTokenString (line 2324) | function getTokenString(state) {
function moveNextInternal (line 2330) | function moveNextInternal(state) {
function moveNext (line 2391) | function moveNext(state) {
function createTokenizer (line 2396) | function createTokenizer(data) {
function handleSingle (line 2411) | function handleSingle(tokenizer, block) {
function handleLoop (line 2442) | function handleLoop(tokenizer, block) {
function error (line 2472) | function error(line, message) {
function result (line 2478) | function result(data) {
function parseInternal (line 2486) | function parseInternal(data) {
function parse (line 2553) | function parse(data) {
function Writer (line 2569) | function Writer() {
function isMultiline (line 2608) | function isMultiline(value) {
function writeCifSingleRecord (line 2611) | function writeCifSingleRecord(category, writer) {
function writeCifLoop (line 2640) | function writeCifLoop(categories, writer) {
function writeLine (line 2679) | function writeLine(writer, val) {
function writeInteger (line 2683) | function writeInteger(writer, val) {
function writeFloat (line 2689) | function writeFloat(writer, val, precisionMultiplier) {
function writeNotSpecified (line 2695) | function writeNotSpecified(writer) {
function writeUnknown (line 2701) | function writeUnknown(writer) {
function writeChecked (line 2704) | function writeChecked(writer, val) {
function writeMultiline (line 2764) | function writeMultiline(writer, val) {
function writeToken (line 2768) | function writeToken(writer, data, start, end) {
function map (line 2823) | function map(state, length) {
function bin (line 2836) | function bin(state, length) {
function str (line 2856) | function str(state, length) {
function array (line 2866) | function array(state, length) {
function parse (line 2877) | function parse(state) {
function decode (line 3015) | function decode(buffer) {
function encode (line 3039) | function encode(value) {
function encodedSize (line 3047) | function encodedSize(value) {
function encodeInternal (line 3145) | function encodeInternal(value, view, bytes, offset) {
function utf8Write (line 3333) | function utf8Write(data, offset, str) {
function throwError (line 3373) | function throwError(err) {
function utf8Read (line 3376) | function utf8Read(data, offset, length) {
function utf8ByteCount (line 3418) | function utf8ByteCount(str) {
function decode (line 3458) | function decode(data) {
function decodeStep (line 3468) | function decodeStep(data, encoding) {
function getIntArray (line 3492) | function getIntArray(type, size) {
function getFloatArray (line 3503) | function getFloatArray(type, size) {
function int8 (line 3521) | function int8(data) { return new Int8Array(data.buffer, data.byteOffset); }
function flipByteOrder (line 3522) | function flipByteOrder(data, bytes) {
function view (line 3532) | function view(data, byteSize, c) {
function int16 (line 3537) | function int16(data) { return view(data, 2, Int16Array); }
function uint16 (line 3538) | function uint16(data) { return view(data, 2, Uint16Array); }
function int32 (line 3539) | function int32(data) { return view(data, 4, Int32Array); }
function uint32 (line 3540) | function uint32(data) { return view(data, 4, Uint32Array); }
function float32 (line 3541) | function float32(data) { return view(data, 4, Float32Array); }
function float64 (line 3542) | function float64(data) { return view(data, 8, Float64Array); }
function fixedPoint (line 3543) | function fixedPoint(data, encoding) {
function intervalQuantization (line 3552) | function intervalQuantization(data, encoding) {
function runLength (line 3562) | function runLength(data, encoding) {
function delta (line 3574) | function delta(data, encoding) {
function integerPackingSigned (line 3585) | function integerPackingSigned(data, encoding) {
function integerPackingUnsigned (line 3606) | function integerPackingUnsigned(data, encoding) {
function integerPacking (line 3626) | function integerPacking(data, encoding) {
function stringArray (line 3629) | function stringArray(data, encoding) {
function File (line 3663) | function File(data) {
function DataBlock (line 3673) | function DataBlock(data) {
function Category (line 3700) | function Category(data) {
function wrapColumn (line 3746) | function wrapColumn(column) {
function NumericColumn (line 3761) | function NumericColumn(data) {
function MaskedNumericColumn (line 3774) | function MaskedNumericColumn(data, mask) {
function StringColumn (line 3788) | function StringColumn(data) {
function MaskedStringColumn (line 3801) | function MaskedStringColumn(data, mask) {
function Encoder (line 3831) | function Encoder(providers) {
function by (line 3864) | function by(f) {
function uint8 (line 3868) | function uint8(data) {
function int8 (line 3874) | function int8(data) {
function byteArray (line 3896) | function byteArray(data) {
function _fixedPoint (line 3914) | function _fixedPoint(data, factor) {
function fixedPoint (line 3925) | function fixedPoint(factor) { return function (data) { return _fixedPoin...
function _intervalQuantizaiton (line 3927) | function _intervalQuantizaiton(data, min, max, numSteps, arrayType) {
function intervalQuantizaiton (line 3956) | function intervalQuantizaiton(min, max, numSteps, arrayType) {
function runLength (line 3961) | function runLength(data) {
function delta (line 4002) | function delta(data) {
function isSigned (line 4030) | function isSigned(data) {
function packingSize (line 4037) | function packingSize(data, upperLimit) {
function determinePacking (line 4058) | function determinePacking(data) {
function _integerPacking (line 4088) | function _integerPacking(data, packing) {
function integerPacking (line 4133) | function integerPacking(data) {
function stringArray (line 4145) | function stringArray(data) {
function getDataType (line 4195) | function getDataType(data) {
function isSignedIntegerDataType (line 4218) | function isSignedIntegerDataType(data) {
function checkVersions (line 4233) | function checkVersions(min, current) {
function parse (line 4240) | function parse(data) {
function encodeField (line 4266) | function encodeField(field, data, totalCount) {
function Writer (line 4317) | function Writer(encoder) {
function is_set (line 4394) | function is_set(x) {
function is_string (line 4398) | function is_string(x) {
function is_object (line 4402) | function is_object(x) {
function object_length (line 4406) | function object_length(x) {
function edge (line 4410) | function edge(a, b, c) {
function num (line 4416) | function num(i, j) {
function round (line 4420) | function round(i) {
function HSV2RGB (line 4425) | function HSV2RGB(a) {
function HSV2HEX (line 4461) | function HSV2HEX(a) {
function RGB2HSV (line 4466) | function RGB2HSV(a) {
function RGB2HEX (line 4495) | function RGB2HEX(a) {
function HEX2HSV (line 4502) | function HEX2HSV(s) {
function HEX2RGB (line 4506) | function HEX2RGB(s) {
function _2HSV_pri (line 4514) | function _2HSV_pri(a) {
function _2HSV_pub (line 4519) | function _2HSV_pub(a) {
function _2RGB_pri (line 4524) | function _2RGB_pri(a) {
function parse (line 4529) | function parse(x) {
function on (line 4614) | function on(ev, el, fn) {
function off (line 4622) | function off(ev, el, fn) {
function point (line 4630) | function point(el, e) {
function offset (line 4644) | function offset(el) {
function closest (line 4661) | function closest(a, b) {
function prevent (line 4667) | function prevent(e) {
function size (line 4672) | function size(el) {
function get_data (line 4683) | function get_data(a) {
function set_data (line 4688) | function set_data(a) {
function add (line 4693) | function add(ev, fn, id) {
function remove (line 4702) | function remove(ev, id) {
function trigger (line 4709) | function trigger(ev, a, id) {
function trigger_ (line 4747) | function trigger_(k, x) {
function visible (line 4758) | function visible() {
function create (line 4763) | function create(first, bucket) {
function fit (line 4944) | function fit() {
class EventDispatcher (line 6591) | class EventDispatcher {
method addEventListener (line 6599) | addEventListener( type, listener ) {
method hasEventListener (line 6626) | hasEventListener( type, listener ) {
method removeEventListener (line 6642) | removeEventListener( type, listener ) {
method dispatchEvent (line 6669) | dispatchEvent( event ) {
function generateUUID (line 6710) | function generateUUID() {
function clamp (line 6736) | function clamp( value, min, max ) {
function euclideanModulo (line 6750) | function euclideanModulo( n, m ) {
function lerp (line 6767) | function lerp( x, y, t ) {
function denormalize (line 6780) | function denormalize( value, array ) {
function normalize (line 6827) | function normalize( value, array ) {
class Vector2$1 (line 6892) | class Vector2$1 {
method constructor (line 6900) | constructor( x = 0, y = 0 ) {
method width (line 6932) | get width() {
method width (line 6938) | set width( value ) {
method height (line 6949) | get height() {
method height (line 6955) | set height( value ) {
method set (line 6968) | set( x, y ) {
method setScalar (line 6983) | setScalar( scalar ) {
method setX (line 6998) | setX( x ) {
method setY (line 7012) | setY( y ) {
method setComponent (line 7027) | setComponent( index, value ) {
method getComponent (line 7047) | getComponent( index ) {
method clone (line 7064) | clone() {
method copy (line 7076) | copy( v ) {
method add (line 7091) | add( v ) {
method addScalar (line 7106) | addScalar( s ) {
method addVectors (line 7122) | addVectors( a, b ) {
method addScaledVector (line 7138) | addScaledVector( v, s ) {
method sub (line 7153) | sub( v ) {
method subScalar (line 7168) | subScalar( s ) {
method subVectors (line 7184) | subVectors( a, b ) {
method multiply (line 7199) | multiply( v ) {
method multiplyScalar (line 7214) | multiplyScalar( scalar ) {
method divide (line 7229) | divide( v ) {
method divideScalar (line 7244) | divideScalar( scalar ) {
method applyMatrix3 (line 7257) | applyMatrix3( m ) {
method min (line 7276) | min( v ) {
method max (line 7292) | max( v ) {
method clamp (line 7311) | clamp( min, max ) {
method clampScalar (line 7332) | clampScalar( minVal, maxVal ) {
method clampLength (line 7351) | clampLength( min, max ) {
method floor (line 7364) | floor() {
method ceil (line 7378) | ceil() {
method round (line 7392) | round() {
method roundToZero (line 7407) | roundToZero() {
method negate (line 7421) | negate() {
method dot (line 7436) | dot( v ) {
method cross (line 7448) | cross( v ) {
method lengthSq (line 7461) | lengthSq() {
method length (line 7472) | length() {
method manhattanLength (line 7483) | manhattanLength() {
method normalize (line 7495) | normalize() {
method angle (line 7506) | angle() {
method angleTo (line 7520) | angleTo( v ) {
method distanceTo (line 7540) | distanceTo( v ) {
method distanceToSquared (line 7554) | distanceToSquared( v ) {
method manhattanDistanceTo (line 7567) | manhattanDistanceTo( v ) {
method setLength (line 7580) | setLength( length ) {
method lerp (line 7595) | lerp( v, alpha ) {
method lerpVectors (line 7614) | lerpVectors( v1, v2, alpha ) {
method equals (line 7629) | equals( v ) {
method fromArray (line 7643) | fromArray( array, offset = 0 ) {
method toArray (line 7660) | toArray( array = [], offset = 0 ) {
method fromBufferAttribute (line 7676) | fromBufferAttribute( attribute, index ) {
method rotateAround (line 7692) | rotateAround( center, angle ) {
method random (line 7712) | random() {
method [ Symbol.iterator ] (line 7721) | *[ Symbol.iterator ]() {
class Quaternion (line 7745) | class Quaternion {
method constructor (line 7755) | constructor( x = 0, y = 0, z = 0, w = 1 ) {
method slerpFlat (line 7786) | static slerpFlat( dst, dstOffset, src0, srcOffset0, src1, srcOffset1, ...
method multiplyQuaternionsFlat (line 7879) | static multiplyQuaternionsFlat( dst, dstOffset, src0, srcOffset0, src1...
method x (line 7906) | get x() {
method x (line 7912) | set x( value ) {
method y (line 7925) | get y() {
method y (line 7931) | set y( value ) {
method z (line 7944) | get z() {
method z (line 7950) | set z( value ) {
method w (line 7963) | get w() {
method w (line 7969) | set w( value ) {
method set (line 7985) | set( x, y, z, w ) {
method clone (line 8003) | clone() {
method copy (line 8015) | copy( quaternion ) {
method setFromEuler (line 8036) | setFromEuler( euler, update = true ) {
method setFromAxisAngle (line 8117) | setFromAxisAngle( axis, angle ) {
method setFromRotationMatrix (line 8140) | setFromRotationMatrix( m ) {
method setFromUnitVectors (line 8206) | setFromUnitVectors( vFrom, vTo ) {
method angleTo (line 8255) | angleTo( q ) {
method rotateTowards (line 8269) | rotateTowards( q, step ) {
method identity (line 8289) | identity() {
method invert (line 8301) | invert() {
method conjugate (line 8314) | conjugate() {
method dot (line 8332) | dot( v ) {
method lengthSq (line 8346) | lengthSq() {
method length (line 8358) | length() {
method normalize (line 8370) | normalize() {
method multiply (line 8404) | multiply( q ) {
method premultiply (line 8416) | premultiply( q ) {
method multiplyQuaternions (line 8429) | multiplyQuaternions( a, b ) {
method slerp (line 8454) | slerp( qb, t ) {
method slerpQuaternions (line 8532) | slerpQuaternions( qa, qb, t ) {
method random (line 8543) | random() {
method equals (line 8571) | equals( quaternion ) {
method fromArray (line 8584) | fromArray( array, offset = 0 ) {
method toArray (line 8605) | toArray( array = [], offset = 0 ) {
method fromBufferAttribute (line 8623) | fromBufferAttribute( attribute, index ) {
method toJSON (line 8642) | toJSON() {
method _onChange (line 8648) | _onChange( callback ) {
method _onChangeCallback (line 8656) | _onChangeCallback() {}
method [ Symbol.iterator ] (line 8658) | *[ Symbol.iterator ]() {
class Vector3$1 (line 8694) | class Vector3$1 {
method constructor (line 8703) | constructor( x = 0, y = 0, z = 0 ) {
method set (line 8745) | set( x, y, z ) {
method setScalar (line 8763) | setScalar( scalar ) {
method setX (line 8779) | setX( x ) {
method setY (line 8793) | setY( y ) {
method setZ (line 8807) | setZ( z ) {
method setComponent (line 8822) | setComponent( index, value ) {
method getComponent (line 8843) | getComponent( index ) {
method clone (line 8861) | clone() {
method copy (line 8873) | copy( v ) {
method add (line 8889) | add( v ) {
method addScalar (line 8905) | addScalar( s ) {
method addVectors (line 8922) | addVectors( a, b ) {
method addScaledVector (line 8939) | addScaledVector( v, s ) {
method sub (line 8955) | sub( v ) {
method subScalar (line 8971) | subScalar( s ) {
method subVectors (line 8988) | subVectors( a, b ) {
method multiply (line 9004) | multiply( v ) {
method multiplyScalar (line 9020) | multiplyScalar( scalar ) {
method multiplyVectors (line 9037) | multiplyVectors( a, b ) {
method applyEuler (line 9053) | applyEuler( euler ) {
method applyAxisAngle (line 9066) | applyAxisAngle( axis, angle ) {
method applyMatrix3 (line 9078) | applyMatrix3( m ) {
method applyNormalMatrix (line 9098) | applyNormalMatrix( m ) {
method applyMatrix4 (line 9111) | applyMatrix4( m ) {
method applyQuaternion (line 9132) | applyQuaternion( q ) {
method project (line 9160) | project( camera ) {
method unproject (line 9173) | unproject( camera ) {
method transformDirection (line 9186) | transformDirection( m ) {
method divide (line 9208) | divide( v ) {
method divideScalar (line 9224) | divideScalar( scalar ) {
method min (line 9237) | min( v ) {
method max (line 9254) | max( v ) {
method clamp (line 9274) | clamp( min, max ) {
method clampScalar (line 9296) | clampScalar( minVal, maxVal ) {
method clampLength (line 9316) | clampLength( min, max ) {
method floor (line 9329) | floor() {
method ceil (line 9344) | ceil() {
method round (line 9359) | round() {
method roundToZero (line 9375) | roundToZero() {
method negate (line 9390) | negate() {
method dot (line 9406) | dot( v ) {
method lengthSq (line 9421) | lengthSq() {
method length (line 9432) | length() {
method manhattanLength (line 9443) | manhattanLength() {
method normalize (line 9455) | normalize() {
method setLength (line 9468) | setLength( length ) {
method lerp (line 9483) | lerp( v, alpha ) {
method lerpVectors (line 9503) | lerpVectors( v1, v2, alpha ) {
method cross (line 9519) | cross( v ) {
method crossVectors (line 9533) | crossVectors( a, b ) {
method projectOnVector (line 9552) | projectOnVector( v ) {
method projectOnPlane (line 9571) | projectOnPlane( planeNormal ) {
method reflect (line 9585) | reflect( normal ) {
method angleTo (line 9596) | angleTo( v ) {
method distanceTo (line 9616) | distanceTo( v ) {
method distanceToSquared (line 9630) | distanceToSquared( v ) {
method manhattanDistanceTo (line 9644) | manhattanDistanceTo( v ) {
method setFromSpherical (line 9656) | setFromSpherical( s ) {
method setFromSphericalCoords (line 9670) | setFromSphericalCoords( radius, phi, theta ) {
method setFromCylindrical (line 9688) | setFromCylindrical( c ) {
method setFromCylindricalCoords (line 9702) | setFromCylindricalCoords( radius, theta, y ) {
method setFromMatrixPosition (line 9719) | setFromMatrixPosition( m ) {
method setFromMatrixScale (line 9738) | setFromMatrixScale( m ) {
method setFromMatrixColumn (line 9759) | setFromMatrixColumn( m, index ) {
method setFromMatrix3Column (line 9772) | setFromMatrix3Column( m, index ) {
method setFromEuler (line 9784) | setFromEuler( e ) {
method setFromColor (line 9801) | setFromColor( c ) {
method equals (line 9817) | equals( v ) {
method fromArray (line 9831) | fromArray( array, offset = 0 ) {
method toArray (line 9849) | toArray( array = [], offset = 0 ) {
method fromBufferAttribute (line 9866) | fromBufferAttribute( attribute, index ) {
method random (line 9882) | random() {
method randomDirection (line 9897) | randomDirection() {
method [ Symbol.iterator ] (line 9913) | *[ Symbol.iterator ]() {
class Matrix3 (line 9954) | class Matrix3 {
method constructor (line 9971) | constructor( n11, n12, n13, n21, n22, n23, n31, n32, n33 ) {
method set (line 10018) | set( n11, n12, n13, n21, n22, n23, n31, n32, n33 ) {
method identity (line 10035) | identity() {
method copy (line 10055) | copy( m ) {
method extractBasis (line 10076) | extractBasis( xAxis, yAxis, zAxis ) {
method setFromMatrix4 (line 10092) | setFromMatrix4( m ) {
method multiply (line 10114) | multiply( m ) {
method premultiply (line 10126) | premultiply( m ) {
method multiplyMatrices (line 10140) | multiplyMatrices( a, b ) {
method multiplyScalar (line 10176) | multiplyScalar( s ) {
method determinant (line 10193) | determinant() {
method invert (line 10212) | invert() {
method transpose (line 10251) | transpose() {
method getNormalMatrix (line 10271) | getNormalMatrix( matrix4 ) {
method transposeIntoArray (line 10283) | transposeIntoArray( r ) {
method setUvTransform (line 10313) | setUvTransform( tx, ty, sx, sy, rotation, cx, cy ) {
method scale (line 10335) | scale( sx, sy ) {
method rotate (line 10349) | rotate( theta ) {
method translate (line 10364) | translate( tx, ty ) {
method makeTranslation (line 10381) | makeTranslation( x, y ) {
method makeRotation (line 10415) | makeRotation( theta ) {
method makeScale (line 10441) | makeScale( x, y ) {
method equals (line 10461) | equals( matrix ) {
method fromArray (line 10483) | fromArray( array, offset = 0 ) {
method toArray (line 10503) | toArray( array = [], offset = 0 ) {
method clone (line 10528) | clone() {
function arrayNeedsUint32 (line 10538) | function arrayNeedsUint32( array ) {
function createElementNS (line 10552) | function createElementNS( name ) {
function createCanvasElement (line 10558) | function createCanvasElement() {
function warnOnce (line 10568) | function warnOnce( message ) {
function probeAsync (line 10578) | function probeAsync( gl, sync, interval ) {
function toNormalizedProjectionMatrix (line 10607) | function toNormalizedProjectionMatrix( projectionMatrix ) {
function toReversedProjectionMatrix (line 10619) | function toReversedProjectionMatrix( projectionMatrix ) {
function createColorManagement (line 10651) | function createColorManagement() {
function SRGBToLinear (line 10833) | function SRGBToLinear( c ) {
function LinearToSRGB (line 10839) | function LinearToSRGB( c ) {
class ImageUtils (line 10852) | class ImageUtils {
method getDataURL (line 10861) | static getDataURL( image, type = 'image/png' ) {
method sRGBToLinear (line 10914) | static sRGBToLinear( image ) {
class Source (line 10986) | class Source {
method constructor (line 10993) | constructor( data = null ) {
method getSize (line 11050) | getSize( target ) {
method needsUpdate (line 11081) | set needsUpdate( value ) {
method toJSON (line 11094) | toJSON( meta ) {
function serializeImage (line 11159) | function serializeImage( image ) {
class Texture$1 (line 11205) | class Texture$1 extends EventDispatcher {
method constructor (line 11221) | constructor( image = Texture$1.DEFAULT_IMAGE, mapping = Texture$1.DEFA...
method width (line 11549) | get width() {
method height (line 11558) | get height() {
method depth (line 11567) | get depth() {
method image (line 11578) | get image() {
method image (line 11584) | set image( value = null ) {
method updateMatrix (line 11594) | updateMatrix() {
method addUpdateRange (line 11606) | addUpdateRange( start, count ) {
method clearUpdateRanges (line 11615) | clearUpdateRanges() {
method clone (line 11626) | clone() {
method copy (line 11638) | copy( source ) {
method setValues (line 11690) | setValues( values ) {
method toJSON (line 11741) | toJSON( meta ) {
method dispose (line 11809) | dispose() {
method transformUv (line 11827) | transformUv( uv ) {
method needsUpdate (line 11916) | set needsUpdate( value ) {
method needsPMREMUpdate (line 11935) | set needsPMREMUpdate( value ) {
class Vector4 (line 11998) | class Vector4 {
method constructor (line 12008) | constructor( x = 0, y = 0, z = 0, w = 1 ) {
method width (line 12054) | get width() {
method width (line 12060) | set width( value ) {
method height (line 12071) | get height() {
method height (line 12077) | set height( value ) {
method set (line 12092) | set( x, y, z, w ) {
method setScalar (line 12109) | setScalar( scalar ) {
method setX (line 12126) | setX( x ) {
method setY (line 12140) | setY( y ) {
method setZ (line 12154) | setZ( z ) {
method setW (line 12168) | setW( w ) {
method setComponent (line 12184) | setComponent( index, value ) {
method getComponent (line 12207) | getComponent( index ) {
method clone (line 12226) | clone() {
method copy (line 12238) | copy( v ) {
method add (line 12255) | add( v ) {
method addScalar (line 12272) | addScalar( s ) {
method addVectors (line 12290) | addVectors( a, b ) {
method addScaledVector (line 12308) | addScaledVector( v, s ) {
method sub (line 12325) | sub( v ) {
method subScalar (line 12342) | subScalar( s ) {
method subVectors (line 12360) | subVectors( a, b ) {
method multiply (line 12377) | multiply( v ) {
method multiplyScalar (line 12394) | multiplyScalar( scalar ) {
method applyMatrix4 (line 12411) | applyMatrix4( m ) {
method divide (line 12431) | divide( v ) {
method divideScalar (line 12448) | divideScalar( scalar ) {
method setAxisAngleFromQuaternion (line 12461) | setAxisAngleFromQuaternion( q ) {
method setAxisAngleFromRotationMatrix (line 12496) | setAxisAngleFromRotationMatrix( m ) {
method setFromMatrixPosition (line 12633) | setFromMatrixPosition( m ) {
method min (line 12653) | min( v ) {
method max (line 12671) | max( v ) {
method clamp (line 12692) | clamp( min, max ) {
method clampScalar (line 12715) | clampScalar( minVal, maxVal ) {
method clampLength (line 12736) | clampLength( min, max ) {
method floor (line 12749) | floor() {
method ceil (line 12765) | ceil() {
method round (line 12781) | round() {
method roundToZero (line 12798) | roundToZero() {
method negate (line 12814) | negate() {
method dot (line 12831) | dot( v ) {
method lengthSq (line 12844) | lengthSq() {
method length (line 12855) | length() {
method manhattanLength (line 12866) | manhattanLength() {
method normalize (line 12878) | normalize() {
method setLength (line 12891) | setLength( length ) {
method lerp (line 12906) | lerp( v, alpha ) {
method lerpVectors (line 12927) | lerpVectors( v1, v2, alpha ) {
method equals (line 12944) | equals( v ) {
method fromArray (line 12958) | fromArray( array, offset = 0 ) {
method toArray (line 12977) | toArray( array = [], offset = 0 ) {
method fromBufferAttribute (line 12995) | fromBufferAttribute( attribute, index ) {
method random (line 13012) | random() {
method [ Symbol.iterator ] (line 13023) | *[ Symbol.iterator ]() {
class RenderTarget (line 13042) | class RenderTarget extends EventDispatcher {
method constructor (line 13076) | constructor( width = 1, height = 1, options = {} ) {
method _setTextureOptions (line 13232) | _setTextureOptions( options = {} ) {
method texture (line 13269) | get texture() {
method texture (line 13275) | set texture( value ) {
method depthTexture (line 13281) | set depthTexture( current ) {
method depthTexture (line 13298) | get depthTexture() {
method setSize (line 13311) | setSize( width, height, depth = 1 ) {
method clone (line 13342) | clone() {
method copy (line 13356) | copy( source ) {
method dispose (line 13402) | dispose() {
class WebGLRenderTarget (line 13415) | class WebGLRenderTarget extends RenderTarget {
method constructor (line 13424) | constructor( width = 1, height = 1, options = {} ) {
class DataArrayTexture (line 13446) | class DataArrayTexture extends Texture$1 {
method constructor (line 13456) | constructor( data = null, width = 1, height = 1, depth = 1 ) {
method addLayerUpdate (line 13554) | addLayerUpdate( layerIndex ) {
method clearLayerUpdates (line 13563) | clearLayerUpdates() {
class Data3DTexture (line 13577) | class Data3DTexture extends Texture$1 {
method constructor (line 13587) | constructor( data = null, width = 1, height = 1, depth = 1 ) {
class Box3$1 (line 13682) | class Box3$1 {
method constructor (line 13690) | constructor( min = new Vector3$1( + Infinity, + Infinity, + Infinity )...
method set (line 13725) | set( min, max ) {
method setFromArray (line 13741) | setFromArray( array ) {
method setFromBufferAttribute (line 13762) | setFromBufferAttribute( attribute ) {
method setFromPoints (line 13783) | setFromPoints( points ) {
method setFromCenterAndSize (line 13805) | setFromCenterAndSize( center, size ) {
method setFromObject (line 13826) | setFromObject( object, precise = false ) {
method clone (line 13839) | clone() {
method copy (line 13851) | copy( box ) {
method makeEmpty (line 13865) | makeEmpty() {
method isEmpty (line 13881) | isEmpty() {
method getCenter (line 13895) | getCenter( target ) {
method getSize (line 13907) | getSize( target ) {
method expandByPoint (line 13919) | expandByPoint( point ) {
method expandByVector (line 13938) | expandByVector( vector ) {
method expandByScalar (line 13954) | expandByScalar( scalar ) {
method expandByObject (line 13974) | expandByObject( object, precise = false ) {
method containsPoint (line 14064) | containsPoint( point ) {
method containsBox (line 14079) | containsBox( box ) {
method getParameter (line 14094) | getParameter( point, target ) {
method intersectsBox (line 14113) | intersectsBox( box ) {
method intersectsSphere (line 14128) | intersectsSphere( sphere ) {
method intersectsPlane (line 14144) | intersectsPlane( plane ) {
method intersectsTriangle (line 14197) | intersectsTriangle( triangle ) {
method clampPoint (line 14257) | clampPoint( point, target ) {
method distanceToPoint (line 14270) | distanceToPoint( point ) {
method getBoundingSphere (line 14282) | getBoundingSphere( target ) {
method intersect (line 14309) | intersect( box ) {
method union (line 14329) | union( box ) {
method applyMatrix4 (line 14344) | applyMatrix4( matrix ) {
method translate (line 14372) | translate( offset ) {
method equals (line 14387) | equals( box ) {
method toJSON (line 14398) | toJSON() {
method fromJSON (line 14413) | fromJSON( json ) {
function satForAxes (line 14455) | function satForAxes( axes, v0, v1, v2, extents ) {
class Sphere$2 (line 14489) | class Sphere$2 {
method constructor (line 14497) | constructor( center = new Vector3$1(), radius = -1 ) {
method set (line 14531) | set( center, radius ) {
method setFromPoints (line 14550) | setFromPoints( points, optionalCenter ) {
method copy (line 14584) | copy( sphere ) {
method isEmpty (line 14601) | isEmpty() {
method makeEmpty (line 14612) | makeEmpty() {
method containsPoint (line 14628) | containsPoint( point ) {
method distanceToPoint (line 14642) | distanceToPoint( point ) {
method intersectsSphere (line 14654) | intersectsSphere( sphere ) {
method intersectsBox (line 14668) | intersectsBox( box ) {
method intersectsPlane (line 14680) | intersectsPlane( plane ) {
method clampPoint (line 14695) | clampPoint( point, target ) {
method getBoundingBox (line 14718) | getBoundingBox( target ) {
method applyMatrix4 (line 14741) | applyMatrix4( matrix ) {
method translate (line 14756) | translate( offset ) {
method expandByPoint (line 14770) | expandByPoint( point ) {
method union (line 14810) | union( sphere ) {
method equals (line 14850) | equals( sphere ) {
method clone (line 14861) | clone() {
method toJSON (line 14872) | toJSON() {
method fromJSON (line 14887) | fromJSON( json ) {
class Ray$1 (line 14912) | class Ray$1 {
method constructor (line 14920) | constructor( origin = new Vector3$1(), direction = new Vector3$1( 0, 0...
method set (line 14945) | set( origin, direction ) {
method copy (line 14960) | copy( ray ) {
method at (line 14976) | at( t, target ) {
method lookAt (line 14988) | lookAt( v ) {
method recast (line 15002) | recast( t ) {
method closestPointToPoint (line 15017) | closestPointToPoint( point, target ) {
method distanceToPoint (line 15039) | distanceToPoint( point ) {
method distanceSqToPoint (line 15051) | distanceSqToPoint( point ) {
method distanceSqToSegment (line 15078) | distanceSqToSegment( v0, v1, optionalPointOnRay, optionalPointOnSegmen...
method intersectSphere (line 15205) | intersectSphere( sphere, target ) {
method intersectsSphere (line 15241) | intersectsSphere( sphere ) {
method distanceToPlane (line 15256) | distanceToPlane( plane ) {
method intersectPlane (line 15291) | intersectPlane( plane, target ) {
method intersectsPlane (line 15311) | intersectsPlane( plane ) {
method intersectBox (line 15345) | intersectBox( box, target ) {
method intersectsBox (line 15417) | intersectsBox( box ) {
method intersectTriangle (line 15434) | intersectTriangle( a, b, c, backfaceCulling, target ) {
method applyMatrix4 (line 15515) | applyMatrix4( matrix4 ) {
method equals (line 15530) | equals( ray ) {
method clone (line 15541) | clone() {
class Matrix4$1 (line 15587) | class Matrix4$1 {
method constructor (line 15611) | constructor( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n3...
method set (line 15666) | set( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, ...
method identity (line 15684) | identity() {
method clone (line 15704) | clone() {
method copy (line 15716) | copy( m ) {
method copyPosition (line 15737) | copyPosition( m ) {
method setFromMatrix3 (line 15755) | setFromMatrix3( m ) {
method extractBasis (line 15780) | extractBasis( xAxis, yAxis, zAxis ) {
method makeBasis (line 15798) | makeBasis( xAxis, yAxis, zAxis ) {
method extractRotation (line 15820) | extractRotation( m ) {
method makeRotationFromEuler (line 15863) | makeRotationFromEuler( euler ) {
method makeRotationFromQuaternion (line 15993) | makeRotationFromQuaternion( q ) {
method lookAt (line 16008) | lookAt( eye, target, up ) {
method multiply (line 16061) | multiply( m ) {
method premultiply (line 16073) | premultiply( m ) {
method multiplyMatrices (line 16087) | multiplyMatrices( a, b ) {
method multiplyScalar (line 16133) | multiplyScalar( s ) {
method determinant (line 16153) | determinant() {
method transpose (line 16207) | transpose() {
method setPosition (line 16233) | setPosition( x, y, z ) {
method invert (line 16262) | invert() {
method scale (line 16313) | scale( v ) {
method getMaxScaleOnAxis (line 16332) | getMaxScaleOnAxis() {
method makeTranslation (line 16352) | makeTranslation( x, y, z ) {
method makeRotationX (line 16389) | makeRotationX( theta ) {
method makeRotationY (line 16413) | makeRotationY( theta ) {
method makeRotationZ (line 16437) | makeRotationZ( theta ) {
method makeRotationAxis (line 16465) | makeRotationAxis( axis, angle ) {
method makeScale (line 16496) | makeScale( x, y, z ) {
method makeShear (line 16522) | makeShear( xy, xz, yx, yz, zx, zy ) {
method compose (line 16546) | compose( position, quaternion, scale ) {
method decompose (line 16595) | decompose( position, quaternion, scale ) {
method makePerspective (line 16653) | makePerspective( left, right, top, bottom, near, far, coordinateSystem...
method makeOrthographic (line 16702) | makeOrthographic( left, right, top, bottom, near, far, coordinateSyste...
method equals (line 16745) | equals( matrix ) {
method fromArray (line 16767) | fromArray( array, offset = 0 ) {
method toArray (line 16787) | toArray( array = [], offset = 0 ) {
class Euler (line 16844) | class Euler {
method constructor (line 16854) | constructor( x = 0, y = 0, z = 0, order = Euler.DEFAULT_ORDER ) {
method x (line 16878) | get x() {
method x (line 16884) | set x( value ) {
method y (line 16897) | get y() {
method y (line 16903) | set y( value ) {
method z (line 16916) | get z() {
method z (line 16922) | set z( value ) {
method order (line 16935) | get order() {
method order (line 16941) | set order( value ) {
method set (line 16957) | set( x, y, z, order = this._order ) {
method clone (line 16975) | clone() {
method copy (line 16987) | copy( euler ) {
method setFromRotationMatrix (line 17008) | setFromRotationMatrix( m, order = this._order, update = true ) {
method setFromQuaternion (line 17147) | setFromQuaternion( q, order, update ) {
method setFromVector3 (line 17162) | setFromVector3( v, order = this._order ) {
method reorder (line 17178) | reorder( newOrder ) {
method equals (line 17192) | equals( euler ) {
method fromArray (line 17206) | fromArray( array ) {
method toArray (line 17227) | toArray( array = [], offset = 0 ) {
method _onChange (line 17238) | _onChange( callback ) {
method _onChangeCallback (line 17246) | _onChangeCallback() {}
method [ Symbol.iterator ] (line 17248) | *[ Symbol.iterator ]() {
class Layers (line 17280) | class Layers {
method constructor (line 17286) | constructor() {
method set (line 17303) | set( layer ) {
method enable (line 17314) | enable( layer ) {
method enableAll (line 17323) | enableAll() {
method toggle (line 17334) | toggle( layer ) {
method disable (line 17345) | disable( layer ) {
method disableAll (line 17354) | disableAll() {
method test (line 17367) | test( layers ) {
method isEnabled (line 17379) | isEnabled( layer ) {
class Object3D$1 (line 17440) | class Object3D$1 extends EventDispatcher {
method constructor (line 17445) | constructor() {
method onBeforeShadow (line 17754) | onBeforeShadow( /* renderer, object, camera, shadowCamera, geometry, d...
method onAfterShadow (line 17767) | onAfterShadow( /* renderer, object, camera, shadowCamera, geometry, de...
method onBeforeRender (line 17779) | onBeforeRender( /* renderer, scene, camera, geometry, material, group ...
method onAfterRender (line 17791) | onAfterRender( /* renderer, scene, camera, geometry, material, group *...
method applyMatrix4 (line 17799) | applyMatrix4( matrix ) {
method applyQuaternion (line 17815) | applyQuaternion( q ) {
method setRotationFromAxisAngle (line 17829) | setRotationFromAxisAngle( axis, angle ) {
method setRotationFromEuler (line 17842) | setRotationFromEuler( euler ) {
method setRotationFromMatrix (line 17854) | setRotationFromMatrix( m ) {
method setRotationFromQuaternion (line 17867) | setRotationFromQuaternion( q ) {
method rotateOnAxis (line 17882) | rotateOnAxis( axis, angle ) {
method rotateOnWorldAxis (line 17902) | rotateOnWorldAxis( axis, angle ) {
method rotateX (line 17922) | rotateX( angle ) {
method rotateY (line 17934) | rotateY( angle ) {
method rotateZ (line 17946) | rotateZ( angle ) {
method translateOnAxis (line 17959) | translateOnAxis( axis, distance ) {
method translateX (line 17978) | translateX( distance ) {
method translateY (line 17990) | translateY( distance ) {
method translateZ (line 18002) | translateZ( distance ) {
method localToWorld (line 18014) | localToWorld( vector ) {
method worldToLocal (line 18028) | worldToLocal( vector ) {
method lookAt (line 18045) | lookAt( x, y, z ) {
method add (line 18097) | add( object ) {
method remove (line 18149) | remove( object ) {
method removeFromParent (line 18189) | removeFromParent() {
method clear (line 18210) | clear() {
method attach (line 18225) | attach( object ) {
method getObjectById (line 18268) | getObjectById( id ) {
method getObjectByName (line 18281) | getObjectByName( name ) {
method getObjectByProperty (line 18295) | getObjectByProperty( name, value ) {
method getObjectsByProperty (line 18325) | getObjectsByProperty( name, value, result = [] ) {
method getWorldPosition (line 18347) | getWorldPosition( target ) {
method getWorldQuaternion (line 18361) | getWorldQuaternion( target ) {
method getWorldScale (line 18377) | getWorldScale( target ) {
method getWorldDirection (line 18393) | getWorldDirection( target ) {
method raycast (line 18412) | raycast( /* raycaster, intersects */ ) {}
method traverse (line 18421) | traverse( callback ) {
method traverseVisible (line 18443) | traverseVisible( callback ) {
method traverseAncestors (line 18466) | traverseAncestors( callback ) {
method updateMatrix (line 18484) | updateMatrix() {
method updateMatrixWorld (line 18503) | updateMatrixWorld( force ) {
method updateWorldMatrix (line 18550) | updateWorldMatrix( updateParents, updateChildren ) {
method toJSON (line 18601) | toJSON( meta ) {
method clone (line 18903) | clone( recursive ) {
method copy (line 18916) | copy( source, recursive = true ) {
class Triangle (line 19014) | class Triangle {
method constructor (line 19023) | constructor( a = new Vector3$1(), b = new Vector3$1(), c = new Vector3...
method getNormal (line 19057) | static getNormal( a, b, c, target ) {
method getBarycoord (line 19085) | static getBarycoord( point, a, b, c, target ) {
method containsPoint (line 19129) | static containsPoint( point, a, b, c ) {
method getInterpolation (line 19156) | static getInterpolation( point, p1, p2, p3, v1, v2, v3, target ) {
method getInterpolatedAttribute (line 19188) | static getInterpolatedAttribute( attr, i1, i2, i3, barycoord, target ) {
method isFrontFacing (line 19216) | static isFrontFacing( a, b, c, direction ) {
method set (line 19234) | set( a, b, c ) {
method setFromPointsAndIndices (line 19253) | setFromPointsAndIndices( points, i0, i1, i2 ) {
method setFromAttributeAndIndices (line 19272) | setFromAttributeAndIndices( attribute, i0, i1, i2 ) {
method clone (line 19287) | clone() {
method copy (line 19299) | copy( triangle ) {
method getArea (line 19314) | getArea() {
method getMidpoint (line 19329) | getMidpoint( target ) {
method getNormal (line 19341) | getNormal( target ) {
method getPlane (line 19353) | getPlane( target ) {
method getBarycoord (line 19367) | getBarycoord( point, target ) {
method getInterpolation (line 19384) | getInterpolation( point, v1, v2, v3, target ) {
method containsPoint (line 19398) | containsPoint( point ) {
method isFrontFacing (line 19410) | isFrontFacing( direction ) {
method intersectsBox (line 19422) | intersectsBox( box ) {
method closestPointToPoint (line 19435) | closestPointToPoint( p, target ) {
method equals (line 19522) | equals( triangle ) {
function hue2rgb (line 19558) | function hue2rgb( p, q, t ) {
class Color$1 (line 19612) | class Color$1 {
method constructor (line 19625) | constructor( r, g, b ) {
method set (line 19673) | set( r, g, b ) {
method setScalar (line 19711) | setScalar( scalar ) {
method setHex (line 19728) | setHex( hex, colorSpace = SRGBColorSpace ) {
method setRGB (line 19751) | setRGB( r, g, b, colorSpace = ColorManagement.workingColorSpace ) {
method setHSL (line 19772) | setHSL( h, s, l, colorSpace = ColorManagement.workingColorSpace ) {
method setStyle (line 19810) | setStyle( style, colorSpace = SRGBColorSpace ) {
method setColorName (line 19949) | setColorName( style, colorSpace = SRGBColorSpace ) {
method clone (line 19975) | clone() {
method copy (line 19987) | copy( color ) {
method copySRGBToLinear (line 20004) | copySRGBToLinear( color ) {
method copyLinearToSRGB (line 20021) | copyLinearToSRGB( color ) {
method convertSRGBToLinear (line 20036) | convertSRGBToLinear() {
method convertLinearToSRGB (line 20049) | convertLinearToSRGB() {
method getHex (line 20063) | getHex( colorSpace = SRGBColorSpace ) {
method getHexString (line 20077) | getHexString( colorSpace = SRGBColorSpace ) {
method getHSL (line 20091) | getHSL( target, colorSpace = ColorManagement.workingColorSpace ) {
method getRGB (line 20143) | getRGB( target, colorSpace = ColorManagement.workingColorSpace ) {
method getStyle (line 20161) | getStyle( colorSpace = SRGBColorSpace ) {
method offsetHSL (line 20188) | offsetHSL( h, s, l ) {
method add (line 20202) | add( color ) {
method addColors (line 20219) | addColors( color1, color2 ) {
method addScalar (line 20235) | addScalar( s ) {
method sub (line 20251) | sub( color ) {
method multiply (line 20267) | multiply( color ) {
method multiplyScalar (line 20283) | multiplyScalar( s ) {
method lerp (line 20302) | lerp( color, alpha ) {
method lerpColors (line 20322) | lerpColors( color1, color2, alpha ) {
method lerpHSL (line 20343) | lerpHSL( color, alpha ) {
method setFromVector3 (line 20364) | setFromVector3( v ) {
method applyMatrix3 (line 20380) | applyMatrix3( m ) {
method equals (line 20399) | equals( c ) {
method fromArray (line 20412) | fromArray( array, offset = 0 ) {
method toArray (line 20430) | toArray( array = [], offset = 0 ) {
method fromBufferAttribute (line 20447) | fromBufferAttribute( attribute, index ) {
method toJSON (line 20463) | toJSON() {
method [ Symbol.iterator ] (line 20469) | *[ Symbol.iterator ]() {
class Material$1 (line 20501) | class Material$1 extends EventDispatcher {
method constructor (line 20506) | constructor() {
method alphaTest (line 20971) | get alphaTest() {
method alphaTest (line 20977) | set alphaTest( value ) {
method onBeforeRender (line 21001) | onBeforeRender( /* renderer, scene, camera, geometry, object, group */...
method onBeforeCompile (line 21015) | onBeforeCompile( /* shaderobject, renderer */ ) {}
method customProgramCacheKey (line 21026) | customProgramCacheKey() {
method setValues (line 21039) | setValues( values ) {
method toJSON (line 21088) | toJSON( meta ) {
method clone (line 21360) | clone() {
method copy (line 21372) | copy( source ) {
method dispose (line 21459) | dispose() {
method needsUpdate (line 21479) | set needsUpdate( value ) {
class MeshBasicMaterial$1 (line 21494) | class MeshBasicMaterial$1 extends Material$1 {
method constructor (line 21505) | constructor( parameters ) {
method copy (line 21693) | copy( source ) {
class BufferAttribute$1 (line 21743) | class BufferAttribute$1 {
method constructor (line 21752) | constructor( array, itemSize, normalized = false ) {
method onUploadCallback (line 21865) | onUploadCallback() {}
method needsUpdate (line 21875) | set needsUpdate( value ) {
method setUsage (line 21887) | setUsage( value ) {
method addUpdateRange (line 21901) | addUpdateRange( start, count ) {
method clearUpdateRanges (line 21910) | clearUpdateRanges() {
method copy (line 21922) | copy( source ) {
method copyAt (line 21947) | copyAt( index1, attribute, index2 ) {
method copyArray (line 21968) | copyArray( array ) {
method applyMatrix3 (line 21983) | applyMatrix3( m ) {
method applyMatrix4 (line 22020) | applyMatrix4( m ) {
method applyNormalMatrix (line 22043) | applyNormalMatrix( m ) {
method transformDirection (line 22066) | transformDirection( m ) {
method set (line 22089) | set( value, offset = 0 ) {
method getComponent (line 22105) | getComponent( index, component ) {
method setComponent (line 22123) | setComponent( index, component, value ) {
method getX (line 22139) | getX( index ) {
method setX (line 22156) | setX( index, x ) {
method getY (line 22172) | getY( index ) {
method setY (line 22189) | setY( index, y ) {
method getZ (line 22205) | getZ( index ) {
method setZ (line 22222) | setZ( index, z ) {
method getW (line 22238) | getW( index ) {
method setW (line 22255) | setW( index, w ) {
method setXY (line 22273) | setXY( index, x, y ) {
method setXYZ (line 22300) | setXYZ( index, x, y, z ) {
method setXYZW (line 22330) | setXYZW( index, x, y, z, w ) {
method onUpload (line 22360) | onUpload( callback ) {
method clone (line 22373) | clone() {
method toJSON (line 22384) | toJSON() {
class Uint16BufferAttribute (line 22408) | class Uint16BufferAttribute extends BufferAttribute$1 {
method constructor (line 22417) | constructor( array, itemSize, normalized ) {
class Uint32BufferAttribute (line 22431) | class Uint32BufferAttribute extends BufferAttribute$1 {
method constructor (line 22440) | constructor( array, itemSize, normalized ) {
class Float32BufferAttribute (line 22454) | class Float32BufferAttribute extends BufferAttribute$1 {
method constructor (line 22463) | constructor( array, itemSize, normalized ) {
class BufferGeometry$1 (line 22506) | class BufferGeometry$1 extends EventDispatcher {
method constructor (line 22511) | constructor() {
method getIndex (line 22653) | getIndex() {
method setIndex (line 22665) | setIndex( index ) {
method setIndirect (line 22687) | setIndirect( indirect ) {
method getIndirect (line 22700) | getIndirect() {
method getAttribute (line 22713) | getAttribute( name ) {
method setAttribute (line 22726) | setAttribute( name, attribute ) {
method deleteAttribute (line 22740) | deleteAttribute( name ) {
method hasAttribute (line 22754) | hasAttribute( name ) {
method addGroup (line 22768) | addGroup( start, count, materialIndex = 0 ) {
method clearGroups (line 22783) | clearGroups() {
method setDrawRange (line 22796) | setDrawRange( start, count ) {
method applyMatrix4 (line 22809) | applyMatrix4( matrix ) {
method applyQuaternion (line 22865) | applyQuaternion( q ) {
method rotateX (line 22883) | rotateX( angle ) {
method rotateY (line 22903) | rotateY( angle ) {
method rotateZ (line 22923) | rotateZ( angle ) {
method translate (line 22945) | translate( x, y, z ) {
method scale (line 22967) | scale( x, y, z ) {
method lookAt (line 22987) | lookAt( vector ) {
method center (line 23004) | center() {
method setFromPoints (line 23027) | setFromPoints( points ) {
method computeBoundingBox (line 23074) | computeBoundingBox() {
method computeBoundingSphere (line 23149) | computeBoundingSphere() {
method computeTangents (line 23268) | computeTangents() {
method computeVertexNormals (line 23433) | computeVertexNormals() {
method normalizeNormals (line 23529) | normalizeNormals() {
method toNonIndexed (line 23551) | toNonIndexed() {
method toJSON (line 23658) | toJSON() {
method clone (line 23773) | clone() {
method copy (line 23785) | copy( source ) {
method dispose (line 23896) | dispose() {
class Mesh$1 (line 23931) | class Mesh$1 extends Object3D$1 {
method constructor (line 23939) | constructor( geometry = new BufferGeometry$1(), material = new MeshBas...
method copy (line 24002) | copy( source, recursive ) {
method updateMorphTargets (line 24029) | updateMorphTargets() {
method getVertexPosition (line 24068) | getVertexPosition( index, target ) {
method raycast (line 24118) | raycast( raycaster, intersects ) {
method _computeIntersections (line 24164) | _computeIntersections( raycaster, intersects, rayLocalSpace ) {
function checkIntersection$1 (line 24301) | function checkIntersection$1( object, material, raycaster, ray, pA, pB, ...
function checkGeometryIntersection (line 24332) | function checkGeometryIntersection( object, material, raycaster, ray, uv...
class BoxGeometry (line 24402) | class BoxGeometry extends BufferGeometry$1 {
method constructor (line 24414) | constructor( width = 1, height = 1, depth = 1, widthSegments = 1, heig...
method copy (line 24576) | copy( source ) {
method fromJSON (line 24593) | static fromJSON( data ) {
function cloneUniforms (line 24603) | function cloneUniforms( src ) {
function mergeUniforms (line 24649) | function mergeUniforms( uniforms ) {
function cloneUniformsGroups (line 24669) | function cloneUniformsGroups( src ) {
function getUnlitUniformColorSpace (line 24683) | function getUnlitUniformColorSpace( renderer ) {
class ShaderMaterial (line 24745) | class ShaderMaterial extends Material$1 {
method constructor (line 24756) | constructor( parameters ) {
method copy (line 24965) | copy( source ) {
method toJSON (line 24992) | toJSON( meta ) {
class Camera$1 (line 25096) | class Camera$1 extends Object3D$1 {
method constructor (line 25101) | constructor() {
method copy (line 25146) | copy( source, recursive ) {
method getWorldDirection (line 25170) | getWorldDirection( target ) {
method updateMatrixWorld (line 25176) | updateMatrixWorld( force ) {
method updateWorldMatrix (line 25184) | updateWorldMatrix( updateParents, updateChildren ) {
method clone (line 25192) | clone() {
class PerspectiveCamera$1 (line 25217) | class PerspectiveCamera$1 extends Camera$1 {
method constructor (line 25227) | constructor( fov = 50, aspect = 1, near = 0.1, far = 2000 ) {
method copy (line 25329) | copy( source, recursive ) {
method setFocalLength (line 25358) | setFocalLength( focalLength ) {
method getFocalLength (line 25374) | getFocalLength() {
method getEffectiveFOV (line 25387) | getEffectiveFOV() {
method getFilmWidth (line 25400) | getFilmWidth() {
method getFilmHeight (line 25413) | getFilmHeight() {
method getViewBounds (line 25428) | getViewBounds( distance, minTarget, maxTarget ) {
method getViewSize (line 25447) | getViewSize( distance, target ) {
method setViewOffset (line 25498) | setViewOffset( fullWidth, fullHeight, x, y, width, height ) {
method clearViewOffset (line 25531) | clearViewOffset() {
method updateProjectionMatrix (line 25547) | updateProjectionMatrix() {
method toJSON (line 25577) | toJSON( meta ) {
class CubeCamera (line 25634) | class CubeCamera extends Object3D$1 {
method constructor (line 25643) | constructor( near, far, renderTarget ) {
method updateCoordinateSystem (line 25701) | updateCoordinateSystem() {
method update (line 25774) | update( renderer, scene ) {
class CubeTexture (line 25851) | class CubeTexture extends Texture$1 {
method constructor (line 25867) | constructor( images = [], mapping = CubeReflectionMapping, wrapS, wrap...
method images (line 25898) | get images() {
method images (line 25904) | set images( value ) {
class WebGLCubeRenderTarget (line 25917) | class WebGLCubeRenderTarget extends WebGLRenderTarget {
method constructor (line 25925) | constructor( size = 1, options = {} ) {
method fromEquirectangularTexture (line 25968) | fromEquirectangularTexture( renderer, texture ) {
method clear (line 26066) | clear( renderer, color = true, depth = true, stencil = true ) {
class Group$1 (line 26101) | class Group$1 extends Object3D$1 {
method constructor (line 26103) | constructor() {
class WebXRController (line 26130) | class WebXRController {
method constructor (line 26135) | constructor() {
method getHandSpace (line 26174) | getHandSpace() {
method getTargetRaySpace (line 26196) | getTargetRaySpace() {
method getGripSpace (line 26219) | getGripSpace() {
method dispatchEvent (line 26244) | dispatchEvent( event ) {
method connect (line 26274) | connect( inputSource ) {
method disconnect (line 26305) | disconnect( inputSource ) {
method update (line 26341) | update( inputSource, frame, referenceSpace ) {
method _getHandJoint (line 26526) | _getHandJoint( hand, inputjoint ) {
class Fog$1 (line 26554) | class Fog$1 {
method constructor (line 26563) | constructor( color, near = 1, far = 1000 ) {
method clone (line 26614) | clone() {
method toJSON (line 26626) | toJSON( /* meta */ ) {
class Scene$1 (line 26646) | class Scene$1 extends Object3D$1 {
method constructor (line 26651) | constructor() {
method copy (line 26759) | copy( source, recursive ) {
method toJSON (line 26782) | toJSON( meta ) {
class InterleavedBuffer$1 (line 26807) | class InterleavedBuffer$1 {
method constructor (line 26815) | constructor( array, stride ) {
method onUploadCallback (line 26888) | onUploadCallback() {}
method needsUpdate (line 26898) | set needsUpdate( value ) {
method setUsage (line 26910) | setUsage( value ) {
method addUpdateRange (line 26924) | addUpdateRange( start, count ) {
method clearUpdateRanges (line 26933) | clearUpdateRanges() {
method copy (line 26945) | copy( source ) {
method copyAt (line 26966) | copyAt( index1, interleavedBuffer, index2 ) {
method set (line 26988) | set( value, offset = 0 ) {
method clone (line 27002) | clone( data ) {
method onUpload (line 27039) | onUpload( callback ) {
method toJSON (line 27053) | toJSON( data ) {
class InterleavedBufferAttribute$1 (line 27095) | class InterleavedBufferAttribute$1 {
method constructor (line 27105) | constructor( interleavedBuffer, itemSize, offset, normalized = false ) {
method count (line 27159) | get count() {
method array (line 27170) | get array() {
method needsUpdate (line 27184) | set needsUpdate( value ) {
method applyMatrix4 (line 27197) | applyMatrix4( m ) {
method applyNormalMatrix (line 27220) | applyNormalMatrix( m ) {
method transformDirection (line 27243) | transformDirection( m ) {
method getComponent (line 27266) | getComponent( index, component ) {
method setComponent (line 27284) | setComponent( index, component, value ) {
method setX (line 27301) | setX( index, x ) {
method setY (line 27318) | setY( index, y ) {
method setZ (line 27335) | setZ( index, z ) {
method setW (line 27352) | setW( index, w ) {
method getX (line 27368) | getX( index ) {
method getY (line 27384) | getY( index ) {
method getZ (line 27400) | getZ( index ) {
method getW (line 27416) | getW( index ) {
method setXY (line 27434) | setXY( index, x, y ) {
method setXYZ (line 27461) | setXYZ( index, x, y, z ) {
method setXYZW (line 27491) | setXYZW( index, x, y, z, w ) {
method clone (line 27521) | clone( data ) {
method toJSON (line 27571) | toJSON( data ) {
class SpriteMaterial (line 27644) | class SpriteMaterial extends Material$1 {
method constructor (line 27655) | constructor( parameters ) {
method copy (line 27740) | copy( source ) {
class Sprite (line 27797) | class Sprite extends Object3D$1 {
method constructor (line 27804) | constructor( material = new SpriteMaterial() ) {
method raycast (line 27879) | raycast( raycaster, intersects ) {
method copy (line 27954) | copy( source, recursive ) {
function transformVertex (line 27968) | function transformVertex( vertexPosition, mvPosition, center, scale, sin...
class InstancedBufferAttribute (line 28000) | class InstancedBufferAttribute extends BufferAttribute$1 {
method constructor (line 28010) | constructor( array, itemSize, normalized, meshPerAttribute = 1 ) {
method copy (line 28036) | copy( source ) {
method toJSON (line 28046) | toJSON() {
class Plane (line 28069) | class Plane {
method constructor (line 28077) | constructor( normal = new Vector3$1( 1, 0, 0 ), constant = 0 ) {
method set (line 28112) | set( normal, constant ) {
method setComponents (line 28131) | setComponents( x, y, z, w ) {
method setFromNormalAndCoplanarPoint (line 28148) | setFromNormalAndCoplanarPoint( normal, point ) {
method setFromCoplanarPoints (line 28167) | setFromCoplanarPoints( a, b, c ) {
method copy (line 28185) | copy( plane ) {
method normalize (line 28199) | normalize() {
method negate (line 28216) | negate() {
method distanceToPoint (line 28231) | distanceToPoint( point ) {
method distanceToSphere (line 28243) | distanceToSphere( sphere ) {
method projectPoint (line 28256) | projectPoint( point, target ) {
method intersectLine (line 28271) | intersectLine( line, target ) {
method intersectsLine (line 28309) | intersectsLine( line ) {
method intersectsBox (line 28326) | intersectsBox( box ) {
method intersectsSphere (line 28338) | intersectsSphere( sphere ) {
method coplanarPoint (line 28351) | coplanarPoint( target ) {
method applyMatrix4 (line 28369) | applyMatrix4( matrix, optionalNormalMatrix ) {
method translate (line 28390) | translate( offset ) {
method equals (line 28404) | equals( plane ) {
method clone (line 28415) | clone() {
class Frustum (line 28433) | class Frustum {
method constructor (line 28445) | constructor( p0 = new Plane(), p1 = new Plane(), p2 = new Plane(), p3 ...
method set (line 28467) | set( p0, p1, p2, p3, p4, p5 ) {
method copy (line 28488) | copy( frustum ) {
method setFromProjectionMatrix (line 28509) | setFromProjectionMatrix( m, coordinateSystem = WebGLCoordinateSystem ) {
method intersectsObject (line 28550) | intersectsObject( object ) {
method intersectsSprite (line 28578) | intersectsSprite( sprite ) {
method intersectsSphere (line 28594) | intersectsSphere( sphere ) {
method intersectsBox (line 28622) | intersectsBox( box ) {
method containsPoint (line 28654) | containsPoint( point ) {
method clone (line 28677) | clone() {
class LineBasicMaterial$1 (line 28696) | class LineBasicMaterial$1 extends Material$1 {
method constructor (line 28707) | constructor( parameters ) {
method copy (line 28783) | copy( source ) {
class Line$2 (line 28833) | class Line$2 extends Object3D$1 {
method constructor (line 28841) | constructor( geometry = new BufferGeometry$1(), material = new LineBas...
method copy (line 28895) | copy( source, recursive ) {
method computeLineDistances (line 28913) | computeLineDistances() {
method raycast (line 28952) | raycast( raycaster, intersects ) {
method updateMorphTargets (line 29055) | updateMorphTargets() {
function checkIntersection (line 29088) | function checkIntersection( object, raycaster, ray, thresholdSq, a, b, i...
class LineSegments$1 (line 29129) | class LineSegments$1 extends Line$2 {
method constructor (line 29137) | constructor( geometry, material ) {
method computeLineDistances (line 29154) | computeLineDistances() {
class CanvasTexture (line 29197) | class CanvasTexture extends Texture$1 {
method constructor (line 29212) | constructor( canvas, mapping, wrapS, wrapT, magFilter, minFilter, form...
class DepthTexture (line 29237) | class DepthTexture extends Texture$1 {
method constructor (line 29254) | constructor( width, height, type = UnsignedIntType, mapping, wrapS, wr...
method copy (line 29307) | copy( source ) {
method toJSON (line 29318) | toJSON( meta ) {
class CylinderGeometry (line 29342) | class CylinderGeometry extends BufferGeometry$1 {
method constructor (line 29357) | constructor( radiusTop = 1, radiusBottom = 1, height = 1, radialSegmen...
method copy (line 29630) | copy( source ) {
method fromJSON (line 29647) | static fromJSON( data ) {
class PolyhedronGeometry (line 29662) | class PolyhedronGeometry extends BufferGeometry$1 {
method constructor (line 29672) | constructor( vertices = [], indices = [], radius = 1, detail = 0 ) {
method copy (line 29972) | copy( source ) {
method fromJSON (line 29989) | static fromJSON( data ) {
class Curve$1 (line 30003) | class Curve$1 {
method constructor (line 30008) | constructor() {
method getPoint (line 30058) | getPoint( /* t, optionalTarget */ ) {
method getPointAt (line 30073) | getPointAt( u, optionalTarget ) {
method getPoints (line 30087) | getPoints( divisions = 5 ) {
method getSpacedPoints (line 30111) | getSpacedPoints( divisions = 5 ) {
method getLength (line 30130) | getLength() {
method getLengths (line 30143) | getLengths( divisions = this.arcLengthDivisions ) {
method updateArcLengths (line 30182) | updateArcLengths() {
method getUtoTmapping (line 30198) | getUtoTmapping( u, distance = null ) {
method getTangent (line 30283) | getTangent( t, optionalTarget ) {
method getTangentAt (line 30313) | getTangentAt( u, optionalTarget ) {
method computeFrenetFrames (line 30328) | computeFrenetFrames( segments, closed = false ) {
method clone (line 30447) | clone() {
method copy (line 30459) | copy( source ) {
method toJSON (line 30473) | toJSON() {
method fromJSON (line 30496) | fromJSON( json ) {
class EllipseCurve (line 30529) | class EllipseCurve extends Curve$1 {
method constructor (line 30543) | constructor( aX = 0, aY = 0, xRadius = 1, yRadius = 1, aStartAngle = 0...
method getPoint (line 30633) | getPoint( t, optionalTarget = new Vector2$1() ) {
method copy (line 30695) | copy( source ) {
method toJSON (line 30716) | toJSON() {
method fromJSON (line 30737) | fromJSON( json ) {
class ArcCurve (line 30765) | class ArcCurve extends EllipseCurve {
method constructor (line 30777) | constructor( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {
function CubicPoly (line 30796) | function CubicPoly() {
class CatmullRomCurve3 (line 30901) | class CatmullRomCurve3 extends Curve$1 {
method constructor (line 30911) | constructor( points = [], closed = false, curveType = 'centripetal', t...
method getPoint (line 30966) | getPoint( t, optionalTarget = new Vector3$1() ) {
method copy (line 31052) | copy( source ) {
method toJSON (line 31074) | toJSON() {
method fromJSON (line 31095) | fromJSON( json ) {
function CatmullRom (line 31130) | function CatmullRom( t, p0, p1, p2, p3 ) {
function QuadraticBezierP0 (line 31142) | function QuadraticBezierP0( t, p ) {
function QuadraticBezierP1 (line 31149) | function QuadraticBezierP1( t, p ) {
function QuadraticBezierP2 (line 31155) | function QuadraticBezierP2( t, p ) {
function QuadraticBezier (line 31170) | function QuadraticBezier( t, p0, p1, p2 ) {
function CubicBezierP0 (line 31179) | function CubicBezierP0( t, p ) {
function CubicBezierP1 (line 31186) | function CubicBezierP1( t, p ) {
function CubicBezierP2 (line 31193) | function CubicBezierP2( t, p ) {
function CubicBezierP3 (line 31199) | function CubicBezierP3( t, p ) {
function CubicBezier (line 31215) | function CubicBezier( t, p0, p1, p2, p3 ) {
class CubicBezierCurve (line 31244) | class CubicBezierCurve extends Curve$1 {
method constructor (line 31254) | constructor( v0 = new Vector2$1(), v1 = new Vector2$1(), v2 = new Vect...
method getPoint (line 31306) | getPoint( t, optionalTarget = new Vector2$1() ) {
method copy (line 31321) | copy( source ) {
method toJSON (line 31334) | toJSON() {
method fromJSON (line 31347) | fromJSON( json ) {
class CubicBezierCurve3 (line 31367) | class CubicBezierCurve3 extends Curve$1 {
method constructor (line 31377) | constructor( v0 = new Vector3$1(), v1 = new Vector3$1(), v2 = new Vect...
method getPoint (line 31429) | getPoint( t, optionalTarget = new Vector3$1() ) {
method copy (line 31445) | copy( source ) {
method toJSON (line 31458) | toJSON() {
method fromJSON (line 31471) | fromJSON( json ) {
class LineCurve (line 31491) | class LineCurve extends Curve$1 {
method constructor (line 31499) | constructor( v1 = new Vector2$1(), v2 = new Vector2$1() ) {
method getPoint (line 31537) | getPoint( t, optionalTarget = new Vector2$1() ) {
method getPointAt (line 31557) | getPointAt( u, optionalTarget ) {
method getTangent (line 31563) | getTangent( t, optionalTarget = new Vector2$1() ) {
method getTangentAt (line 31569) | getTangentAt( u, optionalTarget ) {
method copy (line 31575) | copy( source ) {
method toJSON (line 31586) | toJSON() {
method fromJSON (line 31597) | fromJSON( json ) {
class LineCurve3 (line 31615) | class LineCurve3 extends Curve$1 {
method constructor (line 31623) | constructor( v1 = new Vector3$1(), v2 = new Vector3$1() ) {
method getPoint (line 31661) | getPoint( t, optionalTarget = new Vector3$1() ) {
method getPointAt (line 31681) | getPointAt( u, optionalTarget ) {
method getTangent (line 31687) | getTangent( t, optionalTarget = new Vector3$1() ) {
method getTangentAt (line 31693) | getTangentAt( u, optionalTarget ) {
method copy (line 31699) | copy( source ) {
method toJSON (line 31710) | toJSON() {
method fromJSON (line 31721) | fromJSON( json ) {
class QuadraticBezierCurve (line 31755) | class QuadraticBezierCurve extends Curve$1 {
method constructor (line 31764) | constructor( v0 = new Vector2$1(), v1 = new Vector2$1(), v2 = new Vect...
method getPoint (line 31809) | getPoint( t, optionalTarget = new Vector2$1() ) {
method copy (line 31824) | copy( source ) {
method toJSON (line 31836) | toJSON() {
method fromJSON (line 31848) | fromJSON( json ) {
class QuadraticBezierCurve3 (line 31867) | class QuadraticBezierCurve3 extends Curve$1 {
method constructor (line 31876) | constructor( v0 = new Vector3$1(), v1 = new Vector3$1(), v2 = new Vect...
method getPoint (line 31921) | getPoint( t, optionalTarget = new Vector3$1() ) {
method copy (line 31937) | copy( source ) {
method toJSON (line 31949) | toJSON() {
method fromJSON (line 31961) | fromJSON( json ) {
class SplineCurve (line 31999) | class SplineCurve extends Curve$1 {
method constructor (line 32006) | constructor( points = [] ) {
method getPoint (line 32037) | getPoint( t, optionalTarget = new Vector2$1() ) {
method copy (line 32061) | copy( source ) {
method toJSON (line 32079) | toJSON() {
method fromJSON (line 32096) | fromJSON( json ) {
class IcosahedronGeometry (line 32141) | class IcosahedronGeometry extends PolyhedronGeometry {
method constructor (line 32149) | constructor( radius = 1, detail = 0 ) {
method fromJSON (line 32191) | static fromJSON( data ) {
class PlaneGeometry (line 32211) | class PlaneGeometry extends BufferGeometry$1 {
method constructor (line 32221) | constructor( width = 1, height = 1, widthSegments = 1, heightSegments ...
method copy (line 32302) | copy( source ) {
method fromJSON (line 32319) | static fromJSON( data ) {
class SphereGeometry$1 (line 32339) | class SphereGeometry$1 extends BufferGeometry$1 {
method constructor (line 32352) | constructor( radius = 1, widthSegments = 32, heightSegments = 16, phiS...
method copy (line 32471) | copy( source ) {
method fromJSON (line 32488) | static fromJSON( data ) {
class TubeGeometry (line 32522) | class TubeGeometry extends BufferGeometry$1 {
method constructor (line 32533) | constructor( path = new QuadraticBezierCurve3( new Vector3$1( -1, -1, ...
method copy (line 32697) | copy( source ) {
method toJSON (line 32707) | toJSON() {
method fromJSON (line 32724) | static fromJSON( data ) {
class MeshStandardMaterial$1 (line 32773) | class MeshStandardMaterial$1 extends Material$1 {
method constructor (line 32784) | constructor( parameters ) {
method copy (line 33099) | copy( source ) {
class MeshPhongMaterial (line 33171) | class MeshPhongMaterial extends Material$1 {
method constructor (line 33182) | constructor( parameters ) {
method copy (line 33505) | copy( source ) {
class MeshDepthMaterial (line 33567) | class MeshDepthMaterial extends Material$1 {
method constructor (line 33578) | constructor( parameters ) {
method copy (line 33681) | copy( source ) {
class MeshDistanceMaterial (line 33715) | class MeshDistanceMaterial extends Material$1 {
method constructor (line 33726) | constructor( parameters ) {
method copy (line 33802) | copy( source ) {
class LineDashedMaterial (line 33836) | class LineDashedMaterial extends LineBasicMaterial$1 {
method constructor (line 33847) | constructor( parameters ) {
method copy (line 33889) | copy( source ) {
class Interpolant (line 33922) | class Interpolant {
method constructor (line 33932) | constructor( parameterPositions, sampleValues, sampleSize, resultBuffe...
method evaluate (line 33994) | evaluate( t ) {
method getSettings_ (line 34159) | getSettings_() {
method copySampleValue_ (line 34171) | copySampleValue_( index ) {
method interpolate_ (line 34200) | interpolate_( /* i1, t0, t, t1 */ ) {
method intervalChanged_ (line 34214) | intervalChanged_( /* i1, t0, t1 */ ) {
class LoadingManager (line 34324) | class LoadingManager {
method constructor (line 34333) | constructor( onLoad, onProgress, onError ) {
class Loader (line 34595) | class Loader {
method constructor (line 34602) | constructor( manager ) {
method load (line 34662) | load( /* url, onLoad, onProgress, onError */ ) {}
method loadAsync (line 34671) | loadAsync( url, onProgress ) {
method parse (line 34689) | parse( /* data */ ) {}
method setCrossOrigin (line 34698) | setCrossOrigin( crossOrigin ) {
method setWithCredentials (line 34714) | setWithCredentials( value ) {
method setPath (line 34727) | setPath( path ) {
method setResourcePath (line 34740) | setResourcePath( resourcePath ) {
method setRequestHeader (line 34754) | setRequestHeader( requestHeader ) {
class HttpError (line 34791) | class HttpError extends Error {
method constructor (line 34793) | constructor( message, response ) {
class FileLoader (line 34817) | class FileLoader extends Loader {
method constructor (line 34824) | constructor( manager ) {
method load (line 34854) | load( url, onLoad, onProgress, onError ) {
method setResponseType (line 35106) | setResponseType( value ) {
method setMimeType (line 35119) | setMimeType( value ) {
class Light (line 35135) | class Light extends Object3D$1 {
method constructor (line 35143) | constructor( color, intensity = 1 ) {
method dispose (line 35179) | dispose() {
method copy (line 35185) | copy( source, recursive ) {
method toJSON (line 35196) | toJSON( meta ) {
class LightShadow (line 35229) | class LightShadow {
method constructor (line 35236) | constructor( camera ) {
method getViewportCount (line 35383) | getViewportCount() {
method getFrustum (line 35394) | getFrustum() {
method updateMatrices (line 35405) | updateMatrices( light ) {
method getViewport (line 35437) | getViewport( viewportIndex ) {
method getFrameExtents (line 35448) | getFrameExtents() {
method dispose (line 35458) | dispose() {
method copy (line 35480) | copy( source ) {
method clone (line 35505) | clone() {
method toJSON (line 35517) | toJSON() {
class OrthographicCamera$1 (line 35550) | class OrthographicCamera$1 extends Camera$1 {
method constructor (line 35562) | constructor( left = -1, right = 1, top = 1, bottom = -1, near = 0.1, f...
method copy (line 35651) | copy( source, recursive ) {
method setViewOffset (line 35681) | setViewOffset( fullWidth, fullHeight, x, y, width, height ) {
method clearViewOffset (line 35712) | clearViewOffset() {
method updateProjectionMatrix (line 35728) | updateProjectionMatrix() {
method toJSON (line 35758) | toJSON( meta ) {
class DirectionalLightShadow (line 35783) | class DirectionalLightShadow extends LightShadow {
method constructor (line 35788) | constructor() {
class DirectionalLight$1 (line 35832) | class DirectionalLight$1 extends Light {
method constructor (line 35840) | constructor( color, intensity ) {
method dispose (line 35881) | dispose() {
method copy (line 35887) | copy( source ) {
class AmbientLight (line 35912) | class AmbientLight extends Light {
method constructor (line 35920) | constructor( color, intensity ) {
class LoaderUtils (line 35942) | class LoaderUtils {
method extractUrlBase (line 35950) | static extractUrlBase( url ) {
method resolveURL (line 35969) | static resolveURL( url, path ) {
class InstancedBufferGeometry (line 36000) | class InstancedBufferGeometry extends BufferGeometry$1 {
method constructor (line 36005) | constructor() {
method copy (line 36030) | copy( source ) {
method toJSON (line 36040) | toJSON() {
class ArrayCamera (line 36065) | class ArrayCamera extends PerspectiveCamera$1 {
method constructor (line 36072) | constructor( array = [] ) {
class Clock (line 36108) | class Clock {
method constructor (line 36116) | constructor( autoStart = true ) {
method start (line 36166) | start() {
method stop (line 36179) | stop() {
method getElapsedTime (line 36192) | getElapsedTime() {
method getDelta (line 36204) | getDelta() {
function now (line 36232) | function now() {
class Raycaster (line 36245) | class Raycaster {
method constructor (line 36255) | constructor( origin, direction, near = 0, far = Infinity ) {
method set (line 36336) | set( origin, direction ) {
method setFromCamera (line 36351) | setFromCamera( coords, camera ) {
method setFromXRController (line 36379) | setFromXRController( controller ) {
method intersectObject (line 36426) | intersectObject( object, recursive = true, intersects = [] ) {
method intersectObjects (line 36446) | intersectObjects( objects, recursive = true, intersects = [] ) {
function ascSort (line 36462) | function ascSort( a, b ) {
function intersect (line 36468) | function intersect( object, raycaster, intersects, recursive ) {
class Line3 (line 36500) | class Line3 {
method constructor (line 36508) | constructor( start = new Vector3$1(), end = new Vector3$1() ) {
method set (line 36533) | set( start, end ) {
method copy (line 36548) | copy( line ) {
method getCenter (line 36563) | getCenter( target ) {
method delta (line 36575) | delta( target ) {
method distanceSq (line 36586) | distanceSq() {
method distance (line 36597) | distance() {
method at (line 36610) | at( t, target ) {
method closestPointToPointParameter (line 36623) | closestPointToPointParameter( point, clampToLine ) {
method closestPointToPoint (line 36651) | closestPointToPoint( point, clampToLine, target ) {
method applyMatrix4 (line 36665) | applyMatrix4( matrix ) {
method equals (line 36680) | equals( line ) {
method clone (line 36691) | clone() {
function getByteLength (line 36708) | function getByteLength( width, height, format, type ) {
function getTextureTypeByteLength (line 36807) | function getTextureTypeByteLength( type ) {
function WebGLAnimation (line 36862) | function WebGLAnimation() {
function WebGLAttributes (line 36914) | function WebGLAttributes( gl ) {
function WebGLBackground (line 38153) | function WebGLBackground( renderer, cubemaps, cubeuvmaps, state, objects...
function WebGLBindingStates (line 38438) | function WebGLBindingStates( gl, attributes ) {
function WebGLBufferRenderer (line 39028) | function WebGLBufferRenderer( gl, extensions, info ) {
function WebGLCapabilities (line 39115) | function WebGLCapabilities( gl, extensions, parameters, utils ) {
function WebGLClipping (line 39255) | function WebGLClipping( properties ) {
function WebGLCubeMaps (line 39421) | function WebGLCubeMaps( renderer ) {
class PMREMGenerator (line 39569) | class PMREMGenerator {
method constructor (line 39576) | constructor( renderer ) {
method fromScene (line 39610) | fromScene( scene, sigma = 0, near = 0.1, far = 100, options = {} ) {
method fromEquirectangular (line 39653) | fromEquirectangular( equirectangular, renderTarget = null ) {
method fromCubemap (line 39668) | fromCubemap( cubemap, renderTarget = null ) {
method compileCubemapShader (line 39678) | compileCubemapShader() {
method compileEquirectangularShader (line 39693) | compileEquirectangularShader() {
method dispose (line 39709) | dispose() {
method _setSize (line 39720) | _setSize( cubeSize ) {
method _dispose (line 39727) | _dispose() {
method _cleanup (line 39741) | _cleanup( outputTarget ) {
method _fromTexture (line 39751) | _fromTexture( texture, renderTarget ) {
method _allocateTargets (line 39779) | _allocateTargets() {
method _compileMaterial (line 39817) | _compileMaterial( material ) {
method _sceneToCubeUV (line 39824) | _sceneToCubeUV( scene, near, far, cubeUVRenderTarget, position ) {
method _textureToCubeUV (line 39919) | _textureToCubeUV( texture, cubeUVRenderTarget ) {
method _applyPMREM (line 39961) | _applyPMREM( cubeUVRenderTarget ) {
method _blur (line 39996) | _blur( cubeUVRenderTarget, lodIn, lodOut, sigma, poleAxis ) {
method _halfBlur (line 40020) | _halfBlur( targetIn, targetOut, lodIn, lodOut, sigmaRadians, direction...
function _createPlanes (line 40107) | function _createPlanes( lodMax ) {
function _createRenderTarget (line 40187) | function _createRenderTarget( width, height, params ) {
function _setViewport (line 40197) | function _setViewport( target, x, y, width, height ) {
function _getBlurShader (line 40204) | function _getBlurShader( lodMax, width, height ) {
function _getEquirectMaterial (line 40303) | function _getEquirectMaterial() {
function _getCubemapMaterial (line 40344) | function _getCubemapMaterial() {
function _getCommonVertexShader (line 40383) | function _getCommonVertexShader() {
function WebGLCubeUVMaps (line 40444) | function WebGLCubeUVMaps( renderer ) {
function WebGLExtensions (line 40574) | function WebGLExtensions( gl ) {
function WebGLGeometries (line 40654) | function WebGLGeometries( gl, attributes, info, bindingStates ) {
function WebGLIndexedBufferRenderer (line 40832) | function WebGLIndexedBufferRenderer( gl, extensions, info ) {
function WebGLInfo (line 40930) | function WebGLInfo( gl ) {
function WebGLMorphtargets (line 40999) | function WebGLMorphtargets( gl, capabilities, textures ) {
function WebGLObjects (line 41160) | function WebGLObjects( gl, geometries, attributes, info ) {
function flatten (line 41317) | function flatten( array, nBlocks, blockSize ) {
function arraysEqual (line 41352) | function arraysEqual( a, b ) {
function copyArray (line 41366) | function copyArray( a, b ) {
function allocTexUnits (line 41378) | function allocTexUnits( textures, n ) {
function setValueV1f (line 41406) | function setValueV1f( gl, v ) {
function setValueV2f (line 41420) | function setValueV2f( gl, v ) {
function setValueV3f (line 41447) | function setValueV3f( gl, v ) {
function setValueV4f (line 41487) | function setValueV4f( gl, v ) {
function setValueM2 (line 41518) | function setValueM2( gl, v ) {
function setValueM3 (line 41545) | function setValueM3( gl, v ) {
function setValueM4 (line 41572) | function setValueM4( gl, v ) {
function setValueV1i (line 41601) | function setValueV1i( gl, v ) {
function setValueV2i (line 41615) | function setValueV2i( gl, v ) {
function setValueV3i (line 41642) | function setValueV3i( gl, v ) {
function setValueV4i (line 41670) | function setValueV4i( gl, v ) {
function setValueV1ui (line 41701) | function setValueV1ui( gl, v ) {
function setValueV2ui (line 41715) | function setValueV2ui( gl, v ) {
function setValueV3ui (line 41742) | function setValueV3ui( gl, v ) {
function setValueV4ui (line 41770) | function setValueV4ui( gl, v ) {
function setValueT1 (line 41802) | function setValueT1( gl, v, textures ) {
function setValueT3D1 (line 41831) | function setValueT3D1( gl, v, textures ) {
function setValueT6 (line 41847) | function setValueT6( gl, v, textures ) {
function setValueT2DArray1 (line 41863) | function setValueT2DArray1( gl, v, textures ) {
function getSingularSetter (line 41881) | function getSingularSetter( type ) {
function setValueV1fArray (line 41935) | function setValueV1fArray( gl, v ) {
function setValueV2fArray (line 41943) | function setValueV2fArray( gl, v ) {
function setValueV3fArray (line 41951) | function setValueV3fArray( gl, v ) {
function setValueV4fArray (line 41959) | function setValueV4fArray( gl, v ) {
function setValueM2Array (line 41969) | function setValueM2Array( gl, v ) {
function setValueM3Array (line 41977) | function setValueM3Array( gl, v ) {
function setValueM4Array (line 41985) | function setValueM4Array( gl, v ) {
function setValueV1iArray (line 41995) | function setValueV1iArray( gl, v ) {
function setValueV2iArray (line 42003) | function setValueV2iArray( gl, v ) {
function setValueV3iArray (line 42009) | function setValueV3iArray( gl, v ) {
function setValueV4iArray (line 42015) | function setValueV4iArray( gl, v ) {
function setValueV1uiArray (line 42023) | function setValueV1uiArray( gl, v ) {
function setValueV2uiArray (line 42031) | function setValueV2uiArray( gl, v ) {
function setValueV3uiArray (line 42037) | function setValueV3uiArray( gl, v ) {
function setValueV4uiArray (line 42043) | function setValueV4uiArray( gl, v ) {
function setValueT1Array (line 42052) | function setValueT1Array( gl, v, textures ) {
function setValueT3DArray (line 42076) | function setValueT3DArray( gl, v, textures ) {
function setValueT6Array (line 42100) | function setValueT6Array( gl, v, textures ) {
function setValueT2DArrayArray (line 42124) | function setValueT2DArrayArray( gl, v, textures ) {
function getPureArraySetter (line 42151) | function getPureArraySetter( type ) {
class SingleUniform (line 42204) | class SingleUniform {
method constructor (line 42206) | constructor( id, activeInfo, addr ) {
class PureArrayUniform (line 42220) | class PureArrayUniform {
method constructor (line 42222) | constructor( id, activeInfo, addr ) {
class StructuredUniform (line 42237) | class StructuredUniform {
method constructor (line 42239) | constructor( id ) {
method setValue (line 42248) | setValue( gl, value, textures ) {
function addUniform (line 42278) | function addUniform( container, uniformObject ) {
function parseUniform (line 42285) | function parseUniform( activeInfo, addr, container ) {
class WebGLUniforms (line 42338) | class WebGLUniforms {
method constructor (line 42340) | constructor( gl, program ) {
method setValue (line 42358) | setValue( gl, name, value, textures ) {
method setOptional (line 42366) | setOptional( gl, object, name ) {
method upload (line 42374) | static upload( gl, seq, values, textures ) {
method seqWithValue (line 42392) | static seqWithValue( seq, values ) {
function WebGLShader (line 42409) | function WebGLShader( gl, type, string ) {
function handleSource (line 42425) | function handleSource( string, errorLine ) {
function getEncodingComponents (line 42446) | function getEncodingComponents( colorSpace ) {
function getShaderErrors (line 42468) | function getShaderErrors( gl, shader, type ) {
function getTexelEncodingFunction (line 42492) | function getTexelEncodingFunction( functionName, colorSpace ) {
function getToneMappingFunction (line 42508) | function getToneMappingFunction( functionName, toneMapping ) {
function getLuminanceFunction (line 42554) | function getLuminanceFunction() {
function generateVertexExtensions (line 42576) | function generateVertexExtensions( parameters ) {
function generateDefines (line 42587) | function generateDefines( defines ) {
function fetchAttributeLocations (line 42605) | function fetchAttributeLocations( gl, program ) {
function filterEmptyLine (line 42635) | function filterEmptyLine( string ) {
function replaceLightNums (line 42641) | function replaceLightNums( string, parameters ) {
function replaceClippingPlaneNums (line 42660) | function replaceClippingPlaneNums( string, parameters ) {
function resolveIncludes (line 42672) | function resolveIncludes( string ) {
function includeReplacer (line 42680) | function includeReplacer( match, include ) {
function unrollLoops (line 42709) | function unrollLoops( string ) {
function loopReplacer (line 42715) | function loopReplacer( match, start, end, snippet ) {
function generatePrecision (line 42733) | function generatePrecision( parameters ) {
function generateShadowMapTypeDefine (line 42772) | function generateShadowMapTypeDefine( parameters ) {
function generateEnvMapTypeDefine (line 42794) | function generateEnvMapTypeDefine( parameters ) {
function generateEnvMapModeDefine (line 42819) | function generateEnvMapModeDefine( parameters ) {
function generateEnvMapBlendingDefine (line 42840) | function generateEnvMapBlendingDefine( parameters ) {
function generateCubeUVSize (line 42868) | function generateCubeUVSize( parameters ) {
function WebGLProgram (line 42884) | function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
class WebGLShaderCache (line 43497) | class WebGLShaderCache {
method constructor (line 43499) | constructor() {
method update (line 43506) | update( material ) {
method remove (line 43534) | remove( material ) {
method getVertexShaderID (line 43552) | getVertexShaderID( material ) {
method getFragmentShaderID (line 43558) | getFragmentShaderID( material ) {
method dispose (line 43564) | dispose() {
method _getShaderCacheForMaterial (line 43571) | _getShaderCacheForMaterial( material ) {
method _getShaderStage (line 43587) | _getShaderStage( code ) {
class WebGLShaderStage (line 43605) | class WebGLShaderStage {
method constructor (line 43607) | constructor( code ) {
function WebGLPrograms (line 43618) | function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capa...
function WebGLProperties (line 44273) | function WebGLProperties() {
function painterSortStable (line 44326) | function painterSortStable( a, b ) {
function reversePainterSortStable (line 44352) | function reversePainterSortStable( a, b ) {
function WebGLRenderList (line 44375) | function WebGLRenderList() {
function WebGLRenderLists (line 44516) | function WebGLRenderLists() {
function UniformsCache (line 44562) | function UniformsCache() {
function ShadowUniformsCache (line 44637) | function ShadowUniformsCache() {
function shadowCastingAndTexturingLightsFirst (line 44705) | function shadowCastingAndTexturingLightsFirst( lightA, lightB ) {
function WebGLLights (line 44711) | function WebGLLights( extensions ) {
function WebGLRenderState (line 45121) | function WebGLRenderState( extensions ) {
function WebGLRenderStates (line 45184) | function WebGLRenderStates( extensions ) {
function WebGLShadowMap (line 45234) | function WebGLShadowMap( renderer, objects, capabilities ) {
function WebGLState (line 45655) | function WebGLState( gl, extensions ) {
function WebGLTextures (line 46969) | function WebGLTextures( _gl, extensions, state, properties, capabilities...
function WebGLUtils (line 49287) | function WebGLUtils( gl, extensions ) {
class WebXRDepthSensing (line 49525) | class WebXRDepthSensing {
method constructor (line 49530) | constructor() {
method init (line 49569) | init( renderer, depthData, renderState ) {
method getMesh (line 49597) | getMesh( cameraXR ) {
method reset (line 49627) | reset() {
method getDepthTexture (line 49639) | getDepthTexture() {
class WebXRManager (line 49656) | class WebXRManager extends EventDispatcher {
method constructor (line 49664) | constructor( renderer, gl ) {
function WebGLMaterials (line 50662) | function WebGLMaterials( renderer, properties ) {
function WebGLUniformsGroups (line 51244) | function WebGLUniformsGroups( gl, info, capabilities, state ) {
class WebGLRenderer (line 51639) | class WebGLRenderer {
method constructor (line 51646) | constructor( parameters = {} ) {
method coordinateSystem (line 54964) | get coordinateSystem() {
method outputColorSpace (line 54976) | get outputColorSpace() {
method outputColorSpace (line 54982) | set outputColorSpace( colorSpace ) {
class HashUtilsCls (line 55000) | class HashUtilsCls {
method constructor (line 55001) | constructor(icn3dui) {
method cloneHash (line 55006) | cloneHash(from) { this.icn3dui;
method intHash (line 55019) | intHash(atoms1, atoms2) { this.icn3dui;
method exclHash (line 55045) | exclHash(includeAtomsInput, excludeAtoms) { let me = this.icn3dui;
method unionHash (line 55061) | unionHash(atoms1, atoms2) { let me = this.icn3dui;
method unionHashInPlace (line 55069) | unionHashInPlace(atoms1, atoms2) { this.icn3dui;
method unionHashNotInPlace (line 55078) | unionHashNotInPlace(atoms1, atoms2) { this.icn3dui;
method intHash2Atoms (line 55085) | intHash2Atoms(atoms1, atoms2, allAtoms) { let me = this.icn3dui;
method exclHash2Atoms (line 55091) | exclHash2Atoms(includeAtoms, excludeAtoms, allAtoms) { let me = this.i...
method unionHash2Atoms (line 55096) | unionHash2Atoms(atoms1, atoms2, allAtoms) { let me = this.icn3dui;
method hash2Atoms (line 55101) | hash2Atoms(hash, allAtoms) { this.icn3dui;
method hashvalue2array (line 55110) | hashvalue2array(hash) { this.icn3dui;
class UtilsCls (line 55130) | class UtilsCls {
method constructor (line 55131) | constructor(icn3dui) {
method isIE (line 55136) | isIE() { this.icn3dui;
method isMobile (line 55148) | isMobile() { this.icn3dui;
method isMac (line 55153) | isMac() { this.icn3dui;
method isAndroid (line 55157) | isAndroid() { this.icn3dui;
method isChrome (line 55161) | isChrome() { this.icn3dui;
method isSessionStorageSupported (line 55166) | isSessionStorageSupported() { this.icn3dui;
method isLocalStorageSupported (line 55170) | isLocalStorageSupported() { this.icn3dui;
method hexToRgb (line 55175) | hexToRgb(hex, a) { this.icn3dui;
method isCalphaPhosOnly (line 55186) | isCalphaPhosOnly(atomlist) { this.icn3dui;
method hasCovalentBond (line 55221) | hasCovalentBond(atom0, atom1) { let me = this.icn3dui;
method residueName2Abbr (line 55243) | residueName2Abbr(residueName) { this.icn3dui;
method residueAbbr2Name (line 55342) | residueAbbr2Name(residueAbbr) { this.icn3dui;
method getJSONFromArray (line 55398) | getJSONFromArray(inArray) { this.icn3dui;
method checkFileAPI (line 55407) | checkFileAPI() { this.icn3dui;
method getIdArray (line 55413) | getIdArray(resid) { this.icn3dui;
method compResid (line 55428) | compResid(a, b, type) { let me = this.icn3dui;
method toggle (line 55455) | toggle(id1, id2, id3, id4) { this.icn3dui;
method setViewerWidthHeight (line 55471) | setViewerWidthHeight(me, bRealSize) { //let me = this.icn3dui;
method sumArray (line 55518) | sumArray(numArray) {
method getMemDesc (line 55528) | getMemDesc() {
method getStructures (line 55532) | getStructures(atoms) { let me = this.icn3dui;
method getHlStructures (line 55542) | getHlStructures(atoms) { let me = this.icn3dui;
method getDisplayedStructures (line 55548) | getDisplayedStructures(atoms) { let me = this.icn3dui;
method getDateDigitStr (line 55554) | getDateDigitStr() { this.icn3dui;
class ParasCls (line 55570) | class ParasCls {
method constructor (line 55571) | constructor(icn3dui) {
method thr (line 56011) | thr(color) { this.icn3dui;
class MyEventCls (line 56021) | class MyEventCls {
method constructor (line 56022) | constructor(icn3dui) {
method onId (line 56026) | onId(id, eventName, myFunction) { this.icn3dui;
method onIds (line 56038) | onIds(idArray, eventName, myFunction) { let me = this.icn3dui;
class RmsdSuprCls (line 56082) | class RmsdSuprCls {
method constructor (line 56083) | constructor(icn3dui) {
method getRmsdSuprCls (line 56087) | getRmsdSuprCls(co1, co2, n) { let me = this.icn3dui;
method eigen_values (line 56290) | eigen_values(a0) { this.icn3dui;
method null_basis (line 56359) | null_basis(a0, v1, v2, v3, epsi) { this.icn3dui;
method getEigenForSelection (line 56548) | getEigenForSelection(coord, n) { let me = this.icn3dui;
method getEigenVectors (line 56595) | getEigenVectors(u, bJustPc1) { let me = this.icn3dui;
class SubdivideCls (line 56733) | class SubdivideCls {
method constructor (line 56734) | constructor(icn3dui) {
method subdivide (line 56740) | subdivide(_pnts, _clrs, DIV, bShowArray, bHighlight, prevone, nexttwo,...
method getKnot (line 56898) | getKnot(alpha, ti, Pi, Pj) { this.icn3dui;
method getValueFromKnot (line 56905) | getValueFromKnot(t, t0, t1, t2, t3, y0, y1, y2, y3) { this.icn3dui;
class ConvertTypeCls (line 56955) | class ConvertTypeCls {
method constructor (line 56956) | constructor(icn3dui) {
method passFloat32 (line 56960) | passFloat32( array, output ){ let me = this.icn3dui;
method passInt8 (line 56969) | passInt8( array, output ){ let me = this.icn3dui;
method passInt16 (line 56978) | passInt16( array, output ){ let me = this.icn3dui;
method passInt32 (line 56987) | passInt32( array, output ){ let me = this.icn3dui;
method getUint8View (line 56996) | getUint8View( typedArray ){ let me = this.icn3dui;
method getDataView (line 57000) | getDataView( typedArray ){ let me = this.icn3dui;
method getView (line 57004) | getView( ctor, typedArray, elemSize ){ this.icn3dui;
method getBlobFromBufferAndText (line 57012) | getBlobFromBufferAndText(arrayBuffer, text) { let me = this.icn3dui;
class ClickMenu (line 57037) | class ClickMenu {
method constructor (line 57038) | constructor(icn3dui) {
method setAlphaFoldLegend (line 57042) | setAlphaFoldLegend() { let me = this.icn3dui; me.icn3d;
method setLegendHtml (line 57054) | setLegendHtml(bAf) { let me = this.icn3dui, ic = me.icn3d;
method SetChainsAdvancedMenu (line 57071) | SetChainsAdvancedMenu() { let me = this.icn3dui, ic = me.icn3d;
method setSetsMenus (line 57080) | setSetsMenus(id, bOneset, bThreeset) { let me = this.icn3dui, ic = me....
method applyShownMenus (line 57103) | applyShownMenus(bNoSave) { let me = this.icn3dui; me.icn3d;
method getHiddenMenusFromCache (line 57127) | getHiddenMenusFromCache() { let me = this.icn3dui; me.icn3d;
method uuidv4 (line 57159) | uuidv4() {
method displayShownMenus (line 57165) | displayShownMenus() { let me = this.icn3dui; me.icn3d;
method setIgTemplate (line 57214) | async setIgTemplate(template) { let me = this.icn3dui, ic = me.icn3d;
method setClashedResidues (line 57235) | setClashedResidues() { let me = this.icn3dui, ic = me.icn3d;
method clickMenu1 (line 57252) | clickMenu1() { let me = this.icn3dui; me.icn3d;
method clickMenu2 (line 57993) | clickMenu2() { let me = this.icn3dui; me.icn3d;
method clickMenu3 (line 58235) | clickMenu3() { let me = this.icn3dui; me.icn3d;
method clickMenu4 (line 58482) | clickMenu4() { let me = this.icn3dui; me.icn3d;
method clickMenu5 (line 58791) | clickMenu5() { let me = this.icn3dui; me.icn3d;
method clickMenu6 (line 58974) | clickMenu6() { let me = this.icn3dui, ic = me.icn3d;
method setLogCmd (line 59672) | setLogCmd(str, bSetCommand, bAddLogs) {var me = this.icn3dui, ic = me....
class SetMenu (line 59734) | class SetMenu {
method constructor (line 59735) | constructor(icn3dui) {
method getLink (line 59741) | getLink(id, text, bSimpleMenu, selType) { let me = this.icn3dui;
method getMenuText (line 59745) | getMenuText(id, text, classname, bSimpleMenu, selType) { let me = this...
method getMenuUrl (line 59749) | getMenuUrl(id, url, text, bSimpleMenu, selType) { let me = this.icn3dui;
method getMenuSep (line 59753) | getMenuSep() { let me = this.icn3dui;
method getLinkWrapper (line 59757) | getLinkWrapper(id, text, wrapper, bSimpleMenu, selType, bHide) { let m...
method getLinkWrapper2 (line 59761) | getLinkWrapper2(id, text, wrapper, bSimpleMenu, selType) { let me = th...
method getRadio (line 59765) | getRadio(radioid, id, text, bChecked, bSimpleMenu, selType) { let me =...
method getRadClr (line 59769) | getRadClr(radioid, id, text, color, bChecked, bSimpleMenu, selType) { ...
method resetMenu (line 59773) | resetMenu(mode) { let me = this.icn3dui;
method setMenuMode (line 59793) | setMenuMode(bMobile) { let me = this.icn3dui;
method setTopMenusHtml (line 59819) | setTopMenusHtml(id, str1, str2) { let me = this.icn3dui;
method setTopMenusHtmlMobile (line 59924) | setTopMenusHtmlMobile(id, str1, str2) { let me = this.icn3dui;
method setReplayHtml (line 60049) | setReplayHtml(id) { let me = this.icn3dui;
method setTools (line 60070) | setTools() { let me = this.icn3dui;
method setButton (line 60090) | setButton(buttonStyle, id, title, text, color) { let me = this.icn3dui;
method setIcon (line 60098) | setIcon(iconType, id, title, iconStyle, url, bText, bHighlight) { let ...
method setTools_base (line 60122) | setTools_base() { let me = this.icn3dui;
method setTheme (line 60180) | setTheme(color) { let me = this.icn3dui;
method setLogWindow (line 60227) | setLogWindow(bUpdate, bCmdWindowInput) { let me = this.icn3dui;
method setMenu1 (line 60272) | setMenu1() { let me = this.icn3dui;
method setMenu1_base (line 60292) | setMenu1_base() { let me = this.icn3dui;
method setMenu2 (line 60524) | setMenu2() { let me = this.icn3dui;
method setMenu2_base (line 60543) | setMenu2_base() { let me = this.icn3dui;
method setMenu2b (line 60633) | setMenu2b() { let me = this.icn3dui;
method setMenu2b_base (line 60652) | setMenu2b_base() { let me = this.icn3dui;
method setMenu3 (line 60773) | setMenu3() { let me = this.icn3dui;
method setMenu3_base (line 60792) | setMenu3_base() { let me = this.icn3dui;
method setMenu4 (line 61047) | setMenu4() { let me = this.icn3dui;
method setMenu4_base (line 61066) | setMenu4_base() { let me = this.icn3dui;
method setMenu5 (line 61374) | setMenu5() { let me = this.icn3dui;
method setMenu5_base (line 61393) | setMenu5_base() { let me = this.icn3dui;
method setMenu6 (line 61648) | setMenu6() { let me = this.icn3dui;
method setMenu6_base (line 61667) | setMenu6_base() { let me = this.icn3dui;
method hideMenu (line 61776) | hideMenu() { let me = this.icn3dui;
method showMenu (line 61786) | showMenu() { let me = this.icn3dui;
class Dialog (line 61800) | class Dialog {
method constructor (line 61801) | constructor(icn3dui) {
method openDlg (line 61807) | openDlg(id, title) { let me = this.icn3dui; me.icn3d;
method addSaveButton (line 61824) | addSaveButton(id) { let me = this.icn3dui; me.icn3d;
method addHideButton (line 61837) | addHideButton(id) { let me = this.icn3dui; me.icn3d;
method getDialogStatus (line 61850) | getDialogStatus() { let me = this.icn3dui; me.icn3d;
method openDlgHalfWindow (line 61912) | openDlgHalfWindow(id, title, dialogWidth, bForceResize) { let me = th...
method openDlg2Ddgm (line 62027) | openDlg2Ddgm(id, inHeight, bDefinedSets) { let me = this.icn3dui, ic ...
method openDlgRegular (line 62085) | openDlgRegular(id, title) { let me = this.icn3dui, ic = me.icn3d;
method openDlgNotebook (line 62319) | openDlgNotebook(id, title) { let me = this.icn3dui, ic = me.icn3d;
class SetDialog (line 62413) | class SetDialog {
method constructor (line 62414) | constructor(icn3dui) {
method setCustomDialogs (line 62419) | setCustomDialogs() { let me = this.icn3dui; me.icn3d;
method getHtmlAlignResidueByResidue (line 62426) | getHtmlAlignResidueByResidue(chainids, predefinedid, buttonid) { let m...
method addNotebookTitle (line 62437) | addNotebookTitle(id, title, bAddExtraDiv) { let me = this.icn3dui; me....
method setDialogs (line 62450) | setDialogs() { let me = this.icn3dui, ic = me.icn3d;
method setTemplateMenu (line 64066) | setTemplateMenu() { let me = this.icn3dui; me.icn3d;
method getAnnoHeader (line 64150) | getAnnoHeader() { let me = this.icn3dui; me.icn3d;
class Events (line 64195) | class Events {
method constructor (line 64196) | constructor(icn3dui) {
method setLogCmd (line 64201) | setLogCmd(str, bSetCommand, bAddLogs) {var me = this.icn3dui; me.icn3d;
method fullScreenChange (line 64206) | fullScreenChange() { let me = this.icn3dui, ic = me.icn3d, thisClass =...
method convertUniProtInChains (line 64220) | convertUniProtInChains(alignment) { let me = this.icn3dui; me.icn3d;
method searchSeq (line 64231) | async searchSeq() { let me = this.icn3dui, ic = me.icn3d, thisClass = ...
method setRealign (line 64243) | async setRealign(alignType, bMsa) { let me = this.icn3dui, ic = me.icn...
method readFile (line 64283) | async readFile(bAppend, files, index, dataStrAll, bmmCIF, bPng) { let ...
method loadPdbFile (line 64363) | async loadPdbFile(bAppend, fileId, bmmCIF, bOpenDialog) { let me = thi...
method saveHtml (line 64384) | saveHtml(id) { let me = this.icn3dui, ic = me.icn3d;
method setPredefinedMenu (line 64396) | setPredefinedMenu(id) { let me = this.icn3dui, ic = me.icn3d;
method exportMsa (line 64410) | exportMsa(type) { let me = this.icn3dui, ic = me.icn3d;
method iniFileLoad (line 64417) | iniFileLoad() { let me = this.icn3dui, ic = me.icn3d;
method launchMmdb (line 64428) | async launchMmdb(ids, bBiounit, hostUrl, bAppend) { let me = this.icn3...
method openBcf (line 64491) | async openBcf(file) { let me = this.icn3dui, ic = me.icn3d;
method allEventFunctions (line 64553) | allEventFunctions() { let me = this.icn3dui, ic = me.icn3d;
class AlignSeq (line 67869) | class AlignSeq {
method constructor (line 67870) | constructor(icn3dui) {
method getAlignSequencesAnnotations (line 67877) | getAlignSequencesAnnotations(alignChainArray, bUpdateHighlightAtoms, r...
class SetHtml (line 68108) | class SetHtml {
method constructor (line 68109) | constructor(icn3dui) {
method getLink (line 68113) | getLink(id, text, bSimpleMenu, selType) { let me = this.icn3dui; me.ic...
method getMenuText (line 68122) | getMenuText(id, text, classname, bSimpleMenu, selType) { let me = this...
method getMenuUrl (line 68133) | getMenuUrl(id, url, text, bSimpleMenu, selType) { let me = this.icn3du...
method getMenuSep (line 68143) | getMenuSep() { let me = this.icn3dui; me.icn3d;
method getLinkWrapper (line 68147) | getLinkWrapper(id, text, wrapper, bSimpleMenu, selType, bHide) { let m...
method getLinkWrapper2 (line 68156) | getLinkWrapper2(id, text, wrapper, bSimpleMenu, selType) { let me = th...
method getRadio (line 68164) | getRadio(radioid, id, text, bChecked, bSimpleMenu, selType) { let me =...
method getRadioColor (line 68175) | getRadioColor(radioid, id, text, color, bChecked, bSimpleMenu, selType...
method setAdvanced (line 68186) | setAdvanced(index) { let me = this.icn3dui; me.icn3d;
method getOptionHtml (line 68231) | getOptionHtml(optArray, selIndex) { let me = this.icn3dui; me.icn3d;
method setColorHints (line 68248) | setColorHints() { let me = this.icn3dui; me.icn3d;
method setThicknessHtml (line 68261) | setThicknessHtml(type) { let me = this.icn3dui, ic = me.icn3d;
method getCookie (line 68366) | getCookie(cname) {
method setSequenceGuide (line 68382) | setSequenceGuide(suffix, bShown) { let me = this.icn3dui, ic = me.icn3d;
method setAlignSequenceGuide (line 68408) | setAlignSequenceGuide(suffix, bShown) { let me = this.icn3dui, ic = me...
method getSelectionHints (line 68434) | getSelectionHints() { let me = this.icn3dui; me.icn3d;
method addGsizeSalt (line 68454) | addGsizeSalt(name) { let me = this.icn3dui; me.icn3d;
method getFootHtml (line 68474) | getFootHtml(type, tabName) { let me = this.icn3dui; me.icn3d;
method getPotentialHtml (line 68517) | getPotentialHtml(type, dialogClass) { let me = this.icn3dui; me.icn3d;
method exportPqr (line 68702) | async exportPqr(bPdb) { let me = this.icn3dui, ic = me.icn3d;
method clickReload_pngimage (line 68787) | clickReload_pngimage() { let me = this.icn3dui; me.icn3d;
method loadPng (line 68818) | async loadPng(imageStr, command, bRender) { let me = this.icn3dui, ic ...
method fileSupport (line 68922) | fileSupport() {
method getLinkColor (line 68928) | getLinkColor() {
method setCookieForThickness (line 68951) | setCookieForThickness() { let me = this.icn3dui, ic = me.icn3d;
method setLineThickness (line 68967) | setLineThickness(postfix, bReset) { let me = this.icn3dui, ic = me.icn3d;
method setCookie (line 69053) | setCookie(cname, cvalue, exdays) {
method updateSurfPara (line 69060) | updateSurfPara(type) { let me = this.icn3dui, ic = me.icn3d;
method exportPdb (line 69066) | exportPdb() { let me = this.icn3dui, ic = me.icn3d;
method exportSecondary (line 69083) | exportSecondary() { let me = this.icn3dui, ic = me.icn3d;
class Html (line 69104) | class Html {
method constructor (line 69105) | constructor(icn3dui) { let me = icn3dui;
function fetchJsonFile (line 69277) | async function fetchJsonFile(path) {
function fetchProfilesList (line 69286) | async function fetchProfilesList(basePath) {
function fetchProfile (line 69296) | async function fetchProfile(xrInputSource, basePath, defaultProfile = nu...
function normalizeAxes (line 69379) | function normalizeAxes(x = 0, y = 0) {
class VisualResponse (line 69409) | class VisualResponse {
method constructor (line 69410) | constructor(visualResponseDescription) {
method updateFromComponent (line 69434) | updateFromComponent({
class Component (line 69461) | class Component {
method constructor (line 69466) | constructor(componentId, componentDescription) {
method data (line 69498) | get data() {
method updateFromGamepad (line 69507) | updateFromGamepad(gamepad) {
class MotionController (line 69567) | class MotionController {
method constructor (line 69573) | constructor(xrInputSource, profile, assetUrl) {
method gripSpace (line 69598) | get gripSpace() {
method targetRaySpace (line 69602) | get targetRaySpace() {
method data (line 69609) | get data() {
method updateFromGamepad (line 69620) | updateFromGamepad() {
class GLTFLoader (line 69694) | class GLTFLoader extends Loader {
method constructor (line 69696) | constructor( manager ) {
method load (line 69768) | load( url, onLoad, onProgress, onError ) {
method setDRACOLoader (line 69839) | setDRACOLoader( dracoLoader ) {
method setDDSLoader (line 69846) | setDDSLoader() {
method setKTX2Loader (line 69856) | setKTX2Loader( ktx2Loader ) {
method setMeshoptDecoder (line 69863) | setMeshoptDecoder( meshoptDecoder ) {
method register (line 69870) | register( callback ) {
method unregister (line 69882) | unregister( callback ) {
method parse (line 69894) | parse( data, path, onLoad, onError ) {
method parseAsync (line 70015) | parseAsync( data, path ) {
function GLTFRegistry (line 70031) | function GLTFRegistry() {
class GLTFLightsExtension (line 70093) | class GLTFLightsExtension {
method constructor (line 70095) | constructor( parser ) {
method _markDefs (line 70105) | _markDefs() {
method _loadLight (line 70126) | _loadLight( lightIndex ) {
method createNodeAttachment (line 70195) | createNodeAttachment( nodeIndex ) {
class GLTFMaterialsUnlitExtension (line 70221) | class GLTFMaterialsUnlitExtension {
method constructor (line 70223) | constructor() {
method getMaterialType (line 70229) | getMaterialType() {
method extendParams (line 70235) | extendParams( materialParams, materialDef, parser ) {
class GLTFMaterialsClearcoatExtension (line 70274) | class GLTFMaterialsClearcoatExtension {
method constructor (line 70276) | constructor( parser ) {
method getMaterialType (line 70283) | getMaterialType( materialIndex ) {
method extendMaterialParams (line 70294) | extendMaterialParams( materialIndex, materialParams ) {
class GLTFMaterialsSheenExtension (line 70358) | class GLTFMaterialsSheenExtension {
method constructor (line 70360) | constructor( parser ) {
method getMaterialType (line 70367) | getMaterialType( materialIndex ) {
method extendMaterialParams (line 70378) | extendMaterialParams( materialIndex, materialParams ) {
class GLTFMaterialsTransmissionExtension (line 70433) | class GLTFMaterialsTransmissionExtension {
method constructor (line 70435) | constructor( parser ) {
method getMaterialType (line 70442) | getMaterialType( materialIndex ) {
method extendMaterialParams (line 70453) | extendMaterialParams( materialIndex, materialParams ) {
class GLTFMaterialsVolumeExtension (line 70491) | class GLTFMaterialsVolumeExtension {
method constructor (line 70493) | constructor( parser ) {
method getMaterialType (line 70500) | getMaterialType( materialIndex ) {
method extendMaterialParams (line 70511) | extendMaterialParams( materialIndex, materialParams ) {
class GLTFMaterialsIorExtension (line 70550) | class GLTFMaterialsIorExtension {
method constructor (line 70552) | constructor( parser ) {
method getMaterialType (line 70559) | getMaterialType( materialIndex ) {
method extendMaterialParams (line 70570) | extendMaterialParams( materialIndex, materialParams ) {
class GLTFMaterialsSpecularExtension (line 70596) | class GLTFMaterialsSpecularExtension {
method constructor (line 70598) | constructor( parser ) {
method getMaterialType (line 70605) | getMaterialType( materialIndex ) {
method extendMaterialParams (line 70616) | extendMaterialParams( materialIndex, materialParams ) {
class GLTFTextureBasisUExtension (line 70659) | class GLTFTextureBasisUExtension {
method constructor (line 70661) | constructor( parser ) {
method loadTexture (line 70668) | loadTexture( textureIndex ) {
class GLTFTextureWebPExtension (line 70710) | class GLTFTextureWebPExtension {
method constructor (line 70712) | constructor( parser ) {
method loadTexture (line 70720) | loadTexture( textureIndex ) {
method detectSupport (line 70762) | detectSupport() {
class GLTFMeshoptCompression (line 70795) | class GLTFMeshoptCompression {
method constructor (line 70797) | constructor( parser ) {
method loadBufferView (line 70804) | loadBufferView( index ) {
class GLTFBinaryExtension (line 70862) | class GLTFBinaryExtension {
method constructor (line 70864) | constructor( data ) {
class GLTFDracoMeshCompressionExtension (line 70933) | class GLTFDracoMeshCompressionExtension {
method constructor (line 70935) | constructor( json, dracoLoader ) {
method decodePrimitive (line 70950) | decodePrimitive( primitive, parser ) {
class GLTFTextureTransformExtension (line 71016) | class GLTFTextureTransformExtension {
method constructor (line 71018) | constructor() {
method extendTexture (line 71024) | extendTexture( texture, transform ) {
class GLTFMeshStandardSGMaterial (line 71078) | class GLTFMeshStandardSGMaterial extends MeshStandardMaterial$1 {
method constructor (line 71080) | constructor( params ) {
method copy (line 71243) | copy( source ) {
class GLTFMaterialsPbrSpecularGlossinessExtension (line 71262) | class GLTFMaterialsPbrSpecularGlossinessExtension {
method constructor (line 71264) | constructor() {
method getMaterialType (line 71296) | getMaterialType() {
method extendParams (line 71302) | extendParams( materialParams, materialDef, parser ) {
method createMaterial (line 71348) | createMaterial( materialParams ) {
class GLTFMeshQuantizationExtension (line 71401) | class GLTFMeshQuantizationExtension {
method constructor (line 71403) | constructor() {
class GLTFCubicSplineInterpolant (line 71417) | class GLTFCubicSplineInterpolant extends Interpolant {
method constructor (line 71419) | constructor( parameterPositions, sampleValues, sampleSize, resultBuffe...
method copySampleValue_ (line 71425) | copySampleValue_( index ) {
class GLTFCubicSplineQuaternionInterpolant (line 71493) | class GLTFCubicSplineQuaternionInterpolant extends GLTFCubicSplineInterp...
method interpolate_ (line 71495) | interpolate_( i1, t0, t, t1 ) {
function createDefaultMaterial (line 71604) | function createDefaultMaterial( cache ) {
function addUnknownExtensionsToUserData (line 71625) | function addUnknownExtensionsToUserData( knownExtensions, object, object...
function assignExtrasToUserData (line 71646) | function assignExtrasToUserData( object, gltfDef ) {
function addMorphTargets (line 71672) | function addMorphTargets( geometry, targets, parser ) {
function updateMorphTargets (line 71757) | function updateMorphTargets( mesh, meshDef ) {
function createPrimitiveKey (line 71796) | function createPrimitiveKey( primitiveDef ) {
function createAttributesKey (line 71817) | function createAttributesKey( attributes ) {
function getNormalizedComponentScale (line 71833) | function getNormalizedComponentScale( constructor ) {
function getImageURIMimeType (line 71859) | function getImageURIMimeType( uri ) {
class GLTFParser (line 71870) | class GLTFParser {
method constructor (line 71872) | constructor( json = {}, options = {} ) {
method setExtensions (line 71925) | setExtensions( extensions ) {
method setPlugins (line 71931) | setPlugins( plugins ) {
method parse (line 71937) | parse( onLoad, onError ) {
method _markDefs (line 72000) | _markDefs() {
method _addNodeRef (line 72060) | _addNodeRef( cache, index ) {
method _getNodeRef (line 72075) | _getNodeRef( cache, index, object ) {
method _invokeOne (line 72108) | _invokeOne( func ) {
method _invokeAll (line 72125) | _invokeAll( func ) {
method getDependency (line 72150) | getDependency( type, index ) {
method getDependencies (line 72237) | getDependencies( type ) {
method loadBuffer (line 72265) | loadBuffer( bufferIndex ) {
method loadBufferView (line 72302) | loadBufferView( bufferViewIndex ) {
method loadAccessor (line 72321) | loadAccessor( accessorIndex ) {
method loadTexture (line 72453) | loadTexture( textureIndex ) {
method loadTextureImage (line 72474) | loadTextureImage( textureIndex, sourceIndex, loader ) {
method loadImageSource (line 72521) | loadImageSource( sourceIndex, loader ) {
method assignTexture (line 72615) | assignTexture( materialParams, mapName, mapDef, encoding ) {
method assignFinalMaterial (line 72665) | assignFinalMaterial( mesh ) {
method getMaterialType (line 72763) | getMaterialType( /* materialIndex */ ) {
method loadMaterial (line 72774) | loadMaterial( materialIndex ) {
method createUniqueName (line 72944) | createUniqueName( originalName ) {
method loadGeometries (line 72970) | loadGeometries( primitives ) {
method loadMesh (line 73037) | loadMesh( meshIndex ) {
method loadCamera (line 73182) | loadCamera( cameraIndex ) {
method loadSkin (line 73218) | loadSkin( skinIndex ) {
method loadAnimation (line 73245) | loadAnimation( animationIndex ) {
method createNodeMesh (line 73412) | createNodeMesh( nodeIndex ) {
method loadNode (line 73452) | loadNode( nodeIndex ) {
method loadScene (line 73592) | loadScene( sceneIndex ) {
function buildNodeHierarchy (line 73662) | function buildNodeHierarchy( nodeId, parentObject, json, parser ) {
function computeBounds (line 73763) | function computeBounds( geometry, primitiveDef, parser ) {
function addPrimitiveAttributes (line 73879) | function addPrimitiveAttributes( geometry, primitiveDef, parser ) {
function toTrianglesDrawMode (line 73938) | function toTrianglesDrawMode( geometry, drawMode ) {
class XRControllerModel (line 74039) | class XRControllerModel extends Object3D$1 {
method constructor (line 74041) | constructor() {
method setEnvironmentMap (line 74050) | setEnvironmentMap( envMap ) {
method updateMatrixWorld (line 74078) | updateMatrixWorld( force ) {
function findNodes (line 74133) | function findNodes( motionController, scene ) {
function addAssetSceneToControllerModel (line 74201) | function addAssetSceneToControllerModel( controllerModel, scene ) {
class XRControllerModelFactory (line 74227) | class XRControllerModelFactory {
method constructor (line 74229) | constructor( gltfLoader = null ) {
method createControllerModel (line 74244) | createControllerModel( controller ) {
class ControllerGestures (line 74321) | class ControllerGestures extends EventDispatcher{
method constructor (line 74322) | constructor( renderer ){
method multiTouch (line 74414) | get multiTouch(){
method touch (line 74425) | get touch(){
method debugMsg (line 74436) | get debugMsg(){
method update (line 74440) | update(){
class CanvasUI (line 74578) | class CanvasUI{
method constructor (line 74579) | constructor(content, config){
method getIntersectY (line 74690) | getIntersectY( index ){
method initControllers (line 74698) | initControllers(){
method setClip (line 74781) | setClip( elm ){
method setPosition (line 74821) | setPosition(x, y, z){
method setRotation (line 74826) | setRotation(x, y, z){
method updateElement (line 74831) | updateElement( name, content ){
method panel (line 74850) | get panel(){
method getElementAtLocation (line 74854) | getElementAtLocation( x, y ){
method updateConfig (line 74869) | updateConfig( name, property, value ){
method hover (line 74882) | hover( index = 0, uv ){
method select (line 74906) | select( index = 0 ){
method scroll (line 74918) | scroll( index ){
method handleController (line 74942) | handleController( controller, index ){
method update (line 74961) | update(){
method loadImage (line 75065) | loadImage(src) {
method createOffscreenCanvas (line 75075) | createOffscreenCanvas(w, h) {
method fillRoundedRect (line 75082) | fillRoundedRect( x, y, w, h, radius ){
method lookAt (line 75098) | lookAt( pos ){
method visible (line 75107) | get visible(){
method visible (line 75112) | set visible(value){
method position (line 75118) | get position(){
method position (line 75123) | set position(value){
method quaternion (line 75132) | get quaternion(){
method quaternion (line 75137) | set quaternion(value){
method wrapText (line 75146) | wrapText(name, txt){
class CanvasKeyboard (line 75248) | class CanvasKeyboard{
method constructor (line 75249) | constructor( width, renderer, lang = "EN" ){
method mesh (line 75261) | get mesh(){
method getConfig (line 75265) | getConfig( lang ){
method getContent (line 75332) | getContent( lang, layoutIndex=0 ){
method position (line 75406) | get position(){
method visible (line 75410) | get visible(){
method visible (line 75414) | set visible( value ){
method setKeyboard (line 75418) | setKeyboard( index ){
method onSelect (line 75423) | onSelect( index ){
method update (line 75477) | update(){
class Scene (line 75488) | class Scene {
method constructor (line 75489) | constructor(icn3d) {
method rebuildScene (line 75495) | rebuildScene(options) { let ic = this.icn3d, me = ic.icn3dui;
method rebuildSceneBase (line 75555) | rebuildSceneBase(options) { let ic = this.icn3d, me = ic.icn3dui;
method setVrAr (line 75730) | setVrAr() { let ic = this.icn3d; ic.icn3dui;
method positionCenter (line 75888) | positionCenter() { let ic = this.icn3d; ic.icn3dui;
method setVrArButtons (line 75894) | setVrArButtons() { let ic = this.icn3d, me = ic.icn3dui;
method updateControllers (line 75908) | updateControllers(info){ let ic = this.icn3d; ic.icn3dui;
method addEventForController (line 75913) | addEventForController(info, left_right) { let ic = this.icn3d; ic.icn3...
method createUI (line 75980) | createUI() { let ic = this.icn3d, me = ic.icn3dui;
method createUILog (line 76247) | createUILog() { let ic = this.icn3d; ic.icn3dui;
method getControllers (line 76266) | getControllers() { let ic = this.icn3d; ic.icn3dui;
function TrackballControls (line 76311) | function TrackballControls( object, domElement, icn3d ) {
function OrthographicTrackballControls (line 76997) | function OrthographicTrackballControls( object, domElement, icn3d ) { va...
class Camera (line 77669) | class Camera {
method constructor (line 77670) | constructor(icn3d) {
method setCamera (line 77675) | setCamera() { let ic = this.icn3d, me = ic.icn3dui;
method setSlab (line 77866) | setSlab() { let ic = this.icn3d, me = ic.icn3dui;
class Fog (line 77950) | class Fog {
method constructor (line 77951) | constructor(icn3d) {
method setFog (line 77955) | setFog(bZoomin) { let ic = this.icn3d, me = ic.icn3dui;
class Box (line 78010) | class Box {
method constructor (line 78011) | constructor(icn3d) {
method createBox (line 78018) | createBox(atom, defaultRadius, forceDefault, scale, color, bHighlight)...
method createBox_base (line 78038) | createBox_base(coord, radius, color, bHighlight, bOther, bGlycan, opac...
method createBoxRepresentation_P_CA (line 78072) | createBoxRepresentation_P_CA(atoms, scale, bHighlight) { let ic = this...
class Brick (line 78089) | class Brick {
method constructor (line 78090) | constructor(icn3d) {
method createBrick (line 78094) | createBrick(p0, p1, radius, color) { let ic = this.icn3d, me = ic.icn3...
class CurveStripArrow (line 78118) | class CurveStripArrow {
method constructor (line 78119) | constructor(icn3d) {
method createCurveSubArrow (line 78123) | createCurveSubArrow(p, width, colors, div, bHighlight, bRibbon, num, p...
method createStripArrow (line 78139) | createStripArrow(p0, p1, colors, div, thickness, bHighlight, num, star...
method prepareStrand (line 78161) | prepareStrand(divPoints, positions, width, colors, div, thickness, bHi...
class Curve (line 78323) | class Curve {
method constructor (line 78324) | constructor(icn3d) {
method createCurveSub (line 78329) | createCurveSub(_pnts, width, colors, div, bHighlight, bRibbon, bNoSmoo...
class Cylinder (line 78481) | class Cylinder {
method constructor (line 78482) | constructor(icn3d) {
method createCylinder (line 78487) | createCylinder(p0, p1, radius, color, bHighlight, color2, bPicking, bG...
method createPlanes (line 78588) | createPlanes(planes) { let ic = this.icn3d, me = ic.icn3dui;
method createCylinder_base (line 78618) | createCylinder_base(p0, p1, radius, color, bHighlight, color2, bPickin...
method createCylinderHelix (line 78639) | createCylinderHelix(atoms, radius, bHighlight) { let ic = this.icn3d, ...
method createCylinderCurve (line 78690) | createCylinderCurve(atoms, atomNameArray, radius, bLines, bHighlight) ...
class Line$1 (line 78782) | class Line$1 {
method constructor (line 78783) | constructor(icn3d) {
method createLineRepresentation (line 78790) | createLineRepresentation(atoms, bHighlight) { let ic = this.icn3d, me ...
method createConnCalphSidechain (line 78869) | createConnCalphSidechain(atoms, style) { let ic = this.icn3d, me = ic....
method createSingleLine (line 78935) | createSingleLine( src, dst, colorHex, dashed, dashSize ) { let ic = th...
method createLines (line 78972) | createLines(lines) { let ic = this.icn3d, me = ic.icn3dui;
class ReprSub (line 79037) | class ReprSub {
method constructor (line 79038) | constructor(icn3d) {
method createRepresentationSub (line 79043) | createRepresentationSub(atoms, f0, f01) { let ic = this.icn3d, me = ic...
class Sphere$1 (line 79066) | class Sphere$1 {
method constructor (line 79067) | constructor(icn3d) {
method createSphere (line 79072) | createSphere(atom, defaultRadius, forceDefault, scale, bHighlight) { l...
method createSphereBase (line 79087) | createSphereBase(pos, color, radius, scale, bHighlight, bGlycan, opaci...
method createSphereRepresentation (line 79172) | createSphereRepresentation(atoms, defaultRadius, forceDefault, scale, ...
class Stick (line 79187) | class Stick {
method constructor (line 79188) | constructor(icn3d) {
method createStickRepresentation (line 79196) | createStickRepresentation(atoms, atomR, bondR, scale, bHighlight, bSch...
class FirstAtomObj (line 79470) | class FirstAtomObj {
method constructor (line 79471) | constructor(icn3d) {
method getFirstAtomObj (line 79476) | getFirstAtomObj(atomsHash) { let ic = this.icn3d; ic.icn3dui;
method getMiddleAtomObj (line 79488) | getMiddleAtomObj(atomsHash, n) { let ic = this.icn3d; ic.icn3dui;
method getFirstCalphaAtomObj (line 79499) | getFirstCalphaAtomObj(atomsHash) { let ic = this.icn3d; ic.icn3dui;
method getFirstAtomObjByName (line 79525) | getFirstAtomObjByName(atomsHash, atomName) { let ic = this.icn3d; ic.i...
method getLastAtomObj (line 79543) | getLastAtomObj(atomsHash) { let ic = this.icn3d; ic.icn3dui;
method getResiduesFromAtoms (line 79555) | getResiduesFromAtoms(atomsHash) { let ic = this.icn3d; ic.icn3dui;
method getResiduesFromCalphaAtoms (line 79565) | getResiduesFromCalphaAtoms(atomsHash) { let ic = this.icn3d; ic.icn3dui;
method getChainsFromAtoms (line 79579) | getChainsFromAtoms(atomsHash) { let ic = this.icn3d; ic.icn3dui;
method getAtomFromResi (line 79591) | getAtomFromResi(resid, atomName) { let ic = this.icn3d; ic.icn3dui;
method getAtomCoordFromResi (line 79603) | getAtomCoordFromResi(resid, atomName) { let ic = this.icn3d; ic.icn3dui;
class Strip (line 79619) | class Strip {
method constructor (line 79620) | constructor(icn3d) {
method createStrip (line 79625) | createStrip(p0, p1, colors, div, thickness, bHighlight, bNoSmoothen, b...
method setCalphaDrawnCoord (line 79931) | setCalphaDrawnCoord(pnts, div, calphaIdArray) { let ic = this.icn3d; i...
class Tube (line 79952) | class Tube {
method constructor (line 79953) | constructor(icn3d) {
method createTube (line 79961) | createTube(atoms, atomName, radius, bHighlight, bCustom, bNonCoil) { l...
method getCustomtubesize (line 80261) | getCustomtubesize(resid) { let ic = this.icn3d; ic.icn3dui;
method createTubeSub (line 80272) | createTubeSub(_pnts, colors, radii, bHighlight, prevone, nexttwo, bNon...
method getRadius (line 80425) | getRadius(radius, atom) { let ic = this.icn3d; ic.icn3dui;
class Strand (line 80450) | class Strand {
method constructor (line 80451) | constructor(icn3d) {
method createStrand (line 80462) | createStrand(atoms, num, div, fill, coilWidth, helixSheetWidth, doNotS...
method getSSExpandedAtoms (line 80883) | getSSExpandedAtoms(atoms, bHighlight) { let ic = this.icn3d, me = ic.i...
class CartoonNucl (line 80996) | class CartoonNucl {
method constructor (line 80997) | constructor(icn3d) {
method drawCartoonNucleicAcid (line 81005) | drawCartoonNucleicAcid(atomlist, div, thickness, bHighlight) {
method drawStrandNucleicAcid (line 81010) | drawStrandNucleicAcid(atomlist, num, div, fill, nucleicAcidWidth, thic...
method drawNucleicAcidStick (line 81099) | drawNucleicAcidStick(atomlist, bHighlight) { let ic = this.icn3d, me =...
class TextSprite (line 81138) | class TextSprite {
method constructor (line 81139) | constructor(icn3d) {
method makeTextSprite (line 81146) | makeTextSprite( message, parameters ) { let ic = this.icn3d, me = ic.i...
method roundRect (line 81283) | roundRect(ctx, x, y, w, h, r) {
method circle (line 81299) | circle(ctx, x, y, w, h, r) {
class Label (line 81308) | class Label {
method constructor (line 81309) | constructor(icn3d) {
method createLabelRepresentation (line 81318) | createLabelRepresentation(labels) { let ic = this.icn3d; ic.icn3dui;
method hideLabels (line 81372) | hideLabels() { let ic = this.icn3d; ic.icn3dui;
class Axes (line 81390) | class Axes {
method constructor (line 81391) | constructor(icn3d) {
method buildAxes (line 81397) | buildAxes(radius, center, positionX, positionY, positionZ, bSelection)...
method buildAllAxes (line 81470) | buildAllAxes(radius, bSelection) { let ic = this.icn3d, me = ic.icn3dui;
method createArrow (line 81485) | createArrow(dir, origin, axisLen, color, headLength, headWidth, bGlyca...
method setPc1Axes (line 81525) | setPc1Axes(bXAxis) { let ic = this.icn3d, me = ic.icn3dui;
class Glycan (line 81632) | class Glycan {
method constructor (line 81633) | constructor(icn3d) {
method showGlycans (line 81637) | showGlycans() { let ic = this.icn3d, me = ic.icn3dui;
class MarchingCube (line 81699) | class MarchingCube {
method constructor (line 81700) | constructor(icn3d) {
class ProteinSurface (line 82328) | class ProteinSurface {
method constructor (line 82329) | constructor(icn3d, threshbox) {
class ElectronMap (line 83420) | class ElectronMap {
method constructor (line 83421) | constructor(icn3d) {
class Surface (line 84020) | class Surface {
method constructor (line 84021) | constructor(icn3d) {
method createSurfaceRepresentation (line 84030) | createSurfaceRepresentation(atoms, type, wireframe, opacity) { let ic ...
method transformMemPro (line 84556) | transformMemPro(inCoord, rot, centerFrom, centerTo, bOut) { let ic = t...
method SetupSurface (line 84574) | SetupSurface(data) { let ic = this.icn3d; ic.icn3dui;
method SetupMap (line 84611) | SetupMap(data) { let ic = this.icn3d; ic.icn3dui;
class ApplyCenter (line 84673) | class ApplyCenter {
method constructor (line 84674) | constructor(icn3d) {
method applyCenterOptions (line 84678) | applyCenterOptions(options) { let ic = this.icn3d; ic.icn3dui;
method setRotationCenter (line 84706) | setRotationCenter(coord) { let ic = this.icn3d; ic.icn3dui;
method setCenter (line 84710) | setCenter(center) { let ic = this.icn3d; ic.icn3dui;
method centerSelection (line 84724) | centerSelection(atoms, bNoOrientation) { let ic = this.icn3d, me = ic....
method centerAtoms (line 84755) | centerAtoms(atoms) { let ic = this.icn3d; ic.icn3dui;
method setWidthHeight (line 84779) | setWidthHeight(width, height) { let ic = this.icn3d; ic.icn3dui;
class ApplyClbonds (line 84804) | class ApplyClbonds {
method constructor (line 84805) | constructor(icn3d) {
method applyClbondsOptions (line 84809) | applyClbondsOptions(options) { let ic = this.icn3d, me = ic.icn3dui;
method applyClbondsOptions_base (line 84890) | applyClbondsOptions_base(type) { let ic = this.icn3d, me = ic.icn3dui;
class ApplyMissingRes (line 84934) | class ApplyMissingRes {
method constructor (line 84935) | constructor(icn3d) {
method applyMissingResOptions (line 84939) | applyMissingResOptions(options) { let ic = this.icn3d; ic.icn3dui;
method applyMissingResOptions_base (line 84986) | applyMissingResOptions_base(type) { let ic = this.icn3d; ic.icn3dui;
class ApplyDisplay (line 85046) | class ApplyDisplay {
method constructor (line 85047) | constructor(icn3d) {
method applyDisplayOptions (line 85052) | applyDisplayOptions(options, atoms, bHighlight) { let ic = this.icn3d,...
method changeLabelColor (line 85366) | changeLabelColor(labelArray) { let ic = this.icn3d; ic.icn3dui;
method selectMainChainSubset (line 85380) | selectMainChainSubset(atoms) { let ic = this.icn3d; ic.icn3dui;
class ApplyOther (line 85400) | class ApplyOther {
method constructor (line 85401) | constructor(icn3d) {
method applyOtherOptions (line 85406) | applyOtherOptions(options) { let ic = this.icn3d, me = ic.icn3dui;
method applyChemicalbindingOptions (line 85555) | applyChemicalbindingOptions(options) { let ic = this.icn3d, me = ic.ic...
method updateStabilizer (line 85593) | updateStabilizer() { let ic = this.icn3d; ic.icn3dui;
method getResidueRepPos (line 85607) | getResidueRepPos(serial) { let ic = this.icn3d; ic.icn3dui;
class ApplySsbonds (line 85643) | class ApplySsbonds {
method constructor (line 85644) | constructor(icn3d) {
method applySsbondsOptions (line 85649) | applySsbondsOptions(options) { let ic = this.icn3d, me = ic.icn3dui;
class ApplySymd (line 85817) | class ApplySymd {
method constructor (line 85818) | constructor(icn3d) {
method applySymd (line 85822) | applySymd() { let ic = this.icn3d; ic.icn3dui;
method applySymmetry (line 85830) | applySymmetry(title, bSymd, inDataArray) { let ic = this.icn3d, me = i...
class ApplyMap (line 86105) | class ApplyMap {
method constructor (line 86106) | constructor(icn3d) {
method applySurfaceOptions (line 86111) | applySurfaceOptions(options) { let ic = this.icn3d, me = ic.icn3dui;
method applyMapOptions (line 86165) | applyMapOptions(options) { let ic = this.icn3d, me = ic.icn3dui;
method applyEmmapOptions (line 86199) | applyEmmapOptions(options) { let ic = this.icn3d, me = ic.icn3dui;
method applyPhimapOptions (line 86229) | applyPhimapOptions(options) { let ic = this.icn3d, me = ic.icn3dui;
method applyphisurfaceOptions (line 86259) | applyphisurfaceOptions(options) { let ic = this.icn3d, me = ic.icn3dui;
method removeSurfaces (line 86295) | removeSurfaces() { let ic = this.icn3d; ic.icn3dui;
method removeLastSurface (line 86304) | removeLastSurface() { let ic = this.icn3d; ic.icn3dui;
method removeMaps (line 86312) | removeMaps() { let ic = this.icn3d; ic.icn3dui;
method removeEmmaps (line 86321) | removeEmmaps() { let ic = this.icn3d; ic.icn3dui;
method removePhimaps (line 86330) | removePhimaps() { let ic = this.icn3d; ic.icn3dui;
method removeLastMap (line 86340) | removeLastMap() { let ic = this.icn3d; ic.icn3dui;
method removeLastEmmap (line 86348) | removeLastEmmap() { let ic = this.icn3d; ic.icn3dui;
method removeLastPhimap (line 86356) | removeLastPhimap() { let ic = this.icn3d; ic.icn3dui;
class ResidueLabels (line 86369) | class ResidueLabels {
method constructor (line 86370) | constructor(icn3d) {
method addResidueLabels (line 86376) | addResidueLabels(atoms, bSchematic, alpha, bNumber, bRefnum) { let ic ...
method addIgLabels (line 86459) | addIgLabels(atoms) { let ic = this.icn3d, me = ic.icn3dui;
method addNonCarbonAtomLabels (line 86485) | addNonCarbonAtomLabels(atoms) { let ic = this.icn3d, me = ic.icn3dui;
method addAtomLabels (line 86520) | addAtomLabels(atoms, bElement) { let ic = this.icn3d, me = ic.icn3dui;
class Impostor (line 86565) | class Impostor {
method constructor (line 86566) | constructor(icn3d) {
method onBeforeRender (line 86570) | onBeforeRender(renderer, scene, camera, geometry, material, group) {
method setParametersForShader (line 86668) | setParametersForShader (opacity) { let ic = this.icn3d, me = ic.icn3dui;
method drawImpostorShader (line 86748) | drawImpostorShader () { let ic = this.icn3d, me = ic.icn3dui;
method getShader (line 86758) | getShader (name) { let ic = this.icn3d; ic.icn3dui;
method createImpostorShaderBase (line 86776) | createImpostorShaderBase(shaderName, mapping, mappingIndices, data, at...
method createImpostorShaderCylinder (line 86917) | createImpostorShaderCylinder(shaderName) { let ic = this.icn3d; ic.icn...
method createImpostorShaderSphere (line 86982) | createImpostorShaderSphere(shaderName) { let ic = this.icn3d; ic.icn3dui;
method clearImpostors (line 87032) | clearImpostors() { let ic = this.icn3d; ic.icn3dui;
class Instancing (line 87050) | class Instancing {
method constructor (line 87051) | constructor(icn3d) {
method positionFromGeometry (line 87055) | positionFromGeometry( mesh ){ let ic = this.icn3d; ic.icn3dui;
method colorFromGeometry (line 87091) | colorFromGeometry( mesh ){ let ic = this.icn3d, me = ic.icn3dui;
method indexFromGeometry (line 87149) | indexFromGeometry( mesh ){ let ic = this.icn3d; ic.icn3dui;
method normalFromGeometry (line 87174) | normalFromGeometry( mesh ){ let ic = this.icn3d; ic.icn3dui;
method drawSymmetryMates (line 87214) | drawSymmetryMates() { let ic = this.icn3d, me = ic.icn3dui;
method applyMat (line 87226) | applyMat(obj, mat, bVector3) { let ic = this.icn3d; ic.icn3dui;
method drawSymmetryMatesNoInstancing (line 87298) | drawSymmetryMatesNoInstancing() { let ic = this.icn3d; ic.icn3dui;
method createInstancedGeometry (line 87396) | createInstancedGeometry(mesh) { let ic = this.icn3d, me = ic.icn3dui;
method getInstancedMaterial (line 87546) | getInstancedMaterial(name) { let ic = this.icn3d; ic.icn3dui;
method createInstancedMesh (line 87566) | createInstancedMesh(mdl) { let ic = this.icn3d; ic.icn3dui;
method drawSymmetryMatesInstancing (line 87592) | drawSymmetryMatesInstancing() { let ic = this.icn3d; ic.icn3dui;
class Alternate (line 87670) | class Alternate {
method constructor (line 87671) | constructor(icn3d) {
method alternateStructures (line 87677) | alternateStructures() { let ic = this.icn3d, me = ic.icn3dui;
method alternateWrapper (line 87820) | async alternateWrapper() { let ic = this.icn3d; ic.icn3dui;
class Draw (line 87832) | class Draw {
method constructor (line 87833) | constructor(icn3d) {
method draw (line 87838) | draw(bVrAr) { let ic = this.icn3d, me = ic.icn3dui;
method applyTransformation (line 87894) | applyTransformation(_zoomFactor, mouseChange, quaternion) { let ic = t...
method render (line 87920) | render(bVrAr) { let ic = this.icn3d; ic.icn3dui;
method handleController (line 87933) | handleController( controller, dt, selectPressed, squeezePressed, xArra...
method showPickingVr (line 88015) | showPickingVr(pk, atom) { let ic = this.icn3d; ic.icn3dui;
method render_base (line 88031) | render_base() { let ic = this.icn3d, me = ic.icn3dui;
method updateGamepadState (line 88096) | updateGamepadState() { let ic = this.icn3d; ic.icn3dui;
class Contact (line 88135) | class Contact {
method constructor (line 88136) | constructor(icn3d) {
method getAtomsWithinAtom (line 88144) | getAtomsWithinAtom(atomlist, atomlistTarget, distance, bGetPairs, bInt...
method getNeighboringAtoms (line 88274) | getNeighboringAtoms(atomlist, atomlistTarget, distance, bIncludeTarget...
method getExtent (line 88314) | getExtent(atomlist) { let ic = this.icn3d; ic.icn3dui;
method hideContact (line 88342) | hideContact() { let ic = this.icn3d; ic.icn3dui;
class HBond (line 88355) | class HBond {
method constructor (line 88356) | constructor(icn3d) {
method isHbondDonorAcceptor (line 88362) | isHbondDonorAcceptor(atom) { let ic = this.icn3d; ic.icn3dui;
method calcAngles (line 88482) | calcAngles(ap1, ap2) { let ic = this.icn3d; ic.icn3dui;
method calcPlaneAngle (line 88506) | calcPlaneAngle(ap1, ap2) { let ic = this.icn3d; ic.icn3dui;
method isValidHbond (line 88542) | isValidHbond(atom, atomHbond, threshold) { let ic = this.icn3d; ic.icn...
method calculateChemicalHbonds (line 88627) | calculateChemicalHbonds(startAtoms, targetAtoms, threshold, bSaltbridg...
method setHbondsContacts (line 88854) | setHbondsContacts(options, type) { let ic = this.icn3d; ic.icn3dui;
method hideHbonds (line 88907) | hideHbonds() { let ic = this.icn3d; ic.icn3dui;
class PiHalogen (line 88920) | class PiHalogen {
method constructor (line 88921) | constructor(icn3d) {
method calculateHalogenPiInteractions (line 88926) | calculateHalogenPiInteractions(startAtoms, targetAtoms, threshold, typ...
method getHalogenDonar (line 89081) | getHalogenDonar(atom) { let ic = this.icn3d; ic.icn3dui;
method getHalogenAcceptor (line 89092) | getHalogenAcceptor(atom) { let ic = this.icn3d; ic.icn3dui;
method getPi (line 89104) | getPi(atom, bStacking) { let ic = this.icn3d, me = ic.icn3dui;
method getCation (line 89147) | getCation(atom) { let ic = this.icn3d, me = ic.icn3dui;
method getHalogenPiInteractions (line 89168) | getHalogenPiInteractions(atom1, atom2, type, interactionType, threshol...
method getRingNormal (line 89220) | getRingNormal(coordArray) { let ic = this.icn3d; ic.icn3dui;
method getAromaticRings (line 89229) | getAromaticRings(resn, resid, type) { let ic = this.icn3d; ic.icn3dui;
method dfs_cycle (line 89376) | dfs_cycle(u, p, cyclenumber) { let ic = this.icn3d; ic.icn3dui;
method getAromaticPisLigand (line 89422) | getAromaticPisLigand(resid) { let ic = this.icn3d; ic.icn3dui;
method hideHalogenPi (line 89496) | hideHalogenPi() { let ic = this.icn3d; ic.icn3dui;
class Saltbridge (line 89515) | class Saltbridge {
method constructor (line 89516) | constructor(icn3d) {
method calculateIonicInteractions (line 89521) | calculateIonicInteractions(startAtoms, targetAtoms, threshold, bSaltbr...
method isAnion (line 89691) | isAnion(atom) { let ic = this.icn3d, me = ic.icn3dui;
method hideSaltbridge (line 89720) | hideSaltbridge() { let ic = this.icn3d; ic.icn3dui;
class SetStyle (line 89733) | class SetStyle {
method constructor (line 89734) | constructor(icn3d) {
method setStyle2Atoms (line 89739) | setStyle2Atoms(atoms) { let ic = this.icn3d; ic.icn3dui;
method setAtomStyleByOptions (line 89763) | setAtomStyleByOptions(options) { let ic = this.icn3d, me = ic.icn3dui;
method setBackground (line 89823) | setBackground(color) {var ic = this.icn3d, me = ic.icn3dui;
method saveCommandsToSession (line 89837) | saveCommandsToSession() {var ic = this.icn3d; ic.icn3dui;
method getCommandsBeforeCrash (line 89847) | getCommandsBeforeCrash() {var ic = this.icn3d, me = ic.icn3dui;
method handleContextLost (line 89861) | handleContextLost() {var ic = this.icn3d; ic.icn3dui;
method adjustIcon (line 89890) | adjustIcon() {var ic = this.icn3d; ic.icn3dui;
class SetColor (line 89922) | class SetColor {
method constructor (line 89923) | constructor(icn3d) {
method colorSpectrum (line 89927) | colorSpectrum(atoms) { let ic = this.icn3d, me = ic.icn3dui;
method colorRainbow (line 89950) | colorRainbow(atoms) { let ic = this.icn3d, me = ic.icn3dui;
method setColorAcrossSets (line 89973) | setColorAcrossSets(nameArray, bSpectrum) { let ic = this.icn3d, me = i...
method setColorBySets (line 89998) | setColorBySets(nameArray, bSpectrum) { let ic = this.icn3d; ic.icn3dui;
method setColorByOptions (line 90014) | setColorByOptions(options, atoms, bUseInputColor) { let ic = this.icn3...
method setAtmClr (line 90641) | setAtmClr(atoms, hex) { let ic = this.icn3d, me = ic.icn3dui;
method updateChainsColor (line 90650) | updateChainsColor(atom) { let ic = this.icn3d; ic.icn3dui;
method setMmdbChainColor (line 90657) | setMmdbChainColor(inAtoms) { let ic = this.icn3d, me = ic.icn3dui;
method setConservationColor (line 90674) | setConservationColor(atoms, bIdentity) { let ic = this.icn3d, me = ic....
method applyOriginalColor (line 90694) | applyOriginalColor(atoms) { let ic = this.icn3d, me = ic.icn3dui;
method applyPrevColor (line 90713) | applyPrevColor() { let ic = this.icn3d; ic.icn3dui;
method setOutlineColor (line 90721) | setOutlineColor(colorStr) { let ic = this.icn3d; ic.icn3dui;
class SetOption (line 90790) | class SetOption {
method constructor (line 90791) | constructor(icn3d) {
method setOption (line 90796) | setOption(id, value) {var ic = this.icn3d; ic.icn3dui;
method setStyle (line 90861) | setStyle(selectionType, style) {var ic = this.icn3d, me = ic.icn3dui;
method saveStyle (line 90921) | saveStyle() {var ic = this.icn3d; ic.icn3dui;
method applySavedStyle (line 90930) | applySavedStyle() {var ic = this.icn3d; ic.icn3dui;
method saveColor (line 90944) | saveColor() {var ic = this.icn3d; ic.icn3dui;
method applySavedColor (line 90952) | applySavedColor() {var ic = this.icn3d; ic.icn3dui;
class LegendTable (line 90970) | class LegendTable {
method constructor (line 90971) | constructor(icn3d) {
method showColorLegend (line 90975) | showColorLegend(colorType) { let ic = this.icn3d, me = ic.icn3dui;
method getColorLegendForElem (line 91116) | getColorLegendForElem(category, atomHash) { let ic = this.icn3d, me = ...
method getRes2color (line 91150) | getRes2color(atomHash, bOriResn) { let ic = this.icn3d, me = ic.icn3dui;
method getColorLegendForResidue (line 91172) | getColorLegendForResidue(atomHash) { let ic = this.icn3d; ic.icn3dui;
method getColorLegendForCharge (line 91212) | getColorLegendForCharge(atomHash) { let ic = this.icn3d; ic.icn3dui;
method getColorLegendForIgstrand (line 91261) | getColorLegendForIgstrand(atomHash) { let ic = this.icn3d; ic.icn3dui;
method getColorLegendForIgproto (line 91293) | getColorLegendForIgproto(atomHash) { let ic = this.icn3d; ic.icn3dui;
class AnnoCddSite (line 91332) | class AnnoCddSite {
method constructor (line 91333) | constructor(icn3d) {
method showCddSiteAll (line 91338) | async showCddSiteAll() { let ic = this.icn3d, me = ic.icn3dui;
method parseCddData (line 91409) | parseCddData(dataArray, chnidArray, bSeq) { let ic = this.icn3d, me = ...
method getNoCdd (line 91583) | getNoCdd(chnidBaseArray) { let ic = this.icn3d; ic.icn3dui;
method getResiArrayStr (line 91598) | getResiArrayStr(resiNCBIArray, chainid) { let ic = this.icn3d; ic.icn3...
method setDomainFeature (line 91614) | setDomainFeature(domainArray, chnid, type, html, html2, html3, acc2dom...
method getColorFromPos (line 91843) | getColorFromPos(chainid, pos, bIg) { let ic = this.icn3d; ic.icn3dui;
method showAnnoType (line 91862) | showAnnoType(chnid, chnidBase, type, title, residueArray, resid2resids...
method setToolTip (line 91990) | setToolTip() { let ic = this.icn3d; ic.icn3dui;
class AnnoContact (line 92016) | class AnnoContact {
method constructor (line 92017) | constructor(icn3d) {
method showInteraction (line 92022) | showInteraction(chnid, chnidBase) { let ic = this.icn3d; ic.icn3dui;
method showInteraction_base (line 92036) | showInteraction_base(chnid, chnidBase) { let ic = this.icn3d, me = ic....
class AnnoPTM (line 92209) | class AnnoPTM {
method constructor (line 92210) | constructor(icn3d) {
method showPTM (line 92215) | async showPTM(chnid, chnidBase, type, begin, end) { let ic = this.icn3...
method parsePTM (line 92319) | parsePTM(data, chnid, type) { let ic = this.icn3d, me = ic.icn3dui;
method setAnnoPtmTransmem (line 92376) | setAnnoPtmTransmem(type, ptmHash, chnid) { let ic = this.icn3d, me = i...
method getNoPTM (line 92486) | getNoPTM(chnid, type) { let ic = this.icn3d; ic.icn3dui;
class AnnoIg (line 92506) | class AnnoIg {
method constructor (line 92507) | constructor(icn3d) {
method showIg (line 92512) | async showIg(chnid, template) { let ic = this.icn3d; ic.icn3dui;
method showAllRefNum (line 92537) | showAllRefNum(giSeq, chnid) { let ic = this.icn3d; ic.icn3dui;
method showRefNum (line 92590) | showRefNum(giSeq, chnid, kabat_or_imgt, bCustom) { let ic = this.icn3...
method setChain2igArray (line 92608) | setChain2igArray(chnid, giSeq, bCustom) { let ic = this.icn3d; ic.icn3...
method getIgAnnoHtml (line 92649) | getIgAnnoHtml(chnid, giSeq, bCustom, kabat_or_imgt) { let ic = this.ic...
method getRefnumHtml (line 93006) | getRefnumHtml(residueid, refnumStr, refnumStr_ori, refnumLabel, currSt...
method getRefnumColor (line 93040) | getRefnumColor(currStrand, bText) { let ic = this.icn3d, me = ic.icn3...
method getProtodomainColor (line 93076) | getProtodomainColor(currStrand) { let ic = this.icn3d, me = ic.icn3dui;
class AnnoCrossLink (line 93104) | class AnnoCrossLink {
method constructor (line 93105) | constructor(icn3d) {
method showCrosslink (line 93109) | showCrosslink(chnid, chnidBase) { let ic = this.icn3d; ic.icn3dui;
method showCrosslink_base (line 93121) | showCrosslink_base(chnid, chnidBase) { let ic = this.icn3d, me = ic.ic...
class AnnoDomain (line 93163) | class AnnoDomain {
method constructor (line 93164) | constructor(icn3d) {
method showDomainPerStructure (line 93168) | showDomainPerStructure(index, bNotShowDomain) { let ic = this.icn3d; i...
method showDomainAll (line 93241) | showDomainAll(bNotShowDomain) { let ic = this.icn3d; ic.icn3dui;
method getResiFromNnbiresid (line 93257) | getResiFromNnbiresid(ncbiresid) { let ic = this.icn3d; ic.icn3dui;
method getNcbiresiFromResid (line 93264) | getNcbiresiFromResid(resid) { let ic = this.icn3d; ic.icn3dui;
method showDomainWithData (line 93271) | showDomainWithData(chnid, data, bNotShowDomain) { let ic = this.icn3d,...
method showHideClashedResidues (line 93509) | showHideClashedResidues() { let ic = this.icn3d, me = ic.icn3dui;
method getMoreResidues (line 93529) | getMoreResidues(resi, chainid, direction, condition) { let ic = this.i...
class AnnoSnpClinVar (line 93564) | class AnnoSnpClinVar {
method constructor (line 93565) | constructor(icn3d) {
method showSnp (line 93569) | async showSnp(chnid, chnidBase) { let ic = this.icn3d; ic.icn3dui;
method showClinvar (line 93572) | async showClinvar(chnid, chnidBase) { let ic = this.icn3d; ic.icn3dui;
method showSnpClinvar (line 93577) | async showSnpClinvar(chnid, chnidBase, bSnpOnly) { let ic = this.icn3d...
method navClinVar (line 93611) | navClinVar(chnid) { let ic = this.icn3d; ic.icn3dui;
method showClinVarLabelOn3D (line 93634) | showClinVarLabelOn3D(chnid) { let ic = this.icn3d, me = ic.icn3dui;
method getSnpLine (line 93676) | getSnpLine(line, totalLineNum, resi2snp, resi2rsnum, resi2clinAllele, ...
method processSnpClinvar (line 94094) | processSnpClinvar(data, chnid, chnidBase, bSnpOnly, bVirus) { let ic =...
method showClinvarPart2 (line 94282) | async showClinvarPart2(chnid, chnidBase, gi) { let ic = this.icn3d, me...
method getUniprotForAllStructures (line 94313) | async getUniprotForAllStructures() { let ic = this.icn3d, me = ic.icn3...
method showSnpPart2 (line 94340) | async showSnpPart2(chnid, chnidBase, gi) { let ic = this.icn3d, me = i...
method processNoClinvar (line 94375) | processNoClinvar(chnid) { let ic = this.icn3d; ic.icn3dui;
method processNoSnp (line 94383) | processNoSnp(chnid) { let ic = this.icn3d; ic.icn3dui;
class AnnoSsbond (line 94398) | class AnnoSsbond {
method constructor (line 94399) | constructor(icn3d) {
method showSsbond (line 94404) | showSsbond(chnid, chnidBase) { let ic = this.icn3d; ic.icn3dui;
method showSsbond_base (line 94416) | showSsbond_base(chnid, chnidBase) { let ic = this.icn3d, me = ic.icn3dui;
class AnnoTransMem (line 94457) | class AnnoTransMem {
method constructor (line 94458) | constructor(icn3d) {
method showTransmem (line 94462) | showTransmem(chnid, chnidBase) { let ic = this.icn3d; ic.icn3dui;
method showTransmem_base (line 94474) | showTransmem_base(chnid, chnidBase) { let ic = this.icn3d; ic.icn3dui;
class Domain3d (line 94495) | class Domain3d {
method constructor (line 94496) | constructor(icn3d) {
method init3ddomain (line 94502) | init3ddomain() { let ic = this.icn3d; ic.icn3dui;
method update_partition (line 94585) | update_partition(cut, k, n) { let ic = this.icn3d; ic.icn3dui;
method cut_size (line 94730) | cut_size(k, n) { let ic = this.icn3d; ic.icn3dui;
method process_set (line 94780) | process_set() { let ic = this.icn3d; ic.icn3dui;
method process_all (line 94863) | process_all(n) { let ic = this.icn3d; ic.icn3dui;
method output (line 94884) | output(n) { let ic = this.icn3d; ic.icn3dui;
method new_split_chain (line 94930) | new_split_chain(ne, sratio, msize, m_sse, mcsz, avg_cts,
method c2b_AlphaContacts (line 94979) | c2b_AlphaContacts(n0, x0, y0, z0, dcut, resiArray) { let ic = this.icn...
method c2b_ContactTable (line 95067) | c2b_ContactTable(v1, v2) { let ic = this.icn3d; ic.icn3dui;
method countUtil (line 95100) | countUtil(ss1, sheetNeighbor, existing_groups) {
method c2b_NewSplitChain (line 95131) | c2b_NewSplitChain(atoms, dcut) { let ic = this.icn3d; ic.icn3dui;
method standardizeSubstruct (line 95678) | standardizeSubstruct(chnid, substruct, pos2resi) { let ic = this.icn3d...
method getNcbiresiRangeFromPos (line 95702) | getNcbiresiRangeFromPos(chnid, startPos, endPos, pos2resi) { let ic = ...
method getDomainJsonForAlign (line 95829) | getDomainJsonForAlign(atoms) { let ic = this.icn3d, me = ic.icn3dui;
class AddTrack (line 95967) | class AddTrack {
method constructor (line 95968) | constructor(icn3d) {
method clickAddTrackButton (line 95972) | clickAddTrackButton() { let ic = this.icn3d, me = ic.icn3dui;
method showNewTrack (line 96249) | showNewTrack(chnid, title, text, cssColorArray, inTarget2queryHash, ty...
method getExonHtml (line 96593) | getExonHtml(exonIndex, colorGradient, from, to, genomeRange, chainid, ...
method getExonColor (line 96597) | getExonColor(start, end, pos) { let ic = this.icn3d; ic.icn3dui;
method alignSequenceToStructure (line 96609) | alignSequenceToStructure(chainid, data, title) { let ic = this.icn3d, ...
method defineSecondary (line 96681) | defineSecondary(chainid, type) { let ic = this.icn3d, me = ic.icn3dui;
method defineIgstrand (line 96783) | defineIgstrand(chainid, type) { let ic = this.icn3d, me = ic.icn3dui;
method simplifyText (line 96905) | simplifyText(text) { let ic = this.icn3d; ic.icn3dui;
method checkGiSeq (line 96944) | checkGiSeq(chainid, title, text, type, color, bMsa, index) { let ic = ...
method getFullText (line 96960) | getFullText(text) { let ic = this.icn3d; ic.icn3dui;
method setCustomFile (line 97016) | setCustomFile(type, startColor, midColor, endColor) {var ic = this.icn...
method getMsa (line 97075) | async getMsa(acclist, firstAcc, chainSeq) { let ic = this.icn3d, me = ...
method getIsoformMsa (line 97304) | async getIsoformMsa(acclist, acc2exons) { let ic = this.icn3d, me = ic...
method showMsaTracks (line 97445) | async showMsaTracks(chainid, seqFirst, trackTitleArray, trackSeqArray,...
method processAccList (line 97643) | processAccList(acclist) { let ic = this.icn3d; ic.icn3dui;
method addExonTracksWrap (line 97674) | async addExonTracksWrap() { let ic = this.icn3d; ic.icn3dui;
method addExonTracks (line 97693) | async addExonTracks(chainid, geneid, startpos, type) { let ic = this.i...
method addMsaTracks (line 97812) | async addMsaTracks(chainid, startpos, type, fastaList) { let ic = this...
class Annotation (line 97849) | class Annotation {
method constructor (line 97850) | constructor(icn3d) {
method hideAllAnno (line 97854) | hideAllAnno() { let ic = this.icn3d; ic.icn3dui;
method setAnnoSeqBase (line 97858) | setAnnoSeqBase(bShow) { let ic = this.icn3d; ic.icn3dui;
method setAnnoTabBase (line 97871) | setAnnoTabBase(bChecked) { let ic = this.icn3d; ic.icn3dui;
method setAnnoTabAll (line 97879) | async setAnnoTabAll() { let ic = this.icn3d; ic.icn3dui;
method hideAnnoTabAll (line 97896) | hideAnnoTabAll() { let ic = this.icn3d; ic.icn3dui;
method resetAnnoAll (line 97900) | async resetAnnoAll() { let ic = this.icn3d; ic.icn3dui;
method resetAnnoTabAll (line 97920) | async resetAnnoTabAll() { let ic = this.icn3d; ic.icn3dui;
method setAnnoTabCustom (line 97985) | setAnnoTabCustom() { let ic = this.icn3d; ic.icn3dui;
method hideAnnoTabCustom (line 97989) | hideAnnoTabCustom() { let ic = this.icn3d; ic.icn3dui;
method setAnnoTabClinvar (line 97993) | async setAnnoTabClinvar() { let ic = this.icn3d; ic.icn3dui;
method hideAnnoTabClinvar (line 97999) | hideAnnoTabClinvar() { let ic = this.icn3d; ic.icn3dui;
method setAnnoTabSnp (line 98003) | async setAnnoTabSnp() { let ic = this.icn3d; ic.icn3dui;
method hideAnnoTabSnp (line 98009) | hideAnnoTabSnp() { let ic = this.icn3d; ic.icn3dui;
method setAnnoTabCdd (line 98013) | setAnnoTabCdd() { let ic = this.icn3d; ic.icn3dui;
method hideAnnoTabCdd (line 98017) | hideAnnoTabCdd() { let ic = this.icn3d; ic.icn3dui;
method setAnnoTab3ddomain (line 98021) | setAnnoTab3ddomain() { let ic = this.icn3d; ic.icn3dui;
method hideAnnoTab3ddomain (line 98027) | hideAnnoTab3ddomain() { let ic = this.icn3d; ic.icn3dui;
method setAnnoTabSite (line 98031) | setAnnoTabSite() { let ic = this.icn3d; ic.icn3dui;
method hideAnnoTabSite (line 98036) | hideAnnoTabSite() { let ic = this.icn3d; ic.icn3dui;
method setAnnoTabInteraction (line 98041) | setAnnoTabInteraction() { let ic = this.icn3d; ic.icn3dui;
method hideAnnoTabInteraction (line 98046) | hideAnnoTabInteraction() { let ic = this.icn3d; ic.icn3dui;
method setAnnoTabPTM (line 98050) | async setAnnoTabPTM() { let ic = this.icn3d; ic.icn3dui;
method hideAnnoTabPTM (line 98056) | hideAnnoTabPTM() { let ic = this.icn3d; ic.icn3dui;
method setAnnoTabSsbond (line 98060) | setAnnoTabSsbond() { let ic = this.icn3d; ic.icn3dui;
method hideAnnoTabSsbond (line 98065) | hideAnnoTabSsbond() { let ic = this.icn3d; ic.icn3dui;
method setAnnoTabCrosslink (line 98069) | setAnnoTabCrosslink() { let ic = this.icn3d; ic.icn3dui;
method hideAnnoTabCrosslink (line 98074) | hideAnnoTabCrosslink() { let ic = this.icn3d; ic.icn3dui;
method setAnnoTabTransmem (line 98078) | async setAnnoTabTransmem() { let ic = this.icn3d; ic.icn3dui;
method hideAnnoTabTransmem (line 98084) | hideAnnoTabTransmem() { let ic = this.icn3d; ic.icn3dui;
method setAnnoTabIg (line 98088) | async setAnnoTabIg(bSelection, template) { let ic = this.icn3d, me = ...
method hideAnnoTabIg (line 98099) | hideAnnoTabIg() { let ic = this.icn3d; ic.icn3dui;
method setTabs (line 98103) | setTabs() { let ic = this.icn3d, me = ic.icn3dui;
method clickCdd (line 98264) | clickCdd() { let ic = this.icn3d, me = ic.icn3dui;
method showAnnoSelectedChains (line 98277) | showAnnoSelectedChains() { let ic = this.icn3d, me = ic.icn3dui;
method showAnnoAllChains (line 98300) | showAnnoAllChains() { let ic = this.icn3d; ic.icn3dui;
method setAnnoView (line 98303) | setAnnoView(view) { let ic = this.icn3d, me = ic.icn3dui;
method setAnnoDisplay (line 98315) | setAnnoDisplay(display, prefix) { let ic = this.icn3d; ic.icn3dui;
method showFixedTitle (line 98322) | showFixedTitle() { let ic = this.icn3d; ic.icn3dui;
method hideFixedTitle (line 98326) | hideFixedTitle() { let ic = this.icn3d; ic.icn3dui;
method setAnnoViewAndDisplay (line 98330) | setAnnoViewAndDisplay(view) { let ic = this.icn3d; ic.icn3dui;
method updateClinvar (line 98354) | async updateClinvar() { let ic = this.icn3d; ic.icn3dui;
method updateSnp (line 98363) | async updateSnp() { let ic = this.icn3d; ic.icn3dui;
method updateDomain (line 98372) | updateDomain() { let ic = this.icn3d; ic.icn3dui;
method updateInteraction (line 98378) | updateInteraction() { let ic = this.icn3d; ic.icn3dui;
method updatePTM (line 98387) | async updatePTM() { let ic = this.icn3d; ic.icn3dui;
method updateSsbond (line 98396) | updateSsbond() { let ic = this.icn3d; ic.icn3dui;
method updateCrosslink (line 98405) | updateCrosslink() { let ic = this.icn3d; ic.icn3dui;
method updateTransmem (line 98415) | async updateTransmem() { let ic = this.icn3d, me = ic.icn3dui;
method updateIg (line 98435) | async updateIg(bSelection, template) { let ic = this.icn3d, me = ic.ic...
class ShowAnno (line 98475) | class ShowAnno {
method constructor (line 98476) | constructor(icn3d) {
method showAnnotations_part1 (line 98481) | showAnnotations_part1(atoms) { let ic = this.icn3d, me = ic.icn3dui;
method showAnnotations (line 98616) | async showAnnotations(atoms) { let ic = this.icn3d, me = ic.icn3dui;
method showAnnoSeqData (line 98731) | async showAnnoSeqData(nucleotide_chainid, chemical_chainid, chemical_s...
method getAnnotationData (line 98771) | async getAnnotationData() { let ic = this.icn3d, me = ic.icn3dui;
method getSequenceData (line 98917) | getSequenceData(chnid, chnidBase, type, index) { let ic = this.icn3d; ...
method getCombinedSequenceData (line 98952) | getCombinedSequenceData(name, residArray, index) { let ic = this.icn3d...
method processSeqData (line 99006) | async processSeqData(chainid_seq) { let ic = this.icn3d, me = ic.icn3dui;
method enableHlSeq (line 99240) | enableHlSeq() { let ic = this.icn3d, me = ic.icn3dui;
method getAnDiv (line 99254) | getAnDiv(chnid, anno) { let ic = this.icn3d; ic.icn3dui;
method addButton (line 99264) | addButton(chnid, classvalue, name, desc, width, buttonStyle) { let ic ...
method addSnpButton (line 99267) | addSnpButton(snp, classvalue, name, desc, width, buttonStyle) { let ic...
method conservativeReplacement (line 99270) | conservativeReplacement(resA, resB) { let ic = this.icn3d, me = ic.icn...
method getColorhexFromBlosum62 (line 99281) | getColorhexFromBlosum62(resA, resB) { let ic = this.icn3d, me = ic.icn...
class ShowSeq (line 99315) | class ShowSeq {
method constructor (line 99316) | constructor(icn3d) {
method getSeq (line 99320) | getSeq(chnid) { let ic = this.icn3d, me = ic.icn3dui;
method showSeq (line 99347) | showSeq(chnid, chnidBase, type, queryTitle, compTitle, queryText, comp...
method insertGap (line 99817) | insertGap(chnid, seqIndex, text, bNohtml) { let ic = this.icn3d; ic.i...
method insertMulGap (line 99826) | insertMulGap(n, text, bNohtml) { let ic = this.icn3d; ic.icn3dui;
method insertGapOverview (line 99839) | insertGapOverview(chnid, seqIndex) { let ic = this.icn3d; ic.icn3dui;
method insertMulGapOverview (line 99848) | insertMulGapOverview(chnid, n) { let ic = this.icn3d; ic.icn3dui;
method setAlternativeSeq (line 99858) | setAlternativeSeq(chnid, chnidBase) { let ic = this.icn3d; ic.icn3dui;
method getProteinName (line 99870) | getProteinName(chnid) { let ic = this.icn3d, me = ic.icn3dui;
class HlSeq (line 99896) | class HlSeq {
method constructor (line 99897) | constructor(icn3d) {
method selectSequenceNonMobile (line 99901) | selectSequenceNonMobile() { let ic = this.icn3d, me = ic.icn3dui;
method selectSequenceMobile (line 100007) | selectSequenceMobile() { let ic = this.icn3d, me = ic.icn3dui;
method selectChainMobile (line 100050) | selectChainMobile() { let ic = this.icn3d, me = ic.icn3dui;
method selectTitle (line 100078) | selectTitle(that) { let ic = this.icn3d, me = ic.icn3dui;
method selectResidues (line 100347) | selectResidues(id, that) { let ic = this.icn3d, me = ic.icn3dui;
class HlUpdate (line 100410) | class HlUpdate {
method constructor (line 100411) | constructor(icn3d) {
method update2DdgmContent (line 100417) | update2DdgmContent() { let ic = this.icn3d, me = ic.icn3dui;
method changeSeqColor (line 100441) | changeSeqColor(residueArray) { let ic = this.icn3d, me = ic.icn3dui;
method removeHlAll (line 100460) | removeHlAll() { let ic = this.icn3d; ic.icn3dui;
method removeHlObjects (line 100468) | removeHlObjects() { let ic = this.icn3d; ic.icn3dui;
method removeHlSeq (line 100473) | removeHlSeq() { let ic = this.icn3d; ic.icn3dui;
method removeHl2D (line 100479) | removeHl2D(bRemoveChainOnly) { let ic = this.icn3d; ic.icn3dui;
method removeHlMenus (line 100512) | removeHlMenus() { let ic = this.icn3d; ic.icn3dui;
method updateHlAll (line 100519) | updateHlAll(commandnameArray, bSetMenu, bUnion, bForceHighlight) { let...
method updateHlObjects (line 100539) | updateHlObjects(bForceHighlight) { let ic = this.icn3d; ic.icn3dui;
method updateHlSeq (line 100550) | updateHlSeq(bShowHighlight, residueHash, bUnion) { let ic = this.icn3d...
method updateHlSeqInChain (line 100561) | updateHlSeqInChain(commandnameArray, bUnion) { let ic = this.icn3d; ic...
method updateHl2D (line 100605) | updateHl2D(chainArray2d) { let ic = this.icn3d, me = ic.icn3dui;
method updateHlMenus (line 100673) | updateHlMenus(commandnameArray) { let ic = this.icn3d; ic.icn3dui;
method hlSequence (line 100684) | hlSequence(residueArray) { let ic = this.icn3d; ic.icn3dui;
method hlSeqInChain (line 100714) | hlSeqInChain(chainid) { let ic = this.icn3d; ic.icn3dui;
method toggleHighlight (line 100739) | toggleHighlight() { let ic = this.icn3d; ic.icn3dui;
method clearHighlight (line 100755) | clearHighlight() { let ic = this.icn3d; ic.icn3dui;
method showHighlight (line 100769) | showHighlight() { let ic = this.icn3d; ic.icn3dui;
method highlightChains (line 100775) | highlightChains(chainArray) { let ic = this.icn3d; ic.icn3dui;
method hlSummaryDomain3ddomain (line 100798) | hlSummaryDomain3ddomain(that) { let ic = this.icn3d; ic.icn3dui;
method removeSeqChainBkgd (line 100819) | removeSeqChainBkgd(currChain) {
method removeSeqResidueBkgd (line 100837) | removeSeqResidueBkgd() {
class HlObjects (line 100848) | class HlObjects {
method constructor (line 100849) | constructor(icn3d) {
method addHlObjects (line 100854) | addHlObjects(color, bRender, atomsHash) { let ic = this.icn3d, me = ic...
method removeHlObjects (line 100867) | removeHlObjects() { let ic = this.icn3d; ic.icn3dui;
class LineGraph (line 100889) | class LineGraph {
method constructor (line 100890) | constructor(icn3d) {
method drawLineGraph (line 100894) | drawLineGraph(lineGraphStr, bScatterplot) { let ic = this.icn3d, me = ...
method drawGraphPerType (line 101238) | drawGraphPerType(bCommonDiff, structureArray, bScatterplot, nodeArray1...
method getIdArrayFromNode (line 101289) | getIdArrayFromNode(node) { let ic = this.icn3d, me = ic.icn3dui;
method drawLineGraph_base (line 101300) | drawLineGraph_base(nodeArray1, nodeArray2, linkArray, name2node, heigh...
method drawScatterplot_base (line 101370) | drawScatterplot_base(nodeArray1, nodeArray2, linkArray, name2node, hei...
method getStrokecolor (line 101422) | getStrokecolor(value, type) { let ic = this.icn3d, me = ic.icn3dui;
method drawOnePairNode (line 101460) | drawOnePairNode(link, node1, node2, node2posSet1, node2posSet2, bConta...
method copyStylesInline (line 101513) | copyStylesInline(destinationNode, sourceNode) { let ic = this.icn3d; i...
class GetGraph (line 101536) | class GetGraph {
method constructor (line 101537) | constructor(icn3d) {
method getGraphData (line 101541) | getGraphData(atomSet2, atomSet1, nameArray2, nameArray, html, labelTyp...
method drawResNode (line 101654) | drawResNode(node, i, r, gap, margin, y, setName, bVertical, bContactMa...
method getNodeTopBottom (line 101707) | getNodeTopBottom(nameHash, name2node, bReverseNode, bCommonDiff, nameH...
method updateGraphJson (line 101753) | updateGraphJson(struc, index, nodeArray1, nodeArray2, linkArray) { let...
method updateGraphColor (line 101765) | updateGraphColor() { let ic = this.icn3d; ic.icn3dui;
method handleForce (line 101810) | handleForce() { let ic = this.icn3d, me = ic.icn3dui;
method getNodesLinksForSet (line 101824) | getNodesLinksForSet(atomSet, labelType, setName, bAnyAtom) { let ic = ...
method getHbondLinksForSet (line 101871) | getHbondLinksForSet(atoms, labelType) { let ic = this.icn3d, me = ic.i...
method getIonicLinksForSet (line 101889) | getIonicLinksForSet(atoms, labelType) { let ic = this.icn3d, me = ic.i...
method getHalogenPiLinksForSet (line 101904) | getHalogenPiLinksForSet(atoms, labelType) { let ic = this.icn3d, me = ...
method getContactLinksForSet (line 101932) | getContactLinksForSet(atoms, labelType, bCartoon2d) { let ic = this.ic...
method getContactLinks (line 101958) | getContactLinks(atomlistTarget, otherAtoms, labelType, bInternal, bCar...
method compNode (line 101966) | compNode(a, b, bReverseChain) { let ic = this.icn3d, me = ic.icn3dui;
method getGraphLinks (line 101988) | getGraphLinks(hash1, hash2, color, labelType, value, bCartoon2d) {var ...
method convertLabel2Resid (line 102062) | convertLabel2Resid(residLabel) {var ic = this.icn3d; ic.icn3dui;
class ShowInter (line 102086) | class ShowInter {
method constructor (line 102087) | constructor(icn3d) {
method showInteractions (line 102091) | async showInteractions(type) { let ic = this.icn3d, me = ic.icn3dui;
method showHbonds (line 102191) | showHbonds(threshold, nameArray2, nameArray, bHbondCalc, bSaltbridge, ...
method showHydrogens (line 102248) | showHydrogens() { let ic = this.icn3d, me = ic.icn3dui;
method hideHydrogens (line 102295) | hideHydrogens() { let ic = this.icn3d; ic.icn3dui;
method hideExtraBonds (line 102316) | hideExtraBonds() { let ic = this.icn3d; ic.icn3dui;
method hideHbondsContacts (line 102334) | hideHbondsContacts() { let ic = this.icn3d, me = ic.icn3dui;
method showIonicInteractions (line 102352) | showIonicInteractions(threshold, nameArray2, nameArray, bHbondCalc, bS...
method showHalogenPi (line 102390) | showHalogenPi(threshold, nameArray2, nameArray, bHbondCalc, type, inte...
method showClbonds (line 102437) | showClbonds() { let ic = this.icn3d, me = ic.icn3dui;
method showSsbonds (line 102458) | showSsbonds() { let ic = this.icn3d, me = ic.icn3dui;
method pickCustomSphere (line 102488) | pickCustomSphere(radius, nameArray2, nameArray, bSphereCalc, bInteract...
method pickCustomSphere_base (line 102533) | pickCustomSphere_base(radius, atomlistTarget, otherAtoms, bSphereCalc,...
class ViewInterPairs (line 102559) | class ViewInterPairs {
method constructor (line 102560) | constructor(icn3d) {
method viewInteractionPairs (line 102564) | async viewInteractionPairs(nameArray2, nameArray, bHbondCalc, type,
method clearInteractions (line 102939) | clearInteractions() { let ic = this.icn3d; ic.icn3dui;
method resetInteractionPairs (line 102955) | resetInteractionPairs() { let ic = this.icn3d; ic.icn3dui;
method retrieveInteractionData (line 102965) | async retrieveInteractionData() { let ic = this.icn3d, me = ic.icn3dui;
method getAllInteractionTable (line 102994) | getAllInteractionTable(type, index2xy, xlen, ylen, xcenter, ycenter) {...
method getInteractionPerResidue (line 103115) | getInteractionPerResidue(prevIds, strHbond, strIonic, strContact, strH...
method getInteractionPairDetails (line 103128) | getInteractionPairDetails(labels2dist, type, interactionType, index2xy...
method getContactPairDetails (line 103176) | getContactPairDetails(labels2dist, type, interactionType, index2xy, xl...
method exportInteractions (line 103288) | exportInteractions() {var ic = this.icn3d, me = ic.icn3dui;
method exportSsbondPairs (line 103302) | exportSsbondPairs() {var ic = this.icn3d, me = ic.icn3dui;
method exportClbondPairs (line 103323) | exportClbondPairs() {var ic = this.icn3d, me = ic.icn3dui;
method exportHbondPairs (line 103351) | exportHbondPairs(type, labelType) {var ic = this.icn3d, me = ic.icn3dui;
method exportSaltbridgePairs (line 103389) | exportSaltbridgePairs(type, labelType) {var ic = this.icn3d, me = ic.i...
method exportHalogenPiPairs (line 103427) | exportHalogenPiPairs(type, labelType, interactionType) {var ic = this....
method exportSpherePairs (line 103481) | exportSpherePairs(bInteraction, type, labelType) {var ic = this.icn3d,...
class DrawGraph (line 103545) | class DrawGraph {
method constructor (line 103546) | constructor(icn3d) {
method drawGraph (line 103550) | drawGraph(jsonStr, divid) { var ic = this.icn3d, me = ic.icn3dui;
class ContactMap (line 103999) | class ContactMap {
method constructor (line 104000) | constructor(icn3d) {
method contactMap (line 104004) | async contactMap(contactDist, type) { let ic = this.icn3d; ic.icn3dui;
method afErrorMap (line 104023) | async afErrorMap(afid, bFull) { let ic = this.icn3d, me = ic.icn3dui;
method processAfErrorMap (line 104035) | processAfErrorMap(dataJson, bFull) { let ic = this.icn3d, me = ic.icn3...
method drawContactMap (line 104142) | drawContactMap(lineGraphStr, bAfMap, max) { let ic = this.icn3d, me = ...
class AlignParser (line 104260) | class AlignParser {
method constructor (line 104261) | constructor(icn3d) {
method downloadAlignment (line 104266) | async downloadAlignment(align, bDiagramOnly) { let ic = this.icn3d, me...
method downloadAlignmentPart2 (line 104509) | async downloadAlignmentPart2(data, seqalign, chainresiCalphaHash2) { l...
method loadOpmDataForAlign (line 104552) | async loadOpmDataForAlign(data, seqalign, mmdbidArray) { let ic = this...
class ChainalignParser (line 104615) | class ChainalignParser {
method constructor (line 104616) | constructor(icn3d) {
method downloadChainalignmentPart2 (line 104620) | async downloadChainalignmentPart2(data1, data2Array, chainresiCalphaHa...
method downloadChainalignmentPart2b (line 104768) | async downloadChainalignmentPart2b(chainresiCalphaHash2, chainidArray,...
method setMsa (line 104827) | setMsa(chainidArray, bVastplus, bRealign) { let ic = this.icn3d, me = ...
method downloadChainalignmentPart2bRealign (line 104862) | async downloadChainalignmentPart2bRealign(dataArray, chainidPairArray,...
method transformStructure (line 105035) | transformStructure(mmdbid, index, alignType, bForce) { let ic = this.i...
method transformAtom (line 105050) | transformAtom(atm, index, alignType) { let ic = this.icn3d, me = ic.ic...
method downloadChainalignmentPart3 (line 105082) | async downloadChainalignmentPart3(chainresiCalphaHash2, chainidArray, ...
method addPostfixForChainids (line 105147) | addPostfixForChainids(chainidArray) { let ic = this.icn3d; ic.icn3dui;
method addPostfixForStructureids (line 105170) | addPostfixForStructureids(structArray) { let ic = this.icn3d; ic.icn3dui;
method downloadChainalignment (line 105192) | async downloadChainalignment(chainalign) { let ic = this.icn3d, me = i...
method parseChainAlignData (line 105304) | async parseChainAlignData(dataArray, chainidArray, mmdbid_t, chain_t) ...
method processAlign (line 105397) | async processAlign(align, index, queryData, bEqualMmdbid, bEqualChain,...
method loadOpmDataForChainalign (line 105469) | async loadOpmDataForChainalign(data1, data2, chainidArray, mmdbidArray...
method downloadMmdbAf (line 105533) | async downloadMmdbAf(idlist, bQuery, vastplusAtype, bNoDuplicate) { le...
method parseMMdbAfData (line 105615) | async parseMMdbAfData(dataArray, structArray, bQuery, vastplusAtype) {...
class Dsn6Parser (line 105723) | class Dsn6Parser {
method constructor (line 105724) | constructor(icn3d) {
method dsn6Parser (line 105728) | async dsn6Parser(pdbid, type, sigma) { let ic = this.icn3d; ic.icn3dui;
method dsn6ParserBase (line 105736) | async dsn6ParserBase(url, type, sigma, location, bInputSigma) { let ic...
method loadDsn6Data (line 105765) | loadDsn6Data(dsn6data, type, sigma, location, bInputSigma) { let ic = ...
method setSigma (line 105905) | setSigma(maxValue, location, type, sigma) { let ic = this.icn3d, me = ...
method getMatrix (line 105929) | getMatrix(header) { let ic = this.icn3d; ic.icn3dui;
method loadDsn6File (line 105987) | loadDsn6File(type) {var ic = this.icn3d, me = ic.icn3dui;
method loadDsn6FileUrl (line 106016) | loadDsn6FileUrl(type) {var ic = this.icn3d, me = ic.icn3dui;
class Ccp4Parser (line 106037) | class Ccp4Parser {
method constructor (line 106038) | constructor(icn3d) {
method ccp4ParserBase (line 106042) | async ccp4ParserBase(url, type, sigma, location) { let ic = this.icn3d...
method load_map_from_buffer (line 106073) | load_map_from_buffer(buf, type, sigma, location, bInputSigma) { let ic...
method load_maps_from_mtz_buffer (line 106217) | load_maps_from_mtz_buffer(mtz, type, sigma, location, bInputSigma, bRc...
method parse_symop (line 106309) | parse_symop(symop) {
method loadCcp4File (line 106334) | loadCcp4File(type) {let ic = this.icn3d, me = ic.icn3dui;
method loadCcp4FileUrl (line 106362) | async loadCcp4FileUrl(type) { let ic = this.icn3d, me = ic.icn3dui;
method extract_block (line 106377) | extract_block(grid, unit_cell, radius, center, typeDetail) { let ic = ...
method marchingCubes (line 106421) | marchingCubes(dims, values, points, isolevel, method) { let ic = this...
method calculateVertOffsets (line 106790) | calculateVertOffsets(dims) { let ic = this.icn3d; ic.icn3dui;
method makeChickenWire (line 106802) | makeChickenWire(data, typeDetail) { let ic = this.icn3d, me = ic.icn3dui;
class UnitCell (line 106829) | class UnitCell {
method constructor (line 106836) | constructor(a /*:number*/, b /*:number*/, c /*:number*/,
method multiply (line 106886) | multiply(xyz, mat) {
method fractionalize (line 106893) | fractionalize(xyz /*:[number,number,number]*/) {
method orthogonalize (line 106897) | orthogonalize(xyz /*:[number,number,number]*/) {
class GridArray (line 106903) | class GridArray {
method constructor (line 106908) | constructor(dim /*:number[]*/) {
method modulo (line 106913) | modulo(a, b) {
method grid2index (line 106918) | grid2index(i/*:number*/, j/*:number*/, k/*:number*/) {
method grid2index_unchecked (line 106925) | grid2index_unchecked(i/*:number*/, j/*:number*/, k/*:number*/) {
method grid2frac (line 106929) | grid2frac(i/*:number*/, j/*:number*/, k/*:number*/) {
method frac2grid (line 106934) | frac2grid(xyz/*:number[]*/) {
method set_grid_value (line 106942) | set_grid_value(i/*:number*/, j/*:number*/, k/*:number*/, value/*:numbe...
method get_grid_value (line 106947) | get_grid_value(i/*:number*/, j/*:number*/, k/*:number*/) {
class MtzParser (line 106960) | class MtzParser {
method constructor (line 106961) | constructor(icn3d) {
method mtzParserBase (line 106965) | async mtzParserBase(url, type, sigma, location, bInputSigma, bRcsb) { ...
method loadMtzFile (line 106994) | loadMtzFile(type, bRcsb) {var ic = this.icn3d, me = ic.icn3dui;
method loadMtzFileBase (line 107013) | async loadMtzFileBase(data, type, sigma, location, bInputSigma, url, b...
method loadMtzFileUrl (line 107040) | async loadMtzFileUrl(type, bRcsb) {var ic = this.icn3d; ic.icn3dui;
class MmcifParser (line 107059) | class MmcifParser {
method constructor (line 107060) | constructor(icn3d) {
method downloadMmcif (line 107066) | async downloadMmcif(mmcifid) { let ic = this.icn3d, me = ic.icn3dui;
method downloadMmcifSymmetry (line 107089) | async downloadMmcifSymmetry(mmcifid, type) { let ic = this.icn3d, me =...
method loadMmcifData (line 107173) | async loadMmcifData(data, mmcifid) { let ic = this.icn3d; ic.icn3dui;
method loadMultipleMmcifData (line 107192) | async loadMultipleMmcifData(data, mmcifid, bAppend) { let ic = this.ic...
class MmdbParser (line 107215) | class MmdbParser {
method constructor (line 107216) | constructor(icn3d) {
method downloadMmdb (line 107226) | async downloadMmdb(mmdbid, bGi) { let ic = this.icn3d, me = ic.icn3dui;
method downloadGi (line 107275) | async downloadGi(gi) { let ic = this.icn3d; ic.icn3dui;
method downloadBlast_rep_id (line 107286) | async downloadBlast_rep_id(sequence_structure_ids) { let ic = this.icn...
method downloadRefseq (line 107305) | async downloadRefseq(refseqid, bBlast_rep_id) { let ic = this.icn3d, m...
method downloadProteinname (line 107335) | async downloadProteinname(protein) { let ic = this.icn3d, me = ic.icn3...
method getNoData (line 107402) | getNoData(mmdbid, bGi) { let ic = this.icn3d, me = ic.icn3dui;
method parseMmdbData (line 107411) | async parseMmdbData(data, type, chainid, chainIndex, bLastQuery, bNoTr...
method parseMmdbDataPart1 (line 107574) | parseMmdbDataPart1(data, type) { let ic = this.icn3d, me = ic.icn3dui;
method loadMmdbPrms (line 107652) | loadMmdbPrms(mmdbid, bGi, bCalpha) { let ic = this.icn3d, me = ic.icn3...
class BcifParser (line 107686) | class BcifParser {
method constructor (line 107687) | constructor(icn3d) {
method downloadBcif (line 107793) | async downloadBcif(bcifid) { let ic = this.icn3d, me = ic.icn3dui;
method getBcifJson (line 107813) | getBcifJson(bcifData, bcifid, bText, bNoCoord) { let ic = this.icn3d, ...
method hasCovalentBond (line 108524) | hasCovalentBond(atom1, atom2, para) { let ic = this.icn3d; ic.icn3dui;
class Mol2Parser (line 108541) | class Mol2Parser {
method constructor (line 108542) | constructor(icn3d) {
method loadMol2Data (line 108546) | async loadMol2Data(data) { let ic = this.icn3d, me = ic.icn3dui;
method loadMol2AtomData (line 108568) | loadMol2AtomData(data) { let ic = this.icn3d; ic.icn3dui;
class OpmParser (line 108757) | class OpmParser {
method constructor (line 108758) | constructor(icn3d) {
method downloadOpm (line 108762) | async downloadOpm(opmid) { let ic = this.icn3d, me = ic.icn3dui;
method loadOpmData (line 108783) | async loadOpmData(data, pdbid, bFull, type, pdbid2, bText) { let ic = ...
method setOpmData (line 108799) | setOpmData(data) { let ic = this.icn3d; ic.icn3dui;
method modifyUIMapAssembly (line 108821) | modifyUIMapAssembly() { let ic = this.icn3d, me = ic.icn3dui;
method parseAtomData (line 108858) | async parseAtomData(data, pdbid, bFull, type, pdbid2, bText) { let ic ...
class PdbParser (line 108910) | class PdbParser {
method constructor (line 108911) | constructor(icn3d) {
method downloadPdb (line 108918) | async downloadPdb(pdbid, bAf) { let ic = this.icn3d, me = ic.icn3dui;
method downloadUrl (line 108958) | async downloadUrl(url, type, command, template) { let ic = this.icn3d,...
method loadPdbData (line 109044) | async loadPdbData(data, pdbid, bOpm, bAppend, type, bLastQuery, bNoDss...
method addSecondary (line 109079) | async addSecondary(bAppend, bNoDssp) { let ic = this.icn3d, me = ic.ic...
method applyCommandDssp (line 109103) | async applyCommandDssp(bAppend) { let ic = this.icn3d, me = ic.icn3dui;
method loadPdbDataRender (line 109115) | async loadPdbDataRender(bAppend) { let ic = this.icn3d, me = ic.icn3dui;
method execStatefile (line 109151) | async execStatefile(structure, statefile) {let ic = this.icn3d, me = i...
class SdfParser (line 109179) | class SdfParser {
method constructor (line 109180) | constructor(icn3d) {
method downloadCid (line 109186) | async downloadCid(cid) { let ic = this.icn3d, me = ic.icn3dui;
method downloadSmiles (line 109221) | async downloadSmiles(smiles) { let ic = this.icn3d, me = ic.icn3dui;
method loadSdfData (line 109232) | async loadSdfData(data) { let ic = this.icn3d, me = ic.icn3dui;
method loadSdfAtomData (line 109256) | loadSdfAtomData(data, cid) { let ic = this.icn3d; ic.icn3dui;
class XyzParser (line 109422) | class XyzParser {
method constructor (line 109423) | constructor(icn3d) {
method loadXyzData (line 109427) | async loadXyzData(data) { let ic = this.icn3d, me = ic.icn3dui;
method setXyzAtomSeq (line 109449) | setXyzAtomSeq(AtomHash, moleculeNum, chainNum, residueNum) { let ic = ...
method loadXyzAtomData (line 109487) | loadXyzAtomData(data) { let ic = this.icn3d; ic.icn3dui;
class DcdParser (line 109576) | class DcdParser {
method constructor (line 109577) | constructor(icn3d) {
method loadDcdData (line 109583) | async loadDcdData(data) { let ic = this.icn3d, me = ic.icn3dui;
method loadDcdAtomData (line 109614) | loadDcdAtomData(data) { let ic = this.icn3d, me = ic.icn3dui;
method showRmsdHbondPlot (line 109923) | async showRmsdHbondPlot(bHbondPlot) { let ic = this.icn3d, me = ic.icn...
class XtcParser (line 110062) | class XtcParser {
method constructor (line 110063) | constructor(icn3d) {
method loadXtcData (line 110087) | async loadXtcData(data) { let ic = this.icn3d, me = ic.icn3dui;
method loadXtcAtomData (line 110119) | loadXtcAtomData(data) { let ic = this.icn3d, me = ic.icn3dui;
method sizeOfInt (line 110529) | sizeOfInt(size) { let ic = this.icn3d; ic.icn3dui;
method sizeOfInts (line 110539) | sizeOfInts(numOfInts, sizes) { let ic = this.icn3d; ic.icn3dui;
method decodeBits (line 110566) | decodeBits(cbuf, offset, numOfBits1) { let ic = this.icn3d; ic.icn3dui;
method decodeByte (line 110597) | decodeByte(cbuf, offset) { let ic = this.icn3d; ic.icn3dui;
method decodeInts (line 110614) | decodeInts(cbuf, offset, numOfBits1, sizes, nums) { let ic = this.icn3...
class MsaParser (line 110652) | class MsaParser {
method constructor (line 110653) | constructor(icn3d) {
method loadMsaData (line 110657) | async loadMsaData(data, type) { let ic = this.icn3d, me = ic.icn3dui;
method loadMsaSeqData (line 110756) | async loadMsaSeqData(data, type) { let ic = this.icn3d; ic.icn3dui;
method processOneChain (line 110860) | async processOneChain(chainid, seqHash) { let ic = this.icn3d, me = ic...
method getChainid (line 110893) | getChainid(idArray, bWarning) { let ic = this.icn3d; ic.icn3dui;
class RealignParser (line 110929) | class RealignParser {
method constructor (line 110930) | constructor(icn3d) {
method realign (line 110935) | realign() { let ic = this.icn3d, me = ic.icn3dui;
method parseChainRealignPredefined (line 111006) | async parseChainRealignPredefined(chainidArray, struct2SeqHash, struct...
method parseChainRealignData (line 111094) | async parseChainRealignData(dataArray, chainresiCalphaHash2, chainidAr...
method realignOnSeqAlign (line 111272) | async realignOnSeqAlign(pdbidTemplate) { let ic = this.icn3d; ic.icn3dui;
method realignOnStructAlign (line 111299) | async realignOnStructAlign(bReverse, bVastsearch) { let ic = this.icn3...
method realignOnStructAlignMsa (line 111439) | async realignOnStructAlignMsa(nameArray) { let ic = this.icn3d, me = i...
method realignChainOnSeqAlign (line 111518) | async realignChainOnSeqAlign(chainresiCalphaHash2, chainidArray, bReal...
method getSeqCoorResid (line 111728) | getSeqCoorResid(resiArray, chainid, bNCBIResi) { let ic = this.icn3d, ...
method getResCoorArray (line 111781) | getResCoorArray(resid) { let ic = this.icn3d; ic.icn3dui;
class DensityCifParser (line 111809) | class DensityCifParser {
method constructor (line 111810) | constructor(icn3d) {
method densityCifParser (line 111814) | async densityCifParser(pdbid, type, sigma, emd, bOutput) { let ic = th...
method densityCifParserBase (line 111867) | async densityCifParserBase(url, type, sigma, location, bInputSigma) { ...
method setMatrix (line 111900) | setMatrix(density) { let ic = this.icn3d; ic.icn3dui;
method parseChannels (line 111927) | parseChannels(densitydata, type, sigma) { let ic = this.icn3d; ic.icn3...
method getChannel (line 111970) | getChannel(data, name) { let ic = this.icn3d; ic.icn3dui;
method CIFParse (line 111986) | CIFParse(block) { let ic = this.icn3d; ic.icn3dui;
method BinaryParse (line 112110) | BinaryParse(data) { let ic = this.icn3d; ic.icn3dui;
method MessagePackParse (line 112545) | MessagePackParse(state) { let ic = this.icn3d; ic.icn3dui;
class ParserUtils (line 112798) | class ParserUtils {
method constructor (line 112799) | constructor(icn3d) {
method alignCoords (line 112803) | alignCoords(coordsFrom, coordsTo, secondStruct, bKeepSeq, chainid_t, c...
method getQtStartEndFromRealignResid (line 112886) | getQtStartEndFromRealignResid(chainid_t, chainid_q) { let ic = this.ic...
method getMissingResidues (line 112925) | getMissingResidues(seqArray, type, chainid) { let ic = this.icn3d, me ...
method set2DDiagramsForAlign (line 112989) | async set2DDiagramsForAlign(mmdbid1, mmdbid2) { let ic = this.icn3d, m...
method set2DDiagramsForChainalign (line 113028) | async set2DDiagramsForChainalign(chainidArray) { let ic = this.icn3d, ...
method parse2DDiagramsData (line 113057) | parse2DDiagramsData(dataArray, chainidArray) { let ic = this.icn3d, me...
method download2Ddgm (line 113081) | download2Ddgm(mmdbid, structureIndex) { this.set2DDiagrams(mmdb...
method set2DDiagrams (line 113084) | set2DDiagrams(mmdbid) { let ic = this.icn3d, me = ic.icn3dui;
method showLoading (line 113099) | showLoading() { let ic = this.icn3d; ic.icn3dui;
method hideLoading (line 113105) | hideLoading() { let ic = this.icn3d; ic.icn3dui;
method setYourNote (line 113113) | setYourNote(yournote) { let ic = this.icn3d, me = ic.icn3dui;
method transformToOpmOri (line 113119) | transformToOpmOri(pdbid) { let ic = this.icn3d; ic.icn3dui;
method transformToOpmOriForAlign (line 113161) | transformToOpmOriForAlign(pdbid, chainresiCalphaHash2, bResi_ori) { le...
method addOneDumAtom (line 113238) | addOneDumAtom(pdbid, atomName, x, y, z, lastSerial) { let ic = this.ic...
method addMemAtoms (line 113275) | addMemAtoms(dmem, pdbid, dxymax) { let ic = this.icn3d; ic.icn3dui;
method setMaxD (line 113318) | setMaxD() { let ic = this.icn3d; ic.icn3dui;
method renderStructure (line 113361) | async renderStructure() { let ic = this.icn3d, me = ic.icn3dui;
method processCommand (line 113481) | processCommand() { let ic = this.icn3d, me = ic.icn3dui;
method getMassCenter (line 113488) | getMassCenter(psum, cnt) { let ic = this.icn3d; ic.icn3dui;
method getGeoCenter (line 113492) | getGeoCenter(pmin, pmax) { let ic = this.icn3d; ic.icn3dui;
method getStructureSize (line 113496) | getStructureSize(atoms, pmin, pmax, center) { let ic = this.icn3d; ic....
method checkMemProteinAndRotate (line 113513) | async checkMemProteinAndRotate() { let ic = this.icn3d, me = ic.icn3dui;
method checkMemProtein (line 113532) | async checkMemProtein(afid) { let ic = this.icn3d, me = ic.icn3dui;
method getResi (line 113618) | getResi(chainid, resiPos) { let ic = this.icn3d; ic.icn3dui;
method getResiNCBI (line 113638) | getResiNCBI(chainid, resi) { let ic = this.icn3d; ic.icn3dui;
class LoadAtomData (line 113650) | class LoadAtomData {
method constructor (line 113651) | constructor(icn3d) {
method loadAtomDataIn (line 113661) | loadAtomDataIn(data, id, type, seqalign, alignType, chainidInput, chai...
class SetSeqAlign (line 114451) | class SetSeqAlign {
method constructor (line 114452) | constructor(icn3d) {
method setSeqAlign (line 114456) | setSeqAlign(seqalign, alignedStructures) { let ic = this.icn3d, me = i...
method getPosFromResi (line 114691) | getPosFromResi(chainid, resi) { let ic = this.icn3d; ic.icn3dui;
method getResnFromResi (line 114713) | getResnFromResi(chainid, resi) { let ic = this.icn3d; ic.icn3dui;
method getResiAferAlign (line 114740) | getResiAferAlign(chainid, bRealign, pos) { let ic = this.icn3d, me = i...
method setSeqAlignChain (line 114764) | setSeqAlignChain(chainid, chainIndex, chainidArray) { let ic = this.ic...
method setSeqAlignChainForAll (line 115029) | setSeqAlignChainForAll(chainidArray, index_alignLen, bRealign) { let i...
method getResObject (line 115257) | getResObject(chainid, bGap, bAligned, resi, resn, resn_t) { let ic = t...
method getResn (line 115277) | getResn(chainid, resiPos) { let ic = this.icn3d; ic.icn3dui;
method getResiPosInTemplate (line 115306) | getResiPosInTemplate(chainid1, resi_t) { let ic = this.icn3d; ic.icn3dui;
method addGapAllAlnChains (line 115332) | addGapAllAlnChains(chainidArray, alignedChainIndice, chainid1, resi_t,...
method insertNotAlignRes (line 115350) | insertNotAlignRes(chainid, start, len, bRealign) { let ic = this.icn3d...
method getTemplatePosFromOriResi (line 115364) | getTemplatePosFromOriResi(chainid1, start, end, bRealign) { let ic = t...
method mergeTwoSeqForAl
Copy disabled (too large)
Download .json
Condensed preview — 350 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (35,438K chars).
[
{
"path": ".gitignore",
"chars": 32,
"preview": "node_modules/\nicn3dnpm/\ntmpdir/\n"
},
{
"path": "CHANGELOG.md",
"chars": 75713,
"preview": "## Change Log\n[icn3d-3.49.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.49.0.zip) was release on April 29, 202"
},
{
"path": "CODE_OF_CONDUCT.md",
"chars": 2277,
"preview": "## Contributor Code of Conduct\n### Purpose\nOur goal is to foster an open and welcoming community where contributors from"
},
{
"path": "LICENSE.md",
"chars": 1413,
"preview": " iCn3D incorporates the DelPhi code to dynamically show the\n electrostatic potential map. The DelPhi code is licensed "
},
{
"path": "README.md",
"chars": 22017,
"preview": "# iCn3D Structure Viewer\n\n<!--\n## [Gallery with live examples](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d.html#g"
},
{
"path": "SECURITY.md",
"chars": 281,
"preview": "# Security Policy\n\n## Supported Versions\n\n| Version | Supported |\n| ------- | ------------------ |\n| 3.0.x | "
},
{
"path": "build/icn3d.js",
"chars": 5132586,
"preview": "var $NGL_shaderTextHash = {};\n\n$NGL_shaderTextHash['SphereImpostor.frag'] = [\"#define STANDARD\",\n\"#define IMPOSTOR\",\n\"\","
},
{
"path": "build/icn3d.module.js",
"chars": 5030870,
"preview": "var $NGL_shaderTextHash = {};\n\n$NGL_shaderTextHash['SphereImpostor.frag'] = [\"#define STANDARD\",\n\"#define IMPOSTOR\",\n\"\","
},
{
"path": "css/icn3d.css",
"chars": 11682,
"preview": ".ui-dialog { font-size: 12px;}\n.ui-dialog .ui-dialog-title { font-size: 16px; height: 18px; }\n.ui-dialog .ui-button { wi"
},
{
"path": "dist/CHANGELOG.md",
"chars": 75713,
"preview": "## Change Log\n[icn3d-3.49.0](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d-3.49.0.zip) was release on April 29, 202"
},
{
"path": "dist/CODE_OF_CONDUCT.md",
"chars": 2277,
"preview": "## Contributor Code of Conduct\n### Purpose\nOur goal is to foster an open and welcoming community where contributors from"
},
{
"path": "dist/LICENSE.md",
"chars": 1413,
"preview": " iCn3D incorporates the DelPhi code to dynamically show the\n electrostatic potential map. The DelPhi code is licensed "
},
{
"path": "dist/README.md",
"chars": 22017,
"preview": "# iCn3D Structure Viewer\n\n<!--\n## [Gallery with live examples](https://www.ncbi.nlm.nih.gov/Structure/icn3d/icn3d.html#g"
},
{
"path": "dist/example/addAnnoLocal.html",
"chars": 12825,
"preview": "<!DOCTYPE html><html lang=\"en\"><head>\n <meta charset=\"utf-8\">\n <meta name=\"viewport\" content=\"width=device-width, init"
},
{
"path": "dist/example/annoLocal.js",
"chars": 4362,
"preview": "/**\n * @author Jiyao Wang <wangjiy@ncbi.nlm.nih.gov> / https://github.com/ncbi/icn3d\n */\n\n import {Html} from '../../htm"
},
{
"path": "dist/example/example.html",
"chars": 374818,
"preview": "<!DOCTYPE html><html lang=\"en\"><head>\n <meta charset=\"utf-8\">\n <meta name=\"viewport\" content=\"width=device-width, init"
},
{
"path": "dist/example/loadStateFile.js",
"chars": 697,
"preview": " // import any classes from icn3d.module.js to be used in your class\n import {LoadScript} from './icn3d.module.js'"
},
{
"path": "dist/example/module.html",
"chars": 12492,
"preview": "<!DOCTYPE html><html lang=\"en\"><head>\n <meta charset=\"utf-8\">\n <meta name=\"viewport\" content=\"width=device-width, init"
},
{
"path": "dist/full.html",
"chars": 12709,
"preview": "<!DOCTYPE html><html lang=\"en\"><head>\n <meta charset=\"utf-8\">\n <meta name=\"viewport\" content=\"width=device-width, init"
},
{
"path": "dist/full2.html",
"chars": 13998,
"preview": "<!DOCTYPE html><html lang=\"en\"><head>\n <meta charset=\"utf-8\">\n <meta name=\"viewport\" content=\"width=device-width, init"
},
{
"path": "dist/full2_3.49.0.html",
"chars": 13998,
"preview": "<!DOCTYPE html><html lang=\"en\"><head>\n <meta charset=\"utf-8\">\n <meta name=\"viewport\" content=\"width=device-width, init"
},
{
"path": "dist/full_3.49.0.html",
"chars": 12709,
"preview": "<!DOCTYPE html><html lang=\"en\"><head>\n <meta charset=\"utf-8\">\n <meta name=\"viewport\" content=\"width=device-width, init"
},
{
"path": "dist/icn3d.css",
"chars": 104577,
"preview": ".ui-dialog { font-size: 12px;}\n.ui-dialog .ui-dialog-title { font-size: 16px; height: 18px; }\n.ui-dialog .ui-button { wi"
},
{
"path": "dist/icn3d.html",
"chars": 189354,
"preview": "<!DOCTYPE html><html><head>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1, maximum-scale=1\">\n<meta "
},
{
"path": "dist/icn3d.js",
"chars": 5132586,
"preview": "var $NGL_shaderTextHash = {};\n\n$NGL_shaderTextHash['SphereImpostor.frag'] = [\"#define STANDARD\",\n\"#define IMPOSTOR\",\n\"\","
},
{
"path": "dist/icn3d.module.js",
"chars": 5030870,
"preview": "var $NGL_shaderTextHash = {};\n\n$NGL_shaderTextHash['SphereImpostor.frag'] = [\"#define STANDARD\",\n\"#define IMPOSTOR\",\n\"\","
},
{
"path": "dist/icn3d_3.49.0.css",
"chars": 104577,
"preview": ".ui-dialog { font-size: 12px;}\n.ui-dialog .ui-dialog-title { font-size: 16px; height: 18px; }\n.ui-dialog .ui-button { wi"
},
{
"path": "dist/index.html",
"chars": 12709,
"preview": "<!DOCTYPE html><html lang=\"en\"><head>\n <meta charset=\"utf-8\">\n <meta name=\"viewport\" content=\"width=device-width, init"
},
{
"path": "dist/notfound.html",
"chars": 182,
"preview": "<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML 2.0//EN\">\n<html><head>\n<title>404 Not Found</title>\n</head><body>\n<h1>Not Found"
},
{
"path": "dist/script/d3v4-force-all.js",
"chars": 487639,
"preview": "// https://d3js.org Version 4.13.0. Copyright 2018 Mike Bostock.\n(function (global, factory) {\n\ttypeof exports === 'obje"
},
{
"path": "dist/script/jszip.js",
"chars": 374187,
"preview": "/*!\n\nJSZip v3.10.1 - A JavaScript class for generating and reading zip files\n<http://stuartk.com/jszip>\n\n(c) 2009-2016 S"
},
{
"path": "dist/script/mtz.js",
"chars": 65607,
"preview": "\nvar GemmiMtz = (function() {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.cu"
},
{
"path": "dist/script/pako.js",
"chars": 238806,
"preview": "\n/*! pako 2.1.0 https://github.com/nodeca/pako @license (MIT AND Zlib) */\n(function (global, factory) {\n typeof exports"
},
{
"path": "dist/share.html",
"chars": 1643,
"preview": "<!DOCTYPE html><html lang=\"en\"><head>\n <meta charset=\"utf-8\">\n <meta name=\"viewport\" content=\"width=device-width, init"
},
{
"path": "dist/share2.html",
"chars": 1643,
"preview": "<!DOCTYPE html><html lang=\"en\"><head>\n <meta charset=\"utf-8\">\n <meta name=\"viewport\" content=\"width=device-width, init"
},
{
"path": "example/addAnnoLocal.html",
"chars": 12825,
"preview": "<!DOCTYPE html><html lang=\"en\"><head>\n <meta charset=\"utf-8\">\n <meta name=\"viewport\" content=\"width=device-width, init"
},
{
"path": "example/annoLocal.js",
"chars": 4362,
"preview": "/**\n * @author Jiyao Wang <wangjiy@ncbi.nlm.nih.gov> / https://github.com/ncbi/icn3d\n */\n\n import {Html} from '../../htm"
},
{
"path": "example/collection/1wfa.pdb",
"chars": 77517,
"preview": "HEADER ANTIFREEZE POLYPEPTIDE 03-APR-95 1WFA \nTITLE WINTER FLOUNDER ANTIFREEZE PR"
},
{
"path": "example/collection/json_only.json",
"chars": 1415,
"preview": "{\n \"collectionTitle\": \"Antifreeze proteins\",\n \"collectionDescription\": \"Molecular structures of antifreeze proteins\",\n"
},
{
"path": "example/example-simple.html",
"chars": 6078,
"preview": "<!DOCTYPE html><html lang=\"en\"><head>\n <meta charset=\"utf-8\">\n <meta name=\"viewport\" content=\"width=device-width, init"
},
{
"path": "example/example.html",
"chars": 374818,
"preview": "<!DOCTYPE html><html lang=\"en\"><head>\n <meta charset=\"utf-8\">\n <meta name=\"viewport\" content=\"width=device-width, init"
},
{
"path": "example/loadStateFile.js",
"chars": 697,
"preview": " // import any classes from icn3d.module.js to be used in your class\n import {LoadScript} from './icn3d.module.js'"
},
{
"path": "example/module.html",
"chars": 12492,
"preview": "<!DOCTYPE html><html lang=\"en\"><head>\n <meta charset=\"utf-8\">\n <meta name=\"viewport\" content=\"width=device-width, init"
},
{
"path": "full.html",
"chars": 12688,
"preview": "<!DOCTYPE html><html lang=\"en\"><head>\n <meta charset=\"utf-8\">\n <meta name=\"viewport\" content=\"width=device-width, init"
},
{
"path": "full2.html",
"chars": 13977,
"preview": "<!DOCTYPE html><html lang=\"en\"><head>\n <meta charset=\"utf-8\">\n <meta name=\"viewport\" content=\"width=device-width, init"
},
{
"path": "gulpfile.js",
"chars": 11921,
"preview": "\nvar package = require('./package.json');\nvar gulp = require('gulp'); //require('gulp-help')(require('gulp'));\nvar conca"
},
{
"path": "icn3d.html",
"chars": 189354,
"preview": "<!DOCTYPE html><html><head>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1, maximum-scale=1\">\n<meta "
},
{
"path": "icn3dnode/README.md",
"chars": 6842,
"preview": "Node.js Scripts based on iCn3D\n==============================\n\nEither Python scripts in the directory \"icn3dpython\" or N"
},
{
"path": "icn3dnode/addmissingatoms.js",
"chars": 1411,
"preview": "// Include the interaction in the same chain\n// usage: node interaction.js 1TOP A 10 V\n\n/*\nPlease install the following "
},
{
"path": "icn3dnode/annotation.js",
"chars": 14360,
"preview": "/*\nPlease install the following three packages in your directory with the file interaction.js\n\nnpm install jquery\nnpm in"
},
{
"path": "icn3dnode/cdsearch.js",
"chars": 10845,
"preview": "// usage: node cdsearch.js [accession] [feats or hits]\n\nlet http = require('http');\nlet https = require('https');\n//let "
},
{
"path": "icn3dnode/delphipot.js",
"chars": 3297,
"preview": "/*\nPlease install the following three packages in your directory with the file interaction.js\n\nnpm install jquery\nnpm in"
},
{
"path": "icn3dnode/epitope.js",
"chars": 5177,
"preview": "// usage: node epitope.js 7BWJ E L\n\n/*\nPlease install the following packages in your directory with the file interaction"
},
{
"path": "icn3dnode/epitope_neighbor.js",
"chars": 4618,
"preview": "// usage: node epitope_neighbor.js 7BWJ E L\n\n/*\nPlease install the following three packages in your directory with the f"
},
{
"path": "icn3dnode/general_id_cmd.js",
"chars": 2398,
"preview": "let jsdom = require('jsdom');\nglobal.$ = require('jquery')(new jsdom.JSDOM().window);\n\nlet icn3d = require('icn3d');\nlet"
},
{
"path": "icn3dnode/interaction.js",
"chars": 8889,
"preview": "// Include the interaction in the same chain\n// usage: node interaction.js 1TOP A 10 V\n\n/*\nPlease install the following "
},
{
"path": "icn3dnode/interaction2.js",
"chars": 8882,
"preview": "// Exclude the interaction in the same chain\n// usage: node interaction2.js 6M0J E 501 Y\n\n/*\nPlease install the followin"
},
{
"path": "icn3dnode/interactiondetail.js",
"chars": 2840,
"preview": "// Include the interaction in the same chain\n// usage: node interaction.js 1TOP A 10 V\n\n/*\nPlease install the following "
},
{
"path": "icn3dnode/interactiondetail2.js",
"chars": 2618,
"preview": "// Include the interaction in the same chain\n// usage: node interaction.js 1TOP A 10 V\n\n/*\nPlease install the following "
},
{
"path": "icn3dnode/ligand.js",
"chars": 3672,
"preview": "// usage: node ligand.js 5R7Y JFM\n\n/*\nPlease install the following three packages in your directory with the file intera"
},
{
"path": "icn3dnode/refnum.js",
"chars": 13976,
"preview": "// usage: node interaction.js 1TOP A 10 V\n\n// https://github.com/Jam3/three-buffer-vertex-data/issues/2\n//global.THREE ="
},
{
"path": "icn3dnode/refnum_file.js",
"chars": 12322,
"preview": "// usage: node refnum_file.js filename.cif cif\n\n// https://github.com/Jam3/three-buffer-vertex-data/issues/2\n//global.TH"
},
{
"path": "icn3dnode/refpdb/1B2Microglobulin_7phrL_human_C1.pdb",
"chars": 40462,
"preview": "HEADER PDB From iCn3D 7PHR\nTITLE \nSHEET LYS L 6 SER L 11 0\nS"
},
{
"path": "icn3dnode/refpdb/1BTLA_2aw2A_human_Iset.pdb",
"chars": 48117,
"preview": "HEADER PDB From iCn3D 2AW2\nTITLE \nSHEET GLN A 37 LEU A 38 0\nS"
},
{
"path": "icn3dnode/refpdb/1CD19_6al5A_human-n1.pdb",
"chars": 61728,
"preview": "HEADER PDB From iCn3D 6AL5\nTITLE \nSHEET LEU A 24 GLU A 29 0\nS"
},
{
"path": "icn3dnode/refpdb/1CD28_1yjdC_human_V.pdb",
"chars": 47871,
"preview": "ATOM 34 N VAL C 5 -22.748 52.928 36.710 1.00 55.42 C N \nATOM 35 CA VAL C 5 -22.883 "
},
{
"path": "icn3dnode/refpdb/1CD2_1hnfA_human_C2-n2.pdb",
"chars": 28878,
"preview": "HEADER PDB From iCn3D 1HNF\nTITLE \nSHEET LYS A 110 THR A 114 0\nS"
},
{
"path": "icn3dnode/refpdb/1CD2_1hnfA_human_V-n1.pdb",
"chars": 43864,
"preview": "HEADER PDB From iCn3D 1HNF\nTITLE \nSHEET LEU A 7 ALA A 12 0\nS"
},
{
"path": "icn3dnode/refpdb/1CD3d_6jxrd_human_C1.pdb",
"chars": 28026,
"preview": "ATOM 21 N ILE d 24 -29.091 59.886 34.753 1.00 25.53 C N \nATOM 22 CA ILE d 24 -27.848 "
},
{
"path": "icn3dnode/refpdb/1CD3e_6jxrf_human_C1.pdb",
"chars": 28270,
"preview": "ATOM 24 N TYR f 36 -28.163 60.477 36.316 1.00 34.35 D N \nATOM 25 CA TYR f 36 -27.211 "
},
{
"path": "icn3dnode/refpdb/1CD3g_6jxrg_human_C2.pdb",
"chars": 28512,
"preview": "ATOM 54 N VAL g 31 -25.681 58.870 34.830 1.00 36.71 E N \nATOM 55 CA VAL g 31 -25.439 "
},
{
"path": "icn3dnode/refpdb/1CD8a_1cd8A_human_V.pdb",
"chars": 43095,
"preview": "HEADER PDB From iCn3D 1CD8\nTITLE \nSHEET PHE A 3 SER A 6 0\nS"
},
{
"path": "icn3dnode/refpdb/1Contactin1_2ee2A_human_FN3-n9.pdb",
"chars": 33657,
"preview": "HEADER PDB From iCn3D 2EE2\nTITLE \nSHEET GLY A 26 SER A 31 0\nS"
},
{
"path": "icn3dnode/refpdb/1Contactin1_3s97C_human_Iset-n2.pdb",
"chars": 50139,
"preview": "ATOM 2997 C TYR C 240 51.239 -2.052 25.087 1.00 C \nATOM 2998 CA TYR C 240 49.932 "
},
{
"path": "icn3dnode/refpdb/1ECadherin_4zt1A_human_n2.pdb",
"chars": 28068,
"preview": "HEADER PDB From iCn3D 4ZT1\nTITLE \nSHEET ILE A 7 PRO A 10 0\nS"
},
{
"path": "icn3dnode/refpdb/1FAB-HEAVY_5esv_C1-n2.pdb",
"chars": 33535,
"preview": "HEADER PDB From iCn3D 5ESV\nTITLE \nSHEET SER C 120 LEU C 124 0\nS"
},
{
"path": "icn3dnode/refpdb/1FAB-HEAVY_5esv_V-n1.pdb",
"chars": 43379,
"preview": "HEADER PDB From iCn3D 5ESV\nTITLE \nSHEET GLN C 3 SER C 7 0\nS"
},
{
"path": "icn3dnode/refpdb/1FAB-LIGHT_5esv_C1-n2.pdb",
"chars": 35034,
"preview": "HEADER PDB From iCn3D 5ESV\nTITLE \nSHEET SER D 114 PHE D 118 0\nS"
},
{
"path": "icn3dnode/refpdb/1FAB-LIGHT_5esv_V-n1.pdb",
"chars": 43661,
"preview": "HEADER PDB From iCn3D 5ESV\nTITLE \nSHEET LEU D 4 SER D 7 0\nS"
},
{
"path": "icn3dnode/refpdb/1GHR_1axiB_human_C1-n1.pdb",
"chars": 36006,
"preview": "HEADER PDB From iCn3D 1AXI\nTITLE \nSHEET PHE B 35 ARG B 39 0\nS"
},
{
"path": "icn3dnode/refpdb/1ICOS_6x4gA_human_V.pdb",
"chars": 44512,
"preview": "HEADER PDB From iCn3D 6X4G\nTITLE \nSHEET PHE A 31 HIS A 34 0\nS"
},
{
"path": "icn3dnode/refpdb/1IL6Rb_1bquB_human_FN3-n2.pdb",
"chars": 36574,
"preview": "HEADER PDB From iCn3D 1BQU\nTITLE \nSHEET LYS B 12 ILE B 17 0\nS"
},
{
"path": "icn3dnode/refpdb/1IL6Rb_1bquB_human_FN3-n3.pdb",
"chars": 37946,
"preview": "HEADER PDB From iCn3D 1BQU\nTITLE \nSHEET HIS B 108 ILE B 113 0\nS"
},
{
"path": "icn3dnode/refpdb/1InsulinR_8guyE_human_FN3-n1.pdb",
"chars": 32037,
"preview": "HEADER PDB From iCn3D 8GUY\nTITLE \nSHEET ILE E 485 TRP E 489 0\nS"
},
{
"path": "icn3dnode/refpdb/1InsulinR_8guyE_human_FN3-n2.pdb",
"chars": 35682,
"preview": "HEADER PDB From iCn3D 8GUY\nTITLE \nSHEET LEU E 599 SER E 605 0\nS"
},
{
"path": "icn3dnode/refpdb/1JAM1_1nbqA_human_Iset-n2.pdb",
"chars": 37383,
"preview": "HEADER PDB From iCn3D 1NBQ\nTITLE \nSHEET SER A 142 THR A 144 0\nS"
},
{
"path": "icn3dnode/refpdb/1LAG3_7tzgD_human_C1-n2.pdb",
"chars": 34386,
"preview": "HEADER PDB From iCn3D 7TZG\nTITLE \nSHEET SER D 170 ALA D 173 0\nS"
},
{
"path": "icn3dnode/refpdb/1LAG3_7tzgD_human_V-n1.pdb",
"chars": 27418,
"preview": "HEADER PDB From iCn3D 7TZG\nTITLE \nSHEET GLY D 60 GLN D 66 0\nS"
},
{
"path": "icn3dnode/refpdb/1LaminAC_1ifrA_human.pdb",
"chars": 36695,
"preview": "HEADER PDB From iCn3D 1IFR\nTITLE \nSHEET VAL A 440 VAL A 445 0\nS"
},
{
"path": "icn3dnode/refpdb/1MHCIa_7phrH_human_C1.pdb",
"chars": 39972,
"preview": "HEADER PDB From iCn3D 7PHR\nTITLE \nSHEET MET H 189 HIS H 192 0\nS"
},
{
"path": "icn3dnode/refpdb/1PD1_4zqkB_human_V.pdb",
"chars": 41232,
"preview": "HEADER PDB From iCn3D 4ZQK\nTITLE \nSHEET THR B 36 SER B 38 0\nS"
},
{
"path": "icn3dnode/refpdb/1PDL1_4z18B_human_V-n1.pdb",
"chars": 48319,
"preview": "HEADER PDB From iCn3D 4Z18\nTITLE \nSHEET LEU B 27 GLU B 31 0\nS"
},
{
"path": "icn3dnode/refpdb/1Palladin_2dm3A_human_Iset-n1.pdb",
"chars": 38923,
"preview": "HEADER PDB From iCn3D 2DM3\nTITLE \nSHEET HIS A 11 GLN A 14 0\nS"
},
{
"path": "icn3dnode/refpdb/1Sidekick2_1wf5A_human_FN3-n7.pdb",
"chars": 34508,
"preview": "HEADER PDB From iCn3D 1WF5\nTITLE \nSHEET VAL A 25 LEU A 28 0\nS"
},
{
"path": "icn3dnode/refpdb/1Siglec3_5j0bB_human_C1-n2.pdb",
"chars": 35236,
"preview": "HEADER PDB From iCn3D 5J0B\nTITLE \nSHEET LYS B 146 LEU B 148 0\nS"
},
{
"path": "icn3dnode/refpdb/1TCRa_6jxrm_human_C1-n2.pdb",
"chars": 29318,
"preview": "HEADER PDB From iCn3D 6JXR\nTITLE \nSHEET ALA m 140 GLN m 143 0\nS"
},
{
"path": "icn3dnode/refpdb/1TCRa_6jxrm_human_V-n1.pdb",
"chars": 44472,
"preview": "HEADER PDB From iCn3D 6JXR\nTITLE \nSHEET GLU m 27 GLN m 28 0\nS"
},
{
"path": "icn3dnode/refpdb/1Titin_4uowM_human_Iset-n152.pdb",
"chars": 43864,
"preview": "HEADER PDB From iCn3D 4UOW\nTITLE \nSHEET ILE M 3 ILE M 7 0\nS"
},
{
"path": "icn3dnode/refpdb/1VISTA_6oilA_human_V.pdb",
"chars": 60871,
"preview": "HEADER PDB From iCn3D 6OIL\nTITLE \nSHEET LYS A 2 ALA A 4 0\nS"
},
{
"path": "icn3dnode/refpdb/1VNAR_1t6vN_shark_V.pdb",
"chars": 43135,
"preview": "HEADER PDB From iCn3D 1T6V\nTITLE \nSHEET VAL N 3 THR N 6 0\nS"
},
{
"path": "icn3dnode/refpdb/1VTCN1_Q7Z7D3_human_C1-n2.pdb",
"chars": 47875,
"preview": "HEADER PDB From iCn3D Q7Z7D3\nTITLE \nSHEET GLU A 154 VAL A 157 0"
},
{
"path": "icn3dnode/refpdb/B2Microglobulin_7phrL_human_C1.pdb",
"chars": 67598,
"preview": "HEADER PDB From iCn3D stru\nTITLE \nSHEET LYS L 6 SER L 11 0\nS"
},
{
"path": "icn3dnode/refpdb/BTLA_2aw2A_human_Iset.pdb",
"chars": 68202,
"preview": "HEADER PDB From iCn3D stru\nTITLE \nSHEET GLN A 37 LEU A 38 0\nS"
},
{
"path": "icn3dnode/refpdb/CD19_6al5A_human-n1.pdb",
"chars": 135878,
"preview": "HEADER PDB From iCn3D stru\nTITLE \nSHEET LEU A 24 GLU A 29 0\nS"
},
{
"path": "icn3dnode/refpdb/CD28_1yjdC_human_V.pdb",
"chars": 76869,
"preview": "ATOM 1 N ASN C 1 -14.915 42.368 36.320 1.00 76.08 C N \nATOM 2 CA ASN C 1 -16.129 "
},
{
"path": "icn3dnode/refpdb/CD2_1hnfA_human_C2-n2.pdb",
"chars": 48724,
"preview": "HEADER PDB From iCn3D stru\nTITLE \nSHEET LYS A 110 THR A 114 0\nS"
},
{
"path": "icn3dnode/refpdb/CD2_1hnfA_human_V-n1.pdb",
"chars": 69530,
"preview": "HEADER PDB From iCn3D stru\nTITLE \nSHEET LEU A 7 ALA A 12 0\nS"
},
{
"path": "icn3dnode/refpdb/CD3d_6jxrd_human_C1.pdb",
"chars": 48924,
"preview": "ATOM 1 N PHE d 22 -31.842 54.555 35.806 1.00 37.53 C N \nATOM 2 CA PHE d 22 -30.726 "
},
{
"path": "icn3dnode/refpdb/CD3e_6jxrf_human_C1.pdb",
"chars": 58239,
"preview": "ATOM 1 N GLN f 33 -30.592 52.764 38.890 1.00 60.87 D N \nATOM 2 CA GLN f 33 -29.666 "
},
{
"path": "icn3dnode/refpdb/CD3g_6jxrg_human_C2.pdb",
"chars": 54594,
"preview": "ATOM 1 N SER g 24 -30.730 58.132 41.805 1.00 67.06 E N \nATOM 2 CA SER g 24 -31.077 "
},
{
"path": "icn3dnode/refpdb/CD8a_1cd8A_human_V.pdb",
"chars": 76321,
"preview": "HEADER PDB From iCn3D stru\nTITLE \nSHEET PHE A 3 SER A 6 0\nS"
},
{
"path": "icn3dnode/refpdb/Contactin1_2ee2A_human_FN3-n9.pdb",
"chars": 66702,
"preview": "HEADER PDB From iCn3D stru\nTITLE \nSHEET GLY A 26 SER A 31 0\nS"
},
{
"path": "icn3dnode/refpdb/Contactin1_3s97C_human_Iset-n2.pdb",
"chars": 120370,
"preview": "ATOM 1 N THR C 236 -7.309 41.997 53.031 1.00 60.79 C N \nANISOU 1 N THR C 236 6876 8"
},
{
"path": "icn3dnode/refpdb/ECadherin_4zt1A_human_n2.pdb",
"chars": 61437,
"preview": "HEADER PDB From iCn3D stru\nTITLE \nSHEET ILE A 7 PRO A 10 0\nS"
},
{
"path": "icn3dnode/refpdb/FAB-HEAVY_5esv_C1-n2.pdb",
"chars": 56779,
"preview": "HEADER PDB From iCn3D stru\nTITLE \nSHEET SER C 120 LEU C 124 0\nS"
},
{
"path": "icn3dnode/refpdb/FAB-HEAVY_5esv_V-n1.pdb",
"chars": 85209,
"preview": "HEADER PDB From iCn3D stru\nTITLE \nSHEET GLN C 3 SER C 7 0\nS"
},
{
"path": "icn3dnode/refpdb/FAB-LIGHT_5esv_C1-n2.pdb",
"chars": 66050,
"preview": "HEADER PDB From iCn3D stru\nTITLE \nSHEET SER D 114 PHE D 118 0\nH"
},
{
"path": "icn3dnode/refpdb/FAB-LIGHT_5esv_V-n1.pdb",
"chars": 68809,
"preview": "HEADER PDB From iCn3D stru\nTITLE \nSHEET LEU D 4 SER D 7 0\nS"
},
{
"path": "icn3dnode/refpdb/GHR_1axiB_human_C1-n1.pdb",
"chars": 53738,
"preview": "HEADER PDB From iCn3D stru\nTITLE \nSHEET PHE B 35 ARG B 39 0\nS"
},
{
"path": "icn3dnode/refpdb/ICOS_6x4gA_human_V.pdb",
"chars": 66170,
"preview": "HEADER PDB From iCn3D stru\nTITLE \nSHEET PHE A 31 HIS A 34 0\nS"
},
{
"path": "icn3dnode/refpdb/IL6Rb_1bquB_human_FN3-n2.pdb",
"chars": 64034,
"preview": "HEADER PDB From iCn3D stru\nTITLE \nSHEET LYS B 12 ILE B 17 0\nS"
},
{
"path": "icn3dnode/refpdb/IL6Rb_1bquB_human_FN3-n3.pdb",
"chars": 75037,
"preview": "HEADER PDB From iCn3D stru\nTITLE \nSHEET HIS B 108 ILE B 113 0\nS"
},
{
"path": "icn3dnode/refpdb/InsulinR_8guyE_human_FN3-n1.pdb",
"chars": 83555,
"preview": "HEADER PDB From iCn3D stru\nTITLE \nSHEET LEU E 472 LEU E 473 0\nS"
},
{
"path": "icn3dnode/refpdb/InsulinR_8guyE_human_FN3-n2.pdb",
"chars": 98855,
"preview": "HEADER PDB From iCn3D stru\nTITLE \nSHEET LEU E 599 SER E 605 0\nS"
},
{
"path": "icn3dnode/refpdb/JAM1_1nbqA_human_Iset-n2.pdb",
"chars": 62733,
"preview": "HEADER PDB From iCn3D stru\nTITLE \nSHEET SER A 142 THR A 144 0\nS"
},
{
"path": "icn3dnode/refpdb/LAG3_7tzgD_human_C1-n2.pdb",
"chars": 57063,
"preview": "HEADER PDB From iCn3D stru\nTITLE \nSHEET SER D 170 ALA D 173 0\nS"
},
{
"path": "icn3dnode/refpdb/LAG3_7tzgD_human_V-n1.pdb",
"chars": 54311,
"preview": "HEADER PDB From iCn3D stru\nTITLE \nSHEET GLY D 60 GLN D 66 0\nS"
},
{
"path": "icn3dnode/refpdb/LaminAC_1ifrA_human.pdb",
"chars": 80843,
"preview": "HEADER PDB From iCn3D stru\nTITLE \nSHEET SER A 433 THR A 436 0\nS"
},
{
"path": "icn3dnode/refpdb/MHCIa_7phrH_human_C1.pdb",
"chars": 62734,
"preview": "HEADER PDB From iCn3D stru\nTITLE \nSHEET MET H 189 HIS H 192 0\nS"
},
{
"path": "icn3dnode/refpdb/PD1_4zqkB_human_V.pdb",
"chars": 63832,
"preview": "HEADER PDB From iCn3D stru\nTITLE \nSHEET THR B 36 SER B 38 0\nS"
},
{
"path": "icn3dnode/refpdb/PDL1_4z18B_human_V-n1.pdb",
"chars": 75848,
"preview": "HEADER PDB From iCn3D stru\nTITLE \nSHEET LEU B 27 GLU B 31 0\nS"
},
{
"path": "icn3dnode/refpdb/Palladin_2dm3A_human_Iset-n1.pdb",
"chars": 66379,
"preview": "HEADER PDB From iCn3D stru\nTITLE \nSHEET HIS A 11 GLN A 14 0\nS"
},
{
"path": "icn3dnode/refpdb/Sidekick2_1wf5A_human_FN3-n7.pdb",
"chars": 69177,
"preview": "HEADER PDB From iCn3D stru\nTITLE \nSHEET VAL A 25 LEU A 28 0\nS"
},
{
"path": "icn3dnode/refpdb/Siglec3_5j0bB_human_C1-n2.pdb",
"chars": 56415,
"preview": "HEADER PDB From iCn3D stru\nTITLE \nSHEET LYS B 146 LEU B 148 0\nS"
},
{
"path": "icn3dnode/refpdb/TCRa_6jxrm_human_C1-n2.pdb",
"chars": 60180,
"preview": "HEADER PDB From iCn3D stru\nTITLE \nSHEET ALA m 140 GLN m 143 0\nS"
},
{
"path": "icn3dnode/refpdb/TCRa_6jxrm_human_V-n1.pdb",
"chars": 67757,
"preview": "HEADER PDB From iCn3D stru\nTITLE \nSHEET GLU m 27 GLN m 28 0\nS"
},
{
"path": "icn3dnode/refpdb/Titin_4uowM_human_Iset-n152.pdb",
"chars": 60061,
"preview": "HEADER PDB From iCn3D stru\nTITLE \nSHEET ILE M 3 ILE M 7 0\nS"
},
{
"path": "icn3dnode/refpdb/VISTA_6oilA_human_V.pdb",
"chars": 103448,
"preview": "HEADER PDB From iCn3D stru\nTITLE \nSHEET LYS A 2 ALA A 4 0\nS"
},
{
"path": "icn3dnode/refpdb/VNAR_1t6vN_shark_V.pdb",
"chars": 74637,
"preview": "HEADER PDB From iCn3D stru\nTITLE \nSHEET VAL N 3 THR N 6 0\nS"
},
{
"path": "icn3dnode/refpdb/VTCN1_Q7Z7D3_human_C1-n2.pdb",
"chars": 70716,
"preview": "HEADER PDB From iCn3D stru\nTITLE \nSHEET GLU A 154 VAL A 157 0\nS"
},
{
"path": "icn3dnode/rename_structure_id.sh",
"chars": 439,
"preview": "#!/bin/sh\n\nif [ $# != 2 ]\nthen\n # The \"structure name\" for PDBs should be 4-5 chars. \n # The \"structure name\" for Alph"
},
{
"path": "icn3dnode/rmhet.js",
"chars": 2250,
"preview": "// Include the interaction in the same chain\n// usage: node interaction.js 1TOP A 10 V\n\n/*\nPlease install the following "
},
{
"path": "icn3dnode/secondarystructure.js",
"chars": 1447,
"preview": "// Include the interaction in the same chain\n// usage: node interaction.js 1TOP A 10 V\n\n/*\nPlease install the following "
},
{
"path": "icn3dnode/surfacearea.js",
"chars": 2025,
"preview": "/*\nPlease install the following three packages in your directory with the file interaction.js\n\nnpm install jquery\nnpm in"
},
{
"path": "icn3dnode/tmalign-af.js",
"chars": 3943,
"preview": "// usage: node interaction.js 1TOP A 10 V\n\n// https://github.com/Jam3/three-buffer-vertex-data/issues/2\n//global.THREE ="
},
{
"path": "icn3dnode/tmalign-icn3dnode/Makefile",
"chars": 719,
"preview": "CC = g++\n\nCFLAGS = -O3 -ffast-math -g3 -fmessage-length=0 -std=c++11 \n#CFLAGS = -O3 -ffast-math -g3 -fmessage-length=0 -"
},
{
"path": "icn3dnode/tmalign-icn3dnode/TMalign.cpp",
"chars": 183372,
"preview": "/* TM-align: sequence-independent structure alignment of monomer proteins by\n * TM-score superposition. Please report is"
},
{
"path": "icn3dnode/tmalign-icn3dnode/igstrand2imgt.cpp",
"chars": 15834,
"preview": "#include \"tmalignCgi.hpp\"\n\nvoid CTmalignCgi::igstrand2imgt()\n{\n map< string, string > mIg2Imgt;\n\n //FAB-HEAVY_5esv_V-n"
},
{
"path": "icn3dnode/tmalign-icn3dnode/igstrand2kabat.cpp",
"chars": 11209,
"preview": "#include \"tmalignCgi.hpp\"\n\nvoid CTmalignCgi::igstrand2kabat()\n{\n map< string, string > mIg2Kabat;\n\n //FAB-HEAVY_5esv_V"
},
{
"path": "icn3dnode/tmalign-icn3dnode/resi2igstrand.cpp",
"chars": 354472,
"preview": "#include \"tmalignCgi.hpp\"\n\nvoid CTmalignCgi::resi2igstrand()\n{\n map< string, string > mResi2Igstrand;\n\n /*\n //ASF1A_2"
},
{
"path": "icn3dnode/tmalign-icn3dnode/tmalignCgi.cpp",
"chars": 422643,
"preview": "/* ===========================================================================\n *\n * PUBLIC D"
},
{
"path": "icn3dnode/tmalign-icn3dnode/tmalignCgi.hpp",
"chars": 12068,
"preview": "/* ===========================================================================\n *\n * PUBLIC D"
},
{
"path": "icn3dnode/tmalign.js",
"chars": 3335,
"preview": "// usage: node interaction.js 1TOP A 10 V\n\n// https://github.com/Jam3/three-buffer-vertex-data/issues/2\n//global.THREE ="
},
{
"path": "icn3dpython/README.md",
"chars": 478,
"preview": "Python Scripts based on iCn3D\n=============================\n\nEither Python scripts in the directory \"icn3dpython\" or Nod"
},
{
"path": "icn3dpython/icn3d_url/README.md",
"chars": 1587,
"preview": "Python Scripts Based on iCn3D URL\n=================================\n\nYou can open iCn3D in a browser to generate a URL ("
},
{
"path": "icn3dpython/icn3d_url/batch_export_panel.py",
"chars": 3338,
"preview": "#!/usr/bin/env python3\n# created by Tiejun Cheng at NCBI (chengt2@ncbi.nlm.nih.gov)\n\n# please set up selenium, chrome, c"
},
{
"path": "icn3dpython/icn3d_url/batch_export_png.py",
"chars": 3156,
"preview": "#!/usr/bin/env python3\r\n# created by Tiejun Cheng at NCBI (chengt2@ncbi.nlm.nih.gov)\r\n\r\n# please set up selenium, chrome"
},
{
"path": "icn3dpython/icn3d_url/batch_export_refnum.py",
"chars": 3315,
"preview": "#!/usr/bin/env python3\r\n# created by Tiejun Cheng at NCBI (chengt2@ncbi.nlm.nih.gov)\r\n\r\n# please set up selenium, chrome"
},
{
"path": "icn3dpython/icn3d_url/batch_export_ss.py",
"chars": 3189,
"preview": "#!/usr/bin/env python3\r\n# created by Tiejun Cheng at NCBI (chengt2@ncbi.nlm.nih.gov)\r\n\r\n# please set up selenium, chrome"
},
{
"path": "icn3dpython/web_scraping/README.md",
"chars": 1219,
"preview": "Python Scripts by Following Interactive Steps \n=============================================\n\nPython Scripts can scrape "
},
{
"path": "icn3dpython/web_scraping/config.py",
"chars": 563,
"preview": "# by Raphael Trevizani\r\n\r\n# Set \"headless\" as True to hide the browser display using Firefox;\r\n# Set \"headless\" as False"
},
{
"path": "icn3dpython/web_scraping/downloadInteraction.py",
"chars": 6015,
"preview": "#!/usr/bin/env python\r\n\r\n# by Raphael Trevizani\r\n\r\n# Configurations such as PDB ID are in the file \"config.py\"\r\nimport c"
},
{
"path": "iframe.html",
"chars": 769,
"preview": "<!-- share link: https://www.ncbi.nlm.nih.gov/Structure/icn3d/share.html?NNvEURtE9TnDcb4C7 -->\n<iframe allow=\"xr-spatial"
},
{
"path": "index.html",
"chars": 12688,
"preview": "<!DOCTYPE html><html lang=\"en\"><head>\n <meta charset=\"utf-8\">\n <meta name=\"viewport\" content=\"width=device-width, init"
},
{
"path": "jupyternotebook/README.md",
"chars": 3045,
"preview": "icn3dpy\n=======\n\nicn3dpy is a simple [IPython/Jupyter](http://jupyter.org/) widget to\nembed an interactive [iCn3D](https"
},
{
"path": "jupyternotebook/icn3dpy/__init__.py",
"chars": 4795,
"preview": "import IPython.display\r\nimport time, json\r\nfrom urllib.parse import unquote\r\n\r\nclass view(object):\r\n '''A class for c"
},
{
"path": "jupyternotebook/setup.py",
"chars": 2785,
"preview": "\"\"\"A setuptools based setup module.\n\nSee:\nhttps://packaging.python.org/en/latest/distributing.html\nhttps://github.com/py"
},
{
"path": "notfound.html",
"chars": 182,
"preview": "<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML 2.0//EN\">\n<html><head>\n<title>404 Not Found</title>\n</head><body>\n<h1>Not Found"
},
{
"path": "package.json",
"chars": 1144,
"preview": "{\n \"name\": \"icn3d\",\n \"version\": \"3.49.0\",\n \"description\": \"iCn3D Structure Viewer\",\n \"main\": \"index.html\",\n \"script"
},
{
"path": "script/d3v4-force-all.js",
"chars": 487639,
"preview": "// https://d3js.org Version 4.13.0. Copyright 2018 Mike Bostock.\n(function (global, factory) {\n\ttypeof exports === 'obje"
},
{
"path": "script/jszip.js",
"chars": 374187,
"preview": "/*!\n\nJSZip v3.10.1 - A JavaScript class for generating and reading zip files\n<http://stuartk.com/jszip>\n\n(c) 2009-2016 S"
},
{
"path": "script/mtz.js",
"chars": 65607,
"preview": "\nvar GemmiMtz = (function() {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.cu"
},
{
"path": "script/pako.js",
"chars": 238806,
"preview": "\n/*! pako 2.1.0 https://github.com/nodeca/pako @license (MIT AND Zlib) */\n(function (global, factory) {\n typeof exports"
},
{
"path": "share.html",
"chars": 1643,
"preview": "<!DOCTYPE html><html lang=\"en\"><head>\n <meta charset=\"utf-8\">\n <meta name=\"viewport\" content=\"width=device-width, init"
},
{
"path": "share2.html",
"chars": 1643,
"preview": "<!DOCTYPE html><html lang=\"en\"><head>\n <meta charset=\"utf-8\">\n <meta name=\"viewport\" content=\"width=device-width, init"
},
{
"path": "simple.html",
"chars": 5806,
"preview": "<!DOCTYPE html><html lang=\"en\"><head>\n <meta charset=\"utf-8\">\n <meta name=\"viewport\" content=\"width=device-width, init"
},
{
"path": "src/html/alignSeq.js",
"chars": 11942,
"preview": "/**\n * @author Jiyao Wang <wangjiy@ncbi.nlm.nih.gov> / https://github.com/ncbi/icn3d\n */\n\nclass AlignSeq {\n construct"
},
{
"path": "src/html/clickMenu.js",
"chars": 134062,
"preview": "/**\n * @author Jiyao Wang <wangjiy@ncbi.nlm.nih.gov> / https://github.com/ncbi/icn3d\n */\n\nimport * as THREE from 'three'"
},
{
"path": "src/html/dialog.js",
"chars": 34820,
"preview": "/**\n * @author Jiyao Wang <wangjiy@ncbi.nlm.nih.gov> / https://github.com/ncbi/icn3d\n */\n\nclass Dialog {\n constructor"
},
{
"path": "src/html/events.js",
"chars": 172837,
"preview": "/**\n * @author Jiyao Wang <wangjiy@ncbi.nlm.nih.gov> / https://github.com/ncbi/icn3d\n */\n\nimport * as THREE from 'three'"
},
{
"path": "src/html/html.js",
"chars": 5087,
"preview": "/**\n * @author Jiyao Wang <wangjiy@ncbi.nlm.nih.gov> / https://github.com/ncbi/icn3d\n */\n\nimport {ClickMenu} from '../ht"
},
{
"path": "src/html/setDialog.js",
"chars": 134676,
"preview": "/**\n * @author Jiyao Wang <wangjiy@ncbi.nlm.nih.gov> / https://github.com/ncbi/icn3d\n */\n\nclass SetDialog {\n construc"
},
{
"path": "src/html/setHtml.js",
"chars": 56529,
"preview": "/**\n * @author Jiyao Wang <wangjiy@ncbi.nlm.nih.gov> / https://github.com/ncbi/icn3d\n */\n\nclass SetHtml {\n constructo"
},
{
"path": "src/html/setMenu.js",
"chars": 109078,
"preview": "/**\n * @author Jiyao Wang <wangjiy@ncbi.nlm.nih.gov> / https://github.com/ncbi/icn3d\n */\n\nclass SetMenu {\n constructo"
},
{
"path": "src/icn3d/analysis/alignSW.js",
"chars": 14198,
"preview": "/**\n * @author Jack Lin, modified from https://github.com/lh3/bioseq-js/blob/master/bioseq.js\n */\n\nclass AlignSW {\n c"
},
{
"path": "src/icn3d/analysis/analysis.js",
"chars": 18058,
"preview": "/**\n * @author Jiyao Wang <wangjiy@ncbi.nlm.nih.gov> / https://github.com/ncbi/icn3d\n */\n\nimport * as THREE from 'three'"
},
{
"path": "src/icn3d/analysis/applySymd.js",
"chars": 12808,
"preview": "/**\n * @author Jiyao Wang <wangjiy@ncbi.nlm.nih.gov> / https://github.com/ncbi/icn3d\n */\n\nimport * as THREE from 'three'"
},
{
"path": "src/icn3d/analysis/cartoon2d.js",
"chars": 39814,
"preview": "/**\n * @author Jiyao Wang <wangjiy@ncbi.nlm.nih.gov> / https://github.com/ncbi/icn3d\n */\n\nimport * as THREE from 'three'"
},
{
"path": "src/icn3d/analysis/delphi.js",
"chars": 21828,
"preview": "/**\n * @author Jiyao Wang <wangjiy@ncbi.nlm.nih.gov> / https://github.com/ncbi/icn3d\n */\n\nimport * as THREE from 'three'"
},
{
"path": "src/icn3d/analysis/diagram2d.js",
"chars": 44384,
"preview": "/**\n * @author Jiyao Wang <wangjiy@ncbi.nlm.nih.gov> / https://github.com/ncbi/icn3d\n */\n\nimport * as THREE from 'three'"
},
{
"path": "src/icn3d/analysis/dssp.js",
"chars": 6998,
"preview": "/**\n * @author Jiyao Wang <wangjiy@ncbi.nlm.nih.gov> / https://github.com/ncbi/icn3d\n */\n\nclass Dssp {\n constructor(i"
},
{
"path": "src/icn3d/analysis/scap.js",
"chars": 13599,
"preview": "/**\n * @author Jiyao Wang <wangjiy@ncbi.nlm.nih.gov> / https://github.com/ncbi/icn3d\n */\n\nclass Scap {\n constructor(i"
},
{
"path": "src/icn3d/analysis/symd.js",
"chars": 25458,
"preview": "/**\n * @author Jiyao Wang <wangjiy@ncbi.nlm.nih.gov> / https://github.com/ncbi/icn3d\n */\n\nimport * as THREE from 'three'"
},
{
"path": "src/icn3d/annotations/addTrack.js",
"chars": 80525,
"preview": "/**\n * @author Jiyao Wang <wangjiy@ncbi.nlm.nih.gov> / https://github.com/ncbi/icn3d\n */\n\nclass AddTrack {\n construct"
},
{
"path": "src/icn3d/annotations/annoCddSite.js",
"chars": 36329,
"preview": "/**\n * @author Jiyao Wang <wangjiy@ncbi.nlm.nih.gov> / https://github.com/ncbi/icn3d\n */\n\nclass AnnoCddSite {\n constr"
},
{
"path": "src/icn3d/annotations/annoContact.js",
"chars": 10265,
"preview": "/**\n * @author Jiyao Wang <wangjiy@ncbi.nlm.nih.gov> / https://github.com/ncbi/icn3d\n */\n\nclass AnnoContact {\n constr"
},
{
"path": "src/icn3d/annotations/annoCrossLink.js",
"chars": 2229,
"preview": "/**\n * @author Jiyao Wang <wangjiy@ncbi.nlm.nih.gov> / https://github.com/ncbi/icn3d\n */\n\nclass AnnoCrossLink {\n cons"
},
{
"path": "src/icn3d/annotations/annoDomain.js",
"chars": 19226,
"preview": "/**\n * @author Jiyao Wang <wangjiy@ncbi.nlm.nih.gov> / https://github.com/ncbi/icn3d\n */\n\nclass AnnoDomain {\n constru"
},
{
"path": "src/icn3d/annotations/annoIg.js",
"chars": 25663,
"preview": "/**\n * @author Jiyao Wang <wangjiy@ncbi.nlm.nih.gov> / https://github.com/ncbi/icn3d\n */\n\nclass AnnoIg {\n constructor"
},
{
"path": "src/icn3d/annotations/annoPTM.js",
"chars": 12981,
"preview": "/**\n * @author Jiyao Wang <wangjiy@ncbi.nlm.nih.gov> / https://github.com/ncbi/icn3d\n */\n\nclass AnnoPTM {\n constructo"
}
]
// ... and 150 more files (download for full content)
About this extraction
This page contains the full source code of the ncbi/icn3d GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 350 files (32.3 MB), approximately 8.5M tokens, and a symbol index with 16238 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.