I am working on a chemical oligomerization reaction network and have generated a Cytoscape network showing each molecular species and intermediate ions in each node and each connecting edge represents a reaction pathway. The issue is, in this system most reactions are reversible and thus two edges are generated between two nodes and there is no reasonable way to edit my network simulation outputs to remove the reverse reactions. Is there a way I can delete the double edges between two nodes without having to do it manually? An example image of a small section of my network showing the issue
Is this for the Cytoscape desktop or cytoscape.js? For Cytoscape desktop, you can collapse multiple edges using the Edit->Remove duplicate edges...
-- scooter
Related
I'm doing a robot navigation and path planning project based on simulating the turtlebot3 and driving with the A* planner.
I'm using a program that allows the robot to plan a route only through 'cells' with no cost value (aka. freespace with an inflation cost of 0). However, adjusting the inflation radius I'm experiencing that the robot either cannot pass through narrow openings when the inflation is higher, but drive along a wall when it is low.
I'm wondering if there is a way to control the inflation or something? My desires outcome is for the robot to drive in the center of wide hallways, not along walls, but be able to pass through doors that it should be able to fit through.
Thank you.
I managed to solve this problem thanks to some advice that made me look outside the box.
The problem was intrinsic to my planner, the fact that allowed space to navigate through was binary (aka. either perfectly allowed to drive through or not allowed).
Instead I changed it so that all space other than the walls were allowed space, and added the cost of a cell (from the cost map) to the cells. That way instead of being binary whether the drive can or can't drive in a cell, both the distance and cost of the cells affect the robots path, making it try to keep away from walls, but able to pass through places of high cost if there's no other way.
I'm currently creating a system of spheres which can actuate to push each other away. There are center bodies (teal) at each corner which are connected to connecting bodies (yellow) via PrismaticJoint which are connected in the same way to the next corner.
When creating a one dimensional system of spheres, for example, a 1x1x4 system, I run into no errors and the system behaves as expected.
In trying to create a system of eight spheres in a 2x2x2 orientation, I'm running into mobilization errors.
Here is what the system looks like:
And the error:
terminate called after throwing an instance of 'std::runtime_error'
what(): This mobilizer is creating a closed loop since the outboard body already has an inboard mobilizer connected to it. If a physical loop is really needed, consider using a constraint instead.
Aborted (core dumped)
I understand that the error comes for joints sharing child or outward bodies, like in the case for two sides of the cube actuating one corner. Unfortunately, I haven't found a way to pivot using constraints successfully. How can I better define this system?
One way to address this is to use a Drake bushing element (essentially a stiff spring and damper) to emulate a "weld" constraint. There is a nice example of this approach in Drake -- see examples/multibody/four_bar.
The general idea is to break topological loops by sawing through one or more bodies, then welding them back together with a bushing (which does not count as a topological loop).
I am quite new to Gephi, but after reading the tutorials on the official page I manged to make a decent graph. However, after adding few more nodes and edges to the database (currently has 31 nodes and 45 edges -see below) and re-generating the graph from layout tab, the graph disappeared and the "Force Atlas" distribution won't stop loading. I tried with other layout distributions with same results and I also tried with the zoom to extents icon but nothing would show up.
Can anyone tell me why is this happening and how could I fix that?
I am attaching two csv files which contain an anonymized version of my nodes and edges:
Nodes.csv
Edges.csv
I have found a workaround in order to solve my problem: I ran the randomized layout (name may differ, as I am using a localized version), which results in a not so nice layout which fits in the screen (which is its main achievement). After that, I can run other distributions such as "Force Atlas" and nodes and edges would show up and fit on the screen.
We have a simple robotic model with revolute joins in v-rep. The joints are in force/torque mode, and they are controlled via non-threaded child script using simSetJointTargetVelocity function of the simulator. The collision is enabled in the model, and some toy weights are set to the connecting poles.
The error we have is that the blue part of the joint (the movable part) "wiggles" around and eventually out of the red part of the joint (the fixed case). Here's a screenshot showing the error.
(The blue part of the upper joint should be inside the red part, as is in the lower joint)
How to fix the moving part of the joint so that it doesn't move around, but only rotates as requested by the velocity settings?
What do you mean by "toy weights" ?
You should keep in mind that physical simulations are relatively fragile and that some restrictions apply. In your case, it seems the masses you set are making the simulation behave strangely. Try to keep the mass ratio between linked objects below 1/10.
You can also modify the simulation settings, to increase its precision. You can do that in the simulation settings dialog (http://www.coppeliarobotics.com/helpFiles/) and in the general dynamics properties dialog. You can also try if your simulation works better with another physics engine than bullet (I suggest "Newton").
For more info you should take a look at http://www.coppeliarobotics.com/helpFiles/en/designingDynamicSimulations.htm, especially at the "Design considerations" section.
I see some ways to do it:
1) Draw using OpenGL programmatically.
2) Draw using QuartzCore and CoreAnimation programmatically.
3) Draw map in AutoCad and then somehow connect it to iOS.
4) Draw map using SVG.
Requirments are supporting pathfinding and gps navigation.
For first 2 ways I think that it's expensive in terms of performance way, redraw all elements on scaling; and I don't think that this way may have GPS-navigation support.
Using AutoCad pictured maps is hard to understand for me how to connect it with graphs\paths for pathfinding.
My colleagues will develop this app on web using SVG. I found it - https://github.com/SVGKit/SVGKit , but still have no idea how it will support pathfinding and navigation.
I would appreciate any help.
Generally there are two types of map application:
A) They display a map, (with or without a user position) without needing to calculate a path like a navigation system does (see point B)
B) Application that use the vectors of a map and calculate something: e.g to find a best path. The shortest connection, e.g A navighation system , etc.
Application for A) are usually less complex then that of B), because the vectors can be somewhat inacurate, have no conections, have small gaps, have no logic between the edges, etc.
1) To only display a building map, you would only need a list of edges. (An edge is pair of coordinates (x1,y1) - (x2,y2). How ever you get that. E.g MapInfo Professional format mif/mid.
Or even you could dispaly a pdf that contains the map of the builing. Right with the built in PDF View, (also with SVG but more difficult).
Things get much more complicated if it is not a relative map, but also a map that is positioned with an reference coordinate system, like latitude/longitude (WGS84).
In that case you would use a Tool (mapInfoProfessional, to import AutoCad DXF Files, and apply 3 GPS measured reference points at the corner of the house, and convert that to LatLong WGS84 coordinates system.
With ios you cannot measure that 3 Points because you cannot average a position, ios stops sending when you are standing still at one corner of the house.
You could try to extract the positions from a google earth satellite foto if you are living in a region where google Sattelite fotos have high resolution. (But this might violate the license conditions of that Satellite Foto provider (Topic: derived data))
Finally you now have a list of edges in Lat Lon coordinate System.
For Displaying I personally would either do with 1) OpenGL) or 2) Quartz2D.
Now the Path finding part.
Probaly you need a second "map" that defines the possible paths inside the building.
This structure must be a connect graph (points with connected neighbours).
Computer games do it that way. (Some even allow you to display that path in developper mode)
The path can be drawn, in a different layer of the floor plan. But this path
has higher requirements: No gaps are allowed, all must be perfect connected.
Call that layer "Path" and export it as own plan.
Now use only this path layer, and import, and create a graph of nodes with connect neighbours.
Use Dijkstra Algo to search for shortest path.