Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.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 基于图形的元组合并?_Python_Algorithm_Graph Algorithm_Bioinformatics - Fatal编程技术网

Python 基于图形的元组合并?

Python 基于图形的元组合并?,python,algorithm,graph-algorithm,bioinformatics,Python,Algorithm,Graph Algorithm,Bioinformatics,我在元组中有成对的值,它们是相关的匹配项(从技术上讲,仍然在CSV文件中)。两个成对的值都不一定是唯一的 tupleAB = (A####, B###), (A###, B###), (A###, B###)... tupleBC = (B####, C###), (B###, C###), (B###, C###)... tupleAC = (A####, C###), (A###, C###), (A###, C###)... 我的理想输出是一个具有唯一ID和“强化”匹配列表的字典。我试图

我在元组中有成对的值,它们是相关的匹配项(从技术上讲,仍然在CSV文件中)。两个成对的值都不一定是唯一的

tupleAB = (A####, B###), (A###, B###), (A###, B###)...
tupleBC = (B####, C###), (B###, C###), (B###, C###)...
tupleAC = (A####, C###), (A###, C###), (A###, C###)...
我的理想输出是一个具有唯一ID和“强化”匹配列表的字典。我试图在基于图形的上下文中思考它

例如,如果:

tupleAB[x] = (A0001, B0012)
tupleBC[y] = (B0012, C0230)
tupleAC[z] = (A0001, C0230)
这将产生:

output = {uniquekey0001, [A0001, B0012, C0230]}
理想情况下,这也可以扩展到三个以上的元组(例如,添加一个“D”匹配,这将导致额外的三个元组-AD、BD和CD-以及四个项目的列表长度;等等)

关于向上扩展到更多元组,我愿意拥有不一定完全连接的“图”,即每个节点连接到每个其他节点。我的直觉是,我可以很容易地根据列表长度进行筛选。我愿意接受任何建议

我想,喝几杯咖啡,我就可以想出一个暴力解决方案,但我想我应该问问社区是否有人知道一个更优雅的解决方案。谢谢你的反馈

编辑1进行澄清:在图形上下文中,我找到了一种我认为可以检测工作周期的方法(http://en.wikipedia.org/wiki/Cycle_detection_(图论)#循环#检测)。如果这给任何人敲响了警钟,我想我是在试图识别由元组中的成对值构造的图中的循环

编辑2:好的,这是计划: 1) 获取csv文件并构建图形分析 2) 在关联矩阵的每个节点上执行(并在原始节点上结束一个循环) 3) 尽量扩大独特的“字母”(A、B、C等——在我的例子中,字母代表物种)
4) 这些最大物种深度优先搜索是字典中的列表

我想你想要的是沃沙尔的弗洛伊德算法变体:


这将在O(n^3)时间内找到图形中的所有可到达对。

对于某些字母,可以有不同的值吗?与tupleAB[x]=(A0001,B0013)tupleBC[y]=(B0012,C0230)一样,字母A,B,C是常量(在我的例子中,它们代表不同的物种,数字######代表物种内的某些基因,成对的值是物种间匹配的基因对)。x、y、z仅表示成对值数据集中的某一行。这解决了你的问题吗?你的csv文件在一行中描述了两个物种之间所有匹配的基因。有可能创建一个图表来表示这些关系,它会产生几个图表(当然是完整的图表),每个图表代表一个在许多物种中共享的特定基因。所以你的问题应该是找到所有康奈克斯化合物。我说的对吗?是的,这就是我要解决的问题。我将在上面添加它作为另一个编辑,但此时我的方法是获取我的csv文件,构造关联矩阵,并在每个节点上执行深度优先搜索。理论上,我应该能够实现一些边缘长度截止值(或者某种最大化物种的方法),并且只有跨越大多数物种的基因。