Skip to main content

genetics

Classical and molecular genetics including Mendelian inheritance, population genetics, genetic linkage, mutation analysis, and evolutionary genetics for biological research.

跳到安装

来源信息

仓库
NeuralBlitz/Agent-Gateway
最近来源活动
2026年4月9日 10:58
检测到的 SKILL.md 语言
英语
星标
1
分支
0

安装方式

默认使用会先检查来源的 Prompt;你也可以切换为直接命令,或下载本地副本。

检查来源文件

决定是否安装前,请先阅读 SKILL.md,以及 SkillsMP 当前展示的配套文件。

正在显示 SKILL.md

SKILL.md
来源说明 · 只读预览
name
Genetics
description
Classical and molecular genetics including Mendelian inheritance, population genetics, genetic linkage, mutation analysis, and evolutionary genetics for biological research.
license
MIT
compatibility
python>=3.8
audience
geneticists, biologists, researchers, students
category
biology
# Genetics ## What I Do I provide comprehensive genetics tools including Mendelian inheritance patterns, population genetics calculations, genetic linkage analysis, mutation classification, Hardy-Weinberg equilibrium, and evolutionary genetics for biological research applications. ## When to Use Me - Inheritance pattern prediction - Population allele frequency analysis - Genetic linkage mapping - Mutation effect prediction - Genetic disorder risk assessment - Evolutionary biology studies ## Core Concepts - **Mendelian Inheritance**: Dominant, recessive, codominant - **Population Genetics**: Allele frequencies, Hardy-Weinberg - **Linkage Analysis**: Recombination frequency, LOD scores - **Mutation Types**: Point mutations, indels, CNVs - **Quantitative Traits**: Polygenic inheritance, heritability - **Genetic Drift**: Founder effect, bottleneck - **Selection**: Natural, artificial, directional - **Molecular Evolution**: dN/dS, phylogenetic trees ## Code Examples ### Mendelian Inheritance ```python from itertools import combinations def punnett_square(parent1, parent2): alleles1 = [p1 + p2 for p1 in parent1 for p2 in parent2] alleles2 = [p1 + p2 for p1 in parent2 for p2 in parent1] return list(zip(alleles1, alleles2)) def predict_genotype(parent1, parent2, trait='A'): parent1 = parent1.upper() parent2 = parent2.upper() alleles1 = list(set(parent1)) alleles2 = list(set(parent2)) offspring = [] for a1 in alleles1: for a2 in alleles2: genotype = a1 + a2 if a1 != a2: genotype = max(genotype, genotype[::-1]) offspring.append(genotype) return offspring Aa = predict_genotype('Aa', 'aa') print(f"Offspring from Aa × aa: {Aa}") def genetic_ratio(genotypes): from collections import Counter return Counter(genotypes) def test_cross(genotype): if len(set(genotype)) == 1: return "Homozygous" return "Heterozygous" ``` ### Hardy-Weinberg Equilibrium ```python def hardy_weinberg_equilibrium(p, q=1-p): p2 = p**2 2pq = 2 * p * q q2 = q**2 return {'p² (AA)': p2, '2pq (Aa)': 2*pq, 'q² (aa)': q2} def allele_frequency_from_phenotypes(dom_phen, rec_phen, total): q2 = rec_phen / total q = q2**0.5 p = 1 - q return {'p': p, 'q': q, 'AA': p**2 * total, 'Aa': 2*p*q*total} def estimate_carrier_frequency(q): p = 1 - q carrier_freq = 2 * p * q return carrier_freq def test_hwe(observed_counts, total): p_hat = (2*observed_counts['AA'] + observed_counts['Aa']) / (2*total) q_hat = 1 - p_hat expected = { 'AA': p_hat**2 * total, 'Aa': 2*p_hat*q_hat*total, 'aa': q_hat**2 * total } chi_sq = sum((observed_counts[k] - expected[k])**2 / expected[k] for k in observed_counts) return {'expected': expected, 'chi_squared': chi_sq} print(f"H-W equilibrium (p=0.6): {hardy_weinberg_equilibrium(0.6)}") ``` ### Linkage Analysis ```python def recombination_frequency(observed_recombinants, total): return observed_recombinants / total def lod_score(recombinants, non_recombinants, theta=0.5): from scipy.stats import binom likelihood_data = binom.pmf(non_recombinants, recombinants + non_recombinants, theta) likelihood_null = binom.pmf(non_recombinants, recombinants + non_recombinants, 0.5) return np.log10(likelihood_data / likelihood_null) def map_distance(theta): if theta <= 0: return 0 return -0.5 * np.log(1 - 2*theta) * 100 recomb = 15 total = 100 theta = recombination_frequency(recomb, total) lod = lod_score(recomb, total - recomb, theta) print(f"Recombination fraction: {theta:.3f}") print(f"Map distance: {map_distance(theta):.1f} cM") print(f"LOD score: {lod:.2f}") ``` ### Mutation Analysis ```python MUTATION_TYPES = { 'missense': 'Amino acid change', 'nonsense': 'Premature stop codon', 'silent': 'No amino acid change', 'frameshift': 'Reading frame shift', 'splice_site': 'Splicing disruption' } def classify_mutation(ref, alt, position): if len(ref) == len(alt) == 1: if ref == alt: return 'silent' if alt == 'A' or alt == 'T': return 'missense' return 'nonsense' elif len(alt) > len(ref): return 'insertion' elif len(alt) < len(ref): return 'deletion' return 'complex' def predict_mutation_impact(chromosome, position, ref, alt, transcript): mutation = classify_mutation(ref, alt, position) cds_position = transcript['cds_start'] + position - transcript['chrom_start'] aa_position = cds_position // 3 + 1 ref_aa = translate_codon(transcript['sequence'][cds_position:cds_position+3]) alt_sequence = transcript['sequence'][:cds_position] + alt + transcript['sequence'][cds_position+len(ref):] alt_aa = translate_codon(alt_sequence[cds_position:cds_position+3]) return { 'type': mutation, 'aa_change': f"{ref_aa}{aa_position}{alt_aa}" if mutation in ['missense', 'nonsense'] else None } def calculate_heterozygosity(n_heterozygotes, total): return 2 * (n_heterozygotes / total) * (1 - n_heterozygotes / total) ``` ### Genetic Risk Calculation ```python def calculate_carrier_probability(parent_status, sibling_status, pedigree_prob=0.02): if parent_status == 'affected': return 2/3 if sibling_status == 'unaffected' else 1 elif parent_status == 'carrier': return 1/2 else: return pedigree_prob def bayes_carrier_risk(prior_prob, likelihood_affected, likelihood_unaffected): posterior = prior_prob * likelihood_affected / (prior_prob * likelihood_affected + (1-prior_prob) * likelihood_unaffected) return posterior def polygenic_risk_score(loci_effects): return sum(loci_effects.values()) def heritability_estimate(vg, vp): return vg / vp def inbreeding_coefficient(f): return f def effective_population_size(ne, generations): return ne / (1 - (1 - 1/(2*ne))**generations) ``` ## Best Practices 1. **Population Stratification**: Account for population structure 2. **Multiple Testing**: Adjust p-values for GWAS 3. **Linkage Disequilibrium**: Consider LD in association studies 4. **Penetrance**: Distinguish between genotype and phenotype 5. **Mendelian Errors**: Check for impossible genotypes ## Common Patterns ```python # Coefficent of relationship def relationship_coefficient(relationship): coefficients = { 'parent-offspring': 0.5, 'siblings': 0.5, 'grandparent-grandchild': 0.25, 'uncle-aunt-niece-nephew': 0.25, 'first_cousins': 0.125 } return coefficients.get(relationship, 0) # Coefficient of inbreeding def kinship_coefficient(pedigree, individual): # Calculate kinship coefficient pass ``` ## Core Competencies 1. Mendelian inheritance patterns 2. Population genetics calculations 3. Linkage and association analysis 4. Mutation classification 5. Evolutionary genetics
在 GitHub 查看