[Tutor] pls. help me in sorting and choosing

Srinivas Iyyer srini_iyyer_bio at yahoo.com
Thu Aug 11 07:23:07 CEST 2005


Hi John:
thank you for your reply:

There is no cutoff. I would choose top 20% of the all
the scores. 

2. I know how to read a tab delim txt file as list but
not into the tupeles. Apologies for my inexperience. 

can you please help me further. 

thanks

srini




--- jfouhy at paradise.net.nz wrote:

> Quoting Srinivas Iyyer <srini_iyyer_bio at yahoo.com>:
> 
> > My question is how can I code to distinguish all
> high
> > scoring group and all low scoring group. 
> 
> One thing you need to decide is what it means to be
> high scoring.  Is an element
> high scoring if its score is above some threshhold,
> or it a percentage?  Or
> something else?
> 
> (eg: "an element is high scoring if its score is >
> 1000" or "an element is high
> scoring if it is in the top 20% when ranked by
> score")
> 
> Do you know how to read your data in from your file?
>  If you have a file looking
> like this:
> 
> NM_004619.2	4910.8
> NM_004619.2	2716.3
> NM_145759.1	4805.7
> NM_14 5759.1	2716.3
> XM_378692.1	56.00
> 
> then I would convert that into a list of tuples:
> 
> [("NM_004619.2", 4910.8), ("NM_004619.2", 2716.3),
> ("NM_145759.1", 4805.7),
> ("NM_14 5759.1", 2716.3), ("XM_378692.1", 56.00)]
> 
> If you can do this, then it is easy to ask python to
> sort it for you.
> 
> >>> data = [("NM_004619.2", 4910.8), ("NM_004619.2",
> 2716.3), ("NM_145759.1",
> 4805.7), ("NM_14 5759.1", 2716.3), ("XM_378692.1",
> 56.00)]
> >>> data.sort(key=lambda x: x[1], reverse=True)
> >>> data
> [('NM_004619.2', 4910.8000000000002),
> ('NM_145759.1', 4805.6999999999998),
> ('NM_004619.2', 2716.3000000000002), ('NM_14
> 5759.1', 2716.3000000000002),
> ('XM_378692.1', 56.0)]
> 
> Now, the first elements in the list have the highest
> score, and you can decide
> how far down to go.
> 
> Alternatively, you could ask for all elements above
> a certain score:
> 
> >>> [x for x in data if x[1] > 3000]
> [('NM_004619.2', 4910.8000000000002),
> ('NM_145759.1', 4805.6999999999998)]
> 
> HTH!
> 
> (note: key= and reverse= arguments to sort() are a
> new feature in Python2.4.  If
> you are using an earlier Python, you will have to do
> things slightly
> differently.  Probably the easiest change to make
> would be to have the score be
> the first element in the tuples)
> 
> -- 
> John.
> _______________________________________________
> Tutor maillist  -  Tutor at python.org
> http://mail.python.org/mailman/listinfo/tutor
> 



		
____________________________________________________
Start your day with Yahoo! - make it your home page 
http://www.yahoo.com/r/hs 
 


More information about the Tutor mailing list