• Stars
    star
    151
  • Rank 244,590 (Top 5 %)
  • Language
    JavaScript
  • License
    Other
  • Created over 8 years ago
  • Updated 10 days ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

web-based protein structure viewer and analysis tool interactively or in batch mode

iCn3D Structure Viewer

Gallery with live examples, Tutorial

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. The complete package of iCn3D 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.

  • View a 3D structure in iCn3D: Open the link https://structure.ncbi.nlm.nih.gov/icn3d, input a PDB ID, and click "Load". You can also click "File" menu to "Open File" 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.

  • VR and AR views in iCn3D: The Virtual Reality (VR) and Augmented Reality (AR) views are shown in this video.

    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.

  • Create custom 3D view: 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.

  • Save your work: 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://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, 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, 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 was generated.

    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.

  • Python scripts to batch process structures: 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.

  • Node.js scripts using npm "icn3d" to batch process structures: You can download npm "icn3d" package 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.

  • Annotations for AlphaFold structures: For any custom structures such as AlphaFold structures, you can show conserved domain and 3D domain annotations. For AlphaFold structures, you can also show SNP and ClinVar annotations.

  • Align AlphaFold structures: You can align AlphaFold structures or PDB structures 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 meu "File > Realign Selection > by Structure Alignment".

  • Alternate SNPs in 3D: You can alternate in 3D wild type and mutant of SNPs by clicking the menu "Analysis > Sequences & Annotations", the tab "Details", the checkbox "SNP", and mouseover on SNPs.

  • DelPhi Electrostatic Potential: You can view the DelPhi Electrostatic Potential in the menu "Analysis > DelPhi Potential".

  • Symmetry: You can show precalculated symmetry, or calculate symmetry dynamically using SymD.

  • Use iCn3D in Jupyter Notebook: You can use iCn3D in Jupyter Notebook with the widget "icn3dpy". The instructions are at pypi.org/project/icn3dpy.

  • 2D Cartoons in the chain, domain, and secondary structure levels: You can use click "Analysis > 2D Cartoon" to show 2D Cartoons in the chain, domain, and secondary structure levels.

  • Contact Map for any Selected Residues: You can click the menu "Analysis > Contact Map" to show the interactive contact map 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: binding site, interaction interface, 3D printing, transmembrane proteins, surface, EM map, electron density map, 1D sequences and 2D interactions, align two structures, align multiple chains, align a protein sequence to a structure, realign, custom tracks, force-directed graph for interactions, solvent accessible surface area, 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 src="https://www.ncbi.nlm.nih.gov/Structure/icn3d/full.html?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 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. To show a locked version, use the library files with the version postfix as shown in the source code of iCn3D page. 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:

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/full.html?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/view/1GPK.cif, or https://www.ncbi.nlm.nih.gov/Structure/icn3d/?type=icn3dpng&url=https://api.figshare.com/v2/file/download/39125801. See the help page or the Doc page for more details.

Third-party libraries used in Frontend

  • jQuery and jQuery UI: used as a general tool to write Javascript code. Some jQuery UI features are used.
  • Three.js: used to set up the 3D view.
  • Force-Directed Graph: "2D Graph (Force-Directed)" in the menu "Analysis > Interactions" is based on Force-Directed Graph.

Third-party libraries used in Backend

  • DelPhi: used to calculate electrostatic potential dynamically and is licensed from Columbia University.
  • DelPhiPKa: used to add hydrogens and partial charges to proteins and nucleotides.
  • Open Babel: used to add hydrogens to ligands.
  • Antechamber: used to add partial charges to ligands.
  • SymD: used to calculate symmetry dynamically.
  • scap/Jackal: used to predict side chain conformation dynamically.
  • TM-align: used to align two chains of 3D structures.

Tools based on

  • iview: The drawing of 3D objects is based on iview.
  • GLmol: The drawing of nucleotides cartoon is based on GLmol.
  • 3Dmol: The surface generation and labeling are based on 3Dmol.
  • NGL Viewer: The Imposter shaders are based on NGL Viewer.
  • LiteMol: The parser of EM density data from PDBe is based on LiteMol.
  • py3Dmol: The Jupyter Notebook widget "icn3dpy" is based on py3Dmol.
  • Orientations of Proteins in Membranes (OPM): The membrane data of transmembrane proteins are from OPM.
  • Membranome: For AlphaFold Structures, the membrane data of single-spanning transmembrane proteins are from Membranome.
  • Post-Translational Modification (PTM): The PTM data are from UniProt.

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 [email protected]

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 [email protected].

Citing

Bioinformatics. 2020 Jan 1;36(1):131-135. doi: 10.1093/bioinformatics/btz502.

To cite iCn3D, please reference:

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. PubMed PMID: 31218344, Full Text at Oxford Academic

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. PubMed PMID: 35252351, Full Text at Frontiers

More Repositories

1

sra-tools

SRA Tools
C
1,093
star
2

GeneGPT

Code and data for GeneGPT.
Python
370
star
3

datasets

NCBI Datasets is a new resource that lets you easily gather data from across NCBI databases.
Jupyter Notebook
347
star
4

pgap

NCBI Prokaryotic Genome Annotation Pipeline
Common Workflow Language
300
star
5

amr

AMRFinderPlus - Identify AMR genes and point mutations, and virulence and stress resistance genes in assembled bacterial nucleotide and protein sequence.
C++
262
star
6

PubReader

A new way to view journal articles
JavaScript
193
star
7

TPMCalculator

TPMCalculator quantifies mRNA abundance directly from the alignments by parsing BAM files
C++
124
star
8

MedCPT

Code for MedCPT, a model for zero-shot biomedical information retrieval.
Python
123
star
9

dbsnp

dbSNP
Jupyter Notebook
120
star
10

ngs

NGS Language Bindings
C++
118
star
11

SKESA

SKESA assembler
C++
112
star
12

blast_plus_docs

106
star
13

ngs-tools

C++
102
star
14

vadr

Viral Annotation DefineR: classification and annotation of viral sequences based on RefSeq annotation
Perl
97
star
15

fcs

Foreign Contamination Screening caller scripts and documentation
95
star
16

ncbi-vdb

ncbi-vdb
C
89
star
17

robotframework-pageobjects

Implementation of the Page Object pattern with Robot Framework and selenium. Also facilitates page object pattern independent of Robot Framework
Python
84
star
18

gprobe

client app for the gRPC health-checking protocol
Go
81
star
19

SSDraw

Jupyter Notebook
74
star
20

BAMscale

BAMscale is a one-step tool for either 1) quantifying and normalizing the coverage of peaks or 2) generated scaled BigWig files for easy visualization of commonly used DNA-seq capture based methods.
C
66
star
21

clinvar

ClinVar aggregates information about genomic variation and its relationship to human health. Contact us at '[email protected]' with any questions or comments.
HTML
66
star
22

rapt

Read Assembly and Annotation Pipeline Tool
57
star
23

ncbi-cxx-toolkit-public

NCBI C++ Toolkit package sources
C++
49
star
24

JATSPreviewStylesheets

JATS Preview Stylesheets
XSLT
48
star
25

docker

Dockerfile
46
star
26

sra-human-scrubber

An SRA tool that takes as input local fastq file from a clinical infection sample, identifies and removes any significant human read, and outputs the edited (cleaned) fastq file that can safely be used for SRA submission.
Shell
45
star
27

elastic-blast

ElasticBLAST is a cloud-based tool to perform your BLAST searches faster and make you more effective
Python
43
star
28

BioConceptVec

Jupyter Notebook
40
star
29

dbvar

dbVar
39
star
30

AIONER

AIONER
Python
38
star
31

magicblast

Python
34
star
32

JUDI

This repository contains the source code of JUDI, a workflow management system for developing complex bioinformatics software with many parameter settings. Bioinformatics pipeline: Just Do It!
Python
33
star
33

sratoolkit

SRAToolkit has been REPLACED - see README
32
star
34

bert_gt

Python
30
star
35

egapx

Eukaryotic Genome Annotation Pipeline-External caller scripts and documentation
Nextflow
27
star
36

osiris

OSIRIS is a public domain quality assurance software package that facilitates the assessment of multiplex short tandem repeat (STR) DNA profiles based on laboratory-specific protocols. OSIRIS evaluates the raw electrophoresis data contained in .fsa or .hid files using an independently derived mathematically-based sizing algorithm. OSIRIS currently supports ABI capillary analytical platforms and numerous commercially available marker kits including all CODIS-compliant kits as well as those favored by biomedical laboratories.
C++
26
star
37

pm4ngs

Project Manager for NGS data analysis
Python
25
star
38

BioREx

Python
25
star
39

cwl-ngs-workflows-cbb

A set of CWL tools and workflows used by NCBI Computational Biology Branch for NGS data analysis
Common Workflow Language
23
star
40

consul-announcer

Service announcer for Consul (https://www.consul.io/).
Python
22
star
41

scPopCorn

A python tool to do comparative analysis of mulitple single cell datasets.
Jupyter Notebook
21
star
42

workshop-ncbi-data-with-python

Python
20
star
43

BioRED

19
star
44

cxx-toolkit

HTML
18
star
45

EvoGeneX

This repository contains the source code of the R package for EvoGeneX, a software to infer the mode of evolution from the gene expression data.
R
17
star
46

GNorm2

Java
15
star
47

tree-tool

Incremental building of phylogenetic distance trees
C++
14
star
48

pipelines

Common Workflow Language
14
star
49

tmVar3

Java
14
star
50

graf

Genetic Relationship And Fingerprinting
Perl
13
star
51

ribovore

Perl
13
star
52

biomedical-citation-selector

Python
12
star
53

PMCXMLConverters

PMC XML Converters
XSLT
12
star
54

gaptools

dbGaP data validation tool repo
Shell
11
star
55

AF2_benchmark

Jupyter Notebook
11
star
56

sars2variantcalling

The NCBI SARS-CoV-2 Variant Calling (SC2VC) Pipeline allows calling high-confidence variants from SARS-CoV-2 NGS data in a standardized format
Perl
11
star
57

ICITY

Python
10
star
58

fcs-gx

Foreign Contamination Screening - GX source code
C++
10
star
59

blast-cloud

Documentation for NCBI BLAST AMI
CSS
10
star
60

RepairSig

Python
10
star
61

finagle-consul

Service discovery for Finagle cluster with Consul.
9
star
62

NetREX

Python
9
star
63

python-libpq-dev

Shell
8
star
64

packit

Python packaging in declarative way (wrapping pbr to make it flexible)
Python
8
star
65

workshop-asm-ngs-2022

Pre-conference workshop for ASM NGS 2022
Perl
8
star
66

elastic-blast-demos

ElasticBLAST demos
Jupyter Notebook
7
star
67

PSSS-Bytes2Biology

Petabyte Scale Sequence Search Initiative
Python
7
star
68

HYDROID

Python package for analyzing hydroxyl-radical footprinting experiments of DNA-protein complexes
Python
7
star
69

ncbi-drs

GA4GH DRS Service
Python
6
star
70

ncbi-logging

Log monitoring and gathering infrastructure to feed analytics
C++
6
star
71

cwl-demos

CWL demonstration pipelines
Common Workflow Language
6
star
72

SpeciesAssignment

SpeciesAssignment
Python
6
star
73

niso-jats

6
star
74

dual_fold_coevolution

Python
6
star
75

mti

NLM Medical Text Indexer (MTI)
C
6
star
76

DbGaP-FHIR-API-Docs

The documentation repository for the dbGaP FHIR API.
Jupyter Notebook
6
star
77

mtix

ML based NLM Medical Text Indexer
Python
5
star
78

ITSx

Not the official ITSx repository, please visit https://microbiology.se/software/itsx/
Perl
5
star
79

gtax

Python
5
star
80

deeplensnet

Python
5
star
81

biomedical-citation-selector-trainer

Biomedical Citation Selector Trainer
Python
5
star
82

SuPER

Python
5
star
83

Co-SELECT

This repository contains the source code of Co-SELECT, a computational tool to analyze the results of in vitro HT-SELEX experiments for TF-DNA binding to show the role of DNA shape in TF-DNA binding by using a novel method of deconvoluting the contributions of DNA sequence and DNA shape on the binding.
Assembly
5
star
84

AceView

Acedb object oriented database engine and AceView/MAGIC RNA_seq pipeline, NCBI/NLM/NIH
C
5
star
85

stxtyper

StxTyper uses a standardized algorithm to accurately type both known and unknown Shiga toxin operons from assembled genomic sequence.
C++
4
star
86

ncbi-xmlwrapp

NCBIโ€™s fork of โ€œxmlwrappโ€ -- a C++ wrapper for libxml2/libxslt libraries
C++
4
star
87

ncbi-cxx-toolkit-conan

NCBI C++ Toolkit package recipe
Python
4
star
88

biocreative_litcovid

Evaluation scripts of the Biocreative LitCovid track
Python
4
star
89

NETPHIX

A computational tool to identify mutated subnetworks that are associated with a continuous cancer phenotype
Python
4
star
90

SRPRISM

C++
4
star
91

deflake

deflake.py Helps debug a non determinate test (or any flaky program) by running it until it exits with a non-zero exit code.
Python
4
star
92

Solr-Plugins

Assorted plugins for Solr
Java
3
star
93

ncbi_css_standards

NCBI CSS
HTML
3
star
94

datadicer

JavaScript
3
star
95

ncbi_doc_template

CSS
3
star
96

GeneSigNet

HTML
3
star
97

nlm-dtd

HTML
3
star
98

CoV-Dist

HTML
3
star
99

cloud-transcriptome-annotation

Time and cost comparison on GCP and AWS for transcriptome annotation
Jupyter Notebook
3
star
100

elastic-blast-docs

ElasticBLAST documentation
3
star