|
13 | 13 | from osekit.utils.timestamp_utils import strftime_osmose_format, strptime_from_text |
14 | 14 | from pandas import ( |
15 | 15 | DataFrame, |
| 16 | + NaT, |
16 | 17 | Timedelta, |
17 | 18 | concat, |
18 | 19 | date_range, |
@@ -398,28 +399,37 @@ def feeding_buzz( |
398 | 399 |
|
399 | 400 | """ |
400 | 401 | df["microsec"] /= 1e6 |
401 | | - df["ICI"] = df["microsec"].diff() |
| 402 | + |
| 403 | + try: |
| 404 | + df["Minute"].astype(int) |
| 405 | + df["datetime"] = ( |
| 406 | + to_datetime("1900-01-01") |
| 407 | + + to_timedelta(df["Minute"], unit="min") |
| 408 | + + to_timedelta(df["microsec"], unit="us") |
| 409 | + - to_timedelta(2, unit="D") |
| 410 | + ) |
| 411 | + df["start_datetime"] = df["datetime"].dt.floor("min") |
| 412 | + except (ValueError, TypeError): |
| 413 | + df["datetime"] = (df["Minute"]).astype(str) + ":" + (df["microsec"]).astype(str) |
| 414 | + df["datetime"] = to_datetime(df["datetime"], dayfirst=True) |
| 415 | + df["start_datetime"] = to_datetime(df["Minute"], dayfirst=True) |
| 416 | + |
| 417 | + df["ICI"] = df["datetime"].diff() |
| 418 | + df["ICI"] = to_timedelta(df["ICI"], errors="coerce") |
| 419 | + |
| 420 | + mask = df["ICI"] > Timedelta("1 days") |
| 421 | + df.loc[mask, "ICI"] = NaT |
402 | 422 |
|
403 | 423 | if species == "Dauphin": # Herzing et al., 2014 |
404 | | - df["Buzz"] = (df["ICI"].between(0, 0.02)).astype(int) |
| 424 | + df["Buzz"] = (df["ICI"] < Timedelta(seconds=0.02)).astype(int) |
405 | 425 | elif species == "Marsouin": # Nuuttila et al., 2013 |
406 | | - df["Buzz"] = (df["ICI"].between(0, 0.01)).astype(int) |
| 426 | + df["Buzz"] = (df["ICI"] < Timedelta(seconds=0.01)).astype(int) |
407 | 427 | elif species == "Commerson": # Reyes Reyes et al., 2015 |
408 | | - df["Buzz"] = (df["ICI"].between(0, 0.005)).astype(int) |
| 428 | + df["Buzz"] = (df["ICI"] < Timedelta(seconds=0.005)).astype(int) |
409 | 429 | else: |
410 | 430 | msg = "This species is not supported" |
411 | 431 | raise ValueError(msg) |
412 | 432 |
|
413 | | - try: |
414 | | - df["Minute"].astype(int) |
415 | | - df["datetime"] = (to_datetime("1900-01-01") + |
416 | | - to_timedelta(df["Minute"], unit="min") + |
417 | | - to_timedelta(df["microsec"], unit="us") - |
418 | | - to_timedelta(2, unit="D")) |
419 | | - df["start_datetime"] = df["datetime"].dt.floor("min") |
420 | | - except (ValueError, TypeError): |
421 | | - df["start_datetime"] = to_datetime(df["Minute"], dayfirst=True) |
422 | | - |
423 | 433 | f = df.groupby(["start_datetime"])["Buzz"].sum().reset_index() |
424 | 434 |
|
425 | 435 | f["Foraging"] = to_numeric(f["Buzz"] != 0, downcast="integer").astype(int) |
|
0 commit comments