comparison of files using set function

Kam-Hung Soh kamhung.soh at gmail.com
Sat May 17 21:08:42 EDT 2008


On Sun, 18 May 2008 00:47:55 +1000, Beema shafreen  
<beema.shafreen at gmail.com> wrote:

> I have files with two column, column 1 is with id and column 2 is with
> data(sequence)
> My goal is to create a table in such a way, the column one of the table
> should have all the id from the files and next column will be have the
> respective seq of the file1 with correlation to the id and the third  
> column
> will be sequence information of the next file with respective to the id
> original files look like this
>
> 45    ytut
> 46    erete
> 37   dfasf
> 45  dassdsd
>
>
> and so on  for all the 10 files that is it has two column as mentioned
> above.
>
> The output should look like this:
>
> Id    file1      file2     file3     file4   file5
> 43    ytuh    ytuh     ytuh    ytuh    ytuh
> 46   erteee   rty       ryyy              ertyu
> 47   yutio    rrr                    eeerr
>
>
>
> The goal is if the pick all the common id in the files and with their
> respective information in the adjacent rows.
> the various conditons ca also prevails
> 1) common id present in all the files, which have same information
> 2)common id present in all the files, which donot have same information
> 3) common id may not be present in all the files
>
> But the goal is exactly find the common id in all the files and add their
> corresponding information in the file to the table as per the view
>  my script :
> def file1_search(*files1):
>     for file1 in files1:
>         gi1_lis = []
>         fh = open(file1,'r')
>         for line in fh.readlines():
>             data1 = line.strip().split('\t')
>             gi1 = data1[0].strip()
>             seq1 = data1[1].strip()
>             gi1_lis.append(gi1)
>         return gi1_lis
> def file2_search(**files2):
>     for file2 in files2:
>         for file in files2[file2]:
>             gi2_lis = []
>             fh1 = open(file,'r')
>             for line1 in fh1.readlines():
>                 data2 = line1.strip().split('\t')
>                 gi2 = data2[0].strip()
>                 seq2 = data2[1].strip()
>                 gi2_lis.append(gi2)
>
>             return gi2_lis
> def set_compare(data1,data2,*files1,**files2):
>     A = set(data1)
>     B = set(data2)
>     I = A&B # common between thesetwo sets
>
>     D = A-B #57 is the len of D
>     C = B-A #176 is  the len of c
> #    print len(C)
>  #   print len(D)
>     for file1 in files1:
>         for gi in D:
>             fh = open(file1,'r')
>             for line in fh.readlines():
>                 data1 = line.strip().split('\t')
>                 gi1 = data1[0].strip()
>                 seq1 = data1[1].strip()
>             if gi == gi1:
> #                print line.strip()
>                     pass
>
>     for file2 in files2:
>         for file in files2[file2]:
>             for gi in C:
>                 fh1 = open(file,'r')
>                 for line1 in fh1.readlines():
>                     data2 = line1.strip().split('\t')
>                     gi2 = data2[0].strip()
>                     seq2 = data2[1].strip()
>                 if gi == gi2:
>                    # print line1.strip()
>                     pass
> if __name__ == "__main__":
>     files1 = ["Fr20.txt",\
>               "Fr22.txt",\
>               "Fr24.txt",\
>               "Fr60.txt",\
>               "Fr62.txt"]
>     files2 = {"data":["Fr64.txt",\
>               "Fr66.txt",\
>               "Fr68.txt",\
>               "Fr70.txt",\
>               "Fr72.txt"]}
>     data1 = file1_search(*files1)
>
>     """113 is the total number of gi"""
>     data2 = file2_search(**files2)
>     #for j in data2:
>      #   print j
>     """232 is the total number of gi found"""
>     result = set_compare(data1,data2,*files1,**files2)
>
>  It doesnot work fine... some body please suggest me the way i can  
> proceed .
> Thanks a lot
>

1. Test with a small number of short files with a clear idea of the  
expected result.
2. Use better variable names.  Names such as file1_search, file2_search,  
gi, gi2, A, B, C and D make it nearly impossible to understand your code.

-- 
Kam-Hung Soh <a href="http://kamhungsoh.com/blog">Software Salariman</a>




More information about the Python-list mailing list