Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从连接创建K-mer_Python_Pandas_Graph Theory - Fatal编程技术网

Python 从连接创建K-mer

Python 从连接创建K-mer,python,pandas,graph-theory,Python,Pandas,Graph Theory,我的第一个问题。想不出什么好标题:(请原谅我的错误 数据: 我有一个来自scipy cdist的矩阵(dataframe),它是点之间的距离。x,y==y,x。对角线是0 scipy cdist给出了一个矩阵(所有区域),如下所示: 列和行太多,粘贴站点拒绝了整个数据 0 1. 2. 3. 4. 5. 6. 7. 0 0 3.820418 6.939914 10.394031 12.986421 15.954358 18.466566 17.150426 1. 3.820418 0 3.80

我的第一个问题。想不出什么好标题:(请原谅我的错误

数据: 我有一个来自scipy cdist的矩阵(dataframe),它是点之间的距离。x,y==y,x。对角线是0

scipy cdist给出了一个矩阵(所有区域),如下所示:

  • 列和行太多,粘贴站点拒绝了整个数据
0 1. 2. 3. 4. 5. 6. 7. 0 0 3.820418 6.939914 10.394031 12.986421 15.954358 18.466566 17.150426 1. 3.820418 0 3.808182 6.768351 9.546234 12.570400 14.821706 13.363969 2. 6.939914 3.808182 0 3.801501 6.281040 9.015788 11.679313 10.835315 3. 10.394031 6.768351 3.801501 0 3.803191 6.066118 8.078145 7.233544 4. 12.986421 9.546234 6.281040 3.803191 0 3.798256 6.464700 5.730587 5. 15.954358 12.570400 9.015788 6.066118 3.798256 0 3.813902 5.525810 6. 18.466566 14.821706 11.679313 8.078145 6.464700 3.813902 0 3.806409 7. 17.150426 13.363969 10.835315 7.233544 5.730587 5.525810 3.806409 0
据我所知,您希望显示从每个节点到每个节点的所有路径,其长度正好为5跳

算法:

  • 将表格转换为用于指定图形中链接的常规格式
所以

变成

1 2
1 12
0 2
0 3
0 10
0 11
0 12
0 13
  • 将链接读入任何图形库(我使用boost::graph),每个链接成本设置为1

  • 循环节点以获取源节点

    • 运行Dijsktra算法。(这给出了从源节点到其他每个节点的路径和成本)

    • 循环其他节点以获取目标节点

      • 如果从源到目标的成本等于5,则打印路径

在C++中使用BooSo::Grime

实现该算法
void cPathFinder::gsingh()
{
    //loop over source nodes
    for (int src = 0; src < nodeCount(); src++)
    {
        // Run Dijsktra
        myStart = src;
        paths(src);

        // loop over destination nodes
        for (int dst = 0; dst < nodeCount(); dst++)
        {
            if (src == dst)
                continue;

            // display paths that visit 5 nodes
            if (pathPick(dst).size() == 5)
                std::cout << pathText();
        }
    }
}

仅供参考,总共有12546条路径,长度为'5个节点

您的问题是什么?简单地说,如何为所有点获得大小为5的所有连接。看起来您已经成功地做到了。debian链接似乎已经有了结果。需要做的是浏览该表,并选择具有5个连接的行。我认为墨水有小的缺失。例如:如果1与其他5个连接(11,12,13,14,15).这不是答案。答案是11连接到什么。形成连接1->11->24。现在这24连接到什么使1->11->24->31。接下来是31,使其成为1->11->24->31->54。这是5个元素的一个组合。同样,1连接到12。形成这些连接。甚至11,12连接到多个点,所以这些组合也将在那里。想象它像一个大小为5个节点的树。从结束节点移动到第一个,所有可能的链接都应该报告。
void cPathFinder::gsingh()
{
    //loop over source nodes
    for (int src = 0; src < nodeCount(); src++)
    {
        // Run Dijsktra
        myStart = src;
        paths(src);

        // loop over destination nodes
        for (int dst = 0; dst < nodeCount(); dst++)
        {
            if (src == dst)
                continue;

            // display paths that visit 5 nodes
            if (pathPick(dst).size() == 5)
                std::cout << pathText();
        }
    }
}
1 -> 3 -> 8 -> 7 -> 149
1 -> 13 -> 15 -> 17 -> 18
1 -> 13 -> 15 -> 276 -> 277
1 -> 13 -> 15 -> 17 -> 19
1 -> 13 -> 15 -> 17 -> 52
1 -> 13 -> 15 -> 276 -> 278
1 -> 12 -> 47 -> 42 -> 38
1 -> 12 -> 48 -> 43 -> 39
1 -> 12 -> 48 -> 43 -> 40
1 -> 12 -> 48 -> 43 -> 41
1 -> 12 -> 48 -> 43 -> 44
1 -> 12 -> 47 -> 42 -> 284
1 -> 11 -> 49 -> 80 -> 81
1 -> 11 -> 49 -> 77 -> 74
1 -> 11 -> 49 -> 77 -> 75
1 -> 11 -> 49 -> 77 -> 76
1 -> 11 -> 49 -> 80 -> 118
1 -> 11 -> 49 -> 80 -> 117
1 -> 11 -> 49 -> 80 -> 119
1 -> 11 -> 49 -> 80 -> 120
1 -> 3 -> 5 -> 171 -> 150
1 -> 3 -> 5 -> 171 -> 151
1 -> 3 -> 5 -> 171 -> 152
1 -> 3 -> 5 -> 170 -> 168
1 -> 3 -> 5 -> 171 -> 169
1 -> 3 -> 5 -> 171 -> 172
1 -> 3 -> 5 -> 171 -> 173
1 -> 13 -> 274 -> 200 -> 174
1 -> 3 -> 5 -> 171 -> 198
1 -> 13 -> 274 -> 200 -> 175
1 -> 13 -> 274 -> 200 -> 176
1 -> 13 -> 14 -> 275 -> 201
1 -> 13 -> 274 -> 200 -> 202
1 -> 13 -> 274 -> 200 -> 203
1 -> 13 -> 272 -> 270 -> 188
1 -> 3 -> 5 -> 195 -> 191
1 -> 3 -> 5 -> 195 -> 192
1 -> 3 -> 5 -> 195 -> 193
1 -> 3 -> 5 -> 195 -> 194
1 -> 13 -> 291 -> 290 -> 259
1 -> 13 -> 291 -> 290 -> 262
1 -> 13 -> 291 -> 290 -> 263
1 -> 13 -> 272 -> 266 -> 264
1 -> 13 -> 272 -> 266 -> 265
1 -> 13 -> 272 -> 266 -> 267
1 -> 13 -> 272 -> 266 -> 268
1 -> 13 -> 272 -> 270 -> 269
1 -> 13 -> 15 -> 276 -> 287
1 -> 13 -> 291 -> 288 -> 285
1 -> 13 -> 291 -> 288 -> 286
1 -> 13 -> 291 -> 292 -> 294
1 -> 13 -> 291 -> 293 -> 295
0 -> 2 -> 4 -> 7 -> 170
0 -> 2 -> 4 -> 5 -> 171
0 -> 2 -> 4 -> 6 -> 195
0 -> 2 -> 4 -> 6 -> 196
0 -> 2 -> 4 -> 7 -> 149
0 -> 12 -> 15 -> 17 -> 18
0 -> 12 -> 15 -> 17 -> 51
0 -> 12 -> 15 -> 276 -> 277
0 -> 12 -> 15 -> 17 -> 19
0 -> 12 -> 15 -> 17 -> 52
0 -> 12 -> 15 -> 276 -> 278
0 -> 12 -> 47 -> 42 -> 38
0 -> 12 -> 47 -> 42 -> 39
0 -> 12 -> 47 -> 42 -> 40
0 -> 12 -> 47 -> 42 -> 41
0 -> 12 -> 47 -> 42 -> 44
0 -> 12 -> 47 -> 42 -> 284
0 -> 12 -> 48 -> 78 -> 79
0 -> 12 -> 48 -> 78 -> 80
0 -> 12 -> 48 -> 77 -> 74
0 -> 12 -> 48 -> 77 -> 75
0 -> 12 -> 48 -> 78 -> 76
0 -> 12 -> 48 -> 78 -> 118
0 -> 2 -> 272 -> 197 -> 172
0 -> 2 -> 272 -> 197 -> 198
0 -> 2 -> 272 -> 273 -> 199
0 -> 1 -> 13 -> 274 -> 200
0 -> 12 -> 14 -> 275 -> 201
0 -> 2 -> 272 -> 270 -> 188
0 -> 2 -> 272 -> 197 -> 191
0 -> 2 -> 272 -> 270 -> 192
0 -> 2 -> 272 -> 266 -> 262
0 -> 2 -> 272 -> 266 -> 263
0 -> 1 -> 13 -> 291 -> 290
0 -> 2 -> 272 -> 266 -> 264
0 -> 2 -> 272 -> 266 -> 265
0 -> 2 -> 272 -> 266 -> 267
0 -> 1 -> 13 -> 291 -> 293
0 -> 2 -> 272 -> 266 -> 268
0 -> 2 -> 272 -> 270 -> 269
0 -> 12 -> 15 -> 276 -> 287
0 -> 12 -> 14 -> 288 -> 285
0 -> 12 -> 14 -> 288 -> 286
0 -> 1 -> 13 -> 291 -> 289
0 -> 1 -> 13 -> 291 -> 292