Metadata-Version: 1.1
Name: gdf-formatter
Version: 0.0.5
Summary: GDF formatter for networks representation
Home-page: https://github.com/GabrielTrettel/GDF_Formatter
Author: Gabriel Martins Trettel
Author-email: gabrielmtrettel@gmail.com
License: UNKNOWN
Description: # GDF Formatter
        
        This is a simple and flexible Python library to create and format your graphs in GDF.
        
        
        ## GDF format information
        
        **GDF types:**
        
        |    Type  |   Explanation     |
        |:--------:|:-----------------:|
        | VARCHAR  | A string          |
        | BOOLEAN  | `true` or `false` |
        | INTERGER | Interger number   |
        | DOUBLE   | Float number      |
        
        **Default Attributes:**
        
        For nodes, the default GDF attributes are:
        
        | Attribute    | Type     |
        |:------------:|:--------:|
        | name         | VARCHAR  |
        | label        | VARCHAR  |
        | class        | VARCHAR  |
        | visible      | BOOLEAN  |
        | labelvisible | BOOLEAN  |
        | height       | DOUBLE   |
        | x            | DOUBLE   |
        | y            | DOUBLE   |
        | width        | DOUBLE   |
        | color        | VARCHAR  |
        
        And for edges, the default GDF attributes are:
        
        | Attribute    | Type     |
        |:------------:|:--------:|
        | node1        | VARCHAR  |
        | node2        | VARCHAR  |
        | weight       | DOUBLE   |
        | directed     | BOOLEAN  |
        | color        | VARCHAR  |
        
        ## How to use
        
        **Declaring a graph:**
        
        You have 3 different ways to declare a graph. The fist one is using the default constructor which implements the default attributes for GDF format as below
        
        ```python
        graph = Graph()
        ```
        You can also define custom nodes and edges attributes by passing a dictionary composed by `{attribute:type}` through the Graph constructor parameters `custom_nodes` and `custom_edges`
        
        ```python
        node = {'type':'VARCHAR', 'connections':'DOUBLE', 'class':'DOUBLE'}
        edge = {'influence':'DOUBLE', 'weight':'DOUBLE'}
        graph = Graph(custom_nodes=node, custom_edges=edge)
        ```
        
        Another way to do that is defining custom node attributes on the go as a parameter in the constructor as `name='TYPE'`, like that:
        
        ```python
        graph = Graph(age='INTERGER')
        graph2 = Graph(age='INTERGER', size='DOUBLE')
        ```
        
        *Tips:*
         * You can use both dictionary and on-the-go methods at the same time
         * If you want to overwrite the type of a default attribute you can just pass them in one of the two way above
        
        **Adding nodes:**
        
        Only the `name` parameter are required
         ```python
         graph.addNode(name='1', label='Foo', type='t1', connections=2, age=80)
         ```
        
        **Adding edges:**
        
        Only the `node1` and `node2` parameters are required
        ```python
        graph.addLink(node1='1', node2='2')
        ```
        
        **Dumping a GDF formatted file:**
        ```python
        graph.dump(output_file='output.gdf')
        ```
        
        **Example**
        
        ```python
        from graph import Graph
        
        node = {'type':'VARCHAR', 'connections':'DOUBLE'}
        edge = {'influence':'DOUBLE', 'weight':'DOUBLE'}
        graph = Graph(custom_nodes=node, custom_edges=edge, allow_equal_nodes=True, age='INTERGER')
        
        graph.addNode(name='1', label='Foo', type='t1', connections=2, age=80)
        graph.addNode(name='2', label='Bar', type='t1', connections=3)
        graph.addNode(name='3', label='Qux', connections=8, age=21)
        
        graph.addLink(node1='1', node2='2', weight=0.3)
        graph.addLink(node1='1', node2='2', weight=8, influence=8)
        graph.addLink(node1='2', node2='1', weight=0)
        graph.addLink(node1='2', node2='1', weight=0, influence=9)
        
        graph.dump(output_file='output.gdf')
        ```
        
        **Example output**
        ```
        nodedef>name VARCHAR,label VARCHAR,type VARCHAR,connections DOUBLE,age INTERGER
        2,Bar,t1,3,
        3,Qux,,8,21
        1,Foo,t1,2,80
        
        edgedef>node1 VARCHAR,node2 VARCHAR,weight DOUBLE,influence DOUBLE
        2,1,0,9
        1,2,8,8
        2,1,0,
        1,2,0.3,
        ```
        
        ## Credits
        
        [GabrielTrettel](https://github.com/GabrielTrettel) for creating the library
        
        [GrayJack](https://github.com/GrayJack) for creating the README
        
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 3.7
Classifier: License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0)
Classifier: Operating System :: OS Independent
Classifier: Natural Language :: English
