Skip to main content

biopython-bio

"Bioinformatics operations via Biopython. Use when: user asks about DNA/protein sequences, BLAST, or PDB structures. NOT for: clinical genomics or variant calling pipelines."

설치로 이동

소스 정보

저장소
beita6969/ScienceClaw
최근 소스 활동
2026년 3월 12일 04:53
감지된 SKILL.md 언어
영어
스타
904
포크
104

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
biopython-bio
description
Bioinformatics operations via Biopython. Use when: user asks about DNA/protein sequences, BLAST, or PDB structures. NOT for: clinical genomics or variant calling pipelines.
metadata
{"openclaw":{"emoji":"🧬","requires":{"bins":"[Truncated]"},"install":["[Truncated]"]}}
# Biopython Bio Bioinformatics operations using Biopython. ## When to Use - Reading/writing sequence files (FASTA, GenBank) - Running BLAST searches (local or remote NCBI) - Sequence alignment and manipulation - Parsing PDB protein structures - Phylogenetic tree construction - Querying NCBI Entrez databases ## When NOT to Use - Clinical genomics or variant calling (use GATK, bcftools) - RNA-seq differential expression (use DESeq2, edgeR) - Genome assembly (use SPAdes, Canu) - Molecular dynamics simulations (use GROMACS, OpenMM) ## Sequence Reading and Writing ```python from Bio import SeqIO from Bio.Seq import Seq from Bio.SeqRecord import SeqRecord for record in SeqIO.parse('sequences.fasta', 'fasta'): print(f"{record.id}: {len(record.seq)} bp") # Write FASTA records = [SeqRecord(Seq('ATGCGATCGATCG'), id='seq1', description='example')] SeqIO.write(records, 'output.fasta', 'fasta') ``` ## Sequence Manipulation ```python from Bio.Seq import Seq from Bio.SeqUtils import gc_fraction, molecular_weight dna = Seq('ATGCGATCGATCGATCG') rev_comp = dna.reverse_complement() protein = dna.translate() gc = gc_fraction(dna) mw = molecular_weight(dna, seq_type='DNA') ``` ## BLAST Searches ```python from Bio.Blast import NCBIWWW, NCBIXML result_handle = NCBIWWW.qblast('blastn', 'nt', 'ATGCGATCGATCGATCG') for record in NCBIXML.parse(result_handle): for aln in record.alignments: for hsp in aln.hsps: if hsp.expect < 1e-10: print(f"{aln.title[:60]}, E={hsp.expect}") ``` ## Pairwise Alignment ```python from Bio import Align aligner = Align.PairwiseAligner() aligner.mode = 'global' aligner.match_score = 2 aligner.mismatch_score = -1 best = aligner.align('ATCGATCGATCG', 'ATCAATCAATCG')[0] print(best, f"Score: {best.score}") ``` ## PDB Structure Parsing ```python from Bio.PDB import PDBParser, PDBList structure = PDBParser(QUIET=True).get_structure('prot', 'structure.pdb') for chain in structure[0]: for res in chain: if res.id[0] == ' ' and 'CA' in res: print(f"{res.resname} {res.id[1]}: {res['CA'].coord}") ``` ## Entrez Queries and Phylogenetics ```python from Bio import Entrez, Phylo, AlignIO from Bio.Phylo.TreeConstruction import DistanceCalculator, DistanceTreeConstructor Entrez.email = 'your.email@example.com' # Required by NCBI handle = Entrez.esearch(db='pubmed', term='CRISPR AND 2025[pdat]', retmax=5) record = Entrez.read(handle) # Phylogenetics from alignment aln = AlignIO.read('aligned.fasta', 'fasta') tree = DistanceTreeConstructor().nj(DistanceCalculator('identity').get_distance(aln)) Phylo.draw_ascii(tree) ``` ## Quick One-liner ```bash python3 -c " from Bio.Seq import Seq dna = Seq('ATGAAAGCTTGA') print(f'Protein: {dna.translate()}, RevComp: {dna.reverse_complement()}') " ``` ## Best Practices 1. Always set `Entrez.email` before NCBI queries. 2. Respect NCBI rate limits: max 3 requests/second without API key. 3. Use `QUIET=True` in PDB parser to suppress warnings. 4. Check sequence type before operations like `translate()`. 5. For large BLAST jobs, prefer local BLAST+ over remote NCBI.
GitHub에서 보기