2016-04-17 15 views
0

2つの関数(ZoekAccesieCode + ZoekOrganisme)から辞書を作成する必要があります。関数ZoekAccesieCodeは、 "Q6GZX2"のような行と "Frog virus 3(隔離Goorha)"のようなZoekOrganismeを返します。 ZoekAccesieCodeはキーである必要があり、ZoekOrganismeは値である必要があります。ここに私のコードは次のとおりです。2つの関数から辞書を作成する(Python)

import re 
file = open("ploop.txt") 
text = file.read() 
file.close() 

def main(): 
    hits = VindHits() 
    accesie = ZoekAccesieCode(hits) 
    organisme = ZoekOrganisme(hits, accesie) 
    MaakDict(accesie, organisme) 

def VindHits(): 
    eiwitten = text.split("\n\n")[1:] 
    eiwitHits = [] 

    for eiwit in eiwitten: 
     if re.search(r"[AG].{4}GK[ST]", eiwit): 
      eiwitHits.append(eiwit) 
    return(eiwitHits) 

def ZoekAccesieCode(hits): 
    for eiwit in hits: 
     accesieCode = re.findall(r">sp\|(.{6})", eiwit)[0] 
    return accesieCode 

def ZoekOrganisme(hits, accesie): 
    for eiwit in hits: 
     organisme = re.findall(r"\n.+?\[(.+?)\]", eiwit)[0] 
    return organisme 


def MaakDict(accesie, organisme): 

main() 

ファイルからいくつかのサンプルデータ:

Hits for PS00017|ATP_GTP_A (pattern) ATP/GTP-binding site motif A (P-loop) : [occurs frequently] 
    Pattern: [AG]-x(4)-G-K-[ST] 
    Approximate number of expected random matches in ~ 100'000 sequences (50'000'000 residues): 3371 


>sp|Q6GZX2|003R_FRG3G (438 aa) 
Uncharacterized protein 3R. [Frog virus 3 (isolate Goorha) (FV-3)] 
MARPLLGKTSSVRRRLESLSACSIFFFLRKFCQKMASLVFLNSPVYQMSNILLTERRQVDRAMGGSDDDGVMVVALSPSD 
FKTVLGSALLAVERDMVHVVPKYLQTPGILHDMLVLLTPIFGEALSVDMSGATDVMVQQIATAGFVDVDPLHSSVSWKDN 
VSCPVALLAVSNAVRTMMGQPCQVTLIIDVGTQNILRDLVNLPVEMSGDLQVMAYTKDPLGKVPAVGVSVFDSGSVQKGD 
AHSVGAPDGLVSFHTHPVSSAVELNYHAGWPSNVDMSSLLTMKNLMHVVVAEEGLWTMARTLSMQRLTKVLTDAEKDVMR 
AAAFNLFLPLNELRVMGTKDSNNKSLKTYFEVFETFTIGALMKHSGVTPTAFVDRRWLDNTIYHMGFIPWGRDMRFVVEY 
DLDGTNPFLNTVPTLMSVKRKAKIQEMFDNMVSRMVTS 
     2 - 9:   ArpllGKT 


>sp|Q6GZX1|004R_FRG3G (60 aa) 
Uncharacterized protein 004R. [Frog virus 3 (isolate Goorha) (FV-3)] 
MNAKYDTDQGVGRMLFLGTIGLAVVVGGLMAYGYYYDGKTPSSGTSFHTASPSFSSRYRY 
     33 - 40:  GyyydGKT 


>sp|Q6GZW0|015R_FRG3G (322 aa) 
Uncharacterized protein 015R. [Frog virus 3 (isolate Goorha) (FV-3)] 
MEQVPIKEMRLSDLRPNNKSIDTDLGGTKLVVIGKPGSGKSTLIKALLDSKRHIIPCAVVISGSEEANGFYKGVVPDLFI 
YHQFSPSIIDRIHRRQVKAKAEMGSKKSWLLVVIDDCMDNAKMFNDKEVRALFKNGRHWNVLVVIANQYVMDLTPDLRSS 
VDGVFLFRENNVTYRDKTYANFASVVPKKLYPTVMETVCQNYRCMFIDNTKATDNWHDSVFWYKAPYSKSAVAPFGARSY 
WKYACSKTGEEMPAVFDNVKILGDLLLKELPEAGEALVTYGGKDGPSDNEDGPSDDEDGPSDDEEGLSKDGVSEYYQSDL 
DD 
     34 - 41:  GkpgsGKS 


>sp|P32234|128UP_DROME (368 aa) 
GTP-binding protein 128up. [Drosophila melanogaster (Fruit fly)] 
MSTILEKISAIESEMARTQKNKATSAHLGLLKAKLAKLRRELISPKGGGGGTGEAGFEVAKTGDARVGFVGFPSVGKSTL 
LSNLAGVYSEVAAYEFTTLTTVPGCIKYKGAKIQLLDLPGIIEGAKDGKGRGRQVIAVARTCNLIFMVLDCLKPLGHKKL 
LEHELEGFGIRLNKKPPNIYYKRKDKGGINLNSMVPQSELDTDLVKTILSEYKIHNADITLRYDATSDDLIDVIEGNRIY 
IPCIYLLNKIDQISIEELDVIYKIPHCVPISAHHHWNFDDLLELMWEYLRLQRIYTKPKGQLPDYNSPVVLHNERTSIED 
FCNKLHRSIAKEFKYALVWGSSVKHQPQKVGIEHVLNDEDVVQIVKKV 
     71 - 78:  GfpsvGKS 


>sp|P05080|194K_TRVSY (1707 aa) 
Replicase large subunit. [Tobacco rattle virus (strain SYM)] 
MANGNFKLSQLLNVDEMSAEQRSHFFDLMLTKPDCEIGQMMQRVVVDKVDDMIRERKTKDPVIVHEVLSQKEQNKLMEIY 
PEFNIVFKDDKNMVHGFAAAERKLQALLLLDRVPALQEVDDIGGQWSFWVTRGEKRIHSCCPNLDIRDDQREISRQIFLT 
AIGDQARSGKRQMSENELWMYDQFRKNIAAPNAVRCNNTYQGCTCRGFSDGKKKGAQYAIALHSLYDFKLKDLMATMVEK 
KTKVVHAAMLFAPESMLVDEGPLPSVDGYYMKKNGKIYFGFEKDPSFSYIHDWEEYKKYLLGKPVSYQGNVFYFEPWQVR 
GDTMLFSIYRIAGVPRRSLSSQEYYRRIYISRWENMVVVPIFDLVESTRELVKKDLFVEKQFMDKCLDYIARLSDQQLTI 
SNVKSYLSSNNWVLFINGAAVKNKQSVDSRDLQLLAQTLLVKEQVARPVMRELREAILTETKPITSLTDVLGLISRKLWK 
QFANKIAVGGFVGMVGTLIGFYPKKVLTWAKDTPNGPELCYENSHKTKVIVFLSVVYAIGGITLMRRDIRDGLVKKLCDM 
FDIKRGAHVLDVENPCRYYEINDFFSSLYSASESGETVLPDLSEVKAKSDKLLQQKKEIADEFLSAKFSNYSGSSVRTSP 
PSVVGSSRSGLGLLLEDSNVLTQARVGVSRKVDDEEIMEQFLSGLIDTEAEIDEVVSAFSAECERGETSGTKVLCKPLTP 
PGFENVLPAVKPLVSKGKTVKRVDYFQVMGGERLPKRPVVSGDNSVDARREFLYYLDAERVAQNDEIMSLYRDYSRGVIR 
TGGQNYPHGLGVWDVEMKNWCIRPVVTEHAYVFQPDKRMDDWSGYLEVAVWERGMLVNDFAVERMSDYVIVCDQTYLCNN 
RLILDNLSALDLGPVNCSFELVDGVPGCGKSTMIVNSANPCVDVVLSTGRAATDDLIERFASKGFPCKLKRRVKTVDSFL 
MHCVDGSLTGDVLHFDEALMAHAGMVYFCAQIAGAKRCICQGDQNQISFKPRVSQVDLRFSSLVGKFDIVTEKRETYRSP 
ADVAAVLNKYYTGDVRTHNATANSMTVRKIVSKEQVSLKPGAQYITFLQSEKKELVNLLALRKVAAKVSTVHESQGETFK 
DVVLVRTKPTDDSIARGREYLIVALSRHTQSLVYETVKEDDVSKEIRESAALTKAALARFFVTETVLXRFRSRFDVFRHH 
EGPCAVPDSGTITDLEMWYDALFPGNSLRDSSLDGYLVATTDCNLRLDNVTIKSGNWKDKFAEKETFLKPVIRTAMPDKR 
KTTQLESLLALQKRNQAAPDLQENVHATVLIEETMKKLKSVVYDVGKIRADPIVNRAQMERWWRNQSTAVQAKVVADVRE 
LHEIDYSSYMYMIKSDVKPKTDLTPQFEYSALQTVVYHEKLINSLFGPIFKEINERKLDAMQPHFVFNTRMTSSDLNDRV 
KFLNTEAAYDFVEIDMSKFDKSANRFHLQLQLEIYRLFGLDEWAAFLWEVSHTQTTVRDIQNGMMAHIWYQQKSGDADTY 
NANSDRTLCALLSELPLEKAVMVTYGGDDSLIAFPRGTQFVDPCPKLATKWNFECKIFKYDVPMFCGKFLLKTSSCYEFV 
PDPVKVLTKLGKKSIKDVQHLAEIYISLNDSNRALGNYMVVSKLSESVSDRYLYKGDSVHALCALWKHIKSFTALCTLFR 
DENDKELNPAKVDWKKAQRAVSNFYDW 
     904 - 911:  GvpgcGKS 


>sp|P03589|1A_AMVLE (1126 aa) 
Replication protein 1a. [Alfalfa mosaic virus (strain 425/isolate Leiden)] 
MNADAQSTDASLSMREPLSHASIQEMLRRVVEKQAADDTTAIGKVFSEAGRAYAQDALPSDKGEVLKISFSLDATQQNIL 
RANFPGRRTVFSNSSSSSHCFAAAHRLLETDFVYRCFGNTVDSIIDLGGNFVSHMKVKRHNVHCCCPILDARDGARLTER 
ILSLKSYVRKHPEIVGEADYCMDTFQKCSRRADYAFAIHSTSDLDVGELACSLDQKGVMKFICTMMVDADMLIHNEGEIP 
NFNVRWEIDRKKDLIHFDFIDEPNLGYSHRFSLLKHYLTYNAVDLGHAAYRIERKQDFGGVMVIDLTYSLGFVPKMPHSN 
GRSCAWYNRVKGQMVVHTVNEGYYHHSYQTAVRRKVLVDKKVLTRVTEVAFRQFRPNADAHSAIQSIATMLSSSTNHTII 
GGVTLISGKPLSPDDYIPVATTIYYRVKKLYNAIPEMLSLLDKGERLSTDAVLKGSEGPMWYSGPTFLSALDKVNVPGDF 
VAKALLSLPKRDLKSLFSRSATSHSERTPVRDESPIRCTDGVFYPIRMLLKCLGSDKFESVTITDPRSNTETTVDLYQSF 
QKKIETVFSFILGKIDGPSPLISDPVYFQSLEDVYYAEWHQGNAIDASNYARTLLDDIRKQKEESLKAKAKEVEDAQKLN 
RAILQVHAYLEAHPDGGKIEGLGLSSQFIAKIPELAIPTPKPLPEFEKNAETGEILRINPHSDAILEAIDYLKSTSANSI 
ITLNKLGDHCQWTTKGLDVVWAGDDKRRAFIPKKNTWVGPTARSYPLAKYERAMSKDGYVTLRWDGEVLDANCVRSLSQY 
EIVFVDQSCVFASAEAIIPSLEKALGLEAHFSVTIVDGVAGCGKTTNIKQIARSSGRDVDLILTSNRSSADELKETIDCS 
PLTKLHYIRTCDSYLMSASAVKAQRLIFDECFLQHAGLVYAAATLAGCSEVIGFGDTEQIPFVSRNPSFVFRHHKLTGKV 
ERKLITWRSPADATYCLEKYFYKNKKPVKTNSRVLRSIEVVPINSPVSVERNTNALYLCHTQAEKAVLKAQTHLKGCDNI 
FTTHEAQGKTFDNVYFCRLTRTSTSLATGRDPINGPCNGLVALSRHKKTFKYFTIAHDSDDVIYNACRDAGNTDDSILAR 
SYNHNF 
     838 - 845:  GvagcGKT 


>sp|Q9AT00|TGD3_ARATH (345 aa) 
Protein TRIGALACTOSYLDIACYLGLYCEROL 3, chloroplastic. [Arabidopsis thaliana (Mouse-ear cress)] 
MLSLSCSSSSSSLLPPSLHYHGSSSVQSIVVPRRSLISFRRKVSCCCIAPPQNLDNDATKFDSLTKSGGGMCKERGLEND 
SDVLIECRDVYKSFGEKHILKGVSFKIRHGEAVGVIGPSGTGKSTILKIMAGLLAPDKGEVYIRGKKRAGLISDEEISGL 
RIGLVFQSAALFDSLSVRENVGFLLYERSKMSENQISELVTQTLAAVGLKGVENRLPSELSGGMKKRVALARSLIFDTTK 
EVIEPEVLLYDEPTAGLDPIASTVVEDLIRSVHMTDEDAVGKPGKIASYLVVTHQHSTIQRAVDRLLFLYEGKIVWQGMT 
HEFTTSTNPIVQQFATGSLDGPIRY 
     117 - 124:  GpsgtGKS 

は、誰かが右のコードで私を助けることはできますか?

+1

は、私は両方の機能、 'ZoekAccesieCode'と' ZoekOrganisme'に気づく同じ長さでそれらを作るためにスライスを使用する必要があり、同じ長さのリストである、あなただけの 'からの最初の値を返しますre.findすべての。あなたは最後に単一の要素辞書を望んでいますか? –

+1

私はあなたがこれらの2つの関数から戻りたいと思う、単一の文字列ではなく文字列のリスト?... –

答えて

0
dictionary_name = {accesie:organisme} 
+0

私はこれを出力として得ました:{'A': 'a'、 '0': 'd' Q ':' A '、' 9 ':' r '、' T ':' b '}それは次のようなものでなければならない:{' Q6GZX2 ': "カエルウイルス3(分離Goorha)"} – Yoni

+0

accesie and organisme are accesie and organisme areリストではない?文字列の場合は、辞書を作成してください。 – mattsap

+0

彼らは私が推測する文字列です – Yoni

1

かろうじて判読できるコードを削除します。

def make_dict(a, b): 
    return {a:b} 
+0

それは私にそれを考えるのは苦労しますが、これはOPの質問に対する答えだろう。 – sberry

+0

@sberryはい、それは私がPhotoshopを開いて、Eclipseを起動して複雑なスーパーアルゴリズムを書く前に期待されるワークフローを描かなければならないような複雑な問題でした...! – TheLazyScripter

0

あなたは前者が唯一の最長の入力リストの長さと同じ数のペアを作成します。この

zip(accesie, organisme) 

OR

itertools.izip_longest(accesie, organisme) 

ようzipまたはitertools.izip_longestを使用することができます。後者の場合、リストの長さが等しくない場合は、ペアとなる可能性があります。

上記のいずれかを使用すると、dict()に改行して変換することができます。

>>> import itertools 
>>> accesie = ['accesie1', 'accesie2', 'accesie3', 'accesie4'] 
>>> organisme = ['organisme1', 'organisme2', 'organisme3'] 
>>> dict(zip(accesie, organisme)) 
{'accesie3': 'organisme3', 'accesie2': 'organisme2', 'accesie1': 'organisme1'} 
>>> dict(itertools.izip_longest(accesie, organisme)) 
{'accesie3': 'organisme3', 'accesie2': 'organisme2', 'accesie1': 'organisme1', 'accesie4': None} 

それはあなたが単一の要素ではなく、要素のリストを扱っている他のコメントを読んでから表示されます。あなたは@ TheLazyScripterの答えを参照する必要があります。あなたのキーと値で辞書を作成するだけです。

the_dict = {accesie: organisme} 

あなたが辞書に追加しようとしている場合、それは、このコードはaccessieの値は、キーも(彼らは文字列またはUnicodeです)、そのことを前提としてあり

the_dict[accesie] = organisme 
+0

私はこれを正しくしていますか? dict = {zip(accesie、organisme)} print(dict) – Yoni

0

だろうaccessieとorganismeがそうでなければ、あなたが

dict(zip(accessie, organisme)) 
関連する問題