1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | from Bio.Seq import Seq from Bio.SeqUtils import seq1 from Bio.PDB import Polypeptide import MDAnalysis as mda import numpy as np import nglview as nv # Step 1: Generate a random DNA sequence (simplified) gene_sequence = Seq("ATGCTAGCTAGCTAGCTAGCTAGCTAG") # Step 2: Transcription (DNA to mRNA) mRNA = gene_sequence.transcribe() # Step 3: Translation (mRNA to protein sequence) protein_sequence = mRNA.translate() # Display the sequences print("Gene Sequence: ", gene_sequence) print("mRNA Sequence: ", mRNA) print("Protein Sequence: ", protein_sequence) # Step 4: Create a simple 3D structure for the protein (simplified) # We will create a random structure for this example. num_atoms = len(protein_sequence) * 10 # Simplified: 10 atoms per amino acid coordinates = np.random.rand(num_atoms, 3) * 10.0 # Random coordinates # Create a simple PDB file with atom names and residue IDs pdb_filename = "protein.pdb" with open(pdb_filename, "w") as pdb_file: for i in range(num_atoms): x, y, z = coordinates[i] pdb_file.write(f"ATOM {i + 1:5} N ALA A 1 {x:8.3f}{y:8.3f}{z:8.3f} 1.00 0.00\n") # Load the PDB file with MDAnalysis u = mda.Universe(pdb_filename) # Step 5: Visualization of the protein structure using NGLView view = nv.show_mdanalysis(u) view.add_representation("ball+stick", selection="all") view.center() # Display the 3D visualization view |
And here is the image created:
Take a look at the TED Video, they create new proteins:
Python Program obtaining a DNA and Protein sequence from GenBank and UniProt:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | from Bio import Entrez, SeqIO, ExPASy, SwissProt # Define your email address (required for accessing GenBank) Entrez.email = "mh1369080@gmail.com" # Function to fetch DNA sequence from GenBank using an accession number def fetch_dna_from_genbank(accession): try: handle = Entrez.efetch(db="nucleotide", id=accession, rettype="gb", retmode="text") record = SeqIO.read(handle, "genbank") handle.close() return record.seq except Exception as e: print(f"Error: {e}") return None # Function to fetch protein sequence from UniProt using a UniProt ID def fetch_protein_from_uniprot(uniprot_id): try: handle = ExPASy.get_sprot_raw(uniprot_id) record = SwissProt.read(handle) handle.close() # Extract protein sequence from the UniProt record protein_sequence = record.sequence return protein_sequence except Exception as e: print(f"Error: {e}") return None # Example usage: genbank_accession = "NM_001301717" # Replace with your GenBank accession number uniprot_id = "P02769" # Replace with your UniProt ID # Fetch DNA sequence from GenBank dna_sequence = fetch_dna_from_genbank(genbank_accession) if dna_sequence: print(f"DNA Sequence from GenBank ({genbank_accession}):") print(dna_sequence) # Fetch protein sequence from UniProt protein_sequence = fetch_protein_from_uniprot(uniprot_id) if protein_sequence: print(f"Protein Sequence from UniProt ({uniprot_id}):") print(protein_sequence) |
