Bioinformatics/Sequence mutation: Difference between revisions
Content added Content deleted
m (→{{header|Python}}: add zkl header) |
(→{{header|zkl}}: added code) |
||
Line 327: | Line 327: | ||
=={{header|zkl}}== |
=={{header|zkl}}== |
||
<lang zkl>var [const] bases="ACGT", lbases=bases.toLower(); |
|||
⚫ | |||
dna:=(190).pump(Data().howza(3),(0).random.fp(0,4),bases.get); // bucket of bytes |
|||
<lang zkl></lang> |
|||
foreach s,m in (T("Original","Mutated").zip(T(True,False))){ |
|||
println("\n",s," DNA strand:"); dnaPP(dna); |
|||
println("Base Counts: ", dna.len()," : ", |
|||
dna.text.toUpper().counts() // ("A",5, "C",10, ...) |
|||
.pump(String,Void.Read,"%s(%d) ".fmt)); |
|||
if(m) mutate(dna,10,True); |
|||
} |
|||
fcn mutate(dna,count=1,verbose=False){ |
|||
if(verbose) println("Mutating:"); |
|||
do(count){ |
|||
n,rb := (0).random(dna.len()), lbases[(0).random(4)]; |
|||
switch( (0).random(3) ){ |
|||
case(0){ if(verbose) println("Change[%d] '%s' to '%s'".fmt(n,dna.charAt(n),rb)); |
|||
dna[n]=rb; |
|||
} |
|||
case(1){ if(verbose) println("Delete[%d] '%s'".fmt(n,dna.charAt(n))); |
|||
dna.del(n); |
|||
} |
|||
else{ if(verbose) println("Insert[%d] '%s'".fmt(n,rb)); |
|||
dna.insert(n,rb); |
|||
} |
|||
} |
|||
} |
|||
} |
|||
fcn dnaPP(dna,N=50){ |
|||
[0..*,50].zipWith(fcn(n,bases){ println("%6d: %s".fmt(n,bases.concat())) }, |
|||
dna.walker().walk.fp(50)).pump(Void); // .pump forces the iterator |
|||
⚫ | |||
{{out}} |
{{out}} |
||
<pre> |
<pre> |
||
Original DNA strand: |
|||
0: AACGACAGGTTCTCGATGCGTGTCTTCACACATGTGGAGTCGCCAAGGAT |
|||
50: TGTTGATCAATGCGTAAACGTCTCCACGGGATACACGGGCAGCTTGCGGT |
|||
100: GACGAGTGCGGACCACCAAAAAAGGTGGGATCCACGTTGAGGAGCCTCAC |
|||
150: TACCTACGGCGTGATATGGCGGCAGGAGTCAAAAACTGCT |
|||
Base Counts: 190 : A(49) C(46) G(57) T(38) |
|||
Mutating: |
|||
Insert[123] 'c' |
|||
Insert[69] 't' |
|||
Delete[5] 'C' |
|||
Delete[147] 'T' |
|||
Change[167] 'G' to 't' |
|||
Change[153] 'C' to 'c' |
|||
Insert[151] 't' |
|||
Insert[156] 't' |
|||
Delete[150] 'T' |
|||
Change[102] 'C' to 'g' |
|||
Mutated DNA strand: |
|||
0: AACGAAGGTTCTCGATGCGTGTCTTCACACATGTGGAGTCGCCAAGGATT |
|||
50: GTTGATCAATGCGTAAACtGTCTCCACGGGATACACGGGCAGCTTGCGGT |
|||
100: GAgGAGTGCGGACCACCAAAAAAcGGTGGGATCCACGTTGAGGAGCCCAC |
|||
150: tACcTtACGGCGTGATATtGCGGCAGGAGTCAAAAACTGCT |
|||
Base Counts: 191 : A(49) C(45) G(57) T(40) |
|||
</pre> |
</pre> |