Python Project: DNA Visualization (with TUTORIAL)
Tags: beginners, python, programming, 100daysofcode
Published: 2021-10-05 17:46:11

Hey, do you want to make projects that make you stand out in your career and to make your craft to the next level!. This tutorial will help to achieve what you want. 

Today, we're making a DNA (Deoxyribonucleic Acid) visualization which will look like this!.

 ![DNA visualization Project || Ihtesham Haider](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fto83a1gqb315sz0cw91.png)

Before you jump into the project read this!
DNA is a tiny molecule that exists in every cell of our bodies and contains the blueprint for **how our bodies grow**. 

It looks like a **double helix**(a twisted ladder a like) of pairs of nucleotide molecules:
* guanine 
* cytosine 
* adenine 
* and thymine

In this project these are shown like this:
* Guanine = G
* Cytosine = C
* Adenine = A
* Thymine = T

`This program is a simple animation of DNA`
####How this actually work!!
This program create a scrolling animation by printing the strings from the ROWS list. The AT and CG pairs are inserted into each string with the format() string method.

####Let's Go!
First code then the "how" part
###CODE / Discussion
```
import random
import sys
import time

PAUSE = 0.15  # Change it 0.0 and see what happen
```
####Discussion
* Imported random, sys and time for the use. You can also write these in shorthand like  `import random, sys, time` it will also work.
* `PAUSE` !Try to change it 0.0 and see what happens when change it. First use 0.15 as default then change it. 

```
# below are the rows of DNA animation

ROWS = [
    '         ##',
    '        #{}-{}#',
    '       #{}---{}#',
    '      #{}-----{}#',
    '     #{}------{}#',
    '    #{}------{}#',
    '    #{}-----{}#',
    '     #{}---{}#',
    '      #{}-{}#',
    '       ##',
    '      #{}-{}#',
    '      #{}---{}#',
    '     #{}-----{}#',
    '     #{}------{}#',
    '      #{}------{}#',
    '       #{}-----{}#',
    '        #{}---{}#',
    '         #{}-{}#',]
    #123456789 use this to measure the number of spaces
``` 
####Discussion:
* `ROWS` contain a list and in this a all the structure of the DNA is in a string.
* Use this formula for better result `123456789`.
* The first `##` at `9` then going down.
* At the tenth number `##` again starts but now going to right side rather left side.

```
try:
    print('DNA Visualization || Ihtesham Haider')
    print('Press CTRL-C on Keyboard to quit....')
    time.sleep(2)
    rowIndex = 0

    #Main loop of the program || Started
    while True:
        #incrementing for to draw a next row:
        rowIndex = rowIndex +1
        if rowIndex == len(ROWS):
            rowIndex = 0

        # Row indexes 0 and 9 don't have nucleotides:
        if rowIndex == 0 or rowIndex ==9:
            print(ROWS[rowIndex])
            continue
```
####Discussion:
* If you're not familiar with `try` and `except`, I will explain it to you in just a minute.
* It is simply used for Error handling. The try block lets you test a block of code for errors.The except block lets you handle the error.
* while loop is the main loop which will be used for incrementing the string one after the other consecutively.

```
        randomSelection = random.randint(1,4)
        if randomSelection ==1:
            leftNucleotide, rightNucleotide = 'A', 'T'
        elif randomSelection ==2:
            leftNucleotide, rightNucleotide = 'T', 'A'
        elif randomSelection ==3:
            leftNucleotide, rightNucleotide = 'C', 'G'
        elif randomSelection ==4:
            leftNucleotide, rightNucleotide = 'G', 'C'

        # priting the row
        print(ROWS[rowIndex].format(leftNucleotide, rightNucleotide))
        time.sleep(PAUSE) 
```
####Discussion:
* This program will randomly select  random nucleotide pairs, guanine-cytosine and adenine-thymine. 
* For this purpose we have used `random.randit(1,4)` 1 to 4
* Then we used `if elif` conditions to check the program for us and values at the right place.
* After `conditions = if -elif` we printed out the row and then a time module is used which we have imported and used pause for it. 
# The time.sleep will add a slight pause.

```
except KeyboardInterrupt:
    sys.exit() #This will end the program when click CTRL-C
``` 
####Discussion:
* At last we use except for checking and executing the code.
* sys.exit() is used to end the program for us... whenever someone click CTRL-C on keyboard.

You can download or check the code by click on this [DOWNLOAD](https://colab.research.google.com/drive/1jutYYCLDt9zN9lHgqjWw3XBUZn36VzmO?usp=sharing)

MY SOCIAL HANDLES:
[Linkedin] (https://www.linkedin.com/in/ihtesham-haider-079887218/) [Medium] (https://medium.com/@ihteshamhaider) [Twitter] (https://twitter.com/techtimes101)

If you have any problem regarding programming and management I free for you to help you!.

Thanks! wish you Best Of Luck.