global変数を使わずにコードを機能させたい
short.sequ.txt
から>YP
で始まる行をそのままprintし、その次の行から空白を認識するまでの文字数をカウントする。
この作業を繰り返し行い、最大の文字数と最大の文字数の時の>YP
の行を最終的にprintしたいと思ってます。
最大値が見つかるたびにmax_lenとmax_proteinを更新したいです。(最小値も同じく)
global変数を用いて作成したのですが、できればglobal変数を使わずにこのようなコードを書きたいと思ってます。
その場合、global変数をどういったものに変えたらいいのかわからないので教えていただきたいです。
宜しくお願い致します。
with open("short.sequ.txt") as f:
max_len = 0
max_protein = ""
min_len = 10000000000000
min_protein = ""
def change(protein, seq):
global max_len,max_protein,min_len,min_protein
seq_len = len(seq)
if seq_len == 0:
return
else:
print([seq_len])
if seq_len > max_len:
max_len,max_protein,min_len,min_protein = seq_len,protein,seq_len,protein
if seq_len < min_len:
min_len,min_protein = seq_len,protein
a_line = ""
a_seq = ""
for line in f:
strip_line = line.rstrip()
if strip_line.startswith(">"):
a_line = strip_line
change(a_line, a_seq)
a_seq = ""
print(strip_line+'\n')
else:
#A = [len(a_seq+strip_line)]
a_seq += strip_line
msg1 = "最大アミノ酸エントリ:"
msg2 = "長さ:"
msg3 = "最小アミノ酸エントリ:"
print(msg1,max_protein,msg2,max_len)
print(msg3,min_protein,msg2,min_len)
short.sequ.txt
>YP_009518834.1 putative uncharacterized protein YjiT [Escherichia coli str. K-12 substr. MG1655]
MGQSEYISWVKCTSWLSNFVNLRGLRQPDGRPLYEYHATNDEYTQLTQLLRAVGQSQSNICNRDFAACFV
LFCSEWYRRDYERQCGWTWDPIYKKIGISFTATELGTIVPKGMEDYWLRPIRFYESERRNFLGTLFSEGG
LPFRLLKESDSRFLAVFSRILGQYEQAKQSGFSALSLARAVIEKSALPTVFSEDTSVELISHMADNLNSL
VLTHNLINHKEPVQQLEKVHPTWRSEFPIPLDDETGTHFLNGLLCAASVEAKPRLQKNKSTRCQFYWSEK
HPDELRVIVSLPDEVSFPVTSEPSTTRFELAICEDGEEVSGLGPAYASLENRQATVRLRKSEVRFGRQNP
SAGLSLVARAGGMIVGSIKLDDSEIAIGEVPLTFIVDADQWLLQGQASCSVRSSDVLIVLPRDNSNVAGF
DGQSRAVNVLGLKALPVKGCQDVTVTANETYRIRTGREQISIGRFALNGKRASWVCHPDETFIGVPKVIS
TLPDIQSIDVTRYTC
>YP_009518833.1 uncharacterized protein YtiA [Escherichia coli str. K-12 substr. MG1655]
MKEFLFLFHSTVGVIQTRKALQAAGMTFRVSDIPRDLRGGCGLCIWLTCPPGEEIQWVIPGLTESIYCQQ
DGVWRCIAHYGVSPR
>YP_009518832.1 iraD leader peptide [Escherichia coli str. K-12 substr. MG1655]
MENEHQYSGARCSGQAAYVAKRQECAK
>YP_009518831.1 protein YtiD [Escherichia coli str. K-12 substr. MG1655]
MADYAEINNFPPELSSSGDKYFHLRNYSEYSEYTSGFFLSLMIFIKS
>YP_009518830.1 protein YtiC [Escherichia coli str. K-12 substr. MG1655]
MPVNGIFDVFDMLSIYIIYKLIVSNNTWLIMRK
>YP_009518829.1 putative YjfA [Escherichia coli str. K-12 substr. MG1655]
MHMVTYPCLTSRRFQLALIHRRVVDKRTSMHSRTASESTGARIHRPWCARHQVRPAWRCQYDKLHRVPFR
SPELRLDSGPGYTTGSYRY