Python 将井号转换为96孔板上的标识符
在96孔板中有8列(a,B,…)和12行(01…12); 所以这个盘子看起来像这样:Python 将井号转换为96孔板上的标识符,python,bioinformatics,Python,Bioinformatics,在96孔板中有8列(a,B,…)和12行(01…12); 所以这个盘子看起来像这样: A01 A02 ... A12 B01 B02 ... B12 C01 ... ... H01 .. 目前,我已将这些车牌识别为: 1 2 3 4 ... 12 13 14 15 ...24 .. 84 ... 96 如何编写函数wellnumber2welldidentifier,将数字索引转换为顶部使用的格式?例如,well1将返回A01,well13将返回B01哦,当然可以,让它以1
A01 A02 ... A12
B01 B02 ... B12
C01 ...
...
H01 ..
目前,我已将这些车牌识别为:
1 2 3 4 ... 12
13 14 15 ...24
..
84 ... 96
如何编写函数
wellnumber2welldidentifier
,将数字索引转换为顶部使用的格式?例如,well1
将返回A01
,well13
将返回B01
哦,当然可以,让它以1为基础,为什么不
'ABCDEFGH'[(num - 1) // 12] + '%02d' % ((num - 1) % 12 + 1,)
让@Ignacio Vazquez Abrams的答案更进一步。以下是两种方法:
@staticmethod
def ConvertNumericWellPostOA1样式(numericPos、contRows、contCols、colOrRowMajor、PadWithZero):
"""
将数字位置转换为A1样式的位置。
参数
----------
数字位置:int
要转换的数字井位。
contMaxRows:int
最大容器行数。
contMaxCols:int
最大容器列数。
专业:str
“列”或“行”用于列或行主寻址。
带零的pad:bool
是否用零填充返回的数字部分。
i、 e.,A1或A01
"""
如果numericPos<1:
raise value ERROR(“容器位置值”“+str(numericPos)+”“”必须为1或更大。”)
如果contCols<1:
raise VALUETERROR(“容器列值””+str(contCols)+“”必须为1或更大。”)
如果contRows<1:
raise VALUERROR(“容器行值””+str(contRows)+“”必须为1或更大。”)
如果numericPos>contCols*contRows:
raise value ERROR(“容器位置值””+str(numericPos)+“”超过了最大容器井可能的”+str(contCols*contRows)+“.”)
如果colOrRowMajor==“行”:
如果pad为零:
返回'ABCDEFGH'[(numericPos-1)//contCols]+'%02d'((numericPos-1)%contCols+1,)
其他:
返回'ABCDEFGH'[(numericPos-1)//contCols]+str((numericPos-1)%contCols+1)
elif colOrRowMajor==“col”:
如果pad为零:
返回'ABCDEFGH'[(numericPos-1)%contRows]+'%02d'(math.ceil(numericPos/contRows),)
其他:
返回'ABCDEFGH'[(numericPos-1)%contRows]+str(math.ceil(numericPos/contRows))
其他:
raise VALUERROR(“容器遍历值“+”colOrRowMajor+“”必须是“列”或“行”)
@静力学方法
def ConvertA1StylePositionToNumeric(A1StylePos:str,contRows:int,contCols:int,colOrRowMajor:str):
#检查至少两个字符
如果len(A1StylePos)==0:
raise VALUE ERROR(“无法转换空A1样式井位”)
如果len(A1StylePos)==1:
raise VALUE ERROR(“A1样式井位至少需要2个字符”)
#大写
A1StylePos=A1StylePos.upper()
colPart=0
#获取A1样式机架位置的零件
rowPart=A1StylePos.upper()[0:1]
如果作战需求文件(rowPart)<65或作战需求文件(rowPart)>90:
raise VALUE ERROR(“A1样式井位的第一个字符必须是字母a-Z”)
colPartAsString=A1StylePos[1:len(A1StylePos)]
如果colPartAsString.isdigit():
colPart=int(colPartAsString)
其他:
raise VALUE ERROR(“井位第一个字符后的字符必须是数字。”)
#错误检查
如果作战需求文件(A1StylePos[0])<65或作战需求文件(A1StylePos[0])>90:
raise VALUE ERROR(“井位的第一个字符“+A1StylePos+””必须是字符a到Z.)
如果contCols<1:
raise VALUETERROR(“容器列值””+str(contCols)+“”必须为1或更大。”)
如果contRows<1:
raise VALUERROR(“容器行值””+str(contRows)+“”必须为1或更大。”)
如果控件>26:
raise VALUERROR(“容器行值””+str(contRows)+“”不得大于26。”)
如果colPart>contCols:
raise value ERROR(“井位值“+A1StylePos+””超过了“+str(contCols)+”的最大容器列数)
如果colPart<1:
raise value ERROR(“井位值””+A1StylePos+“”必须为1或更大。”)
如果(ord(第64行)>控制:
raise value ERROR(“井位值“+A1StylePos+””指的是超过最大容器列数“+str(contCols)+“.”的井)
#皈依
如果colOrRowMajor==“col”:
返回值(int)((colPart-1)*contRows)+(ord(rowPart-64))
elif colOrRowMajor==“行”:
返回(int)((ord(rowPart)-65)*contCols)+colPart);
其他:
raise value ERROR(“容器遍历值“+”colOrRowMajor+”'必须是“col”或“row”。”)
+1,只是为了叹息哦,当然,去把它设为1基为什么不呢