GVPR(1) GVPR(1) NAME gvpr - graph pattern scanning and processing language ( previously known as gpr ) SYNOPSIS gvpr [-icqV?] [ -o outfile ] [ -a args ] [ 'prog' | -f progfile ] [ files ] DESCRIPTION gvpr is a graph stream editor inspired by awk. It copies input graphs to its output, possibly transforming their structure and attributes, creat‐ ing new graphs, or printing arbitrary information. The graph model is that provided by libcgraph(3). In particular, gvpr reads and writes graphs using the dot language. Basically, gvpr traverses each input graph, denoted by $G, visiting each node and edge, matching it with the predicate‐action rules supplied in the input program. The rules are evaluated in order. For each predicate evaluating to true, the corresponding action is performed. During the traversal, the current node or edge being visited is denoted by $. For each input graph, there is a target subgraph, denoted by $T, ini‐ tially empty and used to accumulate chosen entities, and an output graph, $O, used for final processing and then written to output. By default, the output graph is the target graph. The output graph can be set in the program or, in a limited sense, on the command line. OPTIONS The following options are supported: -a args The string args is split into whitespace‐separated tokens, with the individual tokens available as strings in the gvpr program as ARGV[0],...,ARGV[ARGC-1]. Whitespace characters within single or double quoted substrings, or preceded by a backslash, are ignored as separators. In general, a backslash character turns off any special meaning of the following character. Note that the tokens derived from multiple -a flags are concatenated. -c Use the source graph as the output graph. -i Derive the node‐induced subgraph extension of the output graph in the context of its root graph. -o outfile Causes the output stream to be written to the specified file; by default, output is written to stdout. -f progfile Use the contents of the specified file as the program to execute on the input. If progfile contains a slash character, the name is taken as the pathname of the file. Otherwise, gvpr will use the directories specified in the environment variable GPRPATH to look for the file. If -f is not given, gvpr will use the first non‐ option argument as the program. -q Turns off warning messages. -V Causes the program to print version information and exit. -? Causes the program to print usage information and exit. OPERANDS The following operand is supported: files Names of files containing 1 or more graphs in the dot language. If no -f option is given, the first name is removed from the list and used as the input program. If the list of files is empty, stdin will be used. PROGRAMS A gvpr program consists of a list of predicate‐action clauses, having one of the forms: BEGIN { action } BEG_G { action } N [ predicate ] { action } E [ predicate ] { action } END_G { action } END { action } A program can contain at most one of each of the BEGIN, END_G and END clauses. There can be any number of BEG_G, N and E statements, the first applied to graphs, the second to nodes, the third to edges. These are separated into blocks, a block consisting of an optional BEG_G statement and all N and E statements up to the next BEG_G statement, if any. The top‐level semantics of a gvpr program are: Evaluate the BEGIN clause, if any. For each input graph G { For each block { Set G as the current graph and current object. Evaluate the BEG_G clause, if any. For each node and edge in G { Set the node or edge as the current object. Evaluate the N or E clauses, as appropriate. } } Set G as the current object. Evaluate the END_G clause, if any. } Evaluate the END clause, if any. The actions of the BEGIN, BEG_G, END_G and END clauses are performed when the clauses are evaluated. For N or E clauses, either the predicate or action may be omitted. If there is no predicate with an action, the action is performed on every node or edge, as appropriate. If there is no action and the predicate evaluates to true, the associated node or edge is added to the target graph. The blocks are evaluated in the order in which they occur. Within a block, the N clauses (E clauses, respectively) are evaluated in the order in which the occur. Note, though, that within a block, N or E clauses may be interlaced, depending on the traversal order. Predicates and actions are sequences of statements in the C dialect sup‐ ported by the libexpr(3) library. The only difference between predicates and actions is that the former must have a type that may interpreted as either true or false. Here the usual C convention is followed, in which a non‐zero value is considered true. This would include non‐empty strings and non‐empty references to nodes, edges, etc. However, if a string can be converted to an integer, this value is used. In addition to the usual C base types (void, int, char, float, long, unsigned and double), gvpr provides string as a synonym for char*, and the graph‐based types node_t, edge_t, graph_t and obj_t. The obj_t type can be viewed as a supertype of the other 3 concrete types; the correct base type is maintained dynamically. Besides these base types, the only other supported type expressions are (associative) arrays. Constants follow C syntax, but strings may be quoted with either "..." or '...'. In certain contexts, string values are interpreted as patterns for the purpose of regular expression matching. Patterns use ksh(1) file match pattern syntax. gvpr accepts C++ comments as well as cpp‐type com‐ ments. For the latter, if a line begins with a '#' character, the rest of the line is ignored. A statement can be a declaration of a function, a variable or an array, or an executable statement. For declarations, there is a single scope. Array declarations have the form: type array [ type0 ] where type0 is optional. If it is supplied, the parser will enforce that all array subscripts have the specified type. If it is not supplied, objects of all types can be used as subscripts. As in C, variables and arrays must be declared. In particular, an undeclared variable will be interpreted as the name of an attribute of a node, edge or graph, depend‐ ing on the context. Executable statements can be one of the following: { [ statement ... ] } expression // commonly var = expression if( expression ) statement [ else statement ] for( expression ; expression ; expression ) statement for( array [ var ]) statement forr( array [ var ]) statement while( expression ) statement switch( expression ) case statements break [ expression ] continue [ expression ] return [ expression ] Items in brackets are optional. In the second form of the for statement and the forr statement, the vari‐ able var is set to each value used as an index in the specified array and then the associated statement is evaluated. For numeric and string indices, the indices are returned in increasing (decreasing) numeric or lexicographic order for for (forr, respectively). This can be used for sorting. Function definitions can only appear in the BEGIN clause. Expressions include the usual C expressions. String comparisons using == and != treat the right hand operand as a pattern. gvpr will attempt to use an expression as a string or numeric value as appropriate. Expressions of graphical type (i.e., graph_t, node_t, edge_t, obj_t) may be followed by a field reference in the form of .name. The resulting value is the value of the attribute named name of the given object. In addition, in certain contexts an undeclared, unmodified identifier is taken to be an attribute name. Specifically, such identifiers denote attributes of the current node or edge, respectively, in N and E clauses, and the current graph in BEG_G and END_G clauses. As usual in the libcgraph(3) model, attributes are string‐valued. In addition, gvpr supports certain pseudo‐attributes of graph objects, not necessarily string‐valued. These reflect intrinsic properties of the graph objects and cannot be set by the user. head : node_t the head of an edge. tail : node_t the tail of an edge. name : string the name of an edge, node or graph. The name of an edge has the form "<tail‐name><edge‐op><head‐name>[<key>]", where <edge‐op> is "->" or "--" depending on whether the graph is directed or not. The bracket part [<key>] only appears if the edge has a non‐triv‐ ial key. indegree : int the indegree of a node. outdegree : int the outdegree of a node. degree : int the degree of a node. root : graph_t the root graph of an object. The root of a root graph is itself. parent : graph_t the parent graph of a subgraph. The parent of a root graph is NULL n_edges : int the number of edges in the graph n_nodes : int the number of nodes in the graph directed : int true (non‐zero) if the graph is directed strict : int true (non‐zero) if the graph is strict BUILT‐IN FUNCTIONS The following functions are built into gvpr. Those functions returning references to graph objects return NULL in case of failure. Graphs and subgraph graph(s : string, t : string) : graph_t creates a graph whose name is s and whose type is specified by the string t. Ignoring case, the characters U, D, S, N have the inter‐ pretation undirected, directed, strict, and non‐strict, respec‐ tively. If t is empty, a directed, non‐strict graph is generated. subg(g : graph_t, s : string) : graph_t creates a subgraph in graph g with name s. If the subgraph already exists, it is returned. isSubg(g : graph_t, s : string) : graph_t returns the subgraph in graph g with name s, if it exists, or NULL otherwise. fstsubg(g : graph_t) : graph_t returns the first subgraph in graph g, or NULL if none exists. nxtsubg(sg : graph_t) : graph_t returns the next subgraph after sg, or NULL. isDirect(g : graph_t) : int returns true if and only if g is directed. isStrict(g : graph_t) : int returns true if and only if g is strict. nNodes(g : graph_t) : int returns the number of nodes in g. nEdges(g : graph_t) : int returns the number of edges in g. Nodes node(sg : graph_t, s : string) : node_t creates a node in graph g of name s. If such a node already exists, it is returned. subnode(sg : graph_t, n : node_t) : node_t inserts the node n into the subgraph g. Returns the node. fstnode(g : graph_t) : node_t returns the first node in graph g, or NULL if none exists. nxtnode(n : node_t) : node_t returns the next node after n in the root graph, or NULL. nxtnode_sg(sg : graph_t, n : node_t) : node_t returns the next node after n in sg, or NULL. isNode(sg : graph_t, s : string) : node_t looks for a node in (sub)graph sg of name s. If such a node exists, it is returned. Otherwise, NULL is returned. isSubnode(sg : graph_t, n : node_t) : int returns non-zero if node n is in (sub)graph sg, or zero otherwise. indegreeOf(sg : graph_t, n : node_t) : int returns the indegree of node n in (sub)graph sg. outdegreeOf(sg : graph_t, n : node_t) : int returns the outdegree of node n in (sub)graph sg. degreeOf(sg : graph_t, n : node_t) : int returns the degree of node n in (sub)graph sg. Edges edge(t : node_t, h : node_t, s : string) : edge_t creates an edge with tail node t, head node h and name s in the root graph. If the graph is undirected, the distinction between head and tail nodes is unimportant. If such an edge already exists, it is returned. edge_sg(sg : graph_t, t : node_t, h : node_t, s : string) : edge_t creates an edge with tail node t, head node h and name s in (sub)graph sg (and all parent graphs). If the graph is undirected, the distinction between head and tail nodes is unimportant. If such an edge already exists, it is returned. subedge(g : graph_t, e : edge_t) : edge_t inserts the edge e into the subgraph g. Returns the edge. isEdge(t : node_t, h : node_t, s : string) : edge_t looks for an edge with tail node t, head node h and name s. If the graph is undirected, the distinction between head and tail nodes is unimportant. If such an edge exists, it is returned. Other‐ wise, NULL is returned. isEdge_sg(sg : graph_t, t : node_t, h : node_t, s : string) : edge_t looks for an edge with tail node t, head node h and name s in (sub)graph sg. If the graph is undirected, the distinction between head and tail nodes is unimportant. If such an edge exists, it is returned. Otherwise, NULL is returned. isSubedge(g : graph_t, e : edge_t) : int returns non-zero if edge e is in (sub)graph sg, or zero otherwise. fstout(n : node_t) : edge_t returns the first outedge of node n in the root graph. fstout_sg(sg : graph_t, n : node_t) : edge_t returns the first outedge of node n in (sub)graph sg. nxtout(e : edge_t) : edge_t returns the next outedge after e in the root graph. nxtout_sg(sg : graph_t, e : edge_t) : edge_t returns the next outedge after e in graph sg. fstin(n : node_t) : edge_t returns the first inedge of node n in the root graph. fstin_sg(sg : graph_t, n : node_t) : edge_t returns the first inedge of node n in graph sg. nxtin(e : edge_t) : edge_t returns the next inedge after e in the root graph. nxtin_sg(sg : graph_t, e : edge_t) : edge_t returns the next inedge after e in graph sg. fstedge(n : node_t) : edge_t returns the first edge of node n in the root graph. fstedge_sg(sg : graph_t, n : node_t) : edge_t returns the first edge of node n in graph sg. nxtedge(e : edge_t, node_t) : edge_t returns the next edge after e in the root graph. nxtedge_sg(sg : graph_t, e : edge_t, node_t) : edge_t returns the next edge after e in the graph sg. Graph I/O write(g : graph_t) : void prints g in dot format onto the output stream. writeG(g : graph_t, fname : string) : void prints g in dot format into the file fname. fwriteG(g : graph_t, fd : int) : void prints g in dot format onto the open stream denoted by the integer fd. readG(fname : string) : graph_t returns a graph read from the file fname. The graph should be in dot format. If no graph can be read, NULL is returned. freadG(fd : int) : graph_t returns the next graph read from the open stream fd. Returns NULL at end of file. Graph miscellany delete(g : graph_t, x : obj_t) : void deletes object x from graph g. If g is NULL, the function uses the root graph of x. If x is a graph or subgraph, it is closed unless x is locked. isIn(g : graph_t, x : obj_t) : int returns true if x is in subgraph g. clone(g : graph_t, x : obj_t) : obj_t creates a clone of object x in graph g. In particular, the new object has the same name/value attributes and structure as the original object. If an object with the same key as x already exists, its attributes are overlaid by those of x and the object is returned. If an edge is cloned, both endpoints are implicitly cloned. If a graph is cloned, all nodes, edges and subgraphs are implicitly cloned. If x is a graph, g may be NULL, in which case the cloned object will be a new root graph. copy(g : graph_t, x : obj_t) : obj_t creates a copy of object x in graph g, where the new object has the same name/value attributes as the original object. If an object with the same key as x already exists, its attributes are overlaid by those of x and the object is returned. Note that this is a shallow copy. If x is a graph, none of its nodes, edges or subgraphs are copied into the new graph. If x is an edge, the end‐ points are created if necessary, but they are not cloned. If x is a graph, g may be NULL, in which case the cloned object will be a new root graph. copyA(src : obj_t, tgt : obj_t) : int copies the attributes of object src to object tgt, overwriting any attribute values tgt may initially have. induce(g : graph_t) : void extends g to its node‐induced subgraph extension in its root graph. hasAttr(src : obj_t, name : string) : int returns non-zero if object src has an attribute whose name is name. It returns 0 otherwise. isAttr(g : graph_t, kind : string, name : string) : int returns non-zero if an attribute name has been defined in g for objects of the given kind. For nodes, edges, and graphs, kind should be "N", "E", and "G", respectively. It returns 0 other‐ wise. aget(src : obj_t, name : string) : string returns the value of attribute name in object src. This is useful for those cases when name conflicts with one of the keywords such as "head" or "root". If the attribute has not been declared in the graph, the function will initialize it with a default value of "". To avoid this, one should use the hasAttr or isAttr function to check that the attribute exists. aset(src : obj_t, name : string, value : string) : int sets the value of attribute name in object src to value. Returns 0 on success, non‐zero on failure. See aget above. getDflt(g : graph_t, kind : string, name : string) : string returns the default value of attribute name in objects in g of the given kind. For nodes, edges, and graphs, kind should be "N", "E", and "G", respectively. If the attribute has not been declared in the graph, the function will initialize it with a default value of "". To avoid this, one should use the isAttr function to check that the attribute exists. setDflt(g : graph_t, kind : string, name : string, value : string) : int sets the default value of attribute name to value in objects in g of the given kind. For nodes, edges, and graphs, kind should be "N", "E", and "G", respectively. Returns 0 on success, non‐zero on failure. See getDflt above. fstAttr(g : graph_t, kind : string) : string returns the name of the first attribute of objects in g of the given kind. For nodes, edges, and graphs, kind should be "N", "E", and "G", respectively. If there are no attributes, the string "" is returned. nxtAttr(g : graph_t, kind : string, name : string) : string returns the name of the next attribute of objects in g of the given kind after the attribute name. The argument name must be the name of an existing attribute; it will typically be the return value of an previous call to fstAttr or nxtAttr. For nodes, edges, and graphs, kind should be "N", "E", and "G", respectively. If there are no attributes left, the string "" is returned. compOf(g : graph_t, n : node_t) : graph_t returns the connected component of the graph g containing node n, as a subgraph of g. The subgraph only contains the nodes. One can use induce to add the edges. The function fails and returns NULL if n is not in g. Connectivity is based on the underlying undi‐ rected graph of g. kindOf(obj : obj_t) : string returns an indication of what kind of graph object is the argu‐ ment. For nodes, edges, and graphs, it returns should be "N", "E", and "G", respectively. lock(g : graph_t, v : int) : int implements graph locking on root graphs. If the integer v is posi‐ tive, the graph is set so that future calls to delete have no immediate effect. If v is zero, the graph is unlocked. If there has been a call to delete the graph while it was locked, the graph is closed. If v is negative, nothing is done. In all cases, the previous lock value is returned. Strings sprintf(fmt : string, ...) : string returns the string resulting from formatting the values of the expressions occurring after fmt according to the printf(3) format fmt gsub(str : string, pat : string) : string gsub(str : string, pat : string, repl : string) : string returns str with all substrings matching pat deleted or replaced by repl, respectively. sub(str : string, pat : string) : string sub(str : string, pat : string, repl : string) : string returns str with the leftmost substring matching pat deleted or replaced by repl, respectively. The characters '^' and '$' may be used at the beginning and end, respectively, of pat to anchor the pattern to the beginning or end of str. substr(str : string, idx : int) : string substr(str : string, idx : int, len : int) : string returns the substring of str starting at position idx to the end of the string or of length len, respectively. Indexing starts at 0. If idx is negative or idx is greater than the length of str, a fatal error occurs. Similarly, in the second case, if len is nega‐ tive or idx + len is greater than the length of str, a fatal error occurs. length(s : string) : int returns the length of the string s. index(s : string, t : string) : int rindex(s : string, t : string) : int returns the index of the character in string s where the leftmost (rightmost) copy of string t can be found, or -1 if t is not a substring of s. match(s : string, p : string) : int returns the index of the character in string s where the leftmost match of pattern p can be found, or -1 if no substring of s matches p. toupper(s : string) : string returns a version of s with the alphabetic characters converted to upper-case. tolower(s : string) : string returns a version of s with the alphabetic characters converted to lower-case. canon(s : string) : string returns a version of s appropriate to be used as an identifier in a dot file. xOf(s : string) : string returns the string "x" if s has the form "x,y", where both x and y are numeric. yOf(s : string) : string returns the string "y" if s has the form "x,y", where both x and y are numeric. llOf(s : string) : string returns the string "llx,lly" if s has the form "llx,lly,urx,ury", where all of llx, lly, urx, and ury are numeric. urOf(s) urOf(s : string) : string returns the string "urx,ury" if s has the form "llx,lly,urx,ury", where all of llx, lly, urx, and ury are numeric. sscanf(s : string, fmt : string, ...) : int scans the string s, extracting values according to the sscanf(3) format fmt. The values are stored in the addresses following fmt, addresses having the form &v, where v is some declared variable of the correct type. Returns the number of items successfully scanned. split(s : string, arr : array, seps : string) : int split(s : string, arr : array) : int tokens(s : string, arr : array, seps : string) : int tokens(s : string, arr : array) : int The split function breaks the string s into fields, while the tokens function breaks the string into tokens. A field consists of all non-separator characters between two separator characters or the beginning or end of the string. Thus, a field may be the empty string. A token is a maximal, non-empty substring not con‐ taining a separator character. The separator characters are those given in the seps argument. If seps is not provided, the default value is " \t\n". The functions return the number of fields or tokens. The fields and tokens are stored in the argument array. The array must be string-valued and, if an index type is specified, it must be int. The entries are indexed by consecutive integers, starting at 0. Any values already stored in the array will be either over‐ written, or still be present after the function returns. I/O print(...) : void print( expr, ... ) prints a string representation of each argument in turn onto stdout, followed by a newline. printf(fmt : string, ...) : int printf(fd : int, fmt : string, ...) : int prints the string resulting from formatting the values of the expressions following fmt according to the printf(3) format fmt. Returns 0 on success. By default, it prints on stdout. If the optional integer fd is given, output is written on the open stream associated with fd. scanf(fmt : string, ...) : int scanf(fd : int, fmt : string, ...) : int scans in values from an input stream according to the scanf(3) format fmt. The values are stored in the addresses following fmt, addresses having the form &v, where v is some declared variable of the correct type. By default, it reads from stdin. If the optional integer fd is given, input is read from the open stream associated with fd. Returns the number of items successfully scanned. openF(s : string, t : string) : int opens the file s as an I/O stream. The string argument t specifies how the file is opened. The arguments are the same as for the C function fopen(3). It returns an integer denoting the stream, or -1 on error. As usual, streams 0, 1 and 2 are already open as stdin, stdout, and stderr, respectively. Since gvpr may use stdin to read the input graphs, the user should avoid using this stream. closeF(fd : int) : int closes the open stream denoted by the integer fd. Streams 0, 1 and 2 cannot be closed. Returns 0 on success. readL(fd : int) : string returns the next line read from the input stream fd. It returns the empty string "" on end of file. Note that the newline charac‐ ter is left in the returned string.  MIN(y : double, x : double) : double returns the minimum of y and x. MAX(y : double, x : double) : double returns the maximum of y and x. Associative Arrays # arr : int returns the number of elements in the array arr. idx in arr : int returns 1 if a value has been set for index idx in the array arr. It returns 0 otherwise. unset(v : array, IidxP) : int removes the item indexed by idx. It returns 1 if the item existed, 0 otherwise. unset(v : array) : void re-initializes the array. Miscellaneous exit(v : int) : void causes gvpr to exit with the exit code v. system(cmd : string) : int provides the standard C function system(3). It executes cmd if the user's shell environment, and returns the exit status of the shell. rand() : double returns a pseudo‐random double between 0 and 1. srand() : int srand(v : int) : int sets a seed for the random number generator. The optional argument gives the seed; if it is omitted, the current time is used. The previous seed value is returned. srand should be called before any calls to rand. colorx(color : string, fmt : string) : string translates a color from one format to another. The color argument should be a color in one of the recognized string representations. The fmt value should be one of "RGB", "RGBA", "HSV", "HSVA", or "CMYK". An empty string is returned on error. BUILT‐IN VARIABLES gvpr provides certain special, built‐in variables, whose values are set automatically by gvpr depending on the context. Except as noted, the user cannot modify their values. $ : obj_t denotes the current object (node, edge, graph) depending on the context. It is not available in BEGIN or END clauses. $F : string is the name of the current input file. $G : graph_t denotes the current graph being processed. It is not available in BEGIN or END clauses. $O : graph_t denotes the output graph. Before graph traversal, it is initial‐ ized to the target graph. After traversal and any END_G actions, if it refers to a non‐empty graph, that graph is printed onto the output stream. It is only valid in N, E and END_G clauses. The output graph may be set by the user. $T : graph_t denotes the current target graph. It is a subgraph of $G and is available only in N, E and END_G clauses. $tgtname : string denotes the name of the target graph. By default, it is set to "gvpr_result". If used multiple times during the execution of gvpr, the name will be appended with an integer. This variable may be set by the user. $tvroot : node_t indicates the starting node for a (directed or undirected) depth‐ first traversal of the graph (cf. $tvtype below). The default value is NULL for each input graph. $tvedge : edge_t For BFS and DFS traversals, this is set to the edge used to arrive at the current node or edge. At the beginning of a traversal, or for other traversal types, the value is NULL. $tvtype : tvtype_t indicates how gvpr traverses a graph. It can only take one of the constant values with the previx "TV_" described below. TV_flat is the default. In the underlying graph library cgraph(3), edges in undirected graphs are given an arbitrary direction. This is used for traver‐ sals, such as TV_fwd, requiring directed edges. ARGC : int denotes the number of arguments specified by the -a args command‐ line argument. ARGV : string array denotes the array of arguments specified by the -a args command‐ line argument. The ith argument is given by ARGV[i]. BUILT‐IN CONSTANTS There are several symbolic constants defined by gvpr. NULL : obj_t a null object reference, equivalent to 0. TV_flat : tvtype_t a simple, flat traversal, with graph objects visited in seemingly arbitrary order. TV_ne : tvtype_t a traversal which first visits all of the nodes, then all of the edges. TV_en : tvtype_t a traversal which first visits all of the edges, then all of the nodes. TV_dfs : tvtype_t TV_postdfs : tvtype_t TV_prepostdfs : tvtype_t a traversal of the graph using a depth‐first search on the under‐ lying undirected graph. To do the traversal, gvpr will check the value of $tvroot. If this has the same value that it had previ‐ ously (at the start, the previous value is initialized to NULL.), gvpr will simply look for some unvisited node and traverse its connected component. On the other hand, if $tvroot has changed, its connected component will be toured, assuming it has not been previously visited or, if $tvroot is NULL, the traversal will stop. Note that using TV_dfs and $tvroot, it is possible to create an infinite loop. By default, the traversal is done in pre-order. That is, a node is visited before all of its unvisited edges. For TV_postdfs, all of a node's unvisited edges are visited before the node. For TV_pre‐ postdfs, a node is visited twice, before and after all of its unvisited edges. TV_fwd : tvtype_t TV_postfwd : tvtype_t TV_prepostfwd : tvtype_t A traversal of the graph using a depth‐first search on the graph following only forward arcs. The choice of roots for the traver‐ sal is the same as described for TV_dfs above. The different order of visitation specified by TV_fwd, TV_postfwd and TV_pre‐ postfwd are the same as those specified by the analogous traver‐ sals TV_dfs, TV_postdfs and TV_prepostdfs. TV_rev : tvtype_t TV_postrev : tvtype_t TV_prepostrev : tvtype_t A traversal of the graph using a depth‐first search on the graph following only reverse arcs. The choice of roots for the traver‐ sal is the same as described for TV_dfs above. The different order of visitation specified by TV_rev, TV_postrev and TV_pre‐ postrev are the same as those specified by the analogous traver‐ sals TV_dfs, TV_postdfs and TV_prepostdfs. TV_bfs : tvtype_t A traversal of the graph using a bread‐first search on the graph ignoring edge directions. See the item on TV_dfs above for the role of $tvroot. EXAMPLES gvpr -i 'N[color=="blue"]' file.dot Generate the node‐induced subgraph of all nodes with color blue. gvpr -c 'N[color=="blue"]{color = "red"}' file.dot Make all blue nodes red. BEGIN { int n, e; int tot_n = 0; int tot_e = 0; } BEG_G { n = nNodes($G); e = nEdges($G); printf ("%d nodes %d edges %s0, n, e, $G.name); tot_n += n; tot_e += e; } END { printf ("%d nodes %d edges total0, tot_n, tot_e) } Version of the program gc. gvpr -c "" Equivalent to nop. BEG_G { graph_t g = graph ("merge", "S"); } E { node_t h = clone(g,$.head); node_t t = clone(g,$.tail); edge_t e = edge(t,h,""); e.weight = e.weight + 1; } END_G { $O = g; } Produces a strict version of the input graph, where the weight attribute of an edge indicates how many edges from the input graph the edge repre‐ sents. BEGIN {node_t n; int deg[]} E{deg[head]++; deg[tail]++; } END_G { for (deg[n]) { printf ("deg[%s] = %d0, n.name, deg[n]); } } Computes the degrees of nodes with edges. ENVIRONMENT GPRPATH Colon‐separated list of directories to be searched to find the file specified by the -f option. BUGS AND WARNINGS When the program is given as a command line argument, the usual shell interpretation takes place, which may affect some of the special names in gvpr. To avoid this, it is best to wrap the program in single quotes. As of 24 April 2008, gvpr switched to using a new, underlying graph library, which uses the simpler model that there is only one copy of a node, not one copy for each subgraph logically containing it. This means that iterators such as InxtnodeP cannot traverse a subgraph using just a node argument. For this reason, subgraph traversal requires new functions ending in "_sg", which also take a subgraph argument. The versions with‐ out that suffix will always traverse the root graph. There is a single global scope, except for formal function parameters, and even these can interfere with the type system. Also, the extent of all variables is the entire life of the program. It might be preferable for scope to reflect the natural nesting of the clauses, or for the pro‐ gram to at least reset locally declared variables. For now, it is advis‐ able to use distinct names for all variables. If a function ends with a complex statement, such as an IF statement, with each branch doing a return, type checking may fail. Functions should use a return at the end. The expr library does not support string values of (char*)0. This means we can't distinguish between "" and (char*)0 edge keys. For the purposes of looking up and creating edges, we translate "" to be (char*)0, since this latter value is necessary in order to look up any edge with a match‐ ing head and tail. Related to this, strings converted to integers act like char pointers, getting the value 0 or 1 depending on whether the string consists solely of zeroes or not. Thus, the ((int)"2") evaluates to 1. The language inherits the usual C problems such as dangling references and the confusion between '=' and '=='. AUTHOR Emden R. Gansner<EMAIL_ADDRESS>SEE ALSO awk(1), gc(1), dot(1), nop(1), libexpr(3), libcgraph(3) 3 July 2009 GVPR(1)


| aes_ {ggplot2} | R Documentation |
Aesthetic mappings describe how variables in the data are mapped to visual
properties (aesthetics) of geoms. aes()
uses non-standard
evaluation to capture the variable names. aes_
and aes_string
require you to explicitly quote the inputs either with ""
for
aes_string()
, or with quote
or ~
for aes_()
.
(aes_q()
is an alias to aes_()
). This makes aes_()
and
aes_string()
easy to program with.
aes_(x, y, ...) aes_string(x, y, ...) aes_q(x, y, ...)
x, y, ... |
List of name value pairs. Elements must be either quoted calls, strings, one-sided formulas or constants. |
aes_string()
and aes_()
are particularly useful when writing
functions that create plots because you can use strings or quoted
names/calls to define the aesthetic mappings, rather than having to use
substitute()
to generate a call to aes()
.
I recommend using aes_()
, because creating the equivalents of
aes(colour = "my colour")
or aes(x = `X$1`)
with aes_string()
is quite clunky.
All these functions are soft-deprecated. Please use tidy evaluation
idioms instead (see the quasiquotation section in
aes()
documentation).
# Three ways of generating the same aesthetics aes(mpg, wt, col = cyl) aes_(quote(mpg), quote(wt), col = quote(cyl)) aes_(~mpg, ~wt, col = ~cyl) aes_string("mpg", "wt", col = "cyl") # You can't easily mimic these calls with aes_string aes(`$100`, colour = "smooth") aes_(~ `$100`, colour = "smooth") # Ok, you can, but it requires a _lot_ of quotes aes_string("`$100`", colour = '"smooth"') # Convert strings to names with as.name var <- "cyl" aes(col = x) aes_(col = as.name(var))


Jurassic Park
An expansive rich man and Professor persuades two paleontologists to come to an island off the coast of Costa Rica, where he arranged a Jurassic Park. The Park is inhabited by long-extinct dinosaurs, recreated by the Professor on blood samples from a fossil mosquito, which should be the highlight of the new attraction. With days to go until the opening, a member of staff tries to steal priceless embryos, disrupts the security system, which together with a thunderstorm leads to a power outage and protective barriers. Just as the paleontologists and the Professor's grandchildren were on a trial tour.


[ {L_MCP} ]
Are you sure you want to remove {DELETE_MOD_USER_NAME} as a mod?
{GAME_DESCRIPTION}
{rules.RULE}


Tab 1
Tab 2
Tab 3
Tab 4
Tab 5
Tab 6
One
Check me out! I'm a super cool Tab panel with text content!
Two
Three
Check me out! I'm a super cool Tab panel with text content!
Four
Five
Check me out! I'm a super cool Tab panel with text content!
Six


{% extends 'mail/_base.html' %} {% block content %}
Hello {{ registration.first_name }},
Unfortunately we did not receive your full payment in time. As a result your registration has been cancelled. If you have any questions please don't hesitate to contact us.
If you are still interested in joining Smokey Feet 2017 you have an opportunity to register for a party pass. The registration for party passes opens on February 11th, 2017. Keep an eye on the Smokey Feet website and Facebook community for updates.
All the best,
Smokey Feet Crew
{% endblock %}


The Admin Console allows Administrators and SuperUsers to access all Administrator level settings and tools for this site. The Admin Console can be accessed either by hovering over or clicking on the Admin link in the Control Panel.
Important. The Site Settings page includes settings (Site Aliases, SSL Settings, Messaging Settings, Host Settings and Client Resource Management) that are only visible to SuperUsers. These settings can also be accessed via the Host > Site Management section, which is where they are documented.
Tip: You can choose to display the Admin Console as a page in the menu by setting the page as visible in the menu using the Admin > Page Management page.
The Admin Console - DNN Platform
Overview of the Admin Child Pages
| Icon | Page Name | Description and Tutorial Link |
|---|---|---|
| Advanced Configuration Settings | Advanced Settings for configuring your site. Includes skinning, outgoing mail settings, languages, authentication systems, providers and optional modules. | |
| Device Preview Management | The Admin > Device Preview Management page displays the Device Preview Management module which enables Administrators to manage a list of profiles for viewing your site in different devices such as mobile phones. |
|
| Event Viewer | The Admin > Event Viewer page displays the Log Viewer module (also called the Event Viewer module) which provides a log of database events. This page includes tasks that are only available to SuperUsers. |
|
| Extensions |
The Admin > Extensions page displays the Extensions module that enables Administrators to manage extensions which have been installed on the site by the Host. Additional extension management can be accessed by SuperUsers. |
|
| File Management |
The Admin > File Management page displays the Digital Asset Management module that enables management of site files. |
|
| Google Analytics | The Admin > Google Analytics page displays the Google Analytics module that improves your site results online. |
|
| Languages |
The Admin > Languages page displays the Languages module that enables Administrators and SuperUsers to enable and manage the languages files associated with a site. |
|
| Lists | The Admin > Lists page displays the Lists module that enables Administrators to maintain lists of information that can be identified by a key value and a data value. |
|
| Newsletters | The Admin > Newsletters page displays the Newsletters module that enables sending bulking email messages to individual email addresses and security roles. |
|
|
Page Management |
The Admin > Page Management page displays the Tabs module that provides full page management including the ability to modify page hierarchy. SuperUsers can also manage Host Tabs from this page. |
|
|
Recycle Bin |
The Admin > Recycle Bin page displays the Recycle Bin module that enables users to restore or permanently delete pages and modules. This module can be deployed on site pages. |
|
| Search Admin | The Search Admin page allows the SuperUsers to specify the search settings that will be applied to all sites.
SuperUsers can assign the Search Admin module to one or more sites as desired and then configure the search capabilities for the those sites only. |
|
| Search Engine Site Map | The Admin > Search Engine SiteMap page displays the SiteMap module. |
|
| Security Roles | The Admin > Security Roles page displays the Security Roles module which enables the management of security roles as well as role assignment. |
|
| Site Log | The Admin > Site Log page displays the Site Log module that enables viewing of statistical reports for the site. |
|
| Site Redirection Management | The Admin > Site Redirection Management page displays the Site Redirection Management module which enables Administrators to create site redirection paths for mobile devices. |
|
| Site Settings |
The Admin > Site Settings page displays the Site Settings module. This module cannot be deployed on site pages and is therefore only accessible to Administrators and SuperUsers. |
|
| Site Wizard | The Admin > Site Wizard page displays the Site Wizard module that enables authorized to view the module to configure basic site settings, page design as well as apply a template to the site using a simple step-by-step wizard. |
|
| Skins |
The Admin > Skins page displays the Skins module, also titled the Skin Editor and the Skin Designer module. The Skin module, that can be deployed on any site page, enables authorized users to preview and apply skins to the site. The Skin Designer module, which cannot be deployed on site pages, enables Administrators to set container and skin token values. |
|
| Taxonomy | The Admin > Taxonomy page displays the Taxonomy Manager module. This page includes tasks that are only available to SuperUsers. |
|
| User Accounts | The Admin > User Accounts page displays the User Accounts module that enables the creation and management of user accounts, as well as configuration of user settings relating to authentication. |
|
| Vendors | The Admin > Vendors page displays the Vendors module that enables the creation and management of vendor accounts, vendor banners and affiliate accounts using the Vendors module. Vendor accounts and banners maintained under the Admin page are only available to this site. |


Lindsay's Blog
WORDS FROM A GIRL LEARNING HOW TO CODE
Halfway Done with College
A look back on sophomore year
Read on
My Summer in St. Louis
Code, run, sleep.
Read on
My opinion on carrots
The inside scoop on this special veggie
Read on


Navbar
Home
(current)
About
Services
Welcome
Welcome
This is the homepage
Subsribe to our Newsletter
Email
Name
Submit


§46-56 Purchasing. The director of finance of each county that does not have any centralized purchasing provision in its charter, may adopt rules and regulations governing the procurement and purchase of materials, supplies, equipment, and services, subject to the requirements of chapter 103D. [L 1977, c 4, §1; am L Sp 1993, c 8, §54]


Male: Female: Other:
Birthday: JANUARY FEBRUARY MARCH APRIL MAY 1 2 3 4 5 6 7 8 9 10 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000


Reports calls of setter methods with the same object getter as a value. Usually, this code does nothing and probably was not intended.
For example:
bean.setPayerId(bean.getPayerId());


02 Jan 2014
The Strange Case of Dr. Jeykll and Mr. Hyde tells the story of a lawyer investigating the connection of two persons, Dr. Henry Jekyll and Mr. Edward Hyde. Chief among the novel's supporting cast is a man by the name of Mr. Poole, Dr. Jekyll's loyal butler.
Poole is the butler for Jekyll, the static site generator. It's designed and developed by @mdo to provide a clear and concise foundational setup for any Jekyll site. It does so by furnishing a full vanilla Jekyll install with example templates, pages, posts, and styles.
There are currently two themes built on Poole:
Learn more and contribute on GitHub.
Read More
01 Jan 2014
Howdy! This is an example blog post that shows several types of HTML content supported in this theme.
Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Sed posuere consectetur est at lobortis. Cras mattis consectetur purus sit amet fermentum.
Curabitur blandit tempus porttitor. Nullam quis risus eget urna mollis ornare vel eu leo. Nullam id dolor id nibh ultricies vehicula ut id elit.
Etiam porta sem malesuada magna mollis euismod. Cras mattis consectetur purus sit amet fermentum. Aenean lacinia bibendum nulla sed consectetur.
Inline HTML elements
HTML defines a long list of available inline tags, a complete list of which can be found on the Mozilla Developer Network.
- To bold text, use

.
- To italicize text, use

.
- Abbreviations, like HTML should use

, with an optional title
attribute for the full phrase.
- Citations, like — Mark otto, should use

.
Deleted text should use
and inserted text should use
.
- Superscript text uses

and subscript text uses
.
Most of these elements are styled by browsers with few modifications on our part.
Read More


We enhance dogs!
- brand interactive action-items
- iterate sticky web-readiness
- generate efficient e-business
- aggregate turn-key networks
- incentivize interactive markets
- redefine rich e-business
- expedite B2C initiatives
- monetize intuitive partnerships
- redefine compelling schemas
- productize 24/365 paradigms
- embrace synergistic e-services
- engage best-of-breed convergence
- envisioneer bricks-and-clicks models


Perusal of the decision of the Apex Court in the aforesaid case shows that the Apex Court has not disturbed the view taken by the Delhi High Court and Gujarat High Court which we have quoted above. Therefore, if FIR is registered by the Police for the offences punishable under Section of Section 15 of the said Act of 1986, the registration of offence and investigation carried out by the Police is not per se vitiated. A complaint can be made/filed by authorised officer under clause (a) of Section 19 before the concerned Court. While filing complaint, the authorised officer can always rely upon the material collected by the Police during the investigation. The Complaint can include the material collected by the Police during the investigation carried out on the basis of the FIR.
11 Another issue is about of those cases where on the basis of the First Information Reports registered for the offences punishable under Sub-Section (1) of Section 15 of the said Act of 1986 and charge sheet filed by the Police, Criminal Courts have taken cognizance. The question is whether trial in such cases is vitiated. This issue is dealt with by the Apex Court in the case of H.N.
68 of 83 pil-87.06 final.doc Rishbud and Inder Singh Vs. State of Delhi 7. Paragraphs 9 and 10 of the said decision read thus :-
"9. The question then requires to be considered whether and to what extent the trial which follows such investigation is vitiated. Now, trial follows cognizance and cognizance is preceded by investigation. This is undoubtedly the basic scheme of the Code in respect of cognizable cases. But it does not necessarily follow that an invalid investigation nullifies the cognizance or trial based thereon. Here we are not concerned with the effect of the breach of a mandatory provision regulating the competence or procedure of the Court as regards cognizance or trial. It is only with reference to such a breach that the question as to whether it constitutes an illegality vitiating the proceedings or a mere irregularity arises. A defect or illegality in investigation, however serious, has no direct bearing on the competence or the procedure relating to cognizance or trial. No doubt a police report which results from an investigation is provided in Section 190 of the Code of Criminal Procedure as the material on which cognizance is taken. But it cannot be maintained that a valid and legal police report is the foundation of the jurisdiction of the Court to take cognizance. Section 190 of the Code of Criminal Procedure is one out of a group of sections under the beading "Conditions requisite for initiation of proceedings. The language of this section is in marked contrast with that of the other sections of the group under the same heading, i.e. Sections 193 and 195 to 199. These latter sections regulate the competence of the Court and bar its jurisdiction in certain cases excepting in compliance therewith. But Section 190 does not. While no doubt, in one sense, clauses (a),
(b) and (c) of Section 190(1) are conditions requisite for taking of cognizance, it is not possible to say that cognizance on an invalid police report is prohibited and is therefore a nullity. Such an invalid report may still fall either under clause (a) 7 AIR 1955 SC 196 69 of 83 pil-87.06 final.doc or (b) of Section 190(1), (whether it is the one or the other we need not pause to consider) and in any case cognizance so taken is only in the nature of error in a proceeding antecedent to the trial. To such a situation Section 537 of the Code of Criminal Procedure which is in the following terms is attracted:
"Subject to the provisions hereinbefore contained, no finding, sentence or order passed by a Court of competent jurisdiction shall be reversed or altered on appeal or revision on account of any error, omission or irregularity in the complaint, summons, warrant, charge, proclamation, order, judgment or other proceedings before or during trial or in any enquiry or other proceedings under this Code, unless such error, omission or irregularity, has in fact occasioned a failure of justice".
If, therefore, cognizance is in fact taken, on a police report vitiated by the breach of a mandatory provision relating to investigation, there can be no doubt that the result of the trial which follows it cannot be set aside unless the illegality in the investigation can be shown to have brought about a miscarriage of justice. That an illegality committed in the course of investigation does not affect the competence and the jurisdiction of the Court for trial is well settled as appears from the cases in Prabhu V. Emperor and Lumbhardar Zutshi V. King. These no doubt relate to the illegality of arrest in the course of investigation while we are concerned in the present cases with the illegality with reference to the machinery for the collection of the evidence. This distinction may have a bearing on the question of prejudice or miscarriage of justice, but both the cases clearly show that invalidity of the investigation has no relation to the competence of the Court. We are, therefore, clearly, also, of the opinion that where the cognizance of the case has in fact been taken and the case has proceeded to termination, the invalidity of the precedent investigation does not vitiate the result, unless miscarriage of justice has been 70 of 83 pil-87.06 final.doc caused thereby.
10. It does not follow, however, that the invalidity of the investigation is to be completely ignored by the Court during trial. When the breach of such a mandatory provision is brought to the knowledge of the Court at a sufficiently early stage, the Court, while not declining cognizance, will have to take the necessary steps to get the illegality cured and the defect rectified, by ordering such reinvestigation as the circumstances of an individual case may call for. Such a course is not altogether outside the contemplation of the scheme of the Code as appears from Section 202 under which a Magistrate taking cognizance on a complaint can order investigation by the police. Nor can it be said that the adoption of such a course is outside the scope of the inherent powers of the Special Judge, who for purposes of procedure at the trial is virtually in the position of a Magistrate trying a warrant case. When the attention of the Court is called to such an illegality at a very early stage it would not be fair to the accused not to obviate the prejudice that may have been caused thereby, by appropriate orders, at that stage but to leave him to the ultimate remedy of waiting till the conclusion of the trial and of discharging the somewhat difficult burden under Section 537 of the Code of Criminal Procedure of making out that such an error has in fact occasioned a failure of justice. It is relevant in this context to observe that even if the trial had proceeded to conclusion and the accused had to make out that there was in fact a failure of justice as the result of such an error, explanation to Section 537 of the Code of Criminal Procedure indicates that the fact of the objection having been raised at an early stage of the proceeding is a pertinent factor. To ignore the breach in such a situation when brought to the notice of the Court would be virtually to make a dead letter of the peremptory provision which has been enacted on grounds of public policy for the benefit of such an accused. It is true that the peremptory provision itself allows an officer of a lower rank to make the 71 of 83 pil-87.06 final.doc investigation if permitted by the Magistrate. But this is not any indication by the Legislature that an investigation by an officer of a lower rank without such permission cannot be said to cause prejudice. When a Magistrate is approached for granting such permission he is expected to satisfy himself that there are good and sufficient reasons for authorising an officer of a lower rank to conduct the investigation. The granting of such permission is not to be treated by a Magistrate as a mere matter of routine but it is an exercise of his judicial discretion having regard to the policy underlying it. In our opinion, therefore, when such a breach is brought to the notice of the Court at an early stage of the trial the Court have to consider the nature and extent of the violation and pass appropriate orders for such reinvestigation as may be called for, wholly or partly, and by such officer as it considers appropriate with reference to the requirements of Section 5-A of the Act. It is in the light of the above considerations that the validity or otherwise of the objection as to the violation of Section 5(4) of the Act has to be decided and the course to be adopted in these proceedings, determined."
12 Thus, in cases where charge sheets have been filed and the Courts have taken cognizance on the basis of Charge sheets, the proceedings of criminal case or trial will not per se stand vitiated. The same will stand vitiated only if there is a miscarriage of justice.
78 Thereafter, this Court proceeded to hold that registration of offences by the police under sub-section (1) of section 15 of the said Act of 1986 investigation carried out thereon is not per se illegal. While filing complaints, officers authorised under clause (a) of section 19 can always rely upon the material collected during the investigation and the material forming charge sheet prepared by the police. We concur with the view taken above. We must note here that the Committee headed 72 of 83 pil-87.06 final.doc by the Divisional Commissioner will have to ensure that recourse is promptly taken to section 19 for setting the criminal law in motion by the officers empowered under clause (a) of Section 19.
79 There is a need to hold regular awareness programs in schools and colleges and various educational institutions for making the students aware about the drastic effects of destruction of mangroves. The State shall take steps in that behalf for making the students aware about the dangers which may be caused to the ecology and environment in case the mangroves forests are destructed or damaged. To reiterate, the failure of the State and its agencies/ instrumentalities to maintain and conserve the mangrove areas will amount to violation of rights of the citizens under Article 21 of the Constitution of India apart from other consequences. Though we are not issuing a writ, we hope and trust that the State Government will take such initiatives.
80 The State Government has not placed any material on record to show that compliance with clause 8(vii) of order dated 6 th October 2005 has been made. We propose to direct the State Government to do so within two months by providing copies to the petitioners.
81 The mangroves lands held by the public authorities like CIDCO, MMRDA are also governed by sub-clauses (ix) to (xi) of clause 8 of the aforesaid order. Therefore, they must transfer the lands in their possession to the Forest Department.
82 Considering the prayers in the Writ Petition No. 2208 of 2004, no separate order is required to be passed therein. We are passing a separate order in Writ Petition No. 2741 of 2017.
73 of 83 pil-87.06 final.doc SUMMARY OF IMPORTANT FINDINGS 83 The summary of some of the important conclusions read thus:
(i) A land regardless of its ownership on which there are mangroves, is a forest within the meaning of the said Act of 1980 and therefore, the provisions of Section 2 of the said Act of 1980 and the law laid down by the Apex Court in the case of T.N. Godavarman will squarely apply to such land;
(ii) A mangroves area on a Government land is liable to be declared as a protected forest or a reserved forest, as the case may be, within the meaning of the said Act of 1927;
(iii) All mangroves lands irrespective of its area will fall in CRZ-I as per both the CRZ notifications of 1991 and 2011;
(iv) In 1991 CRZ notification, it is provided that all mangrove areas will fall in CRZ-I. By virtue of the order dated 27th September 1996, in case of mangrove areas of 1000 square meters or more, 50 meter buffer zone abutting it was also included in CRZ-I. By order dated 9th January 2000, it was provided that 50 meter buffer zone will not be required, provided a road abutting the mangroves was constructed prior to February 1991. Under the 2011 notification, all mangroves lands fall in CRZ-I and in case the area of such land is 1000 square meters or more, even a buffer zone of 50 meters along the said area shall be a part of 74 of 83 pil-87.06 final.doc CRZ-I. But, the buffer zone of 50 meters which is required to be kept free of constructions in respect of the mangroves area of less than 1000 square meters will not be a part of CRZ-I.;
(v) if there is any violation of the CRZ notifications regarding mangroves area, it will attract penal provision under Section 15 of the said Act of 1986 which is attracted in case of the failure to comply with the provisions of orders or directions issued under the said Act of 1986. The conditions imposed in the the letter dated 27th September 1996 as amended will have to be construed as an order or direction under the said Act of 1986 as CZMP is required to be approved by the Central government in view of the clause 3(i) in the CRZ notification of 1991 which is an order or direction under the said Act of 1986. Hence, if there is any violation of the condition in the letter dated 27 th September 1996 in respect of the 50 meter buffer zone, it will attract penal provision of Section 15 of the said Act of 1986.
(vi) The destruction of mangroves offends the fundamental rights of the citizens under Article 21 of the Constitution of India.
(vii) In view of the provisions of Articles 21, 47, 48A and 51A(g) of the Constitution of India, it is a mandatory duty of the State and its agencies and instrumentalities to protect and preserve mangroves;
(viii) In view of applicability of public trust doctrine, the State is duty bound to protect and preserve mangroves. The mangroves cannot be permitted to be destructed by the 75 of 83 pil-87.06 final.doc State for private, commercial or any other use unless the Court finds it necessary for the public good or public interest;
(ix) The Precautionary Principle makes it mandatory for the State and its agencies and instrumentality to anticipate and attack causes and consequences of degradation of mangroves.
84 As far as Writ Petition No.2741 of 2017 is concerned, we are deciding the same by a separate order. Writ Petition No.2208 of 2014 will stand disposed of in terms of this Judgment.
85 For the reasons recorded above, we dispose of the PIL by passing the following order :-
ORDER (A) The following directions issued in the interim order dated 6th October 2005 shall continue to operate as final directions in following terms;
(I) That there shall be a total freeze on the destruction and cutting of mangroves in the entire State of Maharashtra;
(II) Dumping of rubble/garbage/solid waste on the mangrove areas shall be stopped forthwith; (III) Regardless of ownership of the land having mangroves and the area of the land, all constructions taking place within 50 metres on all sides of all mangroves areas shall be forthwith stopped. The area of 50 meters shall be kept free of construction except construction of a compound wall/fencing for its protection.;
76 of 83 pil-87.06 final.doc (IV) No development permission whatsoever shall be issued by any authority in the State of Maharashtra in respect of any area under mangroves. All authorities including the Planning Authorities shall note that all mangroves lands irrespective of its area will fall in CRZ-I as per both the CRZ notifications of 1991 and 2011. In case of all mangrove areas of 1000 sq. meter or more, a buffer zone of 50 meters along the mangroves will also be a part of CRZ-I area. Though buffer zone of 50 meters in case of mangroves area of less than 1000 meters will not be a part of CRZ-I, it will be subject to above restrictions specified in clause III above; (V) The State of Maharashtra is directed to file in this Court and furnish to the petitioner copies of the maps referred to in paragraph 10 of the affidavit dated 16th August, 2005, filed by Mr.Gajanand Varade, Director, Environment Department, State of Maharashtra (Page 346 on the record), within four weeks from today. The soft or hard copies of the maps be supplied to the Petitioner within the same period;
(B) The following direction issued in terms of clause 8(viii) of the order dated 6th October 1005 has been substantially complied with :
"The areas shown as mangrove area in the satellite study report "Mapping of mangroves in the Maharashtra State using Satellite Remote Sensing" dated August, 2005, prepared by the Maharashtra 77 of 83 pil-87.06 final.doc Remote Sensing Application Centre (MRSAC) for the MCZMA which was submitted to this Court on 29th August, 2005, form part of Phase I of the mapping by MRSAC. The MRSAC will, in Phase-II, carry out mangroves study using high resolution for detailed mapping of mangroves with a view to identify more precisely mangrove areas in Mumbai and Navi Mumbai. After receiving the said satellite data, transfer of mangrove details on city survey/village maps (cadastral map) will be carried out within a period of 6 months from today";
(C) The directions in sub-clauses(ix) to (xiii) of clause 8 of the order dated 6th October 2005 shall continue to operate as final directions in respect of mangrove areas only on the government lands and the lands held by Planning Authorities like CIDCO, MMRDA etc. In respect of the lands admeasuring 2823.8493 Hectares as stated in the affidavit dated 14th February 2018 of Shri Milind Panditrao, the direction regarding transfer of the lands to the Forest Department and consequential directions regarding making revenue entries shall be complied with within a period of three months from the date on which this Judgment and Order is uploaded. The State Government shall identify the mangroves lands which were vested in it by virtue of section 3(1) of the Private Forest Act and shall take appropriate steps in respect of such lands for transferring such lands to Forest Department within a period of 18 months from today. It will be also open for the State Government to take recourse to section 21 of the Private Forest Act in appropriate cases;
78 of 83 pil-87.06 final.doc (D) We direct the State Government to constitute a Committee headed by the Divisional Commissioner, as agreed by the State Government. The Committee and sub-committees shall be formed in accordance with the observations made in paragraph 68 above. The committee shall be responsible for the preservation and conservation of mangroves, for restoration of reclaimed mangroves areas set out in paragraph 73 above and for implementation of the directions in this Judgment. The Committee shall be constituted within a period of one month from today. The sub-committees as observed in paragraph 68 shall be constituted within two months from today. The Committee shall hold regular meetings and the minutes of the meeting shall be made available on public domain as observed in paragraph 68 above. As directed under the order dated 6th October 2005, the Principal Secretaries of (1) Environment, (2) Revenue and (3) Forest Department of the Government of Maharashtra shall be overall in-charge for ensuring total compliance with the directions issued under this Judgment and Order. They will monitor the working of the Committee headed by the Divisional Commissioner;
(E) The State Government shall create a Grievance Redress Mechanism for enabling the members of the public to lodge complaints about the activity of destruction /removal of the mangroves. An opportunity must be made available to file complaints about any acts or omission which may ultimately result in destruction or causing damage to the mangroves area. The State 79 of 83 pil-87.06 final.doc Government shall make arrangements for receiving complaints on dedicated website, on toll free numbers and in physical form to the officers or offices nominated by the State Government in all districts and especially in the areas where there are mangroves. A facility shall be made available for uploading the photographs of the affected area by e-mail and by whats app or similar media by use of cell phone. The State Government must also create a machinery to ensure that the said complaints are immediately transferred to the Committee headed by the Divisional Commissioner. The Committees will ensure that immediate action is taken of stopping the illegal destruction or acts amounting to causing damage to the mangrove areas, if necessary with the police help. Necessary register shall be maintained of the complaints received and action taken thereon. The State Government must lay down the procedure by which complainant is kept posted about the action taken on his or her complaint. On the request made by the complainant, the identity of the complainant shall be masked and the names of the complainant shall not be disclosed to the violators;
(F) The Grievance Redress Mechanism shall be set up within a period of three months from today. Adequate publicity shall be given to the availability of the Grievance Redress Mechanism in leading newspapers as well as local newspapers. Information about availability of the Grievance Redress Mechanism shall be prominently displayed in the offices of District Collectors, Sub-
80 of 83 pil-87.06 final.doc Divisional Officers, Tahasildar in the Coastal Districts as well as in the offices of the Maharashtra Pollution Control Board and the Maharashtra Maritime Board in the coastal districts. The information shall be displayed prominently in the offices of the Municipal Corporations/Municipal Councils provided any coastal area forms part of the limits of such Municipal Corporation or such Municipal Council. Publicity shall be given at regular intervals of at least six months to the details of the grievance redress mechanism in leading newspapers having good circulation in the coastal areas;
(G) We direct that it is the obligation of the State to replant destructed mangroves and to restore mangroves areas which are illegally reclaimed. The said areas shall be restored to its original condition. In what manner restoration shall be done must be decided by the Committee headed by the Divisional Commissioner after consulting experts in the field. The Committee shall identify the vulnerable mangroves areas in the State and direct its constant surveillance by the Police/Forest Guards/Security Guards of the Maharashtra Security Corporation. The Committee shall ensure that barricades are erected for preventing the entry of vehicles in such vulnerable area. The Committee shall also consider of installing CCTVs along the vulnerable stretches to keep a vigil. The Committee shall also cause to undertake satellite mapping of mangroves area in the state at periodical intervals of not more than six months by using resolution as suggested in paragraph no.28 of the note 81 of 83 pil-87.06 final.doc submitted by the learned senior counsel appearing for the petitioner. Any changes seen shall be considered by the Committee and remedial measures shall be taken. The State Government shall sanction necessary amount for that purpose;
(H) The State Government shall ensure that criminal law is set in motion against all those who commit offences punishable under section 15 of the said Act of 1986 as observed in the Judgment. The Committee shall monitor implementation of this direction;
(I) The State Government shall issue a direction under section 154 of the MRTP Act to all concerned Planning Authorities and Regional Boards under the MRTP Act to to show mangroves areas and 50 meter buffer zone around it while making or revising Development Plans/Regional Plans. Such a direction shall be issued within a period of three months from today;
(J) Quarterly Compliance reports shall be filed by the Committee reporting compliance with the aforesaid directions. The first of such reports shall be filed on or before 1st December 2018;
(K) Rule issued in PIL No.87 of 2006 is disposed of on above terms;
(L) For reporting compliance, PIL shall be listed on 1 st December 2018. It will be appropriate if PIL is placed for 82 of 83 pil-87.06 final.doc monitoring the compliance before this Bench or a Bench of which one of us is a party. The Prothonotary and Senior Master shall seek appropriate directions in this behalf from Hon'ble the Chief Justice;
(M) Writ Petition No. 2208 of 2004 stands disposed of. No separate directions are required to be issued in this Petition. Writ Petition No. 2741 of 2004 stands disposed of by a separate order passed today;
(RIYAZ I. CHAGLA, J) (A.S. OKA, J) 83 of 83


final
static
variables during initialization of a class. Such uses may make the semantics
of the code dependent on order of class creation, may cause variables to be used before initialized, and generally cause extremely difficult
and confusing bugs.
Example:
class Foo { public static int bar = 0; static { System.out.println(bar); } }


our services
our locations
BB BAUMASCHINENCo. covers over 150 locations all over the globe plus numerous logistic partner companies from different areas of supply chain.
View all locationstrack your load
Already have a shipping number, please insert it bellow.


| Media | Data |
|---|---|
| Name | |
| Position (Non audio elements) | |
| File |
Search for media here or select some from the table.
The OBS overlay has launched. Copy the following link and paste it in a browser source.
The overlay will launch automatically when you join a chat. This button is only for testing purposes. If you encounter any issues with the overlay be sure to let us know! Usually a simple restart fixes it.
Select the audio to be played in the overlay
Select the media to be shown in the overlay
You can have various actions in the bot trigger media. You can play audio and display images,GIFs, and videos. You must add the overlay as a browser source in OBS. The overlay is index.html in this directory. It will allow your viewers to hear and see the media.
The overlay will launch when you join a chat. To test it without joining a chat you can launch it from the overlay tab. Then open the file in the browser. Click anywhere on the page and it will become active.
To add media on command acitvation edit a command and add a corresponding action. You must add the media on this page first. Then the rest of the bot can use it.
If the overlay is not connecting try refreshing the cache in OBS and check that the overlay status is active in the nav bar.


To record a sound into a sound file
- Make sure you have an
connected to your computer.
- On the File menu, click Open, and then double-click the sound file you want to modify.
- Move the slider to the place in the file where you want to record sound.
- To begin recording, click .
- On the File menu, click Save As.
Notes
- If you add a sound to the middle of an existing sound file, the new sound replaces the original sound after the insertion point.
- You can stop recording by clicking .


-
View cart
Order Summary
-
$263.98
Subtotal
-
FREE
Standard Shipping
-
$75.00
Oversize shipping
-
$50.00
Estimated Taxes
- Order Total $388.98


SignsFive
alpha
Log In
Submit a Sign
Let's Upload!
Upload
Your Submission
Enter a linked URL
[How to upload / direction description goes here]
Preview of your sign
Preview Goes Here
Submission Details
What is the term?
What is the definition of the term?
Why did you sign it this way?
Where is this sign used?
Upload


The skies will light up in West Lothian on Bonfire Night
A variety of fireworks displays are being held across West Lothian for Bonfire night this year
by John-Paul Clark, https://www.dailyrecord.co.uk/authors/john-paul-clark/A variety of fireworks displays will be occurring all over West Lothian for Bonfire night this year.
The events will be taking place over the next week beginning with West Calder’s free display on Friday and ending on Bonfire day itself on the November 5.
The West Calder & Harburn Community Development Trusts Annual Free Firework Display will be held at the Community Centre in Burngrange playing fields at 7pm on Friday November 1. Entry by donation and everyone is welcome.
Linlithgow Rugby Club fireworks display begins at 7.30pm on Saturday November 2 and entry costs £4 or £12 for a family. All proceeds are to be reinvested in youth and community sports. The clubhouse and bar will be open and food and drink are available.
Hopetoun House Fireworks & Bonfire night is also on Saturday November 2. This is their tenth annual display and as well as the fireworks there will be games, food and plenty more! Entry is £15 for adults and £8 for children.
Deer Park Golf & Country Club’s annual firework display takes place on Tuesday November 5. A Hog Roast is on offer but there are a few different options when buying tickets, Find out more here: https://www.deer-park.co.uk/u


{{page.title}} [adjective][species] (and thus LSF) is no longer in operation. If you are looking for great furry content, check out our friends over at Culturally F'd. This site is left up as an archive and curiosity only. {{ content }}


This has several display information from one located on the steering wheel with basic information about the performance and parameters of the car, to another located in the steering column where the images of the three exterior cameras that control the environment is.
The details are taken care to the maximum, we have tried to reduce weight to a minimum and it has been used, for example, carbon fiber blue to match the rest of the car.
It is the model used players Gran Turismo on PlayStation, hence its name. With some guidelines that inevitably remind the deceased Bugatti Veyron, the Vision Gran Turismo to pay homage to the Bugatti race winning races in the 20 and 30. Hence his blue like the Bugatti Type 57.
That is why even the Bugatti Vision Gran Turismo looks spectacular, each and every one of its parts have a real function in the car. The Audi engineers have worked closely with the design team to ensure that it was a car show not alone.


{{title}} Posted by {{author.name}} on {{posted_in}} {{#isViewerLogged}} Edit post Delete post {{/isViewerLogged}} {{content}}


{% include social_card.html
icon-class="github"
text="If you're interested in seeing what sort of programming projects I'm working on, Github is the place to check.
"
%}
{% include social_card.html
icon-class="twitter"
text="If you want to see what miscellaneous or scientific stuff I'm up to online, you can find me on Twitter as @MikeTheBiochem.
"
%}
{% include social_card.html
icon-class="instagram"
text="And lastly, you can check out some of my sporadically posted photos and other artwork on Instagram.


BA-owner IAG cuts capacity growth forecast, hitting profit outlook
by ReutersLONDON (Nov 8): British Airways owner IAG scaled back its forecast for capacity growth for the next three years on Friday, hitting its outlook for earnings per share as the prospects for the global economy remained weak.
IAG said that available seat kilometers, a measure of passenger carrying capacity, was estimated to grow 3.4% a year between 2020 and 2022, compared to a previous forecast of 6% growth a year for the 2019-2023 period.
The airline group, which also owns Iberia, Aer Lingus and Vueling, lowered its forecast for growth in earnings per share (EPS) to 10%+ a year from a previous forecast of 12%+ a year, due to the lower planned capacity growth.


The HoneyComb
Check out our collection of design courses and real world projects.
-
- Newest
- Oldest
- Alphabetical
-
- Beginner
- Intermediate
- Advanced
-
Adobe Illustrator Basics
Illustrator is a vector drawing program. It is often used to draw illustrations, cartoons, diagrams, charts and logos.
-
Adobe Photoshop Basics
Photoshop is an essential tool in the creative realm. From editing photos to making beautiful compositions, it is a great tool!
-
Typography Fundamentals
Every designer has to deal with content, and that is usually in the form of type! Typography is a vast topic, but the basics are essential.
-
Layers & Masks
Every designer has to deal with content, and that is usually in the form of type! Typography is a vast topic, but the basics are essential.
-
Typography in Depth
After you’ve learned the basics of typography, there is much more to learn to become a knowledgeable and experienced designer.
-
The Pathfinder Tool
An important tool found in Adobe Illustrator, the Pathfinder Tool is a simple tool used by professional designers to create masterpieces.
-
Adobe InDesign Basics
Adobe InDesign is a great tool to create works such as posters, flyers, brochures, magazines, newspapers, and books.
-
DSLR Photography
Photography is a great skill for a designer to have in their back pocket for whenever they need a unique image.
-
Web Design
Designing for the web takes all the things you’ve learned and incorporates them into a digital realm, with some new rules.
-
Adobe AfterEffects
In this course, you will be introduced to AfterEffects, which is a great program for creating animations and short clips.
-
Mastering InDesign
After learning the basics of Adobe InDesign, take your knowledge even further and learn all the intricacies of the program.
-
Designing in HTML & CSS
As design becomes much more integrated into the digital scene, HTML and CSS are great coding tools when designing for web.


Ben Affleck, Gal Gadot and Ray Fisher call for the release of the Snyder Cut
by Naveel KrishantIn news that will get DC Comics megafans insanely excited - and confuse everyone else - Ben Affleck, Gal Gadot and Ray Fisher have tweeted #ReleaseTheSnyderCut.
It's all to do with a rumoured alternative cut of the superhero epic Justice League.
When it came out in 2017, the original got almost universally bad reviews.
Now three of its biggest stars have joined calls for director Zack Snyder's edit to be shown the light of day.
Justice League was supposed to be DC Comics' answer to Marvel's The Avengers - a way to bring the franchise's biggest names together in one movie.
But it was hit by big problems.
Its original director, Zack Snyder, had a family tragedy and had to drop out in post-production.
The film was then taken on by Joss Whedon.
When it was released it was hardly a critical success - ending up with a woeful 40% on the website which pulls together critical reviews, Rotten Tomatoes.
Source: BBC


--- layout: member_profile title: "Santiago Barboza" permalink: /members/barboza/ name: "Santiago Barboza" affiliation: "Max Planck Institute for Astronomy" jointaffiliation: country: "Germany" position: "PhD Student" researchtitle: "Mechanical Design of a Large Image De-rotator for an Infrared Camera« within the international MICADO consortium" summary: "MICADO in the Multi-AO Imaging Camera for Deep Observations (MICADO), which is being designed to work with adaptive optics at the E-ELT. My PhD thesis will focus on developing MICADO's de-rotator, a key mechanical component that must carry the cryostat (3 tons) and the wavefront sensor while connecting them to the support structure and at the same time, must stably de-rotate the whole instrument around its vertical axis of symmetry." prior: orcid: website: linkedin: rgate: research: ["ELTs" , "MICADO" , "Mechanical Design" ] keywords: "ELTs -- MICADO -- Mechanical Design" email<EMAIL_ADDRESS>image_path: /assets/img/member/barboza.jpg ---
Current Research Summary:
{{ page.summary}}Prior Research:
{{ page.prior}}


--- layout: app title: Space Explorer ---
| Iteration count | 0 |
| Maximum space explored | 0.00% |
| Current | 0% |
| Best | 0% |
| Worst | 0% |
| Average | 0% |
The exhaustive, or brute-force, search.
A hill climber.
| Permute distance | 1-5 | |
| Stochastic | 0% |
Genetic algorithm driven search.
| Population size | 25 | |
| Tournament size | 50% | |
| Crossover rate | 90% | |
| Mutation rate | 1% |
| Space Size | 128 x 128 | |
| Measurement noise | 0 % | |
| Simulation speed | 2 Hz |


Tyler Davis
Charlotte, NC 28216
I am a Full Stack Web Developer with a background in customer service and warehousing that can bring a unique perspective to web development and user interaction. I earned a certificate in Full Stack Web Development from the UNC Charlotte Coding Boot Camp. Below you will see links to a few of my projects as well as my GitHub and LinkedIn accounts.


Devices
Searching...
Refresh
Main Page
On
Off
Disconnect
Current Color: Red:
0
Green:
0
Blue:
0
Set Color
Set Timer
View Timers
Colors Control
Red
255
Green
0
Blue
0
Fade to Color
Return to Main
Timer Control
ON:
seconds
SET
OFF:
seconds
SET
FADE:
seconds
SET
Return to Main
Timer View
ON:
0
See On Timer
Start
OFF:
0
See Off Timer
Start
FADE:
0
Return to Main
Processing


---
layout: page
section: research
title: Outcomes from Sussex Partnership Mindfulness Groups
main_image_path:
style: research
main_nav: false
sidebar: research-sidebar.html
---
We have recently conducted a review of the mindfulness groups for service users and staff in Sussex Partnership. The findings can be found here:


Building From Source
Get Started ›Build MXNet from Source
This document explains how to build MXNet from source code.
For Java/Scala/Clojure, please follow this guide instead
Overview
Building from source follows this general two-step flow of building the shared library, then installing your preferred language binding. Use the following links to jump to the different sections of this guide.
- Build the MXNet shared library,
libmxnet.so
. - Install the language API binding(s) you would like to use for MXNet. MXNet's newest and most popular API is Gluon. Gluon is built into the Python binding. If Python isn't your preference, you still have more options. MXNet supports several other language APIs:
Build Instructions by Operating System
Detailed instructions are provided per operating system. Each of these guides also covers how to install the specific Language Bindings you require. You may jump to those, but it is recommended that you continue reading to understand more general "build from source" options.
Clone the MXNet Project
- Clone or fork the MXNet project.
bash git clone --recursive https://github.com/apache/incubator-mxnet mxnet cd mxnet
Prerequisites
The following sections will help you decide which specific prerequisites you need to install.
Math Library Selection
It is useful to consider your math library selection prior to your other prerequisites. MXNet relies on the BLAS (Basic Linear Algebra Subprograms) library for numerical computations. Those can be extended with LAPACK (Linear Algebra Package), an additional set of mathematical functions.
MXNet supports multiple mathematical backends for computations on the CPU: * Apple Accelerate * ATLAS * MKL (MKL, MKLML) * MKL-DNN * OpenBLAS
The default order of choice for the libraries if found follows the path from the most
(recommended) to less performant backends.
The following lists show this order by library and cmake
switch.
For desktop platforms (x86_64):
- MKL-DNN (submodule) |
USE_MKLDNN
- MKL |
USE_MKL_IF_AVAILABLE
- MKLML (downloaded) |
USE_MKLML
- Apple Accelerate |
USE_APPLE_ACCELERATE_IF_AVAILABLE
| Mac only - OpenBLAS |
BLAS
| Options: Atlas, Open, MKL, Apple
Note: If USE_MKL_IF_AVAILABLE
is set to False then MKLML and MKL-DNN will be disabled as well for configuration
backwards compatibility.
For embedded platforms (all other and if cross compiled):
- OpenBLAS |
BLAS
| Options: Atlas, Open, MKL, Apple
You can set the BLAS library explicitly by setting the BLAS variable to:
- Atlas
- Open
- MKL
- Apple
See the cmake/ChooseBLAS.cmake file for the options.
Intel's MKL (Math Kernel Library) is one of the most powerful math libraries
It has following flavors:
MKL is a complete math library, containing all the functionality found in ATLAS, OpenBlas and LAPACK. It is free under community support licensing (https://software.intel.com/en-us/articles/free-mkl), but needs to be downloaded and installed manually.
MKLML is a subset of MKL. It contains a smaller number of functions to reduce the size of the download and reduce the number of dynamic libraries user needs.
- MKL-DNN is a separate open-source library, it can be used separately from MKL or MKLML. It is shipped as a subrepo with MXNet source code (see 3rdparty/mkldnn or the MKL-DNN project)
Since the full MKL library is almost always faster than any other BLAS library it's turned on by default,
however it needs to be downloaded and installed manually before doing cmake
configuration.
Register and download on the Intel performance libraries website.
You can also install MKL through YUM
or APT Repository.
Note: MKL is supported only for desktop builds and the framework itself supports the following hardware:
- Intel® Xeon Phi™ processor
- Intel® Xeon® processor
- Intel® Core™ processor family
- Intel Atom® processor
If you have a different processor you can still try to use MKL, but performance results are unpredictable.
Install GPU Software
If you want to run MXNet with GPUs, you must install NVDIA CUDA and cuDNN.
Install Optional Software
These might be optional, but they're typically desirable as the extend or enhance MXNet's functionality.
- OpenCV - Image Loading and Augmentation. Each operating system has different packages and build from source options for OpenCV. Refer to your OS's link in the Build Instructions by Operating System section for further instructions.
- NCCL - NVIDIA's Collective Communications Library. Instructions for installing NCCL are found in the following Build MXNet with NCCL section.
More information on turning these features on or off are found in the following build configurations section.
Build Configurations
There is a configuration file for make,
make/config.mk
, that contains all the compilation options. You can edit it and then run make
or cmake
. cmake
is recommended for building MXNet (and is required to build with MKLDNN), however you may use make
instead. For building with Java/Scala/Clojure, only make
is supported.
NOTE: When certain set of build flags are set, MXNet archive increases to more than 4 GB. Since MXNet uses archive internally archive runs into a bug ("File Truncated": bugreport) for archives greater than 4 GB. Please use ar version 2.27 or greater to overcome this bug. Please see https://github.com/apache/incubator-mxnet/issues/15084 for more details.
Build MXNet
Build MXNet with NCCL
- Download and install the latest NCCL library from NVIDIA.
- Note the directory path in which NCCL libraries and header files are installed.
- Ensure that the installation directory contains
lib
andinclude
folders. - Ensure that the prerequisites for using NCCL such as Cuda libraries are met.
- Append the
config.mk
file with following, in addition to the CUDA related options. - USE_NCCL=1
- USE_NCCL_PATH=path-to-nccl-installation-folder
echo "USE_NCCL=1" >> make/config.mk
echo "USE_NCCP_PATH=path-to-nccl-installation-folder" >> make/config.mk
cp make/config.mk .
- Run make command
bash make -j"$(nproc)"
Validating NCCL
- Follow the steps to install MXNet Python binding.
- Comment the following line in
test_nccl.py
file atincubator-mxnet/tests/python/gpu/test_nccl.py
bash @unittest.skip("Test requires NCCL library installed and enabled during build")
- Run test_nccl.py script as follows. The test should complete. It does not produce any output.
bash nosetests --verbose tests/python/gpu/test_nccl.py
Recommendation to get the best performance out of NCCL: It is recommended to set environment variable NCCL_LAUNCH_MODE to PARALLEL when using NCCL version 2.1 or newer.
Build MXNet with C++
- To enable C++ package, just add
USE_CPP_PACKAGE=1
when you runmake
orcmake
(see examples).
Usage Examples
For example, you can specify using all cores on Linux as follows:
mkdir build && cd build
cmake -GNinja ..
ninja -v
Recommended for Systems with NVIDIA GPUs and Intel CPUs
- Build MXNet with
cmake
and install with MKL DNN, GPU, and OpenCV support:
mkdir build && cd build
cmake -DUSE_CUDA=1 -DUSE_CUDA_PATH=/usr/local/cuda -DUSE_CUDNN=1 -DUSE_MKLDNN=1 -GNinja ..
ninja -v
Recommended for Systems with NVIDIA GPUs
- Build with both OpenBLAS, GPU, and OpenCV support:
mkdir build && cd build
cmake -DBLAS=open -DUSE_CUDA=1 -DUSE_CUDA_PATH=/usr/local/cuda -DUSE_CUDNN=1 -GNinja ..
ninja -v
Recommended for Systems with Intel CPUs
- Build MXNet with
cmake
and install with MKL DNN, and OpenCV support:
mkdir build && cd build
cmake -DUSE_CUDA=0 -DUSE_MKLDNN=1 -GNinja ..
ninja -v
Recommended for Systems with non-Intel CPUs
- Build MXNet with
cmake
and install with OpenBLAS and OpenCV support:
mkdir build && cd build
cmake -DUSE_CUDA=0 -DBLAS=open -GNinja ..
ninja -v
Other Examples
- Build without using OpenCV:
mkdir build && cd build
cmake -DUSE_OPENCV=0 -GNinja ..
ninja -v
- Build on macOS with the default BLAS library (Apple Accelerate) and Clang installed with
xcode
(OPENMP is disabled because it is not supported by the Apple version of Clang):
mkdir build && cd build
cmake -DBLAS=apple -DUSE_OPENCV=0 -DUSE_OPENMP=0 -GNinja ..
ninja -v
- To use OpenMP on macOS you need to install the Clang compiler,
llvm
(the one provided by Apple does not support OpenMP):
brew install llvm
mkdir build && cd build
cmake -DBLAS=apple -DUSE_OPENMP=1 -GNinja ..
ninja -v
Installing MXNet Language Bindings
After building MXNet's shared library, you can install other language bindings.
NOTE: The C++ API binding must be built when you build MXNet from source. See Build MXNet with C++.
The following table provides links to each language binding by operating system: | | Ubuntu | macOS | Windows | | --- | ---- | --- | ------- | | Python | Ubuntu guide | OSX guide | Windows guide | | C++ | C++ guide | C++ guide | C++ guide | | Clojure | Clojure guide | Clojure guide | n/a | | Julia | Ubuntu guide | OSX guide | Windows guide | | Perl | Ubuntu guide | OSX guide | n/a | | R | Ubuntu guide | OSX guide | Windows guide | | Scala | Scala guide | Scala guide | n/a | | Java | Java guide | Java Guide | n/a |


|
MINI51DE_BSP V3.02.004
The Board Support Package for Mini51DE Series MCU
|
Modules | |
| MINI51 Peripheral Declaration | |
Macros | |
| #define | FLASH_BASE ((uint32_t)0x00000000) |
| Flash base address. More... | |
| #define | SRAM_BASE ((uint32_t)0x20000000) |
| SRAM base address. More... | |
| #define | APB1PERIPH_BASE ((uint32_t)0x40000000) |
| APB1 base address. More... | |
| #define | APB2PERIPH_BASE ((uint32_t)0x40100000) |
| APB2 base address. More... | |
| #define | AHBPERIPH_BASE ((uint32_t)0x50000000) |
| AHB base address. More... | |
| #define | WDT_BASE (APB1PERIPH_BASE + 0x04000) |
| WDT register base address. More... | |
| #define | TIMER0_BASE (APB1PERIPH_BASE + 0x10000) |
| TIMER0 register base address. More... | |
| #define | TIMER1_BASE (APB1PERIPH_BASE + 0x10020) |
| TIMER1 register base address. More... | |
| #define | I2C_BASE (APB1PERIPH_BASE + 0x20000) |
| I2C register base address. More... | |
| #define | SPI_BASE (APB1PERIPH_BASE + 0x30000) |
| SPI register base address. More... | |
| #define | PWM_BASE (APB1PERIPH_BASE + 0x40000) |
| PWM register base address. More... | |
| #define | UART_BASE (APB1PERIPH_BASE + 0x50000) |
| UART register base address. More... | |
| #define | ACMP_BASE (APB1PERIPH_BASE + 0xD0000) |
| ACMP register base address. More... | |
| #define | ADC_BASE (APB1PERIPH_BASE + 0xE0000) |
| ADC register base address. More... | |
| #define | GCR_BASE (AHBPERIPH_BASE + 0x00000) |
| GCR register base address. More... | |
| #define | CLK_BASE (AHBPERIPH_BASE + 0x00200) |
| CLK register base address. More... | |
| #define | INT_BASE (AHBPERIPH_BASE + 0x00300) |
| INT register base address. More... | |
| #define | P0_BASE (AHBPERIPH_BASE + 0x04000) |
| GPIO Port 0 register base address. More... | |
| #define | P1_BASE (AHBPERIPH_BASE + 0x04040) |
| GPIO Port 1 register base address. More... | |
| #define | P2_BASE (AHBPERIPH_BASE + 0x04080) |
| GPIO Port 2 register base address. More... | |
| #define | P3_BASE (AHBPERIPH_BASE + 0x040C0) |
| GPIO Port 3 register base address. More... | |
| #define | P4_BASE (AHBPERIPH_BASE + 0x04100) |
| GPIO Port 4 register base address. More... | |
| #define | P5_BASE (AHBPERIPH_BASE + 0x04140) |
| GPIO Port 5 register base address. More... | |
| #define | GPIO_DBNCECON_BASE (AHBPERIPH_BASE + 0x04180) |
| GPIO De-bounce register vase. More... | |
| #define | GPIO_PIN_DATA_BASE (AHBPERIPH_BASE + 0x04200) |
| GPIO pin data register base address. More... | |
| #define | GPIOBIT0_BASE (AHBPERIPH_BASE + 0x04200) |
| GPIO Port 0 bit access register base address. More... | |
| #define | GPIOBIT1_BASE (AHBPERIPH_BASE + 0x04220) |
| GPIO Port 1 bit access register base address. More... | |
| #define | GPIOBIT2_BASE (AHBPERIPH_BASE + 0x04240) |
| GPIO Port 2 bit access register base address. More... | |
| #define | GPIOBIT3_BASE (AHBPERIPH_BASE + 0x04260) |
| GPIO Port 3 bit access register base address. More... | |
| #define | GPIOBIT4_BASE (AHBPERIPH_BASE + 0x04280) |
| GPIO Port 4 bit access register base address. More... | |
| #define | GPIOBIT5_BASE (AHBPERIPH_BASE + 0x042A0) |
| GPIO Port 5 bit access register base address. More... | |
| #define | FMC_BASE (AHBPERIPH_BASE + 0x0C000) |
| FMC register base address. More... | |
Memory Mapped Structure for MINI51 Series Peripheral
| #define ACMP_BASE (APB1PERIPH_BASE + 0xD0000) |
ACMP register base address.
Definition at line 5693 of file Mini51Series.h.
| #define ADC_BASE (APB1PERIPH_BASE + 0xE0000) |
ADC register base address.
Definition at line 5694 of file Mini51Series.h.
| #define AHBPERIPH_BASE ((uint32_t)0x50000000) |
AHB base address.
Definition at line 5683 of file Mini51Series.h.
| #define APB1PERIPH_BASE ((uint32_t)0x40000000) |
APB1 base address.
Definition at line 5681 of file Mini51Series.h.
| #define APB2PERIPH_BASE ((uint32_t)0x40100000) |
APB2 base address.
Definition at line 5682 of file Mini51Series.h.
| #define CLK_BASE (AHBPERIPH_BASE + 0x00200) |
CLK register base address.
Definition at line 5697 of file Mini51Series.h.
| #define FLASH_BASE ((uint32_t)0x00000000) |
Flash base address.
Definition at line 5679 of file Mini51Series.h.
| #define FMC_BASE (AHBPERIPH_BASE + 0x0C000) |
FMC register base address.
Definition at line 5713 of file Mini51Series.h.
| #define GCR_BASE (AHBPERIPH_BASE + 0x00000) |
GCR register base address.
Definition at line 5696 of file Mini51Series.h.
| #define GPIO_DBNCECON_BASE (AHBPERIPH_BASE + 0x04180) |
GPIO De-bounce register vase.
Definition at line 5705 of file Mini51Series.h.
| #define GPIO_PIN_DATA_BASE (AHBPERIPH_BASE + 0x04200) |
GPIO pin data register base address.
Definition at line 5706 of file Mini51Series.h.
| #define GPIOBIT0_BASE (AHBPERIPH_BASE + 0x04200) |
GPIO Port 0 bit access register base address.
Definition at line 5707 of file Mini51Series.h.
| #define GPIOBIT1_BASE (AHBPERIPH_BASE + 0x04220) |
GPIO Port 1 bit access register base address.
Definition at line 5708 of file Mini51Series.h.
| #define GPIOBIT2_BASE (AHBPERIPH_BASE + 0x04240) |
GPIO Port 2 bit access register base address.
Definition at line 5709 of file Mini51Series.h.
| #define GPIOBIT3_BASE (AHBPERIPH_BASE + 0x04260) |
GPIO Port 3 bit access register base address.
Definition at line 5710 of file Mini51Series.h.
| #define GPIOBIT4_BASE (AHBPERIPH_BASE + 0x04280) |
GPIO Port 4 bit access register base address.
Definition at line 5711 of file Mini51Series.h.
| #define GPIOBIT5_BASE (AHBPERIPH_BASE + 0x042A0) |
GPIO Port 5 bit access register base address.
Definition at line 5712 of file Mini51Series.h.
| #define I2C_BASE (APB1PERIPH_BASE + 0x20000) |
I2C register base address.
Definition at line 5689 of file Mini51Series.h.
| #define INT_BASE (AHBPERIPH_BASE + 0x00300) |
INT register base address.
Definition at line 5698 of file Mini51Series.h.
| #define P0_BASE (AHBPERIPH_BASE + 0x04000) |
GPIO Port 0 register base address.
Definition at line 5699 of file Mini51Series.h.
| #define P1_BASE (AHBPERIPH_BASE + 0x04040) |
GPIO Port 1 register base address.
Definition at line 5700 of file Mini51Series.h.
| #define P2_BASE (AHBPERIPH_BASE + 0x04080) |
GPIO Port 2 register base address.
Definition at line 5701 of file Mini51Series.h.
| #define P3_BASE (AHBPERIPH_BASE + 0x040C0) |
GPIO Port 3 register base address.
Definition at line 5702 of file Mini51Series.h.
| #define P4_BASE (AHBPERIPH_BASE + 0x04100) |
GPIO Port 4 register base address.
Definition at line 5703 of file Mini51Series.h.
| #define P5_BASE (AHBPERIPH_BASE + 0x04140) |
GPIO Port 5 register base address.
Definition at line 5704 of file Mini51Series.h.
| #define PWM_BASE (APB1PERIPH_BASE + 0x40000) |
PWM register base address.
Definition at line 5691 of file Mini51Series.h.
| #define SPI_BASE (APB1PERIPH_BASE + 0x30000) |
SPI register base address.
Definition at line 5690 of file Mini51Series.h.
| #define SRAM_BASE ((uint32_t)0x20000000) |
SRAM base address.
Definition at line 5680 of file Mini51Series.h.
| #define TIMER0_BASE (APB1PERIPH_BASE + 0x10000) |
TIMER0 register base address.
Definition at line 5687 of file Mini51Series.h.
| #define TIMER1_BASE (APB1PERIPH_BASE + 0x10020) |
TIMER1 register base address.
Definition at line 5688 of file Mini51Series.h.
| #define UART_BASE (APB1PERIPH_BASE + 0x50000) |
UART register base address.
Definition at line 5692 of file Mini51Series.h.
| #define WDT_BASE (APB1PERIPH_BASE + 0x04000) |
WDT register base address.
Definition at line 5686 of file Mini51Series.h.