使用python处理生物信息数据(十)

Python学习的第十天,好些天没有学习python了。4月6号下午回武汉了,从汉口火车站下车,车站弥漫着消毒水的味道,有些疫情防控人员全副武装,有些工作人员引导我们扫码入地铁站,安静而肃杀的氛围,从没见过如此安静的武汉,回想过去的两个月武汉真是英雄的城市,进了地铁发现人不多,公交车转乘到住的小区,扫码登记进去了。今天主要学习如何使用类class管理复杂程序。


写一个程序去计算孟德尔的豌豆实验中的表型不一个简单的事情。你需要定义每个豌豆的基因型,基因型对应的变性以及下一代如何产生等事件。尽管包含的科学是琐碎的,但它需要的程序代码却是复杂的。类class是一种编程结构,它有助于描述现实世界中事物的工作方式,并能控制复杂性。

1. 演示和计算孟德尔遗传定律
class Pea:

    def __init__(self, genotype):
        self.genotype = genotype

    def get_phenotype(self):
        if "G" in self.genotype:
            return "yellow"
        else:
            return "green"
    
    def creat_offspring(self, other):        
        offspring = []
        new_genotype = ""
        for haplo1 in self.genotype:
            for haplo2 in other.genotype:
                new_genotype = haplo1 + haplo2
                offspring.append(Pea(new_genotype))
        return offspring 
               
    def get_tab_separated_text(self):
        return '%s\t%s' % (self.genotype, self.get_phenotype())   
        
    def __repr__(self):
        return '(%s)' % self.genotype + '-----' + self.get_phenotype()


yellow = Pea("GG")

print(yellow.genotype)
GG

print(yellow.get_phenotype())
yellow

print(yellow)
(GG)-----yellow

# GG * gg
f1 = yellow.create_offspring(green)

print(f1[0])
(Gg)-----yellow

print(f1[1])
(Gg)-----yellow

# Gg * Gg
f2 = f1[0].create_offspring(f1[1])
print(f1)
print(f2)
[(Gg)-----yellow, (Gg)-----yellow, (Gg)-----yellow, (Gg)-----yellow]
[(GG)-----yellow, (Gg)-----yellow, (gG)-----yellow, (gg)-----green]

for pea in f2:
    print(pea.get_tab_separated_text())
GG      yellow
Gg      yellow
gG      yellow
gg      green

你可能感兴趣的:(使用python处理生物信息数据(十))