[Tutor] How to create a dictionary for ount elements

Lukas Nemec lu.nemec at gmail.com
Wed Jun 4 18:02:00 CEST 2014


Hi,

I'd suggest using different data structure for the intersect of samples 
from a program.

data = {
'program1':
     {
         'sample1': {'TP53', 'ASD'},
         'sample2': {'ASD'},
     },
'program2': {
         'sample1': {'ASD'}
     }
}

this way you can do this:

for program in data:
     program_genes = []
     for sample, value in data[program].iteritems():
         program_genes.append(value)

     data[program]['intersection'] = set.intersection(*program_genes)


Now you have in each 'programX' sub-dictionary key 'intersection', with 
intersection of
all the program genes.

Lukas

On 06/04/2014 12:29 PM, jarod_v6 at libero.it wrote:
> Dear all thanks for your suggestion!!!
> Thanks to your suggestion I create this structure:with open("prova.csv") as p:
>      for i in p:
>          lines =i.rstrip("\n").split("\t")
>     ...:         print lines
>     ...:
> ['programs ', 'sample', 'gene', 'values']
> ['program1', 'sample1', 'TP53', '2']
> ['program1', 'sample1', 'TP53', '3']
> ['program1', 'sample2', 'PRNP', '4']
> ['program1', 'sample2', 'ATF3', '3']
> ['program2', 'sample1', 'TP53', '2']
> ['program2', 'sample1', 'PRNP', '5']
> ['program2', 'sample2', 'TRIM32', '4']
> ['program2', 'sample2', 'TLK1', '4']
>
> In [4]: with open("prova.csv") as p:
>      for i in p:
>          lines =i.rstrip("\n").split("\t")
>          dizlines
> diz
>
> In [4]: with open("prova.csv") as p:
>      for i in p:
>          lines =i.rstrip("\n").split("\t")
>          line = (lines[0],lines[1])
>     ...:         diz.setdefault(line,set()).add(lines[2])
>     ...:
>
> In [5]: diz
> Out[5]:
> {('program1', 'sample1'): {'TP53'},
>   ('program1', 'sample2'): {'ATF3', 'PRNP'},
>   ('program2', 'sample1'): {'PRNP', 'TP53'},
>   ('program2', 'sample2'): {'TLK1', 'TRIM32'},
>   ('programs ', 'sample'): {'gene'}}
>
>
> So what I want to do is to use intersect between the keys recursively:
> s = diz[('program2', 'sample1']
>     ....:
>     ....:
> KeyboardInterrupt
>
> In [14]: s = diz[('program2', 'sample1')]
>
> In [15]: s
> Out[15]: {'PRNP', 'TP53'}
>
> In [16]: a
> Out[16]: {'ATF3', 'PRNP'}
>
> In [17]: s.inte
> s.intersection         s.intersection_update
>
> In [17]: s.intersection(a)
> Out[17]: {'PRNP'}
>
> How can Have a intersect of all my dictionary and from ('program1', 'sample1')
> vs ('program1', 'sample2')...
> I want to count  how many genes are common
> Thanks in advance  for your help!
>
>
> _______________________________________________
> Tutor maillist  -  Tutor at python.org
> To unsubscribe or change subscription options:
> https://mail.python.org/mailman/listinfo/tutor



More information about the Tutor mailing list