dhdat是一个python包,它提供了生成交互矩阵和计算与优势层次结构相关的度量的基本工具。

dhdat的Python项目详细描述


优势层次开发分析工具(dhdat)

<表> 作者:埃里克范海林根 电子邮件 日期:2019年7月4日 dhdat是一个python包,具有生成交互矩阵和计算多个与优势层次相关的度量的基本工具 <表>

许可证

版权所有(c)2019,van Haeringen。这个软件包是在麻省理工学院的许可下发布的,欢迎您使用或改进。对于任何出版物,无论是使用或包括(部分)本软件包(模块)副本的研究或软件,请引用本著作。

先决条件

安装

要安装默认python安装的软件包,请使用终端执行下面的命令。

pip install dhdat

对于其他python安装,将pip替换为其相应pip可执行文件的路径

内容

  1. 矩阵
  2. 组合生成器
  3. 三元组
  4. ttri
  5. 网络状态
  6. adi
  7. 爆发
  8. 双唇
  9. taukr
  10. < > >

    模块

    <H3>1。矩阵< /H3>

    说明

    基于参与者列表构建交互矩阵,并用pandas数据集中的行填充该矩阵。 这些矩阵对象被其他模块使用,例如计算优势指数XI。 交互的赢家是行,输家是列。

    如何使用

    通过使用参与者标识符列表初始化矩阵来创建新的矩阵对象。 这个矩阵对象包含三个熊猫数据帧,一个是攻击开始的交互矩阵(d_mi),一个是战斗结果的累积矩阵(d_mc),另一个是战斗结果的非累积矩阵(d_mnc)。

    fromdhdatimportMatrixactorIDs=[1,2,3,4]matrix=Matrix(actorIDs)#new interaction matrix of size len(actorIDs)print(matrix.d_mC)#shows cumulative matrixprint(matrix.d_mNC)#shows non-cumulative matrix

    矩阵可以用pandas数据框中的一行进行更新。此数据帧的结构应为每个交互包含一行,其中至少包含列'actor.id''actor.behavior''receiver.id''receiver.behavior''actor.id''receiver.id'列应包含初始化时提供给矩阵对象的actorid,以指示谁启动了主导交互(actor.id)和谁是接收器(receiver.id)。 'actor.behavior''receiver.behavior'列应包含字符串"打架"或"逃跑",指示打架的结果(打架=输赢)。 因此,actor可以是初始化交互但随后丢失交互并逃离的人。pandas数据框应该类似于下面的示例。

    importpandasaspd#load data from csv filedf=pd.read_csv("exampleDataSet.csv",delimiter="\t")print(df)

    示例数据集:

       run  time  actor.id  receiver.id actor.behavior receiver.behavior
    0    0    23         4            2          Fight              Flee
    1    0   112         2            3           Flee             Fight
    2    0   278         1            3          Fight              Flee
    3    0   315         4            2          Fight              Flee
    4    0   801         4            2           Flee             Fight
    5    0   932         1            3          Fight              Flee
    6    0   966         3            1           Flee             Fight
    

    可以通过调用更新所有矩阵的update()或通过调用单个矩阵的更新函数(updateinitiated()updatecumulative()updateoncumulative())将交互添加到矩阵中。 更新函数需要如上所述的pandas数据框的行(交互)。下面的示例显示了一个简单的基于循环的循环,它使用各个矩阵的更新函数将dataframedf中的所有交互相加。 注意UPDA下面示例中的te语句也可以写成3个单独的特定于矩阵的更新语句,其结果相同(例如matrix.updatecumulative(df.loc[interaction,:]))。

    fromdhdatimportMatriximportpandasaspddf=pd.read_csv("exampleDataSet.csv",delimiter="\t",index_col=0)actorIDs=[1,2,3,4]#list of actor identifiersmatrix=Matrix(actorIDs)#setup matrix object with actor identifiersforinteractionindf.index:#add new interaction to the matricesmatrix.update(df.loc[interaction,:])print("Initiations matrix\n",matrix.d_mI)print("\nCumulative interaction matrix\n",matrix.d_mC)print("\nNon-cumulative interaction matrix\n",matrix.d_mNC)

    输出:

    Initiations matrix
       1  2  3  4
    1  0  0  2  0
    2  0  0  1  0
    3  1  0  0  0
    4  0  3  1  0
    
    Cumulative interaction matrix
       1  2  3  4
    1  0  0  3  0
    2  0  0  0  1
    3  0  1  0  1
    4  0  2  0  0
    
    Non-cumulative interaction matrix
       1  2  3  4
    1  0  0  1  0
    2  0  0  0  1
    3  0  1  0  1
    4  0  0  0  0
    

    包含矩阵的数据帧可以直接访问,如上面的示例所示。 还有函数exportinitiated()exportcumulative()exportnoncumulative()将相应的矩阵存储为一个以制表符分隔的csv文件。 函数参数是文件名运行号。 这将导致以下文件名结构:[filename][run_number]\u matrix[type].csv其中matrix type是i表示启动,c表示累积,nc表示非累积。

    #produces 'test_5_matrixNC.csv'matrix.exportNonCumulative("test_",5)#produces 'test2_14_matrixC.csv' in subdirectory 'figures'matrix.exportCumulative("figures/test2_",14)

    <H3>2。组合生成器

    说明

    类,该类使用递归函数基于一组参与者生成所有可能的三角形,并将这些组合存储在pandas数据帧中。 递归算法的灵感来自于一个例子(在c中),它是由bateesh

    如何使用

    组合对象用要组合的元素(参与者)列表和每个组合的元素数初始化。下面是三个人的所有组合的示例,可以用四个人组合。

    fromdhdatimportCombinationMakeractorIDs=[1,2,3,4]#calculate all triad combinations of 4 actorscombinations=CombinationMaker(actorIDs,3)

    这些组合存储在pandas数据框中。 可以直接访问此成员,或者函数getresults()返回此成员。

    combinations.getResults()

    输出:

    pip install dhdat
    
    0
    <H3>3。三联征

    说明

    计算从交互矩阵读取的优势网络中的三元组基序。 参见wasserman&faust(1994)或shizuka&mcdonald(2012)了解triad编码的详细信息。 这个类可以计算只有有向关系的任意三元组基序,在这种情况下,相互(相等)关系被忽略。 或者它也可以计算包含一个或多个相互关系的三元组基序。

    如何使用

    空间坐标轴初始化时,可以选择"相互空间坐标轴基序计数"(False或True)和包含空间坐标轴的所有可能的参与者组合的aCombinationMaker对象。

    pip install dhdat
    
    1

    triads对象使用函数count()对triads进行计数,该函数需要一个累积或非累积的矩阵和当前交互的索引。 生成的motif count存储在pandas数据框d廑triadcount中,位于提供给count()函数的索引处。

    pip install dhdat
    
    2

    输出:

    pip install dhdat
    
    3
    <H3>4。Ttri

    说明

    根据优势网络的三位一体基序计数计算ttri,如Shizuka和McDonald(2012)所述。 如果选择"mutual"选项,则在计算ttri时会包括mutual triad。 否则,ttri仅在具有定向边的triad上计算。

    如何使用

    要计算ttri首先必须使用triad count of mutual relations(true或false)选项初始化ttri对象。 此选项应与选择的选项相对应,以计算空间坐标轴图案。由于空间坐标轴计数可以在累积矩阵或非累积矩阵上进行,因此ttri值可以测量每对中最后一个相互作用(非累积)的线性度,或者包括每对中所有先前的相互作用(累积),以确定一对相互作用的方向。表示。在Shizuka和McDonald引用的上述论文中,ttri是在包括所有记录的相互作用的最终累积相互作用矩阵上计算出来的。

    pip install dhdat
    
    4

    然后,ttri对象可以从atriads对象和当前交互的索引。 t tri存储在pandas数据帧d_ttri中,有一列't_tri',可以直接访问。 根据定义,ttri只能在至少有一个完整的triad(包含3个链接)时确定。 因此,本手册中使用的示例数据集不会产生任何值,因为没有完整的三元组,如前一个模块的演示所示

    pip install dhdat
    
    5

    输出:

    pip install dhdat
    
    6

    在有向(非相互)网络中,ttri是传递三元组模除以传递+循环三元组模的比例。在相互网络中,它使用传递权重除以完全三元组基序总数的比率,因为一些相互三元组基序被定义为部分传递。此度量忽略缺少链接(也称为关系或边)的基序。在这里给出的针对有向网络计算的ttri的例子中,不存在导致空域的完整模体(传递模体、循环模体)。详情请参见Shizuka和McDonald(2012年)。


    <H3>5。网络状态

    说明

    基于三元组基序计数确定由4个个体组成的网络的状态。 参见Lindquist和Chase(2009)对三合会主题网络的解释 国家和命名法。目前只支持4个人的网络。 增加组大小会导致可能的网络状态呈指数增长,因此很快变得不可行。

    如何使用

    networkstate对象是用参与者列表创建的。 若要确定交互矩阵的网络状态,成员函数determine()需要atriads对象的triad state countd\triadstate和当前交互的数量作为存储结果的索引。 由于对于某些状态,仅由triads motif count不足以确定网络状态,另外,a矩阵对象的非累积矩阵d\mnc是必需的参数。 状态作为p and as数据帧存储在数据成员中,可以直接访问。

    pip install dhdat
    
    7

    输出:

    pip install dhdat
    
    8
    <H3>6。ADI<H3>

    说明

    根据累积相互作用矩阵计算平均优势指数(ADI),如Hemelrijk等人所述。(2005)

    如何使用

    一个adi对象是用参与者列表创建的。 然后,使用a矩阵对象中的累积交互矩阵来计算交互调用成员函数calculate()的ADI,以及用作存储计算的索引的当前交互数。埃德·阿迪值。 adi值存储在pandas数据框中,每个actor都有一个列adi[actorid],可以直接访问。

    pip install dhdat
    
    9

    输出:

    fromdhdatimportMatrixactorIDs=[1,2,3,4]matrix=Matrix(actorIDs)#new interaction matrix of size len(actorIDs)print(matrix.d_mC)#shows cumulative matrixprint(matrix.d_mNC)#shows non-cumulative matrix
    0
    <H3>7。< < > >

    说明

    计算优势指数XI,这是攻击性的比例。 赢得交互作用,对于累积交互矩阵,如Lindquist所述 和蔡斯(2009年)

    如何使用

    一个XI对象是用一个演员列表创建的。 然后计算一个交互调用成员函数<代码>计算器()/Case>一个累积交互矩阵<强> dYMC >从一个HRFF="α1矩阵"Re="NoFoLoLy">矩阵对象, 和当前交互的数目,其用作存储计算的Xi值的索引。 XI值存储在大熊猫数据文件<强> dxX中,每个参与者都有一个列 Xi[AcTyID] ,可以直接访问。

    fromdhdatimportMatrixactorIDs=[1,2,3,4]matrix=Matrix(actorIDs)#new interaction matrix of size len(actorIDs)print(matrix.d_mC)#shows cumulative matrixprint(matrix.d_mNC)#shows non-cumulative matrix
    1

    输出:

    fromdhdatimportMatrixactorIDs=[1,2,3,4]matrix=Matrix(actorIDs)#new interaction matrix of size len(actorIDs)print(matrix.d_mC)#shows cumulative matrixprint(matrix.d_mNC)#shows non-cumulative matrix
    2
    <H3>8。爆发< < /H3>

    说明 德特CTS是否爆发发生,一个模式的重复连续攻击在同一个方向内,由林德奎斯特和蔡斯(2009)描述。 它通过比较当前交互作用和以前交互作用的方向来实现这一点。请注意,此定义不包括时间分量。

    如何使用

    一个新的突发对象可以通过定义而不需要任何参数。 要确定某个交互是突发事件的一部分,成员函数detect()需要一行包含当前交互的pandas数据帧,一行包含上一个交互的数据帧,以及当前交互的数量,以用作存储产生突发值。 结果(真或假)存储在数据成员d_突发中,可以直接访问,如下所示。 这个例子展示了如何使用一个简单的for循环突发事件来检测一组交互,方法是存储以前的交互索引。 根据定义,第一次交互永远不会是突发,因此被跳过。

    fromdhdatimportMatrixactorIDs=[1,2,3,4]matrix=Matrix(actorIDs)#new interaction matrix of size len(actorIDs)print(matrix.d_mC)#shows cumulative matrixprint(matrix.d_mNC)#shows non-cumulative matrix
    3

    输出:

    fromdhdatimportMatrixactorIDs=[1,2,3,4]matrix=Matrix(actorIDs)#new interaction matrix of size len(actorIDs)print(matrix.d_mC)#shows cumulative matrixprint(matrix.d_mNC)#shows non-cumulative matrix
    4

    第一个相互作用的场是空的,因为突发是一系列相互作用,因此只能在有先前相互作用的情况下发生。


    <H3>9。双唇

    说明

    检测成对翻转事件,即基于非累积交互矩阵的成对关系的反转。 这意味着一次反击就足以扭转这种关系,并被标记为一对翻转事件。检测这些事件 将当前相互作用中所涉及的对之间的关系的方向与先前相互作用的非累积相互作用矩阵进行比较。

    如何使用

    新的pairflips对象可以通过定义而不需要任何参数。 若要确定交互是否为成对翻转事件,成员函数detect()需要来自a交互的矩阵对象previous的非累积矩阵当前交互,以及要用作索引以存储结果对翻转值的当前交互的数目。 结果(true或false)存储在数据成员d_pairflips中,可以直接访问,如下所示。 这个例子展示了如何使用一个简单的for-loop对,通过存储先前的非累积矩阵,来检测一组交互的翻转事件。 根据定义,第一次交互永远不会是成对翻转,因此被跳过。

    fromdhdatimportMatrixactorIDs=[1,2,3,4]matrix=Matrix(actorIDs)#new interaction matrix of size len(actorIDs)print(matrix.d_mC)#shows cumulative matrixprint(matrix.d_mNC)#shows non-cumulative matrix
    5

    输出:

    fromdhdatimportMatrixactorIDs=[1,2,3,4]matrix=Matrix(actorIDs)#new interaction matrix of size len(actorIDs)print(matrix.d_mC)#shows cumulative matrixprint(matrix.d_mNC)#shows non-cumulative matrix
    6

    第一次交互的字段是空的,因为一对翻转是攻击方向的反转,因此根据定义,需要先前的交互。


    <H3>10。TauKr

    说明

    计算hemelrijk(1989)中定义的taukr,它测量一组矩阵之间的单向性。 下面的示例演示如何使用此模块计算攻击(启动)的互易性。

    如何使用

    可以定义一个新的taukr对象,而不需要任何参数。使用函数calculate()可以直接从两个矩阵计算taukr,或者通过向calculate嫒t()提供一个矩阵,根据所提供矩阵的转置版本计算taukr。 提供的矩阵必须是矩阵对象使用的熊猫数据帧。这两个函数还要求交互号用作索引,将结果存储在。 在下面的例子中,攻击的相互作用(战斗的开始)是通过计算a矩阵中的taukr来确定的。

    fromdhdatimportMatrixactorIDs=[1,2,3,4]matrix=Matrix(actorIDs)#new interaction matrix of size len(actorIDs)print(matrix.d_mC)#shows cumulative matrixprint(matrix.d_mNC)#shows non-cumulative matrix
    7

    输出:

    fromdhdatimportMatrixactorIDs=[1,2,3,4]matrix=Matrix(actorIDs)#new interaction matrix of size len(actorIDs)print(matrix.d_mC)#shows cumulative matrixprint(matrix.d_mNC)#shows non-cumulative matrix
    8

    注意索引0为空,因为没有足够的值来计算taukr

    欢迎加入QQ群-->: 979659372 Python中文网_新手群

    推荐PyPI第三方库


热门话题
Java:如何使用另一个类中的对象   如何在Java中迭代旁遮普语(阿拉伯语)?   类Java嵌套ArrayList返回对象   java正则表达式以匹配“:”之后包含的字符串   java为什么main()很好地显示“Lukaku”并包含_names()返回null?   java嵌套循环,无法理解如何编写此代码   java使用maven动物嗅探器插件检查自己的API   java上传的文件创建保存以备将来在GWT服务器端使用   java转换为Dalvik格式失败65536限制   Java后端的javascript最佳RIA工具   amazon web服务如何将tar文件从amazonS3 bucket提取到Java中的另一个s3   java如何在hibernate搜索中实现对int值的搜索?   使用Maven初始化引导层JavaFX时发生java错误   java Google登录API例外:10:   java Glassfish 3.1.2加载本机库(.dll)   java在join操作中使用TumblingWindow,但没有将任何元素传输到my JoinFunction   IBatis+Java:检索HashMap   多线程java与scala在单独线程上读取文件