[Tutor] Tutor Digest, Vol 131, Issue 59 Order loop from methos on class (jarod_v6 at libero.it)

Sydney Shall s.shall at virginmedia.com
Mon Jan 26 19:44:56 CET 2015


On 26/01/2015 14:41, Dino Bektešević wrote:
> 2015-01-26 14:54 GMT+01:00 jarod_v6 at libero.it <jarod_v6 at libero.it>:
>> Thanks so much!! Now I understood it is a stupid thing!
>> So, could you elpme to decompose the problem?
>> I initiazlizate the class with the file to use so all the function have all
>> the parameters that I need.
>>
>> At the moment I have in mind only to do this:
>> ena = Rna()
>> job1 = ena.trim()
>> job2 = ena.align()
>> It is no so elegant..
>>
>>
>>
>> Any suggestion?
>>
>
> Without seeing what exactly are you trying to do (I'm not a
> chemist/biologist) I'm not sure. Any detail about what you're trying
> to do would be helpful.
> If you're bothered by having to call 2 methods except of 1 you could
> always make another method that uses the two. It really depends on the
> decision if you want to do the operations in place or not, that is
> transform the original object through it's methods, or do you want to
> return a new object of the same class.
> In your example you write "job" as if you're dealing with threads. I
> can't tell if you want job1 and job2 to be another different objects
> (maybe of Rna class maybe not) or is it just that you don't understand
> that you can also call a method on an object without having a variable
> to hold a return value.
>
> If you want to return another Rna object that is the same as the
> original one, maybe something like this is what you need?
>
> i.e.
> import copy
>
> class Rna():
>      def __init__(self):
>          self.trimmed = False
>          self.aligned = False
>
> #NOT a part of the class
> def trim(rna):
>     temp = copy.copy(rna)
>     temp.trimmed = True
>     return temp
>
> #in interpreter
>>>>> ena = Rna()
>>>>> ena.trimmed
> False
>>>>> tena = trim(ena)
>>>>> ena.trimmed
> False
>>>>> tena.trimmed
> True
>
> and both of ena and tena will be of class Rna. So you now have 2
> different Rna objects.
> You could also have it done in place, which saves memory and is more
> natural and I'd recommend it:
>
> class Rna():
>     def __init__(self):
>         self.trimmed=False
>         self.aligned=False
>     def trim(self):
>          self.trimmed=True
>     def align(self):
>         self.aligned=True
>     def DoBoth(self):
>          self.trim()
>          self.align()
>          print("Done!")
>
> #in the interpreter
>>>>> ena = Rna()
>>>>> ena.trimmed
> False
>>>>> ena.aligned
> False
>>>>> ena.DoBoth()
> Done!
>>>>> ena.trimmed
> True
>>>>> ena.aligned
> True
>
> This way you can do both without having to constantly write them
> yourself... you issue 1 call which then calls various other methods
> you have on the instance itself....
>
> Even that print isn't necessary, that's just there to show it
> finished. You don't always have to have a variable to catch potential
> output of a method. But maybe if you need/want to catch the output
> maybe that output is an object of a different class(?) maybe it's a
> tuple, or an array?
>
> class Rna():
>     def __init__(self):
>         self.trimmed=False
>         self.aligned=False
>     def trim(self):
>          self.trimmed=True
>     def align(self):
>         self.aligned=True
>     def DoBoth(self):
>          self.trim()
>          self.align()
>          print("Done! We return an list of solutions:")
>          return [1,2,3,4,5,6,7,8,9]
>
> #in the interpreter
>>>>> ena = Rna()
>>>>> solutions = ena.DoBoth()
> Done! We return an list of solutions:
>>>>> solutions
> [1,2,3,4,5,6,7,8,9]
>
> You could also add the solutions as an attribute to the object you
> just did the calculation on:
> def DoBoth(self):
>      self.trim()
>      self.align()
>      print("Done! We return an list of solutions:")
>      self.solutions =  [1,2,3,4,5,6,7,8,9]
>
> #in the interpreter
>>>>> ena = Rna()
>>>>> ena.DoBoth()
> Done! We return an list of solutions:
>>>>> ena.solutions
> [1,2,3,4,5,6,7,8,9]
>
> The better you describe WHAT you want and HOW you want it the better
> people here will be able to help you....
>
>
> Best of luck,
> Dino
> _______________________________________________
> Tutor maillist  -  Tutor at python.org
> To unsubscribe or change subscription options:
> https://mail.python.org/mailman/listinfo/tutor
>

I do not know exactly what the OP wants to do, but it sounds like he is 
aligning RNA sequences.
At this stage I would suggest that he studies the possibilities of the 
BioPython package and the programs available at the NLM, USA or the 
Sanger Lab in Cambridge, England.
But I am only a beginner myself, so I might be way off track.
-- 
Sydney


More information about the Tutor mailing list