使用if else语句创建可以根据所呈现的刺激进行调整的灵活公式

如何解决使用if else语句创建可以根据所呈现的刺激进行调整的灵活公式

我希望一切都好。我最近开发了一个代码(在出色的堆栈溢出社区的帮助下),以计算首次定位所需的时间,首次定位持续时间以及对感兴趣区域的总访问时间。我现在想更新它,以便可以根据所显示的刺激进行调整。具体而言,每个刺激之间的x和y坐标变化很小。我有一个刺激坐标的电子表格示例。如果我能读懂这些内容,那就太好了。将它与Final_Label数据中的“刺激”匹配,并能够在所有试验中计算和总结这些指标。因此,我需要代码中的一些基本内容-如果是这种刺激(例如,A1使用这些坐标等)。

谢谢您的帮助,请告知我目前是否可以提供更多信息。

保重并保持健康,

Caroline

from gekko import GEKKO
import numpy as np

# compare with numpy
xnp = np.logspace(-1,4,100)
ynp = np.log2(xnp)

gk = GEKKO(remote=False)
x = gk.Param(xnp)
y,z = gk.Array(gk.Var,2)

# define a new log2 function
def glog2(x):
    return gk.log(x)/np.log(2) 

gk.Equation(y==glog2(x))
gk.options.IMODE=2; gk.solve(disp=False)

import matplotlib.pyplot as plt
plt.semilogx(xnp,ynp,'b-',lw=4,label=r'$y=\log_2(x)$ Numpy')
plt.semilogx(x.value,y.value,'r--',lw=2,label=r'$y=\log_2(x)$ Gekko')
plt.legend(); plt.xlabel('x'); plt.ylabel('y'); plt.grid(); plt.show()

具有不同坐标的刺激列表的示例,可以整合到上述代码中。

Face_AOI <- Final_Labels %>%
    mutate(AOI_face = (mean_x >= .100 & mean_x <= .500 & mean_y >= .100 & mean_y <= .800),#These numbers are FAKE ###) %>%
    filter(AOI_face) %>%
    group_by(SubjectID,Trial) %>%
    summarize(Face_totalfixationduration = sum(Duration),Face_firstfixationduration = first(Duration),Face_timetofirstfixation = first(Start))
  
  
  Mouth_AOI <- Final_Labels %>%
    mutate(AOI_mouth = (mean_x >= .200 & mean_x <= .300 & mean_y >= .500 & mean_y <= .600)) %>%
    filter(AOI_mouth) %>%
    group_by(SubjectID,Trial) %>%
    summarize(Mouth_totalfixationduration = sum(Duration),Mouth_firstfixationduration = first(Duration),Mouth_timetofirstfixation = first(Start))
  
  Mouth_AOI$SubjectID <- NULL
  
  Eyes_AOI <- Final_Labels %>%
    mutate(
           AOI_eyes = (mean_x >= .200 & mean_x <= .300 & mean_y >= .500 & mean_y <= .600)) %>%
    filter(AOI_eyes) %>%
    group_by(SubjectID,Trial) %>%
    summarize(Eyes_totalfixationduration = sum(Duration),Eyes_firstfixationduration = first(Duration),Eyes_timetofirstfixation = first(Start))
  

这是Final_Labels数据框的示例


Df2 <- data.frame(Stimuli = c("A1","A1","A2","A2"),AOI = C("Face","Eyes","Mouth","Face","Mouth"),X1 = c(0,300,301,305,306),X2 = c(1022,600,604,604),Y1 = c(0,30,31,38),Y2 = c(0,6,306))

解决方法

这里的代码用于删除“ .jpg”并根据“刺激”值进行联接。

library(dplyr)
library(stringr)
Final_Labels %>%
  mutate(Stimuli = str_remove(Stimuli,fixed(".jpg"))) %>%
  full_join(Df2)
#    Stimuli Duration Start End mean_x mean_y   AOI  X1   X2 Y1  Y2
# 1       A1      300   100 160    0.3    0.5  Face   0 1022  0   0
# 2       A1      300   100 160    0.3    0.5  Eyes 300  600 30 300
# 3       A1      300   100 160    0.3    0.5 Mouth 301  600 31 301
# 4       A2       NA    NA  NA     NA     NA  Face   0    0  0   6
# 5       A2       NA    NA  NA     NA     NA  Eyes 305  604 30 305
# 6       A2       NA    NA  NA     NA     NA Mouth 306  604 38 306
# 7       A3      300     1 301    0.5    0.4  <NA>  NA   NA NA  NA
# 8       A4       60   100 160    0.4    0.5  <NA>  NA   NA NA  NA
# 9       A5       NA    NA  NA     NA     NA  <NA>  NA   NA NA  NA
# 10      H1       NA    NA  NA     NA     NA  <NA>  NA   NA NA  NA

我使用了full_join,它将保留两个数据帧中的所有行。如果您想要不同的行为,则可以使用innerleftright连接。 (内部将仅保留匹配的行,左侧和右侧将分别保留第一个或第二个数据帧中的所有行,而保留彼此匹配的任何行。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?