These are functions written for a takehome exercises for a Bioinformatics Software Engineer position. The functions identify candidate guide (protospacer) sequences from a given genomic region (string) / or a FASTA file. Never heard back from the company.
Below my answers.
# install.packages("devtools")
devtools::install_github("c1au6i0/crispR")
You can access the code of the function find_proto
here.
library(crispR)
find_proto(d_seq = "TGATCTACTAGAGACTACTAACGGGGATACATAG",
l = 2,
PAM = "NGG")
## # A tibble: 3 x 5
## start_p end_p protospacer PAM strand
## <int> <dbl> <chr> <chr> <chr>
## 1 20 21 AA CGG +
## 2 21 22 AC GGG +
## 3 22 23 CG GGG +
..or using DNA of the Dopamine Transporter (DAT
internal data):
library(crispR)
print(DAT)
## [1] "TTTGCAAACGCTCGCATGTCACCGAAGGCGCAACAGCTCCGATTTTGAAATTTCCAACACGGCCCTCAAGTTGAAAGTTTTCCAAAAAAATTTAAACACCTCCGCCCATGTGAATGTGAAGTGAAATTCGGGTTTGGCATTCGGCATTGGTTGTGTGGAGCTTTTTTCTAAGTTTTCTGGATATTTTTCAAAAGTCTCAAGGATTATTTAACAATGGATTGGAGCAACTACATGATTTGAGCTTGATATTTATAAGGTAAGTAAGCATATAAACCAGTTTTTAGGTATGCATTCAAATAACTGCGATGGGAATTATAAAATCGAATGAGGAGAATAACTGAATAATTTAAAGCGAGCAACAAATAAACAACATAATATCTTTAAGAACCTAGTTTTCAAGTGCAGCTGGCTTAAAGAGATCAAAAATTAAATATTCATTAGCTGAATCATGTTGGGCATGGTGTTAAAAAATCGCTGTAAAATGCAAAAATTTAAAATGTTAATGATTACAGATGGAAATACTGATAGGTGATAACTTCAAAATGTGTTGTATGTTTGATAAGAAAGCAATAAAGAAAGAATGTAAAATTTAAACACTAATTTAAAGTTGTTAATTTAAACACCACACCAAATTTTTAATATTCTTTAATATTACTGTAATACTTTGTAAACTGGCCAACTAAGATTGCCATCGAATCTGGAACAAAAAGATGGATTCTAGTCATAAATTAACCCAGCGCAGCTCCGAGTACTTTAAGCACTCAATCTGCATTTCGCTTAATTGATCGCAACTCAGGGCAATTAAAGTCAGCGGGGAGGAATTAAGTAGATCAGATTAATTGTTTGACGTGTTTGTGGTTTCATTACACGCAAAGATGCCCGAGAGTTGGGCACATACATATAGACGGATATATGTACATATGTATGTATGTTCTTGTTCTGTGGTGTGGATGGTCAAGTGTTTGCTGCCCAGTGTGTTTGAACATGCCACCTGTCGTATGCGTAATGTGCCAACGAGCTCTTCAAGGGCTGGGTAAGCACATGTCGTTGCCAAACAGGTTTCAAGTGCCCTGGACACACACTTATTGAAGCCCATTGATTGGTGAAGGGTTTTGGATTTTGCGTGGGGTACTGGGATTTAAATCATTGAATATGGTTCTTATTTCTGGCATATCTGCGCAACTGACCCATTTTGAGTGCTGCGATTTTCACAGATTTCAAAGTGCGGCGGCGGGATCTCCACATTTTGGGTCAAGGACACGACGGGTTATATAGTCGCAGATGTCACCAACCGGACATATATCCAAATCAAAGACGCCCACGCCACACGATAACGATAACAATAGCATCAGCGACGAGCGCGAAACATGGAGCGGCAAAGTGGATTTTTTATTATCGGTTATTGGATTCGCCGTCGATTTAGCAAACGTCTGGAGATTTCCCTATTTGTGCTACAAAAATGGCGGTGGTAAGTAGATTCTTTTAGATCCTACACTATTATACAGAAGAAGATCACTATTAAATTGGATACATAAATAAAAAAAAGGTGTCTAAAGGCGCTCTAATGTTATTAGACTGTTTTATGATAATCTTAAAACCATATCATACCTTTAAGATACTTTCTTTATACTTCATTTAAGATACTTTCAGCCAATGTTGGTGATTTTTCTCCGTGTGAACTGGCCAATTAGGGGATAAAGACATTTCGTCAATCGCTCTGGCTGAGTGAATATAATTTATATGGCTTTACACATCATTGGGCTCGCCACGGAACCCGTCGCTTTCCTCTTTCCGCTTTCTGAATTTCCCTTTCGGCCTTGTTAACACTTTGTCAAAGTGGTGCGAAGTGCTGTCGGTGGGGTGGTGCGGGAATGGTTCCTTTGTCAAATTGCAGGGCTTTTCCCCGCTAAAAGAGCGGCAAAGGACACACAGTCGAACACTTACTTCGCTTCCTGATCCTCATCGCCGACGCCATCATTCAAAACAATTCCAAAAGTTAAGTGCTTCTGTATGACAACTAAATCTGGCAGTCATAATCGCATTTGGCCTGCTTACCCTCTGTCACACTTTTTCACCCCATTTTCTTGGCAATATGTCAGCCTGCTTATGTGGAGTTCTCTAGGCTTTTGTTGCTGGAGCACTTTCCACCATCGCATTGTGGGAAATTCATGTGCGAAACATGTCTCCATGTCTCCACCTCCCCATTTTCCCTCTGATTGCGGCACTTTCCCGCTGATGCGTCGTGAATGGATGTGGCACACAGGGCCTTCGATATAGTTATTACTATTTTATGAGTTTTCTTTTTTTCCTCCTGCTAACCCCCGGTCGCTGCTGCTGCTGCTGCTTTAAAATCATAATAATAAATTGTTATATTTATACGCTTCATTGCGTTCAATCAGTGGTTCCAGCTCCATCTTCAGCTTAAGTTCCATTTTATGTCCGTTGCCAGGGGCAGCAACTCGCTCAGGTTGCGATTATTACCACAGCTTAGTCGGTATTATTTATTCTGTTTCCCATTTTCCTGCTGCCTGCAACTCGGAAGTGGAAGCTTTGGTGGCAGCAACAGGCTGTGCCATCCACATTGTTCTGGATTAGGGCTAAAACTCAAGGAGCTGCCTGGCTTTTTTTCAAACTAAGATCGCGCATACGCACTTGATTGTACTTGGGTTAACTATGTATTTCAATAAATTATATTCTTTATTCTTAAATTTGTCTAAAAGTTTAGATTTCTATTTGGAACTGAAGGACTTAATGGTGAGACTTTGCACCTCAGCTTAAACCAGAATAGTCCTACACAAATACATGTAAAAAGTTATTCACAAGCATTTAAGTAGGCATAACTTTCAATAATTCAATAGAATATCAATTTGCTAGTCAAGCAATAACCAACACTTGGCCGTTTAAAATTGGACAAGTTTTGACCGAATTACGGGATGGGAATCGAATTAGAGGCACATATTTCCACAGTGTCTCCGACGAGCTGCTGGAAAATGGTGGAAATGCACTTGAAGCAACGGAAATTATGGCTTCAACAACAGAGACGAGCGTCATGGATGCCCCCGACTTCAGTTTAGACGGTTTTGTTTTAAATTTCCGACATAATTGACACGACAGAAGGAAGCACCGTAGCTGGCAGACCCTTTGTAGATATACTTTGCACCGAACGCCCTTGCATACAGTTGGGTGTATGTGGGTTTTGGCCCTAGACGACTTTGTCGTCGGCCACTTTGCCTGCTAATAGACATAATCAAATCATAGAACATCATCCCCTGCCACTCGACAAAGTATCGATGGCACTCTAACCAATTGTCTGGCCCAAAAGGGGCGTGTAACTTTGGCTCGGCTGCTTTTCCGGAGGTGACGGAGATGACGGCGATGACTGCAGGAGACAGCCGAGTTGGGTTTTTCCCCGCATATTCCGCCTCTCACCCGCCAGCTTGCTGCTGCTGTTAATGTTTTTAAAATGTCCTTAGAGTGGCACTTGTAAAACAATTTGATTTTGTGTGCCATCGAACATATACATAAAGGTCGAGTGTGTCTATATAGAAACTGTGTGTGTAATTATGTTTGTCGATGAGGGGGCAGCGCGAACAATGCACAGATTGTGACACGGGTCAGTCTCAATATGTGATGGTTATGATGCAATCATTATCATAGAAAACATATTGATTGTTTCTACAGCTCGAAAATAAGTTGGTTAAAAATTACCGGATGTAATGCGGAGAATATCTACGATTGTGATTTGGAATCGTAGCTTCCAGTTCATTGAAATATAATCAAATTTTATTGAATCCGTATGTTCTCTTAGACTAGATTTAATTTAAAAATATGTGAAATTTTAGGCGCTTTTCTTGTGCCCTACGGCATTATGTTGGTGGTCGGTGGCATTCCTCTGTTCTATATGGAATTGGCCCTGGGTCAGCACAATCGTAAGGGTGCCATAACCTGCTGGGGTCGCTTGGTGCCCCTCTTCAAAGGTAATTACTAACTACTAACTAATTAATCACAAGAACTTCATGGATAAGACACTTTAACTTACAGGAATTGGATATGCCGTGGTGCTGATAGCCTTCTATGTGGACTTCTATTACAATGTGATTATTGCCTGGTCGTTGCGTTTCTTTTTTGCATCCTTCACCAACTCGCTGCCTTGGACGTCGTGTAATAATATTTGGAACACACCAAATTGTAGACCGGTAACTAGATACATAACCATTTAATATAAATGAATCCTTATTAATTCTAACTTCTTATCAGTTTGAGAGCCAAAATGCATCTCGTGTTCCGGTTATTGGTAACTATAGTGACTTGTATGCCATGGGAAATCAAAGCCTGCTCTACAATGAGACATATATGAATGGTTCGAGCTTGGATACGTCAGCGGTTGGCCATGTGGAGGGTTTTCAGTCCGCAGCATCGGAATATTTTAAGTGAGTTTGCTGAAATATTCACTTTATAATTGTAGTTAAATTTAATTTCTCGTATAGCCGCTACATTTTGGAGCTGAACCGCAGCGAGGGAATCCATGACTTGGGCGCCATCAAATGGGACATGGCGCTGTGCCTTCTGATTGTCTACTTAATTTGTTACTTCTCCCTGTGGAAGGGTATCAGCACTTCGGGCAAGGTTGTGTGGTTTACTGCCCTCTTTCCCTATGCAGTGCTACTGATTCTTCTAATCAGAGGGCTCACACTGCCGGGATCTTTTCTGGGCATTCAGTATTATCTTACGCCCAACTTTAGTGCCATCTATAAGGCTGAGGTCTGGGTGGATGCTGCCACCCAGGTGTTTTTCTCATTGGGTCCAGGATTTGGAGTGCTGCTGGCCTATGCATCCTATAATAAATACCATAACAATGTATACAAGTAGGTTGCAAGTCTTATACTTCAATAATTCCTCACTTAAATTATTACTTAACTTGATTACAGGGATGCTTTGTTAACCAGTTTCATTAACTCGGCTACCAGCTTTATAGCCGGCTTTGTGATATTCTCCGTGCTGGGTTACATGGCCCACACACTGGGTGTAAGAATTGAAGATGTTGCCACCGAAGGACCTGGTCTGGTTTTCGTGGTCTATCCAGCTGCCATTGCCACCATGCCGGCCAGCACTTTCTGGGCTCTAATATTCTTCATGATGCTGCTAACTTTGGGCTTGGATAGTTCGGTAGATATAACCTATACTCTATATCGACCTTAAACTAATTGTACAACTCTTACAGTTTGGTGGTTCAGAGGCTATAATCACAGCTTTGAGCGACGAGTTTCCCAAGATCAAAAGAAACCGAGAGCTGTTTGTAGCTGGACTGTTTTCCCTGTACTTCGTGGTCGGTTTGGCCAGTTGCACTCAGGGTGGCTTCTATTTCTTCCATCTGCTGGATCGTTACGCTGCTGGCTACTCGATTTTGGTGGCCGTGTTCTTTGAGGCAATCGCCGTGTCCTGGATCTACGGAACCAATCGATTTAGCGAGGATATACGGGACATGATTGGTTTTCCACCGGGAAGATACTGGCAGGTGTGTTGGCGATTTGTGGCACCAATTTTCCTGCTCTTCATCACGGTTTACGGGCTGATTGGCTACGAGCCACTGACATATGCGGACTATGTGTATCCCAGTTGGGCCAATGCGCTGGGTTGGTGCATAGCTGGTTCCTCGGTTGTGATGATTCCTGCCGTGGCGATATTTAAACTACTTTCCACGCCGGGAAGTCTGCGTCAGCGGTTCACAATTTTGACCACACCATGGCGAGATCAGCAATCGATGGCAATGGTGCTGAACGGGGTCACCACCGAGGTCACCGTGGTGCGATTAACCGACACGGAGACCGCCAAGGAACCCGTCGATGTCTGAGTTCGACCAGTGGCCCGTTTTCAAATTTACTACGTTTAGATTTGGAAATTTACCAACAACCGATGTTCACGTATGTAGATTGTGGCTTTGCAGGAGAGTTTGTGTTTTTGGTTCGACATTTGGCGCAGATCCGCAGAAGGATCGGCAGCAATTTCGCAAACAACGTACTTAGGTTTCGGCACCAAAGAAAAAAAAGAAGAAAACCCACAAGCAAACGCAGCTTCAAACCATAAGTTCTAAGTTAAGATTAGCTTGTAGTTCGTATGGTTAATGCCCAGTTATAGCATACTCATATATATACGATGCTGTGTAGATAATATCAAGTCCGAAAGTGCGAAACACTTGTCAGTTAATCTATCGAGAACTCCTTGAAAGAATGTTTGCATATGCCAATGGAATTAACGACACGATCGAGGCTCAAAATTATTGGGCACATAATCTGTACATACACAAGTCGATGATGTAAAAGCTTTAAAACACGTTATAGGATATCTCATGGAACTGAAGCAAAAGCTGCCAGAGTTGAACTACAAAATCCGCTCAAACAGCCATGAGGGGATTTTGTCATATGCAAAGGTTTGTTCTAGACTAATTAACCCCGTCCAAAAAAAAAAAACTACGATTGTTTGCTTAAAGCAGCCATTTTAAGCAAACAATTGAGAGTTATCGAAATAATACATTCCCTTTTATAAACTCATTTCTGTACATAGATGTATGATATTTTAGCATTGTTTTAAGAGTTTCTTTCACGCTGAAGCGGAACTAACAGCCATGAGTTCTGTTTCAATTTGTTGAAATAAATTATTATACTTTGAGTTACT"
library(crispR)
find_proto(d_seq = DAT,
l = 20,
PAM = "NGG")
## # A tibble: 353 x 5
## start_p end_p protospacer PAM strand
## <int> <dbl> <chr> <chr> <chr>
## 1 6 25 AAACGCTCGCATGTCACCGA AGG +
## 2 40 59 CGATTTTGAAATTTCCAACA CGG +
## 3 109 128 TGTGAATGTGAAGTGAAATT CGG +
## 4 110 129 GTGAATGTGAAGTGAAATTC GGG +
## 5 115 134 TGTGAAGTGAAATTCGGGTT TGG +
## 6 122 141 TGAAATTCGGGTTTGGCATT CGG +
## 7 128 147 TCGGGTTTGGCATTCGGCAT TGG +
## 8 136 155 GGCATTCGGCATTGGTTGTG TGG +
## 9 158 177 GAGCTTTTTTCTAAGTTTTC TGG +
## 10 180 199 GATATTTTTCAAAAGTCTCA AGG +
## # … with 343 more rows
I am not explicitly using any loop, but my function is in any case
iterating and looking at each nucleotide of the sequence by using grep
(stringr
and regular expressions).
time Complexity: O(n)
You can access the code of the function find_FASTA
here.
I downloaded the Reference Genome Sequence GRCh38 from here.
A total of 54 protospacers were identified on strand (+). Please note the arguments “start”, “end” and “l” are 1-indexed and intervals are fully closed.
A tab-delimited file can be downloaded here.
All the dependencies are listed in the Description
file in my github
account
here.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.