Commit graph

212 commits

Author SHA1 Message Date
Yann Lanthony
1f223ccc54 [graph] limit scope of graph update to outdated nodes
Don't update every nodes in the graph on each modification. Instead, use dfs visit to find nodes impacted by a change (of value or of topology) and limit the update to those nodes.
2018-01-26 13:02:31 +01:00
Yann Lanthony
b67fae013b [graph] check if node belongs to a graph in Attribute.isLink property 2018-01-26 12:47:09 +01:00
Yann Lanthony
273cfd9f0e [ui] handle multiple CameraInit nodes in a Reconstruction
* [ui] ImageGallery: add control to navigate image groups
* [graph] expose Node.attribute as a Slot
2018-01-15 14:33:27 +01:00
Yann Lanthony
1f0ed1f2c9 [graph] add minDepth property on nodes 2018-01-12 13:59:09 +01:00
Yann Lanthony
530af4d905 [graph] sort nodes by index when loading graph file 2018-01-12 13:59:09 +01:00
Yann Lanthony
1bc6168814 [graph] add helper methods to get nodes by type and sort them by name 2018-01-12 13:59:08 +01:00
Fabien Castan
7561b1e8c7
Merge pull request #82 from alicevision/dev_perf_graph
Improve graph performance
2018-01-08 21:51:48 +01:00
Yann Lanthony
516f909db4 [graph] add nodesFromNode method based on reverse dfs visit
Get the whole node chain from a start node to the graph leaves following graph edges
2018-01-08 13:08:55 +01:00
Yann Lanthony
924dbc8d32 [graph] improve formatting + remove redundant parentheses 2018-01-05 19:20:57 +01:00
Yann Lanthony
2d30a65252 [graph] improve Visitor class docstring 2018-01-05 19:19:38 +01:00
Yann Lanthony
614ef3a5d1 [graph] improve Node constructor arguments naming 2018-01-05 19:18:40 +01:00
Yann Lanthony
c3eda1e629 [graph] allow reverse dfs visit
# Default direction: from start node to root
# Reverse direction: from start node to leaves
2018-01-05 19:01:28 +01:00
Yann Lanthony
b3ab554bc9 [graph] compute and store nodes depths on graph topology change 2018-01-05 19:01:27 +01:00
Fabien Castan
8e1452d5bc [core] add quotes on strings
to deal with space characters on command line
2018-01-05 16:59:31 +01:00
Fabien Castan
76ec5a1913
Merge pull request #78 from alicevision/dev_ui_nodelogs
Add NodeLog Component that displays logs/statistics/status files of a Node
2018-01-03 21:19:41 +01:00
Yann Lanthony
81cb2cca7a [graph] NodeChunks: notify changes in log files paths
* make log, statistics and status file properties notifiyable and trigger notify signal when node's internal folder changes
* only emit Node.internalFolderChanged when it actually changed
2018-01-03 12:10:53 +01:00
Fabien Castan
ad84d20eb5 [core] ListAttribute and GroupAttribute can now be exported on command line
* ListAttribute, GroupAttribute: can now be exported on command line
with customizable join character.
* ChoiceParam with non exclusive values are exported on command line as
before but using the new getValueStr()
2018-01-02 14:43:29 +01:00
Yann Lanthony
49c3491534 [graph] expose NodeChunks log files as properties 2017-12-28 21:26:26 +01:00
Yann Lanthony
d2417e4ac6 [core] add optional 'name' argument to addNewNode method
allow to create a new node with a target name, that will get prefixed if not unique
2017-12-19 14:59:12 +01:00
Yann Lanthony
737f292787 [core] update internals of nodes created by addNewNode method
this ensures internal cache folder is correctly initialized
2017-12-18 19:39:58 +01:00
Yann Lanthony
5c179cce6e [ui] GraphEditor: add action to clear node internal data 2017-12-11 15:13:56 +01:00
Fabien Castan
1399f42723 [core] fix elapsedTime default value 2017-12-04 21:54:48 +01:00
Yann Lanthony
776a9a00af [graph] update Nodes status when cache directory changes 2017-12-04 11:06:25 +01:00
Yann Lanthony
16db901d86 [core] NodeChunks as a ListModel + [ui] DFS sorted nodes proxy model
* core: NodeChunks are now stored in a ListModel inside Node
* ui: introduce SortedModelByReference
* ui: UIGraph exposes a proxy model of its graph's nodes sorted as visited by DFS (instead of another model of chunks)
* ui: added NodeChunks Component
2017-11-28 21:43:15 +01:00
Yann Lanthony
eb3432eb58 [graph] removeNode: call removeEdge and trigger graph update
* call removeEdge instead of removing the edge in the model. This allows to trigger signals at the Attribute level (like isLinkChanged)
* trigger graph update after node removal
2017-11-28 21:29:37 +01:00
Yann Lanthony
e8c8a9f64a [graph] add Node.clearSubmitterChunks method 2017-11-28 15:07:49 +01:00
Yann Lanthony
5b1b5a1b32 [graph] add 'updated' signal 2017-11-24 16:31:12 +01:00
Yann Lanthony
d493d0e7e2 [graph] add utility methods to retrieve chunks 2017-11-24 16:30:13 +01:00
Yann Lanthony
a60fe3c601 [graph] emit statusChanged after saving the status file 2017-11-24 16:24:23 +01:00
Yann Lanthony
09390ca52c [graph] add notion of filepath in core.Graph
* Graph stores its filepath when saved/loaded
* trigger updateInternals when cache directory change to update Nodes outputs
2017-11-24 16:21:43 +01:00
Yann Lanthony
d4be998099 [graph] retrieve execMode as Enum from status file 2017-11-24 11:41:29 +01:00
Fabien Castan
c488d73551 [core] split status and execMode (LOCAL/EXTERN) 2017-11-23 20:58:52 +01:00
Fabien Castan
1cd4034784 [core] status: add packageName, packageVersion, hostname, sessionUid 2017-11-23 20:07:06 +01:00
Fabien Castan
c677243f90 [core] fix status check: should be done on chunk level (and not on node level) 2017-11-23 16:45:02 +01:00
Fabien Castan
50a4330b10 [core] fix upgrade status of chunks 2017-11-23 16:43:12 +01:00
Fabien Castan
c57d7ed37e [core] add start/end datetime and elapsed time in status file 2017-11-22 15:17:39 +01:00
Fabien Castan
07351c911a [core] do not change status on chunks with SUCCESS status
If the node is only partially computed, do not change the status of
chunks with SUCCESS status.
2017-11-22 15:16:57 +01:00
Fabien Castan
e3815f74c7 [core] check RUNNING status in chunk compute function and add option to force computation 2017-11-21 12:24:16 +01:00
Yann Lanthony
851ebf60ee [core] add support for external graph computation via 'Submitter' API
* defines a base class for Submitters
* add method in graph module to submit a graph computation to a Submitter
* add SimpleFarmSubmitter and generalize meshroom_submit binary
2017-11-17 19:17:36 +01:00
Yann Lanthony
e8c579c942 [core] parallelization: introduce the notion of node 'size'
* node size is an estimation of the number of element to process on a given node, that may be used for parallelization.
* replace the explicit reference to an attribute on a node (Parallelization.inputListParamName)
* size can be:
  * dynamic: depends on the size of the node connected to a specific Attribute
  * static
2017-11-17 18:46:21 +01:00
Yann Lanthony
877025090e [graph] fix flowEdges method
only consider edges returned by dfsMaxEdgeLength
2017-11-17 18:38:44 +01:00
Yann Lanthony
900516a854 [graph] GroupAttribute: iterate over items() for uid generation
__iter__ of core/qt  backends differs for DictModel, which lead to inchorent uids.
TODO: fix that by defining a real DictModel in qt backend
2017-11-17 18:11:57 +01:00
Yann Lanthony
7d4c006e68 [graph] List: multiple children attribute deletion + remove edges if any 2017-11-14 16:35:24 +01:00
Yann Lanthony
0fa23edc82 [graph] trigger update when ListAttribute changes 2017-11-14 16:34:32 +01:00
Yann Lanthony
5fc1d92cc2 [graph] remove call to node description's updateInternals
causes possible undefined behaviors if the graph is modified during this update
2017-11-10 18:21:59 +01:00
Yann Lanthony
bf747f69d6 Merge remote-tracking branch 'origin/develop' into dev_memoryManagement 2017-11-10 11:43:20 +01:00
Fabien Castan
224cd935f9 [graph] only save input params 2017-11-10 11:32:59 +01:00
Yann Lanthony
80cad9386a [core] handle unsatisfied node parallelization requirements
* catch error in case the required attribute is not found in preceding nodes
* set an empty list of chunks when this happens
* avoid uncatched exceptions in the middle of an update
2017-11-08 18:41:34 +01:00
Yann Lanthony
e9e15d7a8b [graph] fix StatusData.statusName method 2017-11-08 18:13:55 +01:00
Yann Lanthony
9860828c67 [core] fix Graph.stopExecution
iterate over and terminate running chunks
2017-11-08 18:12:03 +01:00