File:Dna-SNP.svg
Original file (SVG file, nominally 520 × 333 pixels, file size: 1.15 MB)
Captions
Summary
[edit]DescriptionDna-SNP.svg |
English: A Single Nucleotide Polymorphism is a change of a nucleotide at a single base-pair location on DNA. Created using OpenSCAD v2021.01 and Inkscape v1.0.2. |
Date | |
Source | Own work |
Author | David Eccles (Gringer) |
Construction process
[edit]This file was derived from a 3D model of DNA, converted to SVG and coloured using David Eccles' STL2SVG script:
type=orig; ~/scripts/stl2svg.pl ./DNA_linear_complete_helix1.stl:330 ./DNA_linear_complete_helix2.stl:200 ./DNA_linear_complete_${type}_A.stl:140 ./DNA_linear_complete_${type}_C.stl:250 ./DNA_linear_complete_${type}_G.stl:90 ./DNA_linear_complete_${type}_T.stl:30 > out_${type}.svg type=mut; ~/scripts/stl2svg.pl ./DNA_linear_complete_helix1.stl:330 ./DNA_linear_complete_helix2.stl:200 ./DNA_linear_complete_${type}_A.stl:140 ./DNA_linear_complete_${type}_C.stl:250 ./DNA_linear_complete_${type}_G.stl:90 ./DNA_linear_complete_${type}_T.stl:30 > out_${type}.svg
The DNA models were then combined and annotated using Inkscape. The DNA backbone for the model is a pentagon extruded over a sine wave using David Eccles' guided path extrude script. The model source file (in OpenSCAD format) is shown below:
use <guided_extrude.scad>; hl = 100; // helix length hp = 33.2; // helix pitch [in angstroms] hr = 10; // helix radius [in angstroms] bbr = 1.5; // backbone radius loops = hl / hp; // random bases //bases = rands(0, 4, ceil(360 * loops / 34.3),1); // *GRINGENE* -- TAA GGN MGN ATH AAY GGN GAR AAY GAR TGA // -- TAA GGC AGG ATC AAC GGC GAG AAC GAG TGA // A = 0; G = 1; C = 2; T = 3 // [different from my usual order, // to simplify the 3D model logic] bases = [3,3,3, 1,1,2, 0,1,1, 0,3,2, 0,0,2, 1,1,2, 1,0,1, 0,0,2, 1,0,1, 3,1,0]; bAng = atan2(sin(120) - sin(0), cos(120) - cos(0)); drawMode = "all"; module lineTo(x1, x2){ hull(){ translate(x1) sphere(r=0.25, $fn=5); translate(x2) sphere(r=0.25, $fn=5); } } backbone_profile = [for(th = [0:72:359]) [bbr*cos(th), bbr*sin(th)*1]]; inc = floor($t * 30); thf = ($t * 30) - inc; h1limit = (360 * loops); h1jump = (360 * loops); helix_1 = [for(th = [(thf*34.3):(34.3/2):h1jump]) [hr * cos(th), hr * sin(th), hl * th / (360 * loops)]]; helix_2 = [for(th = [120:(34.3/2):(360 * loops+120)]) [hr * cos(th), hr * sin(th), hl * (th-120) / (360 * loops)]]; module purine(){ linear_extrude(height=0.75, center=true){ // average hydrogen bond length in water: 1.97 A // https://en.wikipedia.org/wiki/Hydrogen_bond#Structural_details translate([-0.985,0]) // scale: average of C-C and C=C bond length scale(1.435) translate([-2,0]) rotate(12) rotate(18){ rotate(-30) translate([1,0]) circle(r=1, $fn=6); color("blue") rotate(36) translate([-1 / (2*sin(36)),0]) circle(r=1 / (2*sin(36)), $fn=5); } } } module pyrimidine(){ linear_extrude(height=0.75, center=true){ // average hydrogen bond length in water: 1.97 A // https://en.wikipedia.org/wiki/Hydrogen_bond#Structural_details translate([-0.985,0]) scale(1.435) translate([-2, 0]) translate([1,0]) circle(r=1, $fn=6); } } $vpt = [0, 0, 0]; //$vpr = [310, 105, 10]; $vpr = [0, 0, 0]; rotate([310, 105, 130]) translate([0,0,-hl/2]) { if(drawMode == "all" || drawMode == "helix1") color("lightblue") mapExtrude("vertCylinder", backbone_profile, helix_1); if(drawMode == "all" || drawMode == "helix2") color("pink") mapExtrude("vertCylinder", backbone_profile, helix_2); for(thb = [inc:(360 * loops / 34.3 + inc)]) { thi = thb-inc; th = (thi-thf) * 34.3; thisBase = bases[floor(thb%30)]; doPur = (thisBase < 2); // base bond has a -1.2° angle; // not quite sure how to implement that baseFrac = (doPur ? 0.55 : 0.45); baseFInv = 1 - baseFrac; translate([0,0,hl * th / (360 * loops)]) rotate([-1.2,0,0]){ if(drawMode == "all" || drawMode == "helix2") color("pink") lineTo([hr * cos(th)*(baseFrac-0.15) + hr * cos(th+120) * (baseFrac+0.15), hr * sin(th)*(baseFrac-0.15) + hr * sin(th+120) * (baseFrac+0.15)], [hr * cos(th+120), hr * sin(th+120)]); if(th < (h1jump)) if(drawMode == "all" || drawMode == "helix1") color("lightblue") lineTo([hr * cos(th), hr * sin(th)], [hr * cos(th)*(baseFrac+0.15) + hr * cos(th+120) * (baseFrac-0.15), hr * sin(th)*(baseFrac+0.15) + hr * sin(th+120) * (baseFrac-0.15)]); if(drawMode == "all" || (drawMode == "A" && thisBase == 0) || (drawMode == "G" && thisBase == 1) || (drawMode == "C" && thisBase == 2) || (drawMode == "T" && thisBase == 3) ) color((thisBase < 1) ? "green" : (thisBase < 2) ? "gold" : (thisBase < 3) ? "blue" : "red") translate([hr * cos(th)*baseFrac + hr * cos(th+120) * baseFInv, hr * sin(th)*baseFrac + hr * sin(th+120) * baseFInv]) rotate(180 + bAng + th) if(doPur) { purine(); } else { pyrimidine(); }; if(drawMode == "all" || (drawMode == "A" && thisBase == 3) || (drawMode == "G" && thisBase == 2) || (drawMode == "C" && thisBase == 1) || (drawMode == "T" && thisBase == 0) ) if(th < (h1jump)) color((thisBase < 1) ? "red" : (thisBase < 2) ? "blue" : (thisBase < 3) ? "gold" : "green") translate([hr * cos(th)*baseFrac + hr * cos(th+120) * baseFInv, hr * sin(th)*baseFrac + hr * sin(th+120) * baseFInv]) rotate(bAng+th) if(doPur) { pyrimidine(); } else { purine(); }; } } if(drawMode == "all" || drawMode == "helix1") color("lightblue") { translate(helix_1[len(helix_1)-1]) sphere(r=bbr, $fn=5); translate(helix_1[0]) sphere(r=bbr, $fn=5); } if(drawMode == "all" || drawMode == "helix2") color("pink") { translate(helix_2[0]) sphere(r=bbr, $fn=5); translate(helix_2[len(helix_2)-1]) sphere(r=bbr, $fn=5); } }
Licensing
[edit]Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled GNU Free Documentation License.http://www.gnu.org/copyleft/fdl.htmlGFDLGNU Free Documentation Licensetruetrue |
- You are free:
- to share – to copy, distribute and transmit the work
- to remix – to adapt the work
- Under the following conditions:
- attribution – You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.
File history
Click on a date/time to view the file as it appeared at that time.
Date/Time | Thumbnail | Dimensions | User | Comment | |
---|---|---|---|---|---|
current | 13:07, 8 May 2021 | 520 × 333 (1.15 MB) | Gringer (talk | contribs) | Update to slightly more accurate 3D model, showing base rings | |
21:50, 17 December 2014 | 457 × 298 (251 KB) | Gringer (talk | contribs) | Increase nominal size to something readable | ||
21:46, 17 December 2014 | 120 × 80 (244 KB) | Gringer (talk | contribs) | Updated to 3D model, different DNA sequence | ||
01:40, 6 July 2007 | 416 × 521 (59 KB) | Gringer (talk | contribs) | {{Information |Description=A Single Nucleotide Polymorphism is a change of a nucleotide at a single base-pair location on DNA. Created using Inkscape v0.45.1. [modified to remove long tails on DNA] |Source=self-made |Date=2007-07-06 |Author=David Hall (~~ | ||
00:56, 6 July 2007 | 471 × 521 (59 KB) | Gringer (talk | contribs) | {{Information |Description=A Single Nucleotide Polymorphism is a change of a nucleotide at a single base-pair location on DNA. Created using Inkscape v0.45.1. |Source=self-made |Date=2007-07-06 |Author=David Hall (~~~) |other_versions= }} |
You cannot overwrite this file.
File usage on Commons
The following page uses this file:
File usage on other wikis
The following other wikis use this file:
- Usage on ar.wikipedia.org
- Usage on ast.wikipedia.org
- Usage on be.wikipedia.org
- Usage on bs.wikipedia.org
- Usage on ca.wikipedia.org
- Usage on cs.wikipedia.org
- Usage on de.wikipedia.org
- Usage on el.wikipedia.org
- Usage on en.wikipedia.org
- Single-nucleotide polymorphism
- Haplotype
- Genealogical DNA test
- Human genetic variation
- Haplogroup I-M253
- User:Bci2
- Molecular models of DNA
- User:Bci2/Books/Wk2Book
- User:Bci2/Books/Wk3vol1
- User:Bci2/Books/Wk4
- Talk:Molecular models of DNA/Galleries
- Heather Dewey-Hagborg
- Evolution of the wolf
- Talk:DNA sequencing/Archive 1
- Usage on es.wikipedia.org
- Usage on et.wikipedia.org
- Usage on fa.wikipedia.org
- Usage on fi.wikipedia.org
- Usage on fr.wikipedia.org
- Usage on gl.wikipedia.org
- Usage on he.wikipedia.org
- Usage on hu.wikipedia.org
- Usage on it.wikipedia.org
- Usage on ja.wikipedia.org
- Usage on la.wikipedia.org
View more global usage of this file.
Metadata
This file contains additional information such as Exif metadata which may have been added by the digital camera, scanner, or software program used to create or digitize it. If the file has been modified from its original state, some details such as the timestamp may not fully reflect those of the original file. The timestamp is only as accurate as the clock in the camera, and it may be completely wrong.
Width | 520 |
---|---|
Height | 332.93881 |