As I understand it, in the case of partial overlap you just divide the
overlapping portion of B by A, so the direct division here would have the
same effect. I don't understand why is that division assuming A = 2B.

In any case, your function is heavier on the ifs, but mine has to do more
with each option, so I'm not sure which would perform better. And I think
yours is more readable, although less concise.

- Paulo

2010/8/6 Alexandre González <agonzale...@gmail.com>

> Mmmmm the third case coul be this, for example:
>
> |-------A-------------|                 |--------------A------------|
> -----------------------------        --------------------------------------
>
>    |B|                                       |-----B----|
>
> If I directly apply (his_diff/my_diff) I think that I'm assuming that A =
> 2B and it isn't the case... I need to get my range and her range and deleter
> the union between them with a substraction.
>
> range(A) - range(B)                      17000s - 13000s
> ---------------------------- for example: --------------------------- =
> 0.2352 = 23%
>        range(A)                                      17000s
>
> What do you think about? Perhaps I'm mading mistakes and can't understand
> your reply. Anyway, thanks for reply :)
>
> Bye!
> Álex González
>
>
> On Fri, Aug 6, 2010 at 02:09, Paulo Almeida 
> <igcbioinformat...@gmail.com>wrote:
>
>> In the third case, I didn't understand why you didn't divide (his_to -
>> his_from) / (my_to - my_from). Bearing that in mind, this made sense in my
>> head, but analyze it carefully:
>>
>>  def match(mf,mt,hf,ht):
>>     mydiff = diff_in_seconds(mf,mt)
>>     if (mf >= hf and mt <= ht) or (mf < hf and mt > ht):
>>         mydiff = diff_in_seconds(mf,mt)
>>         hisdiff = diff_in_seconds(hf,ht)
>>         return min(1, hisdiff / mydiff)
>>     else:
>>         case1 = max(0, diff_in_seconds(hf, mt))
>>         case2 = max(0, diff_in_seconds(mf, ht))
>>         diff = min(case1, case2)
>>         return (diff / mydiff)
>>
>> def diff_in_seconds(d1,d2):
>>     timedelta = d2 - d1
>>     return float(timedelta)
>>
>> print match(0,100,40,90)
>>
>>
>> 2010/8/5 Alexandre González <agonzale...@gmail.com>
>>
>>>  I've develope a "simple" function to calculate the difference between 2
>>> dates, and the time that they are interpolated.
>>>
>>> I need it to: I arrive to a site at a hour (my_from), I go out from the
>>> site at a hour (my_to). Some friend arrive at the site at a hour (his_from)
>>> and let it at a hour (his_to)
>>>
>>> If I stay in the site after he arrives and before he goes out, the
>>> "probability" of match is 1, if I let the site after he arrives, the
>>> probability of match is 0... You can see the samples in the documentation.
>>>
>>> I need to know if this is a good way to do, and if compare all the kinds
>>> of matching (I've found 6). This is the code:
>>>
>>>     def time_match(self, my_from, my_to, his_from, his_to):
>>>         """
>>>             I've found 6 general kinds of time matching. It's better to
>>> explain it with graphics:
>>>
>>>               (my_from)--A--(my_to)
>>>             -------------------------
>>>              (his_from)--B--(his_to)
>>>         """
>>>
>>>         #    |-A-|                           |-A-|
>>>         # -------------------- or --------------------
>>>         #           |--B--|        |--B--|
>>>         if my_to < his_from or his_to < my_from:
>>>             return 0
>>>
>>>         #      |--A--|
>>>         # --------------------
>>>         #  |------B-------|
>>>         elif my_from >= his_from and my_to <= his_to:
>>>             return 1
>>>
>>>         #    |-----A-------|
>>>         # --------------------
>>>         #        |-B-|
>>>         elif my_from < his_from and my_to > his_to:
>>>             my_diff_to_reuse = diff_in_seconds(my_from, my_to)
>>>             diff = my_diff_to_reuse - self.diff_in_seconds(his_from,
>>> his_to)
>>>
>>>             return (diff / my_diff_to_reuse)
>>>
>>>         #   |---A---|
>>>         # --------------------
>>>         #       |---B---|
>>>         elif my_from <= his_from and my_to <= his_to:
>>>             diff = self.diff_in_seconds(his_from, my_to)
>>>
>>>             return (diff / self.diff_in_seconds(my_from, my_to))
>>>
>>>         #         |---A---|
>>>         # --------------------
>>>         #    |---B---|
>>>         elif my_from >= his_from and my_to >= his_to:
>>>             diff  = self.diff_in_seconds(my_from, his_to)
>>>
>>>             return (diff / self.diff_in_seconds(my_from, my_to))
>>>
>>>         # If I'm here I have a problem
>>>         return 0
>>>
>>>
>>>     def diff_in_seconds(date1, date2):
>>>         # Initial from: http://www.bytemycode.com/snippets/snippet/304/
>>>         timedelta = date2 - date1
>>>         diff = timedelta.days*24*3600 + timedelta.seconds
>>>
>>>         return abs(float(diff))
>>>
>>> Thanks!
>>> --
>>> Please, don't send me files with extensions: .doc, .docx, .xls, .xlsx,
>>> .ppt and/or .pptx
>>> http://mirblu.com
>>>
>>> --
>>> You received this message because you are subscribed to the Google Groups
>>> "Django users" group.
>>> To post to this group, send email to django-us...@googlegroups.com.
>>> To unsubscribe from this group, send email to
>>> django-users+unsubscr...@googlegroups.com<django-users%2bunsubscr...@googlegroups.com>
>>> .
>>> For more options, visit this group at
>>> http://groups.google.com/group/django-users?hl=en.
>>>
>>
>>  --
>> You received this message because you are subscribed to the Google Groups
>> "Django users" group.
>> To post to this group, send email to django-us...@googlegroups.com.
>> To unsubscribe from this group, send email to
>> django-users+unsubscr...@googlegroups.com<django-users%2bunsubscr...@googlegroups.com>
>> .
>> For more options, visit this group at
>> http://groups.google.com/group/django-users?hl=en.
>>
>
>
>
> --
> Please, don't send me files with extensions: .doc, .docx, .xls, .xlsx, .ppt
> and/or .pptx
> http://mirblu.com
>
> --
> You received this message because you are subscribed to the Google Groups
> "Django users" group.
> To post to this group, send email to django-us...@googlegroups.com.
> To unsubscribe from this group, send email to
> django-users+unsubscr...@googlegroups.com<django-users%2bunsubscr...@googlegroups.com>
> .
> For more options, visit this group at
> http://groups.google.com/group/django-users?hl=en.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-us...@googlegroups.com.
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en.

Reply via email to