Vad är en DNA-barcode-visualisering?

require("rbarcode")

primo <- "CTAATTTTTGGGGCCTGAGCGGGCATGGTTGGAACCGCCCTCAGCCTGCTCATTCGCGCAGAACTCGGTCAACCAGGAACCCTACTAGGAGACGACCAGATCTACAACGTAATCGTCACTGCCCATGCCTTCGTA
ATAATCTTCTTTATAGTCATACCAATCATAATCGGGGGCTTTGGAAACTGACTAGTCCCCCTTATAATCGGCGCCCCAGACATAGCGTTCCCCCGTATAAATAACATAAGCTTCTGACTACTCCCCCCATCCTTCCTT
CTCCTACTAGCCTCCTCCACCGTAGAAGCTGGTGCTGGTACAGGGTGAACAGTCTACCCCCCTCTAGCTGGTAATCTGGCCCACGCCGGAGCTTCTGTAGACCTAGCCATCTTCTCCCTACACCTCGCTGGAGTCT
CATCAATCCTAGGTGCAATCAACTTCATCACTACTGCCATTAACATAAAGCCCCCGGCCCTATCTCAATACCAAACCCCCCTATTCGTATGATCCGTACTAATCACAGCCGTCCTACTATTACTTTCACTGCCCGTCCT
CGCTGCCGGCATTACAATGCTCCTCACAGACCGAAACCTAAACACCACATTCTTTGACCCAGCCGGAGGAGGAGACCCAGTCCTATACCAACACCTATTC"

secundo <- "CTAATCTTCGGTGCATGAGCTGGCATGGTCGGAACCGCCCTCAGCCTGCTTATTCGTGCAGAACTAGGCCAACCAGGAACCCTCTTGGGAGATGACCAAATCTACAATGTAATCGTTACTGCTCATGCATTCGTAA
TAATTTTCTTCATAGTTATACCAATCATGATCGGAGGATTTGGAAATTGACTAGTCCCACTCATAATCGGCGCCCCCGACATAGCATTTCCTCGTATAAACAATATAAGCTTCTGACTACTCCCCCCATCATTCCTAT
TATTACTAGCATCCTCTACAGTAGAAGCTGGAGCTGGCACAGGATGAACAGTATATCCACCCCTCGCCGGCAACCTAGCCCACGCAGGAGCCTCAGTAGACCTAGCTATTTTCTCCCTCCATTTAGCAGGTGTCTC
CTCCATCCTAGGTGCCATTAACTTTATCACCACTGCCATTAACATAAAACCACCAGCCCTGTCCCAATACCAAACACCCCTATTTGTATGATCAGTACTCATTACCGCCGTCTTACTGCTACTCTCACTCCCAGTCCTT
GCTGCCGGCATCACCATGCTATTAACAGATCGTAATCTAAACACCACATTCTTTGACCCAGCCGGAGGAGGAGACCCAGTCCTATACCAACATCTCTTC"

primo <- actg_unwrap(primo)
secundo <- actg_unwrap(secundo)

primo_63w <- actg_wrap(primo, 63)
secundo_63w <- actg_wrap(secundo, 63)

primo_3k <- actg_k3(primo)
secundo_3k <- actg_k3(secundo)

primo_12k <- actg_k3(primo, invert = TRUE)
secundo_12k <-actg_k3(secundo, invert = TRUE)

En DNA streckkodsekvens från en blåkråka

`r primo_63w`

En DNA streckkodsekvens från en morkulla

`r secundo_63w`

Referensexemplar

Referensexemplaren som finns bevarade på Naturhistoriska Riksmuseet av blåkråka (Cat. id. NRM 20106015) - den övre bilden - och morkulla (Cat. id. NRM 20046331) - den nedre bilden - som de illustrerade streckkoderna har sekvenserats ifrån.

I detta fall en felflugen blåkråka från Ramsberg norr om Lindesberg.
alt text

Och en morkulla från Fibysjön utanför Uppsala.
alt text

Visualisering

Man kan visualisera en DNA sekvens på ett sätt som blir mer överskådligt om man låter linjer i fyra olika färger representera ordningen av kvävebaserna A, C, T och G i genen.

Då åskådliggörs också likheten med vanliga streckkoder för tex produkter och det förklarar varför det kallas DNA streckkodning. Sekvenserna illustrerade på klassiskt sätt ser ut såhär, med Blåkråka alltid överst och därefter Morkulla:

barcode(primo)
barcode(secundo)

Samma sak illustrerat med radbruten färgkodning:

r color_sequence((primo_63w))

`r color_sequence((secundo_63w))`

Jämförelse - var skiljer sig sekvenserna åt?

Horisontell sektionsvis jämförelse av enbart 3.e kodon - dvs begränsat urval till tecken i positioner jämnt delbara med tre:

r color_sequence(actg_wrap((primo_3k), 63))
r color_sequence(actg_wrap((secundo_3k), 63))

Klassisk barcode över 3.e kodon - god överblick men svårt att se exakt var skillnaderna finns:

barcode(primo_3k)
barcode(secundo_3k)

Radvis jämförelse med skillnader framhävda med grå markering:

r color_sequence(actg_diff(primo_3k, secundo_3k, muting = FALSE))

Resterande data i kodon 1 och 2 - dvs "det som inte är i kodon 3" - på klassiskt sätt:

barcode(primo_12k)
barcode(secundo_12k)

Illustrerade som separata stycken, färgkodade och radbrutna:

`r color_sequence(actg_wrap(tolower(primo_12k), 63))`
`r color_sequence(actg_wrap(tolower(secundo_12k), 63))`

Jämförelsevisualisering - för detta urval av data ser vi betydligt färre skillnader:

r color_sequence(actg_diff(primo_12k, secundo_12k))

Och om vi slutligen gör samma sak för kodon-3-dataurvalet, men dessutom lyfter fram skillnaderna ytterligare, såsom ovan, genom att tona ned likheterna:

r color_sequence(actg_diff(primo_3k, secundo_3k, muting = TRUE))

Numeriskt mått på likhet mellan kodsekvenserna

require("RecordLinkage", quietly = TRUE) 

Levenshtein-avståndet ("edit distance" - minsta antalet edit operationer som behövs för att göra om ena strängen till den andra) är r levenshteinDist(primo_3k, secundo_3k) för tredjepositionerna och r levenshteinDist(primo_12k, secundo_12k) för förstaochandra-positionerna, samt r levenshteinDist(primo, secundo) sammantaget.

Levenshtein's likhetsmått kan beräknas. Detta mått definieras på intervallet [0,1] där 0 anger högsta olikhet och 1 anger högsta graden av likhet mellan två strängar. För tredjepositionsdatan blir detta mått r levenshteinSim(primo_3k, secundo_3k). För förstaochandrapositionsdatan blir måttet betydligt högre: r levenshteinSim(primo_12k, secundo_12k)



mskyttner/rbarcode documentation built on May 23, 2019, 7:53 a.m.