嗨,我想检查氨基酸序列的分数值,为此我编写了以下代码,该代码绝对可以正常工作。但问题是每次我都必须编辑文件时。有什么方法可以从命令界面给出氨基酸序列。
AA_seq='AVTLSPQRS' # this is the input variable
sum=0
value={"V": 3.1,"Y":3.5,"W":4.7,"T" :5.3,"S":5.1,"P":3.7,
"F":4.7,"M":1.5,"K":8.9,"L":6,"I":4.3,"H":3.3,"G":7.1,
"E":7,"Q":5.4,"C":0.6,"D":7.6,"N":6,"R":8.7,"A":3.4}
print("Total length of sequence is:", len(AA_seq))
for i in AA_seq:
sum+=value[i]
print("Total Score is :", sum)
如果我很好地理解了你的问题,你可以通过使用python的"input"函数来完成它。 这将使您能够从 CLI 提供输入。下面是修改代码。
希望这对你有帮助。 此外,如果你想避免输入的小/大写hedache,你可以使用.upper()。
虽然这个问题不需要。
AA_seq=input("write Amino Acid Sequence:" )
AA_seq=AA_seq.upper()
sum=0
value={"V": 3.1,"Y":3.5,"W":4.7,"T" :5.3,"S":5.1,"P":3.7,
"F":4.7,"M":1.5,"K":8.9,"L":6,"I":4.3,"H":3.3,"G":7.1,
"E":7,"Q":5.4,"C":0.6,"D":7.6,"N":6,"R":8.7,"A":3.4}
print("Total length of sequence is:", len(AA_seq))
for i in AA_seq:
sum+=value[i]
print("Total Score is :", sum)
您可以在sys.argv
中从命令行轻松访问字符串参数。(由于历史原因,sys.argv[0]
包含脚本本身的名称,因此请忽略它。
import sys
value={"V": 3.1, "Y": 3.5, "W": 4.7, "T": 5.3, "S": 5.1,
"P": 3.7, "F": 4.7, "M": 1.5, "K": 8.9, "L": 6, "I": 4.3,
"H": 3.3, "G": 7.1, "E": 7, "Q": 5.4, "C": 0.6, "D": 7.6,
"N": 6, "R": 8.7, "A": 3.4}
for AA_seq in sys.argv[1:]:
print("Total length of sequence", AA_seq, "is:", len(AA_seq))
total = 0
for i in AA_seq:
total += value[i]
print(AA_seq, "Total Score is :", total)
您会注意到我添加了一个循环,因此您可以根据需要在一次运行中处理多个序列。
用法:
python3 script.py 'AVTLSPQRS' 'KIIGAPEAR'
(或者只是python
,如果这是您平台上 Python 3 可执行文件的名称)。
接受来自命令行的输入使您能够使用 shell 的各种功能(选项卡完成、历史记录、变量扩展等),以及从其他脚本以编程方式使用此脚本。
一个合适的工具可能也应该包括一些错误处理(基本上检查是否有参数,如果没有,则显示错误),但这应该已经让你开始了。此外,也许会捕获KeyError
这样,如果输入字符串包含不在value
哈希中的符号,则不会获得回溯。