Оригинална датотека(SVG датотека, номинално 520 × 333 пиксела, величина: 1,15 MB)

Опис измене

Опис
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.
Датум
Извор Сопствено дело
Аутор David Eccles (Gringer)

Construction process

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);
  }
}

Лиценцирање

Ја, носилац ауторских права над овим делом, објављујем исто под следећим лиценцама:
GNU head Дата је дозвола да се копира, дистрибуира и/или мења овај документ под условима ГНУ-ове лиценце за слободну документацију, верзије 1.2 или било које новије верзије коју објави Задужбина за слободни софтвер; без непроменљивих одељака и без текста на насловној и задњој страни. Текст лиценце можете прочитати овде.
w:sr:Кријејтив комонс
ауторство
Ова датотека је доступна под лиценцом Creative Commons Ауторство 4.0 међународна.
Ауторство: SNP model by David Eccles (gringer)
Дозвољено је:
  • да делите – да умножавате, расподељујете и преносите дело
  • да прерађујете – да прерадите дело
Под следећим условима:
  • ауторство – Морате да дате одговарајуће заслуге, обезбедите везу ка лиценци и назначите да ли су измене направљене. Можете то урадити на било који разуман манир, али не на начин који предлаже да лиценцатор одобрава вас или ваше коришћење.
Изаберите лиценцу по жељи.

Натписи

Укратко објашњење шта ова датотека представља/приказује
DNA sequence variation in a population. A SNP is just a single nucleotide difference in the genome. The upper DNA molecule differs from the lower DNA molecule at a single base-pair location (a G/A polymorphism)

Ставке приказане у овој датотеци

приказује

Нека вредност без ставке на Википодаци

18. децембар 2014

image/svg+xml

Историја датотеке

Кликните на датум/време да бисте видели тадашњу верзију датотеке.

Датум/времеМинијатураДимензијеКорисникКоментар
тренутна15:07, 8. мај 2021.Минијатура за верзију на дан 15:07, 8. мај 2021.520 × 333 (1,15 MB)GringerUpdate to slightly more accurate 3D model, showing base rings
23:50, 17. децембар 2014.Минијатура за верзију на дан 23:50, 17. децембар 2014.457 × 298 (251 kB)GringerIncrease nominal size to something readable
23:46, 17. децембар 2014.Минијатура за верзију на дан 23:46, 17. децембар 2014.120 × 80 (244 kB)GringerUpdated to 3D model, different DNA sequence
03:40, 6. јул 2007.Минијатура за верзију на дан 03:40, 6. јул 2007.416 × 521 (59 kB)Gringer{{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 (~~
02:56, 6. јул 2007.Минијатура за верзију на дан 02:56, 6. јул 2007.471 × 521 (59 kB)Gringer{{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= }}

Следећа страница користи ову датотеку:

Глобална употреба датотеке

Други викији који користе ову датотеку:

Још глобалног коришћења ове датотеке.

Метаподаци