2017-10-13 17 views
0

これについて、誰かが私にこの特定の行構文を説明することができますか(これは長くない、3行の長さではありません)、辞書の定義を作成し、 nameHandleを使用して:
ラインを私は理解していないこと#遺伝的アルゴリズムとファストパス・シーケンスの構文のためのPython辞書

def getfasta(file):      #creating the definition 

    nameHandle=open('fastas.txt,'r')  #(this is for opening the file that we're gonna use) 
    fastas={}        #I know it means my dictionnary name 
    for line in nameHandle:    #I know what it means 
     if line [0]=='>':    #(it's beacause each first line in a fasta seq starts with >) 
      header=line[1:]    #(Starting this line I can't understand a thing) 
      fastas[header]='' 
     else: 
      fastas[header]+=line[:-1] 
    nameHandle.close()     #closing the package 
    return(fastas)      #gives us the dictionary with the keys and all of content 
+0

あなたのコード内のインデントがめちゃめちゃビットです、あなたはそれがより簡単に読みやすくするためにそれを修正する必要があります。 – DarksteelPenguin

+0

これはすべてfastaシーケンスの名前を抽出しているように見えますが、私は完全にはそれが正しいとは確信していません。 'line [: - 1]'は最後の文字がないファイルからの行ですが、どこかに 'split'があるように感じます。 –

+1

はコードをもう少し明確にしようとしました –

答えて

0
def getfasta(file): 
    nameHandle = open('fastas.txt,'r') 
    fastas={} 
    for line in nameHandle: 
     if line [0]=='>': 
      header=line[1:] # this takes the whole line except the first character and stores it into a string 
      fastas[header]='' # this creates a new entry in your dictionary, with key=header and value='' 
     else: 
      fastas[header]+=line[:-1] # this line (except the last character, '\n') is added to the value associated to the previous header 
    nameHandle.close() 
    return(fastas) 

せずに、1つですだから何が起こるかは、このです:ファイルは行ずつ読み込まれます。最初の行は ">"で始まると仮定します。その行の残りの部分(それを「最初のエントリ」と呼ぶ)は、辞書のキーとして使用されます。次に、関連する値に次の行が追加されます。 ">"で始まる別の行に到達すると、それは新しいキーとみなされ、次の行が新しい値に追加されます。

次の例では:

>entryOne 
AT 
CG 
>entryTwo 
CA 
GT 

た辞書は、次のとおりです。

{(key="entryOne", value="ATCG"), (key="entryTwo", value="CAGT")} 
+0

Waw氏のDarksteelと皆さん、この例では特に優れています! –

関連する問題