Python生物信息学数据管理——第11、12章课后习题
发布时间
阅读量:
阅读量
#初学小白,仅供参考
11.1/2/3 创建一个类,从类中创建对象,让类可以打印
class Channel:
def __init__(self,name,code,phi,psi):
self.code=code
self.name=name
self.phi=phi
self.psi=psi
def __repr__(self):
return 'name:{}\tcode:{}\tphi:{}\tpsi:{}'.format(self.name,self.code,self.phi,self.psi)
def printproperty(self):
return 'name:{}\ncode:{}\nphi:{}\npsi:{}\n'.format(self.name, self.code, self.phi, self.psi)
channal1=Channel('Potassium channal','1jvm',354.2,351.7)
channel2=Channel('Mechanosensitivity channel','1msl',359.2,345.7)
print(channal1)
print(channel2.printproperty())
11.4 为类创建一个单独的模块
from proteinchannel import Channel
channel3=Channel('Chloride channel','1kpl',361.3,344.6)
print(channel3)
11.5 用方法执行类
from math import sqrt
class DendriticLengths:
def __init__(self,list):
self.data=[]
for line in open(list):
length=float(line.strip())
self.data.append(length)
def get_average(self):
total=sum(self.data)
self.average=total/len(self.data)
return self.average
def get_sttddev(self):
variance=0
for num in self.data:
variance+=(num-self.average)**2
self.sttddev=sqrt(variance/len(self.data))
return self.sttddev
def __repr__(self):
return 'Data set with {} dendritic lengths'.format(len(self.data))
n=DendriticLengths('neuron_lengths.txt')
print(n)
print(n.get_average())
print(n.get_sttddev())
12.1/12.2 调试12.2.2节的Python会话
import pdb
def evaluate_data(data, lower=100, upper=300):
"""Counts data points in three bins."""
smaller = 0
between = 0
bigger = 0
for length in data:
if length < lower:
smaller = smaller + 1
elif lower < length < upper:
between = between + 1
elif length > upper:
bigger += 1
return smaller, between, bigger
def read_data(filename):
"""Reads neuron lengths from a text file."""
primary, secondary = [], []
for line in open(filename):
category, length = line.split("\t")
length = float(length)
if category == "Primary":
primary.append(length)
elif category == "Secondary":
secondary.append(length)
return primary, secondary
def write_output_file(filename, count_pri, count_sec):
"""Writes counted values to a file."""
output = open(filename, "w")
output.write("category <100 100-300 >300\n")
output.write("Primary : %5i %5i %5i\n" % count_pri)
output.write("Secondary: %5i %5i %5i\n" % count_sec)
output.close()
try:
primary, secondary = read_data('neuron_data.txt')
except IOError:
print("The filename somehow is wrong.")
raise SystemExit
else:
count_pri = evaluate_data(primary)
count_sec = evaluate_data(secondary)
write_output_file('results.txt', count_pri, count_sec)
12.3/12.4 文件和数字异常情况处理
import numpy as np
try:
fo=open('neuron_lengths.txt','r')
except FileNotFoundError:
print("filename is wrong")
else:
list=[]
for line in fo:
try:
list.append(float(line.strip()))
except:
print("There are something that couldn't be converted to float")
print(np.mean(list))
print(np.std(list))
12.5 标准输入和数字的异常情况处理
import numpy as np
input_numbers=[]
number=None
while number != 'q':
number=input('Insert a number:')
input_numbers.append(number)
ls0=[]
for i in input_numbers:
try:
ls0.append(float(i))
except:
pass
print(np.mean(ls0))
print(np.std(ls0))
全部评论 (0)
还没有任何评论哟~
