Skip to main content

Biopythonn

This is a Python library named biopythonn for biological data operations.

Installation

from Bio import PDB import os

Step 1: Define PDB ID and fetch the structure from RCSB PDB

pdb_id = "1TUP" # Example: Human p53 DNA-binding domain pdb_filename = f"{pdb_id}.pdb"

Use PDBList to download the structure if not already present

pdbl = PDB.PDBList() pdbl.retrieve_pdb_file(pdb_id, pdir=".", file_format="pdb")

Step 2: Parse the downloaded PDB file

parser = PDB.PDBParser(QUIET=True) structure = parser.get_structure("protein", f"pdb{pdb_id.lower()}.ent") # Bio.PDB saves as 'pdbXXXX.ent'

Step 3: Access model and chain

model = structure[0] # First model chain = model['A'] # Select chain A

Step 4: Print info about the selected chain

print(f"\nResidues in Chain {chain.id}:") for residue in chain: print(residue)

Step 5: Save to a new PDB file for visualization in PyMOL, Chimera, etc.

io = PDB.PDBIO() io.set_structure(chain) # You can save full structure or just a chain io.save("selected_chain_A.pdb")

print("\nSaved chain A to 'selected_chain_A.pdb' for 3D visualization.")

from Bio.Seq import Seq from Bio.SeqRecord import SeqRecord from Bio import SeqIO

Step 1: Create a DNA sequence

dna_sequence = Seq("ATGCGTACGTAGCTAGCTAG")

Step 2: Create a SeqRecord object with metadata and annotations

record = SeqRecord( dna_sequence, id="SEQ001", # Must be <= 10 characters for GenBank name="ExampleGene", # Gene name description="Example gene sequence", annotations={ "molecule_type": "DNA" # Required for GenBank format } )

Optional: add features or custom annotations as comments

record.annotations["comment"] = "Function: Hypothetical protein"

Step 3: Write the record to a GenBank file

output_file_path = "C:/Users/Admin/Downloads/q4_genbank.gb" with open(output_file_path, "w") as output_file: SeqIO.write(record, output_file, "genbank") print("GenBank file written successfully.")

Step 4: Read and print the contents of the GenBank file

with open(output_file_path, "r") as input_file: record_read = SeqIO.read(input_file, "genbank") print("\nContents of the GenBank file:") print(record_read)

#Output is a q4_genbank.gb file

from Bio import SeqIO from Bio.SeqRecord import SeqRecord

Function to convert a FASTA file to GenBank format

def convert_fasta_to_genbank(fasta_file, genbank_file): # List to hold GenBank records records = []

# Parse the FASTA file
for record in SeqIO.parse(fasta_file, "fasta"):
    # Create a new SeqRecord with GenBank-required annotations
    genbank_record = SeqRecord(
        record.seq,
        id=record.id[:10],  # GenBank requires ID to be ≤10 characters
        name="ExampleGene",
        description=record.description,
        annotations={
            "molecule_type": "DNA"  # Required field
        }
    )
    # Optional: add a comment field for gene/function info
    genbank_record.annotations["comment"] = "Gene: ExampleGene | Function: Hypothetical protein"
    
    # Append to the list of records
    records.append(genbank_record)

# Write all records to GenBank format
with open(genbank_file, "w") as output_handle:
    SeqIO.write(records, output_handle, "genbank")

print(f"All FASTA sequences converted to GenBank format and saved as '{genbank_file}'")

File paths (replace with actual ones if needed)

fasta_file = "C:/Users/Admin/Downloads/fasta_1.fasta" genbank_file = "C:/Users/Admin/Downloads/example_output.gb"

Call the function

convert_fasta_to_genbank(fasta_file, genbank_file)

from Bio.Seq import Seq from Bio.SeqRecord import SeqRecord from Bio.SeqFeature import SeqFeature, FeatureLocation

Step 1: Create a DNA sequence

dna_sequence = Seq("ATGCGTACGTAGCTAGCTAG")

Step 2: Create a SeqRecord object with basic info

record = SeqRecord( dna_sequence, id="seq1", name="Example_Gene", description="An example DNA sequence for gene annotation.", )

Step 3: Add annotations

record.annotations["gene"] = "ExampleGene" record.annotations["function"] = "Hypothetical protein" record.annotations["organism"] = "Synthetic organism"

Step 4: Add a feature for the gene (with start and end positions)

gene_feature = SeqFeature( FeatureLocation(0, len(dna_sequence)), # 0-based indexing, end is exclusive type="gene", qualifiers={"gene": "ExampleGene", "note": "Example gene feature"} ) record.features.append(gene_feature)

Step 5: Modify one of the annotations

record.annotations["function"] = "Hypothetical protein with modified function"

Step 6: Print the updated SeqRecord

print(f"ID: {record.id}") print(f"Name: {record.name}") print(f"Description: {record.description}") print("\nAnnotations:") for key, value in record.annotations.items(): print(f" {key}: {value}")

print("\nFeatures:") for feature in record.features: print(f" Type: {feature.type}") print(f" Location: {feature.location}") print(f" Qualifiers: {feature.qualifiers}")

from Bio import Entrez, SeqIO

Step 1: Provide your email (required by NCBI)

Entrez.email = "your_email@example.com" # Replace with your actual email

Step 2: Accession number of the sequence

accession_number = "NM_001301717" # Example: Human gene

Step 3: Fetch GenBank record using Entrez

with Entrez.efetch(db="nucleotide", id=accession_number, rettype="gb", retmode="text") as handle: seq_record = SeqIO.read(handle, "genbank")

Step 4: Print sequence and metadata

print(f"Accession Number: {seq_record.id}") print(f"Description: {seq_record.description}") print(f"Organism: {seq_record.annotations.get('organism', 'Not available')}") print(f"Sequence (first 100 bases): {seq_record.seq[:100]}...") # Print only first 100 bases print(f"Length of Sequence: {len(seq_record.seq)}") print(f"Number of Features: {len(seq_record.features)}")

Optional: Print top-level features (like CDS, gene, etc.)

print("\nTop Features:") for feature in seq_record.features[:5]: # Show only first 5 features print(f" Type: {feature.type}, Location: {feature.location}")

from Bio import pairwise2 from Bio.pairwise2 import format_alignment

Define two DNA sequences

seq1 = "AGTACACTGGT" seq2 = "AGTACGCTGGT"

Perform global alignment

alignments = pairwise2.align.globalxx(seq1, seq2) # 'xx' = match = 1, mismatch = 0

Print the best alignment and score

print("Aligned Sequences:") print(format_alignment(*alignments[0]))

✅ Steps to Perform MSA with MUSCLE in Biopython

Install MUSCLE separately:

Download from: https://www.drive5.com/muscle/

Add it to your system PATH or provide the full path in the script.

Save input sequences to a FASTA file.

Call MUSCLE using MuscleCommandline from Biopython.

Read the aligned output using AlignIO.

from Bio import AlignIO from Bio.Align.Applications import MuscleCommandline

Step 1: Define three DNA sequences in FASTA format

seq1 = """>seq1 ATGCGTACGTA """ seq2 = """>seq2 ATGCGTACGTC """ seq3 = """>seq3 ATGCGTACGAG """

Step 2: Write sequences to input FASTA file

with open("input_sequences.fasta", "w") as f: f.write(seq1) f.write(seq2) f.write(seq3)

Step 3: Set path to MUSCLE executable

If MUSCLE is in PATH, just use "muscle"

Otherwise, provide full path e.g. "C:/Users/Anurag/muscle.exe"

muscle_exe = "muscle"

Step 4: Set up MUSCLE command line

muscle_cline = MuscleCommandline( cmd=muscle_exe, input="input_sequences.fasta", out="aligned_sequences.fasta" )

Step 5: Run MUSCLE

stdout, stderr = muscle_cline()

Step 6: Read and print the alignment

alignment = AlignIO.read("aligned_sequences.fasta", "fasta") print("\nAligned Sequences:") print(alignment)

from Bio import AlignIO, Phylo from Bio.Phylo.TreeConstruction import DistanceCalculator, DistanceTreeConstructor

Step 1: Load the aligned sequences (in CLUSTAL or FASTA format)

alignment = AlignIO.read("aligned_sequences.fasta", "fasta") # or "clustal" if using .aln

Step 2: Calculate the distance matrix

calculator = DistanceCalculator("identity") # You can also use "blastn", "trans", etc. distance_matrix = calculator.get_distance(alignment)

Step 3: Construct the phylogenetic tree using UPGMA or NJ

constructor = DistanceTreeConstructor() tree = constructor.upgma(distance_matrix)

tree = constructor.nj(distance_matrix) # Alternatively use neighbor-joining

Step 4: Visualize the tree

Phylo.draw(tree)

from Bio import PDB import os

Step 1: Define PDB ID and fetch the structure from RCSB PDB

pdb_id = "1TUP" # Example: Human p53 DNA-binding domain pdb_filename = f"{pdb_id}.pdb"

Use PDBList to download the structure if not already present

pdbl = PDB.PDBList() pdbl.retrieve_pdb_file(pdb_id, pdir=".", file_format="pdb")

Step 2: Parse the downloaded PDB file

parser = PDB.PDBParser(QUIET=True) structure = parser.get_structure("protein", f"pdb{pdb_id.lower()}.ent") # Bio.PDB saves as 'pdbXXXX.ent'

Step 3: Access model and chain

model = structure[0] # First model chain = model['A'] # Select chain A

Step 4: Print info about the selected chain

print(f"\nResidues in Chain {chain.id}:") for residue in chain: print(residue)

Step 5: Save to a new PDB file for visualization in PyMOL, Chimera, etc.

io = PDB.PDBIO() io.set_structure(chain) # You can save full structure or just a chain io.save("selected_chain_A.pdb")

print("\nSaved chain A to 'selected_chain_A.pdb' for 3D visualization.")

Metadata

Release files for biopythonn 0.1.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for biopythonn 0.1.2
File Size Uploaded Provenance Actions
biopythonn-0.1.2.tar.gz 5.3 kB Without provenance Details for biopythonn-0.1.2.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for biopythonn 0.1.2
File Interpreter ABI Platform Actions
biopythonn-0.1.2-py3-none-any.whl Python 3 none any Details for biopythonn-0.1.2-py3-none-any.whl

Total release size: 13.4 kB

Release files / biopythonn-0.1.2.tar.gz

Download URL biopythonn-0.1.2.tar.gz
Size 5.3 kB
Tags Source
SHA-256 checksum
How to use checksums
b8a37af95f3fe28c8c245916cbb45b19b2b64bea9afd3ea439aad50bc82f37e8
BLAKE2b-256 checksum
How to use checksums
7e8c9d8667bc817d7ff69f58656c5edecb4b57a48b4ebf92f3c9043b28c2381c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.3

Release files / biopythonn-0.1.2-py3-none-any.whl

Download URL biopythonn-0.1.2-py3-none-any.whl
Size 8.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d05002aa987bb0e5a6bd9719197c06eb642e74b1238af51cd42dc002ff46d9ad
BLAKE2b-256 checksum
How to use checksums
176daa791a606b7ecda5ae2a47f751b7de638bbef792b4dbd7d8c3774679762c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.3

Security for biopythonn 0.1.2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page