diff --git a/.ipynb_checkpoints/Untitled0-checkpoint.ipynb b/.ipynb_checkpoints/Untitled0-checkpoint.ipynb
deleted file mode 100644
index 91e5e83cb6f6fb90f3feb8660f5b259052b06c8e..0000000000000000000000000000000000000000
--- a/.ipynb_checkpoints/Untitled0-checkpoint.ipynb
+++ /dev/null
@@ -1,120 +0,0 @@
-{
- "metadata": {
-  "name": "",
-  "signature": "sha256:a5146fbde2b6bf2e3ed4e2bdddfb62662f99272f26e82bf86110680ff3595332"
- },
- "nbformat": 3,
- "nbformat_minor": 0,
- "worksheets": [
-  {
-   "cells": [
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "from node.models import Node, NodeType, Language\n",
-      "import parsing\n",
-      "from parsing.FileParsers import *"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [],
-     "prompt_number": 1
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [],
-     "language": "python",
-     "metadata": {},
-     "outputs": [],
-     "prompt_number": 1
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [],
-     "language": "python",
-     "metadata": {},
-     "outputs": [],
-     "prompt_number": 1
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "node = Node.objects.get(name=\"PubMed corpus\")"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [],
-     "prompt_number": 2
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "fileparser = PubmedFileParser.PubmedFileParser(file='/var/www/gargantext/media/' + node.fichier.name)"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [],
-     "prompt_number": 3
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "fileparser.parse(node)"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [
-      {
-       "ename": "ValueError",
-       "evalue": "Cannot assign \"24\": \"Node.user\" must be a \"User\" instance.",
-       "output_type": "pyerr",
-       "traceback": [
-        "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[1;31mValueError\u001b[0m                                Traceback (most recent call last)",
-        "\u001b[1;32m<ipython-input-4-8c1443001599>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mfileparser\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mparse\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mnode\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
-        "\u001b[1;32m/srv/gargantext/parsing/FileParsers/PubmedFileParser.py\u001b[0m in \u001b[0;36mparse\u001b[1;34m(self, parentNode, tag)\u001b[0m\n\u001b[0;32m     45\u001b[0m                             \u001b[0mlanguage\u001b[0m    \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_languages_iso3\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mmetadata\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m\"language_iso3\"\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mlower\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m     46\u001b[0m                             \u001b[0mmetadata\u001b[0m    \u001b[1;33m=\u001b[0m \u001b[0mmetadata\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 47\u001b[1;33m                             \u001b[0mguid\u001b[0m        \u001b[1;33m=\u001b[0m \u001b[0mmetadata\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m\"doi\"\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m     48\u001b[0m                         )\n\u001b[0;32m     49\u001b[0m                         \u001b[1;32mif\u001b[0m \u001b[0mdocument\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
-        "\u001b[1;32m/srv/gargantext/parsing/FileParsers/FileParser.py\u001b[0m in \u001b[0;36mcreate_document\u001b[1;34m(self, parentNode, title, contents, language, metadata, guid)\u001b[0m\n\u001b[0;32m    100\u001b[0m             \u001b[0mmetadata\u001b[0m    \u001b[1;33m=\u001b[0m \u001b[0mmetadata\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    101\u001b[0m             \u001b[1;31m#resource    = resource,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 102\u001b[1;33m             \u001b[0mparent\u001b[0m      \u001b[1;33m=\u001b[0m \u001b[0mparentNode\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    103\u001b[0m         )\n\u001b[0;32m    104\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
-        "\u001b[1;32m/home/alexandre/projets/gargantext.py/env/lib/python3.4/site-packages/django/db/models/base.py\u001b[0m in \u001b[0;36m__init__\u001b[1;34m(self, *args, **kwargs)\u001b[0m\n\u001b[0;32m    403\u001b[0m                 \u001b[1;31m# \"user_id\") so that the object gets properly cached (and type\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    404\u001b[0m                 \u001b[1;31m# checked) by the RelatedObjectDescriptor.\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 405\u001b[1;33m                 \u001b[0msetattr\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mfield\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mname\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mrel_obj\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m    406\u001b[0m             \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    407\u001b[0m                 \u001b[0msetattr\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mfield\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mattname\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mval\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
-        "\u001b[1;32m/home/alexandre/projets/gargantext.py/env/lib/python3.4/site-packages/django/db/models/fields/related.py\u001b[0m in \u001b[0;36m__set__\u001b[1;34m(self, instance, value)\u001b[0m\n\u001b[0;32m    337\u001b[0m             raise ValueError('Cannot assign \"%r\": \"%s.%s\" must be a \"%s\" instance.' %\n\u001b[0;32m    338\u001b[0m                                 (value, instance._meta.object_name,\n\u001b[1;32m--> 339\u001b[1;33m                                  self.field.name, self.field.rel.to._meta.object_name))\n\u001b[0m\u001b[0;32m    340\u001b[0m         \u001b[1;32melif\u001b[0m \u001b[0mvalue\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m    341\u001b[0m             \u001b[1;32mif\u001b[0m \u001b[0minstance\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_state\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdb\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
-        "\u001b[1;31mValueError\u001b[0m: Cannot assign \"24\": \"Node.user\" must be a \"User\" instance."
-       ]
-      }
-     ],
-     "prompt_number": 4
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "node.children.all()"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": []
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [],
-     "language": "python",
-     "metadata": {},
-     "outputs": []
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [],
-     "language": "python",
-     "metadata": {},
-     "outputs": []
-    }
-   ],
-   "metadata": {}
-  }
- ]
-}
\ No newline at end of file
diff --git a/.ipynb_checkpoints/test_parser-checkpoint.ipynb b/.ipynb_checkpoints/test_parser-checkpoint.ipynb
new file mode 100644
index 0000000000000000000000000000000000000000..58431babc01311560d850c8f638a192c8d22d004
--- /dev/null
+++ b/.ipynb_checkpoints/test_parser-checkpoint.ipynb
@@ -0,0 +1,804 @@
+{
+ "metadata": {
+  "name": "",
+  "signature": "sha256:f40cd0083a2e4ad7d01d7cd7be66a75e339a993999b0ff7b8207b089c8c3b4e9"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+  {
+   "cells": [
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "from node.models import Node, NodeType, Language\n",
+      "import parsing\n",
+      "from parsing.FileParsers import *"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 1
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "#from node.models import Language\n",
+      "#import pycountry\n",
+      "#for lang in pycountry.languages:\n",
+      "#    try:\n",
+      "#        Language(iso2=lang.alpha2, iso3=lang.terminology, fullname=lang.name, implemented=1).save()\n",
+      "#    except:\n",
+      "#        pass\n"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 2
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 2
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "node = Node.objects.get(name=\"Pubmed Fukushima\")"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 3
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "fileparser = PubmedFileParser.PubmedFileParser(file='/var/www/gargantext/media/' + node.fichier.name)"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 4
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "fileparser.parse(node)"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "Warning: parsing empty text\n",
+        "Warning: parsing empty text\n",
+        "Warning: parsing empty text"
+       ]
+      },
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "\n",
+        "Warning: parsing empty text\n",
+        "Warning: parsing empty text"
+       ]
+      },
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "\n",
+        "Warning: parsing empty text\n",
+        "Warning: parsing empty text"
+       ]
+      },
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "\n",
+        "Warning: parsing empty text"
+       ]
+      },
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "\n",
+        "Warning: parsing empty text"
+       ]
+      },
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "\n",
+        "Warning: parsing empty text"
+       ]
+      },
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "\n",
+        "Warning: parsing empty text"
+       ]
+      },
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "\n",
+        "Warning: parsing empty text"
+       ]
+      },
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "\n",
+        "Warning: parsing empty text"
+       ]
+      },
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "\n",
+        "Warning: parsing empty text"
+       ]
+      },
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "\n",
+        "Warning: parsing empty text"
+       ]
+      },
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "\n"
+       ]
+      },
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 5,
+       "text": [
+        "[<Node: Systemic spread and propagation of a plant-pathogenic virus in European honeybees, Apis mellifera.>,\n",
+        " <Node: A Causal Analysis of Observed Declines in Managed Honey Bees (Apis mellifera).>,\n",
+        " <Node: Non-specific dsRNA-mediated antiviral response in the honey bee.>,\n",
+        " <Node: In vitro infection of pupae with Israeli acute paralysis virus suggests disturbance of transcriptional homeostasis in honey bees (Apis mellifera).>,\n",
+        " <Node: Nosema ceranae has been present in Brazil for more than three decades infecting Africanized honey bees.>,\n",
+        " <Node: Return of the natives.>,\n",
+        " <Node: The road to pollinator health.>,\n",
+        " <Node: Do the honeybee pathogens Nosema ceranae and deformed wing virus act synergistically?>,\n",
+        " <Node: Essential oil from Eupatorium buniifolium leaves as potential varroacide.>,\n",
+        " <Node: Animal behaviour: brain food.>,\n",
+        " <Node: What's the buzz?>,\n",
+        " <Node: Nosema ceranae induced mortality in honey bees (Apis mellifera) depends on infection methods.>,\n",
+        " <Node: Rates of honeybee sting hypersensitivity in San Antonio during honeybee colony collapse disorder.>,\n",
+        " <Node: Healing power of honey.>,\n",
+        " <Node: Honey constituents up-regulate detoxification and immunity genes in the western honey bee Apis mellifera.>,\n",
+        " <Node: Nosema spp. infection and its negative effects on honey bees (Apis mellifera iberiensis) at the colony level.>,\n",
+        " <Node: Flight behavior and pheromone changes associated to Nosema ceranae infection of honey bee workers (Apis mellifera) in field conditions.>,\n",
+        " <Node: Clinical signs of deformed wing virus infection are predictive markers for honey bee colony losses.>,\n",
+        " <Node: The microsporidian parasites Nosema ceranae and Nosema apis are widespread in honeybee (Apis mellifera) colonies across Scotland.>,\n",
+        " <Node: A potential link among biogenic amines-based pesticides, learning and memory, and colony collapse disorder: a unique hypothesis.>,\n",
+        " <Node: Comment on \"A common pesticide decreases foraging success and survival in honey bees\".>,\n",
+        " <Node: Idiopathic brood disease syndrome and queen events as precursors of colony mortality in migratory beekeeping operations in the eastern United States.>,\n",
+        " <Node: Pathogen webs in collapsing honey bee colonies.>,\n",
+        " <Node: Asymptomatic presence of Nosema spp. in Spanish commercial apiaries.>,\n",
+        " <Node: Synergistic parasite-pathogen interactions mediated by host immunity can drive the collapse of honeybee colonies.>,\n",
+        " <Node: Global honey bee viral landscape altered by a parasitic mite.>,\n",
+        " <Node: Paratransgenesis: an approach to improve colony health and molecular insight in honey bees (Apis mellifera)?>,\n",
+        " <Node: Agriculture. Field research on bees raises concern about low-dose pesticides.>,\n",
+        " <Node: A common pesticide decreases foraging success and survival in honey bees.>,\n",
+        " <Node: Symbionts as major modulators of insect health: lactic acid bacteria and honeybees.>,\n",
+        " <Node: The habitat disruption induces immune-suppression and oxidative stress in honey bees.>,\n",
+        " <Node: Predictive markers of honey bee colony collapse.>,\n",
+        " <Node: Colony collapse disorder in Europe.>,\n",
+        " <Node: Pesticide exposure in honey bees results in increased levels of the gut pathogen Nosema.>,\n",
+        " <Node: Bromenshenk et al (PLoS One, 2011, 5(10):e13181) have claimed to have found peptides from an invertebrate iridovirus in bees.>,\n",
+        " <Node: A new threat to honey bees, the parasitic phorid fly Apocephalus borealis.>,\n",
+        " <Node: Detection of pesticides in active and depopulated beehives in Uruguay.>,\n",
+        " <Node: Bees brought to their knees: microbes affecting honey bee health.>,\n",
+        " <Node: From elephants to bees.>,\n",
+        " <Node: Evidence of a novel immune responsive protein in the Hymenoptera.>,\n",
+        " <Node: Lack of evidence for an association between Iridovirus and colony collapse disorder.>,\n",
+        " <Node: First report of Israeli acute paralysis virus in asymptomatic hives of Argentina.>,\n",
+        " <Node: Temporal analysis of the honey bee microbiome reveals four novel viruses and seasonal prevalence of known viruses, Nosema, and Crithidia.>,\n",
+        " <Node: A quantitative model of honey bee colony population dynamics.>,\n",
+        " <Node: Detection of honey bee (Apis mellifera) viruses with an oligonucleotide microarray.>,\n",
+        " <Node: Interpretation of data underlying the link between colony collapse disorder (CCD) and an invertebrate iridescent virus.>,\n",
+        " <Node: RNA viruses in hymenopteran pollinators: evidence of inter-Taxa virus transmission via pollen and potential impact on non-Apis hymenopteran species.>,\n",
+        " <Node: Large-scale field application of RNAi technology reducing Israeli acute paralysis virus disease in honey bees (Apis mellifera, Hymenoptera: Apidae).>,\n",
+        " <Node: Weighing risk factors associated with bee colony collapse disorder by classification and regression tree analysis.>,\n",
+        " <Node: Iridovirus and microsporidian linked to honey bee colony decline.>,\n",
+        " <Node: Varroa destructor is an effective vector of Israeli acute paralysis virus in the honeybee, Apis mellifera.>,\n",
+        " <Node: The plight of the bees.>,\n",
+        " <Node: Sudden deaths and colony population decline in Greek honey bee colonies.>,\n",
+        " <Node: Colony Collapse Disorder in context.>,\n",
+        " <Node: Vanishing honey bees: Is the dying of adult worker bees a consequence of short telomeres and premature aging?>,\n",
+        " <Node: Prevention of Chinese sacbrood virus infection in Apis cerana using RNA interference.>,\n",
+        " <Node: Refined methodology for the determination of neonicotinoid pesticides and their metabolites in honey bees and bee products by liquid chromatography-tandem mass spectrometry (LC-MS/MS).>,\n",
+        " <Node: Ecology. Clarity on honey bee collapse?>,\n",
+        " <Node: Medium for development of bee cell cultures (Apis mellifera: Hymenoptera: Apidae).>,\n",
+        " <Node: Bee mystery continues.>,\n",
+        " <Node: Deformed wing virus.>,\n",
+        " <Node: The Acute bee paralysis virus-Kashmir bee virus-Israeli acute paralysis virus complex.>,\n",
+        " <Node: Translocation of neonicotinoid insecticides from coated seeds to seedling guttation drops: a novel way of intoxication for bees.>,\n",
+        " <Node: Deformed wing virus implicated in overwintering honeybee colony losses.>,\n",
+        " <Node: Changes in transcript abundance relating to colony collapse disorder in honey bees (Apis mellifera).>,\n",
+        " <Node: Colony collapse disorder: a descriptive study.>,\n",
+        " <Node: A PCR method of detecting American Foulbrood (Paenibacillus larvae) in winter beehive wax debris.>,\n",
+        " <Node: Honeybee colony collapse due to Nosema ceranae in professional apiaries.>,\n",
+        " <Node: IAPV, a bee-affecting virus associated with Colony Collapse Disorder can be silenced by dsRNA ingestion.>,\n",
+        " <Node: Energetic stress in the honeybee Apis mellifera from Nosema ceranae infection.>,\n",
+        " <Node: A survey of honey bee colony losses in the U.S., fall 2007 to spring 2008.>,\n",
+        " <Node: A qualitative model of mortality in honey bee (Apis mellifera) colonies infested with tracheal mites (Acarapis woodi).>,\n",
+        " <Node: First detection of Israeli acute paralysis virus (IAPV) in France, a dicistrovirus affecting honeybees (Apis mellifera).>,\n",
+        " <Node: Does pathogen spillover from commercially reared bumble bees threaten wild pollinators?>,\n",
+        " <Node: How natural infection by Nosema ceranae causes honeybee colony collapse.>,\n",
+        " <Node: Genetic analysis of Israel acute paralysis virus: distinct clusters are circulating in the United States.>,\n",
+        " <Node: The latest buzz about colony collapse disorder.>,\n",
+        " <Node: Native bees provide insurance against ongoing honey bee losses.>,\n",
+        " <Node: A metagenomic survey of microbes in honey bee colony collapse disorder.>,\n",
+        " <Node: Vertical-transmission routes for deformed wing virus of honeybees (Apis mellifera).>,\n",
+        " <Node: RT-PCR analysis of Deformed wing virus in honeybees (Apis mellifera) and mites (Varroa destructor).>]"
+       ]
+      }
+     ],
+     "prompt_number": 5
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "from node.models import Ngram"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 22
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "children = node.children.all()\n",
+      "children[0].metadata"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 19,
+       "text": [
+        "{'title': 'A metagenomic survey of microbes in honey bee colony collapse disorder.',\n",
+        " 'doi': '',\n",
+        " 'language_iso3': 'eng',\n",
+        " 'journal': 'Science (New York, N.Y.)',\n",
+        " 'date_pub': '2007-10-12',\n",
+        " 'abstract': 'In colony collapse disorder (CCD), honey bee colonies inexplicably lose their workers. CCD has resulted in a loss of 50 to 90% of colonies in beekeeping operations across the United States. The observation that irradiated combs from affected colonies can be repopulated with naive bees suggests that infection may contribute to CCD. We used an unbiased metagenomic approach to survey microflora in CCD hives, normal hives, and imported royal jelly. Candidate pathogens were screened for significance of association with CCD by the examination of samples collected from several sites over a period of 3 years. One organism, Israeli acute paralysis virus of bees, was strongly correlated with CCD.'}"
+       ]
+      }
+     ],
+     "prompt_number": 19
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "from dateutil.parser import parse"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 16
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "dates = [ parse(document.metadata['date_pub']) for document in node.children.all()]"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 17
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "dates"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 18,
+       "text": [
+        "[datetime.datetime(2005, 11, 21, 0, 0),\n",
+        " datetime.datetime(2007, 7, 11, 0, 0),\n",
+        " datetime.datetime(2007, 10, 12, 0, 0),\n",
+        " datetime.datetime(2007, 10, 3, 0, 0),\n",
+        " datetime.datetime(2008, 2, 8, 0, 0),\n",
+        " datetime.datetime(2008, 6, 11, 0, 0),\n",
+        " datetime.datetime(2008, 9, 29, 0, 0),\n",
+        " datetime.datetime(2008, 7, 23, 0, 0),\n",
+        " datetime.datetime(2008, 11, 5, 0, 0),\n",
+        " datetime.datetime(2009, 2, 2, 0, 0),\n",
+        " datetime.datetime(2008, 12, 30, 0, 0),\n",
+        " datetime.datetime(2009, 3, 23, 0, 0),\n",
+        " datetime.datetime(2009, 2, 6, 0, 0),\n",
+        " datetime.datetime(2013, 6, 14, 0, 0),\n",
+        " datetime.datetime(2009, 9, 28, 0, 0),\n",
+        " datetime.datetime(2009, 8, 3, 0, 0),\n",
+        " datetime.datetime(2009, 10, 6, 0, 0),\n",
+        " datetime.datetime(2009, 11, 9, 0, 0),\n",
+        " datetime.datetime(2009, 11, 5, 0, 0),\n",
+        " datetime.datetime(2010, 1, 28, 0, 0),\n",
+        " datetime.datetime(2010, 1, 28, 0, 0),\n",
+        " datetime.datetime(2009, 11, 20, 0, 0),\n",
+        " datetime.datetime(2010, 2, 23, 0, 0),\n",
+        " datetime.datetime(2010, 1, 8, 0, 0),\n",
+        " datetime.datetime(2010, 5, 20, 0, 0),\n",
+        " datetime.datetime(2010, 10, 13, 0, 0),\n",
+        " datetime.datetime(2010, 8, 16, 0, 0),\n",
+        " datetime.datetime(2010, 11, 9, 0, 0),\n",
+        " datetime.datetime(2010, 10, 25, 0, 0),\n",
+        " datetime.datetime(2010, 12, 28, 0, 0),\n",
+        " datetime.datetime(2010, 12, 20, 0, 0),\n",
+        " datetime.datetime(2010, 10, 15, 0, 0),\n",
+        " datetime.datetime(2010, 11, 10, 0, 0),\n",
+        " datetime.datetime(2011, 1, 4, 0, 0),\n",
+        " datetime.datetime(2011, 1, 4, 0, 0),\n",
+        " datetime.datetime(2011, 3, 2, 0, 0),\n",
+        " datetime.datetime(2011, 8, 8, 0, 0),\n",
+        " datetime.datetime(2011, 5, 2, 0, 0),\n",
+        " datetime.datetime(2011, 6, 20, 0, 0),\n",
+        " datetime.datetime(2011, 7, 6, 0, 0),\n",
+        " datetime.datetime(2011, 7, 8, 0, 0),\n",
+        " datetime.datetime(2011, 11, 7, 0, 0),\n",
+        " datetime.datetime(2011, 10, 27, 0, 0),\n",
+        " datetime.datetime(2011, 11, 28, 0, 0),\n",
+        " datetime.datetime(2011, 11, 10, 0, 0),\n",
+        " datetime.datetime(2012, 1, 11, 0, 0),\n",
+        " datetime.datetime(2012, 1, 12, 0, 0),\n",
+        " datetime.datetime(2012, 1, 24, 0, 0),\n",
+        " datetime.datetime(2013, 6, 12, 0, 0),\n",
+        " datetime.datetime(2012, 3, 2, 0, 0),\n",
+        " datetime.datetime(2012, 3, 6, 0, 0),\n",
+        " datetime.datetime(2012, 3, 19, 0, 0),\n",
+        " datetime.datetime(2012, 4, 20, 0, 0),\n",
+        " datetime.datetime(2012, 3, 30, 0, 0),\n",
+        " datetime.datetime(2012, 6, 25, 0, 0),\n",
+        " datetime.datetime(2012, 6, 8, 0, 0),\n",
+        " datetime.datetime(2012, 6, 21, 0, 0),\n",
+        " datetime.datetime(2012, 9, 5, 0, 0),\n",
+        " datetime.datetime(2012, 8, 28, 0, 0),\n",
+        " datetime.datetime(2012, 12, 28, 0, 0),\n",
+        " datetime.datetime(2012, 9, 21, 0, 0),\n",
+        " datetime.datetime(2012, 12, 31, 0, 0),\n",
+        " datetime.datetime(2013, 1, 28, 0, 0),\n",
+        " datetime.datetime(2013, 2, 18, 0, 0),\n",
+        " datetime.datetime(2013, 4, 2, 0, 0),\n",
+        " datetime.datetime(2013, 5, 2, 0, 0),\n",
+        " datetime.datetime(2013, 5, 29, 0, 0),\n",
+        " datetime.datetime(2013, 5, 29, 0, 0),\n",
+        " datetime.datetime(2013, 5, 27, 0, 0),\n",
+        " datetime.datetime(2013, 7, 29, 0, 0),\n",
+        " datetime.datetime(2013, 6, 4, 0, 0),\n",
+        " datetime.datetime(2013, 6, 27, 0, 0),\n",
+        " datetime.datetime(2013, 9, 16, 0, 0),\n",
+        " datetime.datetime(2013, 7, 18, 0, 0),\n",
+        " datetime.datetime(2013, 8, 16, 0, 0),\n",
+        " datetime.datetime(2013, 9, 5, 0, 0),\n",
+        " datetime.datetime(2013, 11, 11, 0, 0),\n",
+        " datetime.datetime(2013, 9, 16, 0, 0),\n",
+        " datetime.datetime(2013, 10, 16, 0, 0),\n",
+        " datetime.datetime(2013, 12, 23, 0, 0),\n",
+        " datetime.datetime(2014, 1, 22, 0, 0),\n",
+        " datetime.datetime(2005, 11, 21, 0, 0),\n",
+        " datetime.datetime(2007, 7, 11, 0, 0),\n",
+        " datetime.datetime(2007, 10, 12, 0, 0),\n",
+        " datetime.datetime(2007, 10, 3, 0, 0),\n",
+        " datetime.datetime(2008, 2, 8, 0, 0),\n",
+        " datetime.datetime(2008, 6, 11, 0, 0),\n",
+        " datetime.datetime(2008, 9, 29, 0, 0),\n",
+        " datetime.datetime(2008, 7, 23, 0, 0),\n",
+        " datetime.datetime(2008, 11, 5, 0, 0),\n",
+        " datetime.datetime(2009, 2, 2, 0, 0),\n",
+        " datetime.datetime(2008, 12, 30, 0, 0),\n",
+        " datetime.datetime(2009, 3, 23, 0, 0),\n",
+        " datetime.datetime(2009, 2, 6, 0, 0),\n",
+        " datetime.datetime(2013, 6, 14, 0, 0),\n",
+        " datetime.datetime(2009, 9, 28, 0, 0),\n",
+        " datetime.datetime(2009, 8, 3, 0, 0),\n",
+        " datetime.datetime(2009, 10, 6, 0, 0),\n",
+        " datetime.datetime(2009, 11, 9, 0, 0),\n",
+        " datetime.datetime(2009, 11, 5, 0, 0),\n",
+        " datetime.datetime(2010, 1, 28, 0, 0),\n",
+        " datetime.datetime(2010, 1, 28, 0, 0),\n",
+        " datetime.datetime(2009, 11, 20, 0, 0),\n",
+        " datetime.datetime(2010, 2, 23, 0, 0),\n",
+        " datetime.datetime(2010, 1, 8, 0, 0),\n",
+        " datetime.datetime(2010, 5, 20, 0, 0),\n",
+        " datetime.datetime(2010, 10, 13, 0, 0),\n",
+        " datetime.datetime(2010, 8, 16, 0, 0),\n",
+        " datetime.datetime(2010, 11, 9, 0, 0),\n",
+        " datetime.datetime(2010, 10, 25, 0, 0),\n",
+        " datetime.datetime(2010, 12, 28, 0, 0),\n",
+        " datetime.datetime(2010, 12, 20, 0, 0),\n",
+        " datetime.datetime(2010, 10, 15, 0, 0),\n",
+        " datetime.datetime(2010, 11, 10, 0, 0),\n",
+        " datetime.datetime(2011, 1, 4, 0, 0),\n",
+        " datetime.datetime(2011, 1, 4, 0, 0),\n",
+        " datetime.datetime(2011, 3, 2, 0, 0),\n",
+        " datetime.datetime(2011, 8, 8, 0, 0),\n",
+        " datetime.datetime(2011, 5, 2, 0, 0),\n",
+        " datetime.datetime(2011, 6, 20, 0, 0),\n",
+        " datetime.datetime(2011, 7, 6, 0, 0),\n",
+        " datetime.datetime(2011, 7, 8, 0, 0),\n",
+        " datetime.datetime(2011, 11, 7, 0, 0),\n",
+        " datetime.datetime(2011, 10, 27, 0, 0),\n",
+        " datetime.datetime(2011, 11, 28, 0, 0),\n",
+        " datetime.datetime(2011, 11, 10, 0, 0),\n",
+        " datetime.datetime(2012, 1, 11, 0, 0),\n",
+        " datetime.datetime(2012, 1, 12, 0, 0),\n",
+        " datetime.datetime(2012, 1, 24, 0, 0),\n",
+        " datetime.datetime(2013, 6, 12, 0, 0),\n",
+        " datetime.datetime(2012, 3, 2, 0, 0),\n",
+        " datetime.datetime(2012, 3, 6, 0, 0),\n",
+        " datetime.datetime(2012, 3, 19, 0, 0),\n",
+        " datetime.datetime(2012, 4, 20, 0, 0),\n",
+        " datetime.datetime(2012, 3, 30, 0, 0),\n",
+        " datetime.datetime(2012, 6, 25, 0, 0),\n",
+        " datetime.datetime(2012, 6, 8, 0, 0),\n",
+        " datetime.datetime(2012, 6, 21, 0, 0),\n",
+        " datetime.datetime(2012, 9, 5, 0, 0),\n",
+        " datetime.datetime(2012, 8, 28, 0, 0),\n",
+        " datetime.datetime(2012, 12, 28, 0, 0),\n",
+        " datetime.datetime(2012, 9, 21, 0, 0),\n",
+        " datetime.datetime(2012, 12, 31, 0, 0),\n",
+        " datetime.datetime(2013, 1, 28, 0, 0),\n",
+        " datetime.datetime(2013, 2, 18, 0, 0),\n",
+        " datetime.datetime(2013, 4, 2, 0, 0),\n",
+        " datetime.datetime(2013, 5, 2, 0, 0),\n",
+        " datetime.datetime(2013, 5, 29, 0, 0),\n",
+        " datetime.datetime(2013, 5, 29, 0, 0),\n",
+        " datetime.datetime(2013, 5, 27, 0, 0),\n",
+        " datetime.datetime(2013, 7, 29, 0, 0),\n",
+        " datetime.datetime(2013, 6, 4, 0, 0),\n",
+        " datetime.datetime(2013, 6, 27, 0, 0),\n",
+        " datetime.datetime(2013, 9, 16, 0, 0),\n",
+        " datetime.datetime(2013, 7, 18, 0, 0),\n",
+        " datetime.datetime(2013, 8, 16, 0, 0),\n",
+        " datetime.datetime(2013, 9, 5, 0, 0),\n",
+        " datetime.datetime(2013, 11, 11, 0, 0),\n",
+        " datetime.datetime(2013, 9, 16, 0, 0),\n",
+        " datetime.datetime(2013, 10, 16, 0, 0),\n",
+        " datetime.datetime(2013, 12, 23, 0, 0),\n",
+        " datetime.datetime(2014, 1, 22, 0, 0)]"
+       ]
+      }
+     ],
+     "prompt_number": 18
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "journals = [ document.metadata['journal'] for document in node.children.all()]"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 20
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "journals"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 21,
+       "text": [
+        "['The Journal of general virology',\n",
+        " 'The Journal of general virology',\n",
+        " 'Science (New York, N.Y.)',\n",
+        " 'Ecology letters',\n",
+        " 'Science (New York, N.Y.)',\n",
+        " 'Journal of virology',\n",
+        " 'Environmental microbiology',\n",
+        " 'PloS one',\n",
+        " 'Journal of invertebrate pathology',\n",
+        " 'Experimental & applied acarology',\n",
+        " 'PloS one',\n",
+        " 'Journal of invertebrate pathology',\n",
+        " 'Insect molecular biology',\n",
+        " 'Environmental microbiology reports',\n",
+        " 'Veterinary microbiology',\n",
+        " 'PloS one',\n",
+        " 'Proceedings of the National Academy of Sciences of the United States of America',\n",
+        " 'Applied and environmental microbiology',\n",
+        " 'Journal of economic entomology',\n",
+        " 'Journal of invertebrate pathology',\n",
+        " 'Journal of invertebrate pathology',\n",
+        " 'Current biology : CB',\n",
+        " 'In vitro cellular & developmental biology. Animal',\n",
+        " 'Science (New York, N.Y.)',\n",
+        " 'Journal of agricultural and food chemistry',\n",
+        " 'Current microbiology',\n",
+        " 'Medical hypotheses',\n",
+        " 'BioEssays : news and reviews in molecular, cellular and developmental biology',\n",
+        " 'Journal of invertebrate pathology',\n",
+        " 'Environmental science & technology',\n",
+        " 'The Journal of general virology',\n",
+        " 'PloS one',\n",
+        " 'Journal of economic entomology',\n",
+        " 'PLoS pathogens',\n",
+        " 'PloS one',\n",
+        " 'Molecular & cellular proteomics : MCP',\n",
+        " 'Journal of invertebrate pathology',\n",
+        " 'PloS one',\n",
+        " 'PloS one',\n",
+        " 'Revista Argentina de microbiolog\u00eda',\n",
+        " 'PloS one',\n",
+        " 'Insect biochemistry and molecular biology',\n",
+        " 'The Veterinary quarterly',\n",
+        " 'Trends in microbiology',\n",
+        " 'International journal of environmental research and public health',\n",
+        " 'PloS one',\n",
+        " 'Molecular & cellular proteomics : MCP',\n",
+        " 'Die Naturwissenschaften',\n",
+        " 'Environmental microbiology reports',\n",
+        " 'PloS one',\n",
+        " 'Ecology and evolution',\n",
+        " 'PloS one',\n",
+        " 'Science (New York, N.Y.)',\n",
+        " 'Science (New York, N.Y.)',\n",
+        " 'Integrative and comparative biology',\n",
+        " 'Science (New York, N.Y.)',\n",
+        " 'PLoS pathogens',\n",
+        " 'Journal of invertebrate pathology',\n",
+        " 'PloS one',\n",
+        " 'Preventive veterinary medicine',\n",
+        " 'Science (New York, N.Y.)',\n",
+        " 'Neurochemistry international',\n",
+        " 'Parasitology research',\n",
+        " 'Journal of invertebrate pathology',\n",
+        " 'Journal of invertebrate pathology',\n",
+        " 'Veterinary research',\n",
+        " 'Proceedings of the National Academy of Sciences of the United States of America',\n",
+        " 'Proceedings of the National Academy of Sciences of the United States of America',\n",
+        " 'Annals of allergy, asthma & immunology : official publication of the American College of Allergy, Asthma, & Immunology',\n",
+        " 'Journal of invertebrate pathology',\n",
+        " 'Scientific American',\n",
+        " 'Nature',\n",
+        " 'Parasitology research',\n",
+        " 'Environmental microbiology reports',\n",
+        " 'Science (New York, N.Y.)',\n",
+        " 'Scientific American',\n",
+        " 'Journal of invertebrate pathology',\n",
+        " 'PloS one',\n",
+        " 'PloS one',\n",
+        " 'Human and ecological risk assessment : HERA',\n",
+        " 'mBio',\n",
+        " 'The Journal of general virology',\n",
+        " 'The Journal of general virology',\n",
+        " 'Science (New York, N.Y.)',\n",
+        " 'Ecology letters',\n",
+        " 'Science (New York, N.Y.)',\n",
+        " 'Journal of virology',\n",
+        " 'Environmental microbiology',\n",
+        " 'PloS one',\n",
+        " 'Journal of invertebrate pathology',\n",
+        " 'Experimental & applied acarology',\n",
+        " 'PloS one',\n",
+        " 'Journal of invertebrate pathology',\n",
+        " 'Insect molecular biology',\n",
+        " 'Environmental microbiology reports',\n",
+        " 'Veterinary microbiology',\n",
+        " 'PloS one',\n",
+        " 'Proceedings of the National Academy of Sciences of the United States of America',\n",
+        " 'Applied and environmental microbiology',\n",
+        " 'Journal of economic entomology',\n",
+        " 'Journal of invertebrate pathology',\n",
+        " 'Journal of invertebrate pathology',\n",
+        " 'Current biology : CB',\n",
+        " 'In vitro cellular & developmental biology. Animal',\n",
+        " 'Science (New York, N.Y.)',\n",
+        " 'Journal of agricultural and food chemistry',\n",
+        " 'Current microbiology',\n",
+        " 'Medical hypotheses',\n",
+        " 'BioEssays : news and reviews in molecular, cellular and developmental biology',\n",
+        " 'Journal of invertebrate pathology',\n",
+        " 'Environmental science & technology',\n",
+        " 'The Journal of general virology',\n",
+        " 'PloS one',\n",
+        " 'Journal of economic entomology',\n",
+        " 'PLoS pathogens',\n",
+        " 'PloS one',\n",
+        " 'Molecular & cellular proteomics : MCP',\n",
+        " 'Journal of invertebrate pathology',\n",
+        " 'PloS one',\n",
+        " 'PloS one',\n",
+        " 'Revista Argentina de microbiolog\u00eda',\n",
+        " 'PloS one',\n",
+        " 'Insect biochemistry and molecular biology',\n",
+        " 'The Veterinary quarterly',\n",
+        " 'Trends in microbiology',\n",
+        " 'International journal of environmental research and public health',\n",
+        " 'PloS one',\n",
+        " 'Molecular & cellular proteomics : MCP',\n",
+        " 'Die Naturwissenschaften',\n",
+        " 'Environmental microbiology reports',\n",
+        " 'PloS one',\n",
+        " 'Ecology and evolution',\n",
+        " 'PloS one',\n",
+        " 'Science (New York, N.Y.)',\n",
+        " 'Science (New York, N.Y.)',\n",
+        " 'Integrative and comparative biology',\n",
+        " 'Science (New York, N.Y.)',\n",
+        " 'PLoS pathogens',\n",
+        " 'Journal of invertebrate pathology',\n",
+        " 'PloS one',\n",
+        " 'Preventive veterinary medicine',\n",
+        " 'Science (New York, N.Y.)',\n",
+        " 'Neurochemistry international',\n",
+        " 'Parasitology research',\n",
+        " 'Journal of invertebrate pathology',\n",
+        " 'Journal of invertebrate pathology',\n",
+        " 'Veterinary research',\n",
+        " 'Proceedings of the National Academy of Sciences of the United States of America',\n",
+        " 'Proceedings of the National Academy of Sciences of the United States of America',\n",
+        " 'Annals of allergy, asthma & immunology : official publication of the American College of Allergy, Asthma, & Immunology',\n",
+        " 'Journal of invertebrate pathology',\n",
+        " 'Scientific American',\n",
+        " 'Nature',\n",
+        " 'Parasitology research',\n",
+        " 'Environmental microbiology reports',\n",
+        " 'Science (New York, N.Y.)',\n",
+        " 'Scientific American',\n",
+        " 'Journal of invertebrate pathology',\n",
+        " 'PloS one',\n",
+        " 'PloS one',\n",
+        " 'Human and ecological risk assessment : HERA',\n",
+        " 'mBio']"
+       ]
+      }
+     ],
+     "prompt_number": 21
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "for node_ngram in n.node_ngram_set.all():\n",
+      "    print(node_ngram.ngram.terms)"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object"
+       ]
+      },
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n"
+       ]
+      }
+     ],
+     "prompt_number": 26
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [],
+     "language": "python",
+     "metadata": {},
+     "outputs": []
+    }
+   ],
+   "metadata": {}
+  }
+ ]
+}
\ No newline at end of file
diff --git a/Untitled0.ipynb b/Untitled0.ipynb
deleted file mode 100644
index 50078fa18d0f044461d45ee2f9c8b04c852e0a98..0000000000000000000000000000000000000000
--- a/Untitled0.ipynb
+++ /dev/null
@@ -1,406 +0,0 @@
-{
- "metadata": {
-  "name": "",
-  "signature": "sha256:3345ac991b0346b1dfd82386fdc2a59f39b2de9bf32d03ddfbeb565927cfe7ab"
- },
- "nbformat": 3,
- "nbformat_minor": 0,
- "worksheets": [
-  {
-   "cells": [
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "from node.models import Node, NodeType, Language\n",
-      "import parsing\n",
-      "from parsing.FileParsers import *"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [],
-     "prompt_number": 1
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "#from node.models import Language\n",
-      "#import pycountry\n",
-      "#for lang in pycountry.languages:\n",
-      "#    try:\n",
-      "#        Language(iso2=lang.alpha2, iso3=lang.terminology, fullname=lang.name, implemented=1).save()\n",
-      "#    except:\n",
-      "#        pass\n"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [],
-     "prompt_number": 2
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [],
-     "language": "python",
-     "metadata": {},
-     "outputs": [],
-     "prompt_number": 2
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "node = Node.objects.get(name=\"PubMed corpus\")"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [],
-     "prompt_number": 3
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "fileparser = PubmedFileParser.PubmedFileParser(file='/var/www/gargantext/media/' + node.fichier.name)"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [],
-     "prompt_number": 4
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "fileparser.parse(node)\n"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "Warning: parsing empty text\n",
-        "Warning: parsing empty text\n",
-        "Warning: parsing empty text"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "Warning: parsing empty text\n",
-        "Warning: parsing empty text"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "Warning: parsing empty text\n",
-        "Warning: parsing empty text"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "Warning: parsing empty text"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "Warning: parsing empty text"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "Warning: parsing empty text"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "Warning: parsing empty text"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "Warning: parsing empty text"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "Warning: parsing empty text"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "Warning: parsing empty text"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "Warning: parsing empty text"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n"
-       ]
-      },
-      {
-       "metadata": {},
-       "output_type": "pyout",
-       "prompt_number": 5,
-       "text": [
-        "[<Node: Systemic spread and propagation of a plant-pathogenic virus in European honeybees, Apis mellifera.>,\n",
-        " <Node: A Causal Analysis of Observed Declines in Managed Honey Bees (Apis mellifera).>,\n",
-        " <Node: Non-specific dsRNA-mediated antiviral response in the honey bee.>,\n",
-        " <Node: In vitro infection of pupae with Israeli acute paralysis virus suggests disturbance of transcriptional homeostasis in honey bees (Apis mellifera).>,\n",
-        " <Node: Nosema ceranae has been present in Brazil for more than three decades infecting Africanized honey bees.>,\n",
-        " <Node: Return of the natives.>,\n",
-        " <Node: The road to pollinator health.>,\n",
-        " <Node: Do the honeybee pathogens Nosema ceranae and deformed wing virus act synergistically?>,\n",
-        " <Node: Essential oil from Eupatorium buniifolium leaves as potential varroacide.>,\n",
-        " <Node: Animal behaviour: brain food.>,\n",
-        " <Node: What's the buzz?>,\n",
-        " <Node: Nosema ceranae induced mortality in honey bees (Apis mellifera) depends on infection methods.>,\n",
-        " <Node: Rates of honeybee sting hypersensitivity in San Antonio during honeybee colony collapse disorder.>,\n",
-        " <Node: Healing power of honey.>,\n",
-        " <Node: Honey constituents up-regulate detoxification and immunity genes in the western honey bee Apis mellifera.>,\n",
-        " <Node: Nosema spp. infection and its negative effects on honey bees (Apis mellifera iberiensis) at the colony level.>,\n",
-        " <Node: Flight behavior and pheromone changes associated to Nosema ceranae infection of honey bee workers (Apis mellifera) in field conditions.>,\n",
-        " <Node: Clinical signs of deformed wing virus infection are predictive markers for honey bee colony losses.>,\n",
-        " <Node: The microsporidian parasites Nosema ceranae and Nosema apis are widespread in honeybee (Apis mellifera) colonies across Scotland.>,\n",
-        " <Node: A potential link among biogenic amines-based pesticides, learning and memory, and colony collapse disorder: a unique hypothesis.>,\n",
-        " <Node: Comment on \"A common pesticide decreases foraging success and survival in honey bees\".>,\n",
-        " <Node: Idiopathic brood disease syndrome and queen events as precursors of colony mortality in migratory beekeeping operations in the eastern United States.>,\n",
-        " <Node: Pathogen webs in collapsing honey bee colonies.>,\n",
-        " <Node: Asymptomatic presence of Nosema spp. in Spanish commercial apiaries.>,\n",
-        " <Node: Synergistic parasite-pathogen interactions mediated by host immunity can drive the collapse of honeybee colonies.>,\n",
-        " <Node: Global honey bee viral landscape altered by a parasitic mite.>,\n",
-        " <Node: Paratransgenesis: an approach to improve colony health and molecular insight in honey bees (Apis mellifera)?>,\n",
-        " <Node: Agriculture. Field research on bees raises concern about low-dose pesticides.>,\n",
-        " <Node: A common pesticide decreases foraging success and survival in honey bees.>,\n",
-        " <Node: Symbionts as major modulators of insect health: lactic acid bacteria and honeybees.>,\n",
-        " <Node: The habitat disruption induces immune-suppression and oxidative stress in honey bees.>,\n",
-        " <Node: Predictive markers of honey bee colony collapse.>,\n",
-        " <Node: Colony collapse disorder in Europe.>,\n",
-        " <Node: Pesticide exposure in honey bees results in increased levels of the gut pathogen Nosema.>,\n",
-        " <Node: Bromenshenk et al (PLoS One, 2011, 5(10):e13181) have claimed to have found peptides from an invertebrate iridovirus in bees.>,\n",
-        " <Node: A new threat to honey bees, the parasitic phorid fly Apocephalus borealis.>,\n",
-        " <Node: Detection of pesticides in active and depopulated beehives in Uruguay.>,\n",
-        " <Node: Bees brought to their knees: microbes affecting honey bee health.>,\n",
-        " <Node: From elephants to bees.>,\n",
-        " <Node: Evidence of a novel immune responsive protein in the Hymenoptera.>,\n",
-        " <Node: Lack of evidence for an association between Iridovirus and colony collapse disorder.>,\n",
-        " <Node: First report of Israeli acute paralysis virus in asymptomatic hives of Argentina.>,\n",
-        " <Node: Temporal analysis of the honey bee microbiome reveals four novel viruses and seasonal prevalence of known viruses, Nosema, and Crithidia.>,\n",
-        " <Node: A quantitative model of honey bee colony population dynamics.>,\n",
-        " <Node: Detection of honey bee (Apis mellifera) viruses with an oligonucleotide microarray.>,\n",
-        " <Node: Interpretation of data underlying the link between colony collapse disorder (CCD) and an invertebrate iridescent virus.>,\n",
-        " <Node: RNA viruses in hymenopteran pollinators: evidence of inter-Taxa virus transmission via pollen and potential impact on non-Apis hymenopteran species.>,\n",
-        " <Node: Large-scale field application of RNAi technology reducing Israeli acute paralysis virus disease in honey bees (Apis mellifera, Hymenoptera: Apidae).>,\n",
-        " <Node: Weighing risk factors associated with bee colony collapse disorder by classification and regression tree analysis.>,\n",
-        " <Node: Iridovirus and microsporidian linked to honey bee colony decline.>,\n",
-        " <Node: Varroa destructor is an effective vector of Israeli acute paralysis virus in the honeybee, Apis mellifera.>,\n",
-        " <Node: The plight of the bees.>,\n",
-        " <Node: Sudden deaths and colony population decline in Greek honey bee colonies.>,\n",
-        " <Node: Colony Collapse Disorder in context.>,\n",
-        " <Node: Vanishing honey bees: Is the dying of adult worker bees a consequence of short telomeres and premature aging?>,\n",
-        " <Node: Prevention of Chinese sacbrood virus infection in Apis cerana using RNA interference.>,\n",
-        " <Node: Refined methodology for the determination of neonicotinoid pesticides and their metabolites in honey bees and bee products by liquid chromatography-tandem mass spectrometry (LC-MS/MS).>,\n",
-        " <Node: Ecology. Clarity on honey bee collapse?>,\n",
-        " <Node: Medium for development of bee cell cultures (Apis mellifera: Hymenoptera: Apidae).>,\n",
-        " <Node: Bee mystery continues.>,\n",
-        " <Node: Deformed wing virus.>,\n",
-        " <Node: The Acute bee paralysis virus-Kashmir bee virus-Israeli acute paralysis virus complex.>,\n",
-        " <Node: Translocation of neonicotinoid insecticides from coated seeds to seedling guttation drops: a novel way of intoxication for bees.>,\n",
-        " <Node: Deformed wing virus implicated in overwintering honeybee colony losses.>,\n",
-        " <Node: Changes in transcript abundance relating to colony collapse disorder in honey bees (Apis mellifera).>,\n",
-        " <Node: Colony collapse disorder: a descriptive study.>,\n",
-        " <Node: A PCR method of detecting American Foulbrood (Paenibacillus larvae) in winter beehive wax debris.>,\n",
-        " <Node: Honeybee colony collapse due to Nosema ceranae in professional apiaries.>,\n",
-        " <Node: IAPV, a bee-affecting virus associated with Colony Collapse Disorder can be silenced by dsRNA ingestion.>,\n",
-        " <Node: Energetic stress in the honeybee Apis mellifera from Nosema ceranae infection.>,\n",
-        " <Node: A survey of honey bee colony losses in the U.S., fall 2007 to spring 2008.>,\n",
-        " <Node: A qualitative model of mortality in honey bee (Apis mellifera) colonies infested with tracheal mites (Acarapis woodi).>,\n",
-        " <Node: First detection of Israeli acute paralysis virus (IAPV) in France, a dicistrovirus affecting honeybees (Apis mellifera).>,\n",
-        " <Node: Does pathogen spillover from commercially reared bumble bees threaten wild pollinators?>,\n",
-        " <Node: How natural infection by Nosema ceranae causes honeybee colony collapse.>,\n",
-        " <Node: Genetic analysis of Israel acute paralysis virus: distinct clusters are circulating in the United States.>,\n",
-        " <Node: The latest buzz about colony collapse disorder.>,\n",
-        " <Node: Native bees provide insurance against ongoing honey bee losses.>,\n",
-        " <Node: A metagenomic survey of microbes in honey bee colony collapse disorder.>,\n",
-        " <Node: Vertical-transmission routes for deformed wing virus of honeybees (Apis mellifera).>,\n",
-        " <Node: RT-PCR analysis of Deformed wing virus in honeybees (Apis mellifera) and mites (Varroa destructor).>]"
-       ]
-      }
-     ],
-     "prompt_number": 5
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "from node.models import Ngram"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [],
-     "prompt_number": 6
-    },
-    {
-     "cell_type": "markdown",
-     "metadata": {},
-     "source": [
-      "    Ng"
-     ]
-    },
-    {
-     "cell_type": "raw",
-     "metadata": {},
-     "source": []
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "n = node.children.first()"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [],
-     "prompt_number": 14
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "for node_ngram in n.node_ngram_set.all():\n",
-      "    print(node_ngram.ngram.terms)"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "Ngram object\n",
-        "Ngram object\n",
-        "Ngram object\n",
-        "Ngram object\n",
-        "Ngram object\n",
-        "Ngram object\n",
-        "Ngram object\n",
-        "Ngram object\n",
-        "Ngram object\n",
-        "Ngram object\n",
-        "Ngram object\n",
-        "Ngram object\n",
-        "Ngram object\n",
-        "Ngram object\n",
-        "Ngram object\n",
-        "Ngram object\n",
-        "Ngram object\n",
-        "Ngram object\n",
-        "Ngram object\n",
-        "Ngram object\n",
-        "Ngram object\n",
-        "Ngram object\n",
-        "Ngram object\n",
-        "Ngram object\n",
-        "Ngram object\n",
-        "Ngram object\n",
-        "Ngram object\n",
-        "Ngram object\n",
-        "Ngram object\n",
-        "Ngram object\n",
-        "Ngram object\n",
-        "Ngram object\n",
-        "Ngram object\n",
-        "Ngram object\n",
-        "Ngram object\n",
-        "Ngram object\n",
-        "Ngram object\n",
-        "Ngram object\n",
-        "Ngram object\n",
-        "Ngram object\n",
-        "Ngram object\n",
-        "Ngram object"
-       ]
-      },
-      {
-       "output_type": "stream",
-       "stream": "stdout",
-       "text": [
-        "\n",
-        "Ngram object\n",
-        "Ngram object\n",
-        "Ngram object\n",
-        "Ngram object\n",
-        "Ngram object\n",
-        "Ngram object\n",
-        "Ngram object\n",
-        "Ngram object\n",
-        "Ngram object\n",
-        "Ngram object\n",
-        "Ngram object\n",
-        "Ngram object\n",
-        "Ngram object\n",
-        "Ngram object\n",
-        "Ngram object\n",
-        "Ngram object\n",
-        "Ngram object\n",
-        "Ngram object\n",
-        "Ngram object\n",
-        "Ngram object\n",
-        "Ngram object\n",
-        "Ngram object\n"
-       ]
-      }
-     ],
-     "prompt_number": 26
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [],
-     "language": "python",
-     "metadata": {},
-     "outputs": []
-    }
-   ],
-   "metadata": {}
-  }
- ]
-}
\ No newline at end of file
diff --git a/gargantext_web/views.py b/gargantext_web/views.py
index 0b71a677adffd010d1e3553773e171b8ae62c0dd..aba219c31f00cba9e76b839c1a05b845831f9ace 100644
--- a/gargantext_web/views.py
+++ b/gargantext_web/views.py
@@ -5,7 +5,7 @@ from django.http import Http404, HttpResponse, HttpResponseRedirect
 from django.template.loader import get_template
 from django.template import Context
 
-from documents.models import Project, Corpus, Document
+#from documents.models import Project, Corpus, Document
 from node.models import Node, NodeType
 
 from django.contrib.auth.models import User
@@ -15,6 +15,9 @@ from itertools import *
 from django.db import connection
 
 from django import forms
+
+from collections import defaultdict
+
 # SOME FUNCTIONS
 
 def query_to_dicts(query_string, *query_args):
@@ -151,28 +154,25 @@ def corpus(request, project_id, corpus_id):
     number = corpus.children.count()
 
     try:
-        sources = query_to_dicts('''select count(*), source 
-                            from node_node as t1
-                            INNER JOIN documents_document_corpus as t2
-                            ON (  t1.id = t2.document_id )
-                            WHERE ( t1.user_id = %d AND t2.corpus_id = %d )
-                            GROUP BY source
-                            order by 1 DESC limit %d;''' % (request.user.pk, int(corpus_id), int(15)))
+        sources = defaultdict(int)
+        for document in documents.all():
+            sources[document.metadata['journal']] += 1
+        
+        sources_donut = []
+        
+        for source in sources.keys():
+            source_count = dict()
+            source_count['count'] = source['count']
+            try:
+                source_count['part'] = round(source_count['count'] * 100 / number)
+            except:
+                source_count['part'] = None
+            source_count['source'] = source['source']
+            sources_donut.append(source_count)
+    
     except:
         pass
 
-    sources_donut = []
-    for s in sources:
-        ss = dict()
-        ss['count'] = s['count']
-        try:
-            ss['part'] = round(ss['count'] * 100 / number)
-        except:
-            ss['part'] = None
-        ss['source'] = s['source']
-        sources_donut.append(ss)
-    
-    
     try:
         first = documents.first().date 
         last  = documents.last().date
@@ -190,13 +190,14 @@ def corpus(request, project_id, corpus_id):
             date_form = 'days'
 
         try:
-            dates = query_to_dicts('''select to_char(t1.date, '%s'), count(*) 
-                                from documents_document as t1
-                                INNER JOIN documents_document_corpus as t2
-                                ON (  t1.id = t2.document_id )
-                                WHERE ( t1.user_id = %d AND t2.corpus_id = %d )
-                                group by to_char(t1.date, '%s') 
-                                order by 1 DESC;''' %  (date_format, request.user.pk, int(corpus_id), date_format))
+            dates = dict()
+#            query_to_dicts('''select to_char(t1.date, '%s'), count(*) 
+#                                from documents_document as t1
+#                                INNER JOIN documents_document_corpus as t2
+#                                ON (  t1.id = t2.document_id )
+#                                WHERE ( t1.user_id = %d AND t2.corpus_id = %d )
+#                                group by to_char(t1.date, '%s') 
+#                                order by 1 DESC;''' %  (date_format, request.user.pk, int(corpus_id), date_format))
         except:
             pass
     
diff --git a/README.txt b/init/README_old.txt
similarity index 100%
rename from README.txt
rename to init/README_old.txt
diff --git a/init/dependances.deb b/init/dependances.deb
index abf4388e42fd2aa924e8ba64531856f6462f6b81..8abaedf3fe9537717549b7119033b95ddd3e8745 100644
--- a/init/dependances.deb
+++ b/init/dependances.deb
@@ -1,4 +1,25 @@
-# Paquets Debian a installer
+
+
+sudo apt-get install python-virtualenv
+sudo apt-cache search libpng
+sudo apt-get install libpng12-dev
+sudo apt-get install libpng-dev
+apt-cache search freetype
+apt-cache search freetype | grep dev
+sudo apt-get install libfreetype6-dev
+sudo apt-cache search python-dev
+sudo apt-get install python-dev
+sudo apt-get install libpq-dev
+
+
+
+postgresql-contrib
+
+libpq-dev
+# rajouter david
+#
+#
+#Paquets Debian a installer
 # easy_install -U distribute (matplotlib)
 #lxml
 libffi-dev
diff --git a/init/init.py b/init/init.py
index a2624b769cf1622d15613d36524f0899f20edca2..d7c590db830e23c784d09f46180410e10ac5edf7 100755
--- a/init/init.py
+++ b/init/init.py
@@ -1,11 +1,20 @@
 from node.models import NodeType
+from django.contrib.auth.models import User
 
+user = User.objects.get(username="alexandre")
 #NodeType.objects.all().delete()
-NodeType(name="Root").save()
-NodeType(name="Project").save()
+type_root = NodeType(name="Root")
+type_root.save()
+
+type_project = NodeType(name="Project")
+type_project.save()
+
 NodeType(name="Corpus").save()
 NodeType(name="Document").save()
 
+from node.models import Project
+Project(name="Projet sur les abeilles", user=user, type=type_project).save()
+
 from node.models import DatabaseType
 for bdd in ['Europresse', 'PubMed', 'Web Of Science (WOS), ISI format']:
     DatabaseType(name=bdd).save()
diff --git a/init/init.sh b/init/init.sh
index 481827373916bbf67c285249752ca15f0d22cc7f..21e81d7818531be143b7b1e7dbb31b6e23bfe488 100755
--- a/init/init.sh
+++ b/init/init.sh
@@ -3,7 +3,7 @@
 psql -d gargandb -f init.sql
 
 sleep 2
-./manage.py syncdb
+../manage.py syncdb
 
 sleep 2
-./manage.py shell < init.py
+../manage.py shell < init.py
diff --git a/node/admin.py b/node/admin.py
index 012987c23512427823d42ea6206a4e0de464626e..d7fd674b04b02142ad94eed54f055986e104eb0a 100644
--- a/node/admin.py
+++ b/node/admin.py
@@ -1,7 +1,12 @@
 from django.contrib import admin
 from django.forms import ModelForm, ModelChoiceField
+from nested_inlines.admin import NestedModelAdmin, NestedStackedInline, NestedTabularInline
 
-from node.models import NodeType, Language, Node, Project, Corpus, Document
+from node.models import NodeType, Language, Node, Project, Corpus, Document, DatabaseType, Resource
+
+class ResourceInLine(admin.TabularInline):
+    model = Resource
+    extra = 0
 
 class NodeAdmin(admin.ModelAdmin):
     exclude = ('user', 'path', 'depth', 'numchild')
@@ -9,7 +14,7 @@ class NodeAdmin(admin.ModelAdmin):
     search_fields = ('name',)
     # list_filter = ('type',)
     # date_hierarchy
-    # inlines = [CorpusInLine,]
+    #inlines = [ResourceInLine,]
 
     #_nodetype_name = 'Project'
     #_parent_nodetype_name = 'Root'
@@ -50,7 +55,8 @@ class NodeAdmin(admin.ModelAdmin):
                                                 parent  = nodeParent,\
                                                 user    = request.user,\
                                                 name    = obj.name,\
-                                                metadata= obj.metadata)
+                                                metadata= obj.metadata,\
+                                                resource = obj.resource)
             
             #nodeParent.save()
             #node.save()
@@ -108,10 +114,11 @@ class LanguageAdmin(admin.ModelAdmin):
     class Meta:
         ordering = ['fullname',]
 
-
-admin.site.register(NodeType)
+admin.site.register(Resource)
+admin.site.register(DatabaseType)
 admin.site.register(Language, LanguageAdmin)
 
+admin.site.register(NodeType)
 admin.site.register(Project, ProjectAdmin)
 admin.site.register(Corpus, CorpusAdmin)
 admin.site.register(Document, DocumentAdmin)
diff --git a/node/models.py b/node/models.py
index a1f47e49eac6c86b24440796042068323c965715..88e0401132e031d565b7fdb2ec25050c97f5dfbb 100644
--- a/node/models.py
+++ b/node/models.py
@@ -39,9 +39,10 @@ class Ngram(models.Model):
     terms       = models.CharField(max_length=255)
 
 class Resource(models.Model):
+    user        = models.ForeignKey(User)
     guid        = models.CharField(max_length=255)
     bdd_type    = models.ForeignKey(DatabaseType, blank=True, null=True)
-    #file        = models.FileField(upload_to=upload_to, blank=True)
+    file        = models.FileField(upload_to=upload_to, blank=True)
 
 class NodeType(models.Model):
     name        = models.CharField(max_length=200)
@@ -60,9 +61,8 @@ class Node(CTENode):
     date        = models.DateField(default=timezone.now, blank=True)
     metadata    = hstore.DictionaryField(blank=True)
     
-    fichier      = models.FileField(upload_to=upload_to, blank=True)
-    #resource    = models.ForeignKey(Resource, blank=True, null=True)
-    #ngrams      = models.ManyToManyField(NGrams)
+    resource    = models.ManyToManyField(Resource, blank=True)
+    ngrams      = models.ManyToManyField(Ngram, blank=True)
     
     
     def __str__(self):
diff --git a/templates/corpus.html b/templates/corpus.html
index 9036bcc586b364187cb468961a327d662da1a029..d91f8996a5d99df93dff4e946bf901d93342bc90 100644
--- a/templates/corpus.html
+++ b/templates/corpus.html
@@ -66,7 +66,7 @@
 
 				<div class="col-md-4">
         <div class="jumbotron">
-						<h3>Catography</h3>
+						<h3>Cartography</h3>
 						<ol>
 								<li>Feature</li>
 								<li>Feature</li>
diff --git a/test_parser.ipynb b/test_parser.ipynb
new file mode 100644
index 0000000000000000000000000000000000000000..42d49cd2a5851e6a7c28334101e808a62bb6b3d9
--- /dev/null
+++ b/test_parser.ipynb
@@ -0,0 +1,848 @@
+{
+ "metadata": {
+  "name": "",
+  "signature": "sha256:6df2ce47b09a6203b244f7b4dc27f3346901261b85922dd46bc54d669d6469a6"
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+  {
+   "cells": [
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "from node.models import Node, NodeType, Language\n",
+      "import parsing\n",
+      "from parsing.FileParsers import *\n",
+      "from collections import defaultdict"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 23
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "#from node.models import Language\n",
+      "#import pycountry\n",
+      "#for lang in pycountry.languages:\n",
+      "#    try:\n",
+      "#        Language(iso2=lang.alpha2, iso3=lang.terminology, fullname=lang.name, implemented=1).save()\n",
+      "#    except:\n",
+      "#        pass\n"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 2
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 2
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "node = Node.objects.get(name=\"Pubmed Fukushima\")"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 3
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "fileparser = PubmedFileParser.PubmedFileParser(file='/var/www/gargantext/media/' + node.fichier.name)"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 4
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "fileparser.parse(node)"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "Warning: parsing empty text\n",
+        "Warning: parsing empty text\n",
+        "Warning: parsing empty text"
+       ]
+      },
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "\n",
+        "Warning: parsing empty text\n",
+        "Warning: parsing empty text"
+       ]
+      },
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "\n",
+        "Warning: parsing empty text\n",
+        "Warning: parsing empty text"
+       ]
+      },
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "\n",
+        "Warning: parsing empty text"
+       ]
+      },
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "\n",
+        "Warning: parsing empty text"
+       ]
+      },
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "\n",
+        "Warning: parsing empty text"
+       ]
+      },
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "\n",
+        "Warning: parsing empty text"
+       ]
+      },
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "\n",
+        "Warning: parsing empty text"
+       ]
+      },
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "\n",
+        "Warning: parsing empty text"
+       ]
+      },
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "\n",
+        "Warning: parsing empty text"
+       ]
+      },
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "\n",
+        "Warning: parsing empty text"
+       ]
+      },
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "\n"
+       ]
+      },
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 5,
+       "text": [
+        "[<Node: Systemic spread and propagation of a plant-pathogenic virus in European honeybees, Apis mellifera.>,\n",
+        " <Node: A Causal Analysis of Observed Declines in Managed Honey Bees (Apis mellifera).>,\n",
+        " <Node: Non-specific dsRNA-mediated antiviral response in the honey bee.>,\n",
+        " <Node: In vitro infection of pupae with Israeli acute paralysis virus suggests disturbance of transcriptional homeostasis in honey bees (Apis mellifera).>,\n",
+        " <Node: Nosema ceranae has been present in Brazil for more than three decades infecting Africanized honey bees.>,\n",
+        " <Node: Return of the natives.>,\n",
+        " <Node: The road to pollinator health.>,\n",
+        " <Node: Do the honeybee pathogens Nosema ceranae and deformed wing virus act synergistically?>,\n",
+        " <Node: Essential oil from Eupatorium buniifolium leaves as potential varroacide.>,\n",
+        " <Node: Animal behaviour: brain food.>,\n",
+        " <Node: What's the buzz?>,\n",
+        " <Node: Nosema ceranae induced mortality in honey bees (Apis mellifera) depends on infection methods.>,\n",
+        " <Node: Rates of honeybee sting hypersensitivity in San Antonio during honeybee colony collapse disorder.>,\n",
+        " <Node: Healing power of honey.>,\n",
+        " <Node: Honey constituents up-regulate detoxification and immunity genes in the western honey bee Apis mellifera.>,\n",
+        " <Node: Nosema spp. infection and its negative effects on honey bees (Apis mellifera iberiensis) at the colony level.>,\n",
+        " <Node: Flight behavior and pheromone changes associated to Nosema ceranae infection of honey bee workers (Apis mellifera) in field conditions.>,\n",
+        " <Node: Clinical signs of deformed wing virus infection are predictive markers for honey bee colony losses.>,\n",
+        " <Node: The microsporidian parasites Nosema ceranae and Nosema apis are widespread in honeybee (Apis mellifera) colonies across Scotland.>,\n",
+        " <Node: A potential link among biogenic amines-based pesticides, learning and memory, and colony collapse disorder: a unique hypothesis.>,\n",
+        " <Node: Comment on \"A common pesticide decreases foraging success and survival in honey bees\".>,\n",
+        " <Node: Idiopathic brood disease syndrome and queen events as precursors of colony mortality in migratory beekeeping operations in the eastern United States.>,\n",
+        " <Node: Pathogen webs in collapsing honey bee colonies.>,\n",
+        " <Node: Asymptomatic presence of Nosema spp. in Spanish commercial apiaries.>,\n",
+        " <Node: Synergistic parasite-pathogen interactions mediated by host immunity can drive the collapse of honeybee colonies.>,\n",
+        " <Node: Global honey bee viral landscape altered by a parasitic mite.>,\n",
+        " <Node: Paratransgenesis: an approach to improve colony health and molecular insight in honey bees (Apis mellifera)?>,\n",
+        " <Node: Agriculture. Field research on bees raises concern about low-dose pesticides.>,\n",
+        " <Node: A common pesticide decreases foraging success and survival in honey bees.>,\n",
+        " <Node: Symbionts as major modulators of insect health: lactic acid bacteria and honeybees.>,\n",
+        " <Node: The habitat disruption induces immune-suppression and oxidative stress in honey bees.>,\n",
+        " <Node: Predictive markers of honey bee colony collapse.>,\n",
+        " <Node: Colony collapse disorder in Europe.>,\n",
+        " <Node: Pesticide exposure in honey bees results in increased levels of the gut pathogen Nosema.>,\n",
+        " <Node: Bromenshenk et al (PLoS One, 2011, 5(10):e13181) have claimed to have found peptides from an invertebrate iridovirus in bees.>,\n",
+        " <Node: A new threat to honey bees, the parasitic phorid fly Apocephalus borealis.>,\n",
+        " <Node: Detection of pesticides in active and depopulated beehives in Uruguay.>,\n",
+        " <Node: Bees brought to their knees: microbes affecting honey bee health.>,\n",
+        " <Node: From elephants to bees.>,\n",
+        " <Node: Evidence of a novel immune responsive protein in the Hymenoptera.>,\n",
+        " <Node: Lack of evidence for an association between Iridovirus and colony collapse disorder.>,\n",
+        " <Node: First report of Israeli acute paralysis virus in asymptomatic hives of Argentina.>,\n",
+        " <Node: Temporal analysis of the honey bee microbiome reveals four novel viruses and seasonal prevalence of known viruses, Nosema, and Crithidia.>,\n",
+        " <Node: A quantitative model of honey bee colony population dynamics.>,\n",
+        " <Node: Detection of honey bee (Apis mellifera) viruses with an oligonucleotide microarray.>,\n",
+        " <Node: Interpretation of data underlying the link between colony collapse disorder (CCD) and an invertebrate iridescent virus.>,\n",
+        " <Node: RNA viruses in hymenopteran pollinators: evidence of inter-Taxa virus transmission via pollen and potential impact on non-Apis hymenopteran species.>,\n",
+        " <Node: Large-scale field application of RNAi technology reducing Israeli acute paralysis virus disease in honey bees (Apis mellifera, Hymenoptera: Apidae).>,\n",
+        " <Node: Weighing risk factors associated with bee colony collapse disorder by classification and regression tree analysis.>,\n",
+        " <Node: Iridovirus and microsporidian linked to honey bee colony decline.>,\n",
+        " <Node: Varroa destructor is an effective vector of Israeli acute paralysis virus in the honeybee, Apis mellifera.>,\n",
+        " <Node: The plight of the bees.>,\n",
+        " <Node: Sudden deaths and colony population decline in Greek honey bee colonies.>,\n",
+        " <Node: Colony Collapse Disorder in context.>,\n",
+        " <Node: Vanishing honey bees: Is the dying of adult worker bees a consequence of short telomeres and premature aging?>,\n",
+        " <Node: Prevention of Chinese sacbrood virus infection in Apis cerana using RNA interference.>,\n",
+        " <Node: Refined methodology for the determination of neonicotinoid pesticides and their metabolites in honey bees and bee products by liquid chromatography-tandem mass spectrometry (LC-MS/MS).>,\n",
+        " <Node: Ecology. Clarity on honey bee collapse?>,\n",
+        " <Node: Medium for development of bee cell cultures (Apis mellifera: Hymenoptera: Apidae).>,\n",
+        " <Node: Bee mystery continues.>,\n",
+        " <Node: Deformed wing virus.>,\n",
+        " <Node: The Acute bee paralysis virus-Kashmir bee virus-Israeli acute paralysis virus complex.>,\n",
+        " <Node: Translocation of neonicotinoid insecticides from coated seeds to seedling guttation drops: a novel way of intoxication for bees.>,\n",
+        " <Node: Deformed wing virus implicated in overwintering honeybee colony losses.>,\n",
+        " <Node: Changes in transcript abundance relating to colony collapse disorder in honey bees (Apis mellifera).>,\n",
+        " <Node: Colony collapse disorder: a descriptive study.>,\n",
+        " <Node: A PCR method of detecting American Foulbrood (Paenibacillus larvae) in winter beehive wax debris.>,\n",
+        " <Node: Honeybee colony collapse due to Nosema ceranae in professional apiaries.>,\n",
+        " <Node: IAPV, a bee-affecting virus associated with Colony Collapse Disorder can be silenced by dsRNA ingestion.>,\n",
+        " <Node: Energetic stress in the honeybee Apis mellifera from Nosema ceranae infection.>,\n",
+        " <Node: A survey of honey bee colony losses in the U.S., fall 2007 to spring 2008.>,\n",
+        " <Node: A qualitative model of mortality in honey bee (Apis mellifera) colonies infested with tracheal mites (Acarapis woodi).>,\n",
+        " <Node: First detection of Israeli acute paralysis virus (IAPV) in France, a dicistrovirus affecting honeybees (Apis mellifera).>,\n",
+        " <Node: Does pathogen spillover from commercially reared bumble bees threaten wild pollinators?>,\n",
+        " <Node: How natural infection by Nosema ceranae causes honeybee colony collapse.>,\n",
+        " <Node: Genetic analysis of Israel acute paralysis virus: distinct clusters are circulating in the United States.>,\n",
+        " <Node: The latest buzz about colony collapse disorder.>,\n",
+        " <Node: Native bees provide insurance against ongoing honey bee losses.>,\n",
+        " <Node: A metagenomic survey of microbes in honey bee colony collapse disorder.>,\n",
+        " <Node: Vertical-transmission routes for deformed wing virus of honeybees (Apis mellifera).>,\n",
+        " <Node: RT-PCR analysis of Deformed wing virus in honeybees (Apis mellifera) and mites (Varroa destructor).>]"
+       ]
+      }
+     ],
+     "prompt_number": 5
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "from node.models import Ngram"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 22
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "children = node.children.all()\n",
+      "children[0].metadata"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 19,
+       "text": [
+        "{'title': 'A metagenomic survey of microbes in honey bee colony collapse disorder.',\n",
+        " 'doi': '',\n",
+        " 'language_iso3': 'eng',\n",
+        " 'journal': 'Science (New York, N.Y.)',\n",
+        " 'date_pub': '2007-10-12',\n",
+        " 'abstract': 'In colony collapse disorder (CCD), honey bee colonies inexplicably lose their workers. CCD has resulted in a loss of 50 to 90% of colonies in beekeeping operations across the United States. The observation that irradiated combs from affected colonies can be repopulated with naive bees suggests that infection may contribute to CCD. We used an unbiased metagenomic approach to survey microflora in CCD hives, normal hives, and imported royal jelly. Candidate pathogens were screened for significance of association with CCD by the examination of samples collected from several sites over a period of 3 years. One organism, Israeli acute paralysis virus of bees, was strongly correlated with CCD.'}"
+       ]
+      }
+     ],
+     "prompt_number": 19
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "from dateutil.parser import parse"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 16
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "dates = [ parse(document.metadata['date_pub']) for document in node.children.all()]"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 17
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "dates"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 18,
+       "text": [
+        "[datetime.datetime(2005, 11, 21, 0, 0),\n",
+        " datetime.datetime(2007, 7, 11, 0, 0),\n",
+        " datetime.datetime(2007, 10, 12, 0, 0),\n",
+        " datetime.datetime(2007, 10, 3, 0, 0),\n",
+        " datetime.datetime(2008, 2, 8, 0, 0),\n",
+        " datetime.datetime(2008, 6, 11, 0, 0),\n",
+        " datetime.datetime(2008, 9, 29, 0, 0),\n",
+        " datetime.datetime(2008, 7, 23, 0, 0),\n",
+        " datetime.datetime(2008, 11, 5, 0, 0),\n",
+        " datetime.datetime(2009, 2, 2, 0, 0),\n",
+        " datetime.datetime(2008, 12, 30, 0, 0),\n",
+        " datetime.datetime(2009, 3, 23, 0, 0),\n",
+        " datetime.datetime(2009, 2, 6, 0, 0),\n",
+        " datetime.datetime(2013, 6, 14, 0, 0),\n",
+        " datetime.datetime(2009, 9, 28, 0, 0),\n",
+        " datetime.datetime(2009, 8, 3, 0, 0),\n",
+        " datetime.datetime(2009, 10, 6, 0, 0),\n",
+        " datetime.datetime(2009, 11, 9, 0, 0),\n",
+        " datetime.datetime(2009, 11, 5, 0, 0),\n",
+        " datetime.datetime(2010, 1, 28, 0, 0),\n",
+        " datetime.datetime(2010, 1, 28, 0, 0),\n",
+        " datetime.datetime(2009, 11, 20, 0, 0),\n",
+        " datetime.datetime(2010, 2, 23, 0, 0),\n",
+        " datetime.datetime(2010, 1, 8, 0, 0),\n",
+        " datetime.datetime(2010, 5, 20, 0, 0),\n",
+        " datetime.datetime(2010, 10, 13, 0, 0),\n",
+        " datetime.datetime(2010, 8, 16, 0, 0),\n",
+        " datetime.datetime(2010, 11, 9, 0, 0),\n",
+        " datetime.datetime(2010, 10, 25, 0, 0),\n",
+        " datetime.datetime(2010, 12, 28, 0, 0),\n",
+        " datetime.datetime(2010, 12, 20, 0, 0),\n",
+        " datetime.datetime(2010, 10, 15, 0, 0),\n",
+        " datetime.datetime(2010, 11, 10, 0, 0),\n",
+        " datetime.datetime(2011, 1, 4, 0, 0),\n",
+        " datetime.datetime(2011, 1, 4, 0, 0),\n",
+        " datetime.datetime(2011, 3, 2, 0, 0),\n",
+        " datetime.datetime(2011, 8, 8, 0, 0),\n",
+        " datetime.datetime(2011, 5, 2, 0, 0),\n",
+        " datetime.datetime(2011, 6, 20, 0, 0),\n",
+        " datetime.datetime(2011, 7, 6, 0, 0),\n",
+        " datetime.datetime(2011, 7, 8, 0, 0),\n",
+        " datetime.datetime(2011, 11, 7, 0, 0),\n",
+        " datetime.datetime(2011, 10, 27, 0, 0),\n",
+        " datetime.datetime(2011, 11, 28, 0, 0),\n",
+        " datetime.datetime(2011, 11, 10, 0, 0),\n",
+        " datetime.datetime(2012, 1, 11, 0, 0),\n",
+        " datetime.datetime(2012, 1, 12, 0, 0),\n",
+        " datetime.datetime(2012, 1, 24, 0, 0),\n",
+        " datetime.datetime(2013, 6, 12, 0, 0),\n",
+        " datetime.datetime(2012, 3, 2, 0, 0),\n",
+        " datetime.datetime(2012, 3, 6, 0, 0),\n",
+        " datetime.datetime(2012, 3, 19, 0, 0),\n",
+        " datetime.datetime(2012, 4, 20, 0, 0),\n",
+        " datetime.datetime(2012, 3, 30, 0, 0),\n",
+        " datetime.datetime(2012, 6, 25, 0, 0),\n",
+        " datetime.datetime(2012, 6, 8, 0, 0),\n",
+        " datetime.datetime(2012, 6, 21, 0, 0),\n",
+        " datetime.datetime(2012, 9, 5, 0, 0),\n",
+        " datetime.datetime(2012, 8, 28, 0, 0),\n",
+        " datetime.datetime(2012, 12, 28, 0, 0),\n",
+        " datetime.datetime(2012, 9, 21, 0, 0),\n",
+        " datetime.datetime(2012, 12, 31, 0, 0),\n",
+        " datetime.datetime(2013, 1, 28, 0, 0),\n",
+        " datetime.datetime(2013, 2, 18, 0, 0),\n",
+        " datetime.datetime(2013, 4, 2, 0, 0),\n",
+        " datetime.datetime(2013, 5, 2, 0, 0),\n",
+        " datetime.datetime(2013, 5, 29, 0, 0),\n",
+        " datetime.datetime(2013, 5, 29, 0, 0),\n",
+        " datetime.datetime(2013, 5, 27, 0, 0),\n",
+        " datetime.datetime(2013, 7, 29, 0, 0),\n",
+        " datetime.datetime(2013, 6, 4, 0, 0),\n",
+        " datetime.datetime(2013, 6, 27, 0, 0),\n",
+        " datetime.datetime(2013, 9, 16, 0, 0),\n",
+        " datetime.datetime(2013, 7, 18, 0, 0),\n",
+        " datetime.datetime(2013, 8, 16, 0, 0),\n",
+        " datetime.datetime(2013, 9, 5, 0, 0),\n",
+        " datetime.datetime(2013, 11, 11, 0, 0),\n",
+        " datetime.datetime(2013, 9, 16, 0, 0),\n",
+        " datetime.datetime(2013, 10, 16, 0, 0),\n",
+        " datetime.datetime(2013, 12, 23, 0, 0),\n",
+        " datetime.datetime(2014, 1, 22, 0, 0),\n",
+        " datetime.datetime(2005, 11, 21, 0, 0),\n",
+        " datetime.datetime(2007, 7, 11, 0, 0),\n",
+        " datetime.datetime(2007, 10, 12, 0, 0),\n",
+        " datetime.datetime(2007, 10, 3, 0, 0),\n",
+        " datetime.datetime(2008, 2, 8, 0, 0),\n",
+        " datetime.datetime(2008, 6, 11, 0, 0),\n",
+        " datetime.datetime(2008, 9, 29, 0, 0),\n",
+        " datetime.datetime(2008, 7, 23, 0, 0),\n",
+        " datetime.datetime(2008, 11, 5, 0, 0),\n",
+        " datetime.datetime(2009, 2, 2, 0, 0),\n",
+        " datetime.datetime(2008, 12, 30, 0, 0),\n",
+        " datetime.datetime(2009, 3, 23, 0, 0),\n",
+        " datetime.datetime(2009, 2, 6, 0, 0),\n",
+        " datetime.datetime(2013, 6, 14, 0, 0),\n",
+        " datetime.datetime(2009, 9, 28, 0, 0),\n",
+        " datetime.datetime(2009, 8, 3, 0, 0),\n",
+        " datetime.datetime(2009, 10, 6, 0, 0),\n",
+        " datetime.datetime(2009, 11, 9, 0, 0),\n",
+        " datetime.datetime(2009, 11, 5, 0, 0),\n",
+        " datetime.datetime(2010, 1, 28, 0, 0),\n",
+        " datetime.datetime(2010, 1, 28, 0, 0),\n",
+        " datetime.datetime(2009, 11, 20, 0, 0),\n",
+        " datetime.datetime(2010, 2, 23, 0, 0),\n",
+        " datetime.datetime(2010, 1, 8, 0, 0),\n",
+        " datetime.datetime(2010, 5, 20, 0, 0),\n",
+        " datetime.datetime(2010, 10, 13, 0, 0),\n",
+        " datetime.datetime(2010, 8, 16, 0, 0),\n",
+        " datetime.datetime(2010, 11, 9, 0, 0),\n",
+        " datetime.datetime(2010, 10, 25, 0, 0),\n",
+        " datetime.datetime(2010, 12, 28, 0, 0),\n",
+        " datetime.datetime(2010, 12, 20, 0, 0),\n",
+        " datetime.datetime(2010, 10, 15, 0, 0),\n",
+        " datetime.datetime(2010, 11, 10, 0, 0),\n",
+        " datetime.datetime(2011, 1, 4, 0, 0),\n",
+        " datetime.datetime(2011, 1, 4, 0, 0),\n",
+        " datetime.datetime(2011, 3, 2, 0, 0),\n",
+        " datetime.datetime(2011, 8, 8, 0, 0),\n",
+        " datetime.datetime(2011, 5, 2, 0, 0),\n",
+        " datetime.datetime(2011, 6, 20, 0, 0),\n",
+        " datetime.datetime(2011, 7, 6, 0, 0),\n",
+        " datetime.datetime(2011, 7, 8, 0, 0),\n",
+        " datetime.datetime(2011, 11, 7, 0, 0),\n",
+        " datetime.datetime(2011, 10, 27, 0, 0),\n",
+        " datetime.datetime(2011, 11, 28, 0, 0),\n",
+        " datetime.datetime(2011, 11, 10, 0, 0),\n",
+        " datetime.datetime(2012, 1, 11, 0, 0),\n",
+        " datetime.datetime(2012, 1, 12, 0, 0),\n",
+        " datetime.datetime(2012, 1, 24, 0, 0),\n",
+        " datetime.datetime(2013, 6, 12, 0, 0),\n",
+        " datetime.datetime(2012, 3, 2, 0, 0),\n",
+        " datetime.datetime(2012, 3, 6, 0, 0),\n",
+        " datetime.datetime(2012, 3, 19, 0, 0),\n",
+        " datetime.datetime(2012, 4, 20, 0, 0),\n",
+        " datetime.datetime(2012, 3, 30, 0, 0),\n",
+        " datetime.datetime(2012, 6, 25, 0, 0),\n",
+        " datetime.datetime(2012, 6, 8, 0, 0),\n",
+        " datetime.datetime(2012, 6, 21, 0, 0),\n",
+        " datetime.datetime(2012, 9, 5, 0, 0),\n",
+        " datetime.datetime(2012, 8, 28, 0, 0),\n",
+        " datetime.datetime(2012, 12, 28, 0, 0),\n",
+        " datetime.datetime(2012, 9, 21, 0, 0),\n",
+        " datetime.datetime(2012, 12, 31, 0, 0),\n",
+        " datetime.datetime(2013, 1, 28, 0, 0),\n",
+        " datetime.datetime(2013, 2, 18, 0, 0),\n",
+        " datetime.datetime(2013, 4, 2, 0, 0),\n",
+        " datetime.datetime(2013, 5, 2, 0, 0),\n",
+        " datetime.datetime(2013, 5, 29, 0, 0),\n",
+        " datetime.datetime(2013, 5, 29, 0, 0),\n",
+        " datetime.datetime(2013, 5, 27, 0, 0),\n",
+        " datetime.datetime(2013, 7, 29, 0, 0),\n",
+        " datetime.datetime(2013, 6, 4, 0, 0),\n",
+        " datetime.datetime(2013, 6, 27, 0, 0),\n",
+        " datetime.datetime(2013, 9, 16, 0, 0),\n",
+        " datetime.datetime(2013, 7, 18, 0, 0),\n",
+        " datetime.datetime(2013, 8, 16, 0, 0),\n",
+        " datetime.datetime(2013, 9, 5, 0, 0),\n",
+        " datetime.datetime(2013, 11, 11, 0, 0),\n",
+        " datetime.datetime(2013, 9, 16, 0, 0),\n",
+        " datetime.datetime(2013, 10, 16, 0, 0),\n",
+        " datetime.datetime(2013, 12, 23, 0, 0),\n",
+        " datetime.datetime(2014, 1, 22, 0, 0)]"
+       ]
+      }
+     ],
+     "prompt_number": 18
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "journals = [ document.metadata['journal'] for document in node.children.all()]"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 20
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "journal_count = defaultdict(int)"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 29
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "for document in node.children.all():\n",
+      "    journal_count[document.metadata['journal']] += 1"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 30
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "journal_count"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 31,
+       "text": [
+        "defaultdict(<class 'int'>, {'Annals of allergy, asthma & immunology : official publication of the American College of Allergy, Asthma, & Immunology': 2, 'PLoS pathogens': 4, 'Revista Argentina de microbiolog\u00eda': 2, 'Insect molecular biology': 2, 'BioEssays : news and reviews in molecular, cellular and developmental biology': 2, 'Neurochemistry international': 2, 'Insect biochemistry and molecular biology': 2, 'Science (New York, N.Y.)': 16, 'Experimental & applied acarology': 2, 'Trends in microbiology': 2, 'Current microbiology': 2, 'Journal of virology': 2, 'Scientific American': 4, 'Environmental microbiology': 2, 'Medical hypotheses': 2, 'Applied and environmental microbiology': 2, 'Die Naturwissenschaften': 2, 'Journal of agricultural and food chemistry': 2, 'The Veterinary quarterly': 2, 'Journal of invertebrate pathology': 22, 'Ecology letters': 2, 'Integrative and comparative biology': 2, 'PloS one': 28, 'Parasitology research': 4, 'Current biology : CB': 2, 'Molecular & cellular proteomics : MCP': 4, 'In vitro cellular & developmental biology. Animal': 2, 'Preventive veterinary medicine': 2, 'The Journal of general virology': 6, 'Veterinary microbiology': 2, 'Proceedings of the National Academy of Sciences of the United States of America': 6, 'Ecology and evolution': 2, 'Human and ecological risk assessment : HERA': 2, 'International journal of environmental research and public health': 2, 'Journal of economic entomology': 4, 'Environmental microbiology reports': 6, 'Environmental science & technology': 2, 'mBio': 2, 'Veterinary research': 2, 'Nature': 2})"
+       ]
+      }
+     ],
+     "prompt_number": 31
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "journals"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "pyout",
+       "prompt_number": 21,
+       "text": [
+        "['The Journal of general virology',\n",
+        " 'The Journal of general virology',\n",
+        " 'Science (New York, N.Y.)',\n",
+        " 'Ecology letters',\n",
+        " 'Science (New York, N.Y.)',\n",
+        " 'Journal of virology',\n",
+        " 'Environmental microbiology',\n",
+        " 'PloS one',\n",
+        " 'Journal of invertebrate pathology',\n",
+        " 'Experimental & applied acarology',\n",
+        " 'PloS one',\n",
+        " 'Journal of invertebrate pathology',\n",
+        " 'Insect molecular biology',\n",
+        " 'Environmental microbiology reports',\n",
+        " 'Veterinary microbiology',\n",
+        " 'PloS one',\n",
+        " 'Proceedings of the National Academy of Sciences of the United States of America',\n",
+        " 'Applied and environmental microbiology',\n",
+        " 'Journal of economic entomology',\n",
+        " 'Journal of invertebrate pathology',\n",
+        " 'Journal of invertebrate pathology',\n",
+        " 'Current biology : CB',\n",
+        " 'In vitro cellular & developmental biology. Animal',\n",
+        " 'Science (New York, N.Y.)',\n",
+        " 'Journal of agricultural and food chemistry',\n",
+        " 'Current microbiology',\n",
+        " 'Medical hypotheses',\n",
+        " 'BioEssays : news and reviews in molecular, cellular and developmental biology',\n",
+        " 'Journal of invertebrate pathology',\n",
+        " 'Environmental science & technology',\n",
+        " 'The Journal of general virology',\n",
+        " 'PloS one',\n",
+        " 'Journal of economic entomology',\n",
+        " 'PLoS pathogens',\n",
+        " 'PloS one',\n",
+        " 'Molecular & cellular proteomics : MCP',\n",
+        " 'Journal of invertebrate pathology',\n",
+        " 'PloS one',\n",
+        " 'PloS one',\n",
+        " 'Revista Argentina de microbiolog\u00eda',\n",
+        " 'PloS one',\n",
+        " 'Insect biochemistry and molecular biology',\n",
+        " 'The Veterinary quarterly',\n",
+        " 'Trends in microbiology',\n",
+        " 'International journal of environmental research and public health',\n",
+        " 'PloS one',\n",
+        " 'Molecular & cellular proteomics : MCP',\n",
+        " 'Die Naturwissenschaften',\n",
+        " 'Environmental microbiology reports',\n",
+        " 'PloS one',\n",
+        " 'Ecology and evolution',\n",
+        " 'PloS one',\n",
+        " 'Science (New York, N.Y.)',\n",
+        " 'Science (New York, N.Y.)',\n",
+        " 'Integrative and comparative biology',\n",
+        " 'Science (New York, N.Y.)',\n",
+        " 'PLoS pathogens',\n",
+        " 'Journal of invertebrate pathology',\n",
+        " 'PloS one',\n",
+        " 'Preventive veterinary medicine',\n",
+        " 'Science (New York, N.Y.)',\n",
+        " 'Neurochemistry international',\n",
+        " 'Parasitology research',\n",
+        " 'Journal of invertebrate pathology',\n",
+        " 'Journal of invertebrate pathology',\n",
+        " 'Veterinary research',\n",
+        " 'Proceedings of the National Academy of Sciences of the United States of America',\n",
+        " 'Proceedings of the National Academy of Sciences of the United States of America',\n",
+        " 'Annals of allergy, asthma & immunology : official publication of the American College of Allergy, Asthma, & Immunology',\n",
+        " 'Journal of invertebrate pathology',\n",
+        " 'Scientific American',\n",
+        " 'Nature',\n",
+        " 'Parasitology research',\n",
+        " 'Environmental microbiology reports',\n",
+        " 'Science (New York, N.Y.)',\n",
+        " 'Scientific American',\n",
+        " 'Journal of invertebrate pathology',\n",
+        " 'PloS one',\n",
+        " 'PloS one',\n",
+        " 'Human and ecological risk assessment : HERA',\n",
+        " 'mBio',\n",
+        " 'The Journal of general virology',\n",
+        " 'The Journal of general virology',\n",
+        " 'Science (New York, N.Y.)',\n",
+        " 'Ecology letters',\n",
+        " 'Science (New York, N.Y.)',\n",
+        " 'Journal of virology',\n",
+        " 'Environmental microbiology',\n",
+        " 'PloS one',\n",
+        " 'Journal of invertebrate pathology',\n",
+        " 'Experimental & applied acarology',\n",
+        " 'PloS one',\n",
+        " 'Journal of invertebrate pathology',\n",
+        " 'Insect molecular biology',\n",
+        " 'Environmental microbiology reports',\n",
+        " 'Veterinary microbiology',\n",
+        " 'PloS one',\n",
+        " 'Proceedings of the National Academy of Sciences of the United States of America',\n",
+        " 'Applied and environmental microbiology',\n",
+        " 'Journal of economic entomology',\n",
+        " 'Journal of invertebrate pathology',\n",
+        " 'Journal of invertebrate pathology',\n",
+        " 'Current biology : CB',\n",
+        " 'In vitro cellular & developmental biology. Animal',\n",
+        " 'Science (New York, N.Y.)',\n",
+        " 'Journal of agricultural and food chemistry',\n",
+        " 'Current microbiology',\n",
+        " 'Medical hypotheses',\n",
+        " 'BioEssays : news and reviews in molecular, cellular and developmental biology',\n",
+        " 'Journal of invertebrate pathology',\n",
+        " 'Environmental science & technology',\n",
+        " 'The Journal of general virology',\n",
+        " 'PloS one',\n",
+        " 'Journal of economic entomology',\n",
+        " 'PLoS pathogens',\n",
+        " 'PloS one',\n",
+        " 'Molecular & cellular proteomics : MCP',\n",
+        " 'Journal of invertebrate pathology',\n",
+        " 'PloS one',\n",
+        " 'PloS one',\n",
+        " 'Revista Argentina de microbiolog\u00eda',\n",
+        " 'PloS one',\n",
+        " 'Insect biochemistry and molecular biology',\n",
+        " 'The Veterinary quarterly',\n",
+        " 'Trends in microbiology',\n",
+        " 'International journal of environmental research and public health',\n",
+        " 'PloS one',\n",
+        " 'Molecular & cellular proteomics : MCP',\n",
+        " 'Die Naturwissenschaften',\n",
+        " 'Environmental microbiology reports',\n",
+        " 'PloS one',\n",
+        " 'Ecology and evolution',\n",
+        " 'PloS one',\n",
+        " 'Science (New York, N.Y.)',\n",
+        " 'Science (New York, N.Y.)',\n",
+        " 'Integrative and comparative biology',\n",
+        " 'Science (New York, N.Y.)',\n",
+        " 'PLoS pathogens',\n",
+        " 'Journal of invertebrate pathology',\n",
+        " 'PloS one',\n",
+        " 'Preventive veterinary medicine',\n",
+        " 'Science (New York, N.Y.)',\n",
+        " 'Neurochemistry international',\n",
+        " 'Parasitology research',\n",
+        " 'Journal of invertebrate pathology',\n",
+        " 'Journal of invertebrate pathology',\n",
+        " 'Veterinary research',\n",
+        " 'Proceedings of the National Academy of Sciences of the United States of America',\n",
+        " 'Proceedings of the National Academy of Sciences of the United States of America',\n",
+        " 'Annals of allergy, asthma & immunology : official publication of the American College of Allergy, Asthma, & Immunology',\n",
+        " 'Journal of invertebrate pathology',\n",
+        " 'Scientific American',\n",
+        " 'Nature',\n",
+        " 'Parasitology research',\n",
+        " 'Environmental microbiology reports',\n",
+        " 'Science (New York, N.Y.)',\n",
+        " 'Scientific American',\n",
+        " 'Journal of invertebrate pathology',\n",
+        " 'PloS one',\n",
+        " 'PloS one',\n",
+        " 'Human and ecological risk assessment : HERA',\n",
+        " 'mBio']"
+       ]
+      }
+     ],
+     "prompt_number": 21
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "for node_ngram in n.node_ngram_set.all():\n",
+      "    print(node_ngram.ngram.terms)"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object"
+       ]
+      },
+      {
+       "output_type": "stream",
+       "stream": "stdout",
+       "text": [
+        "\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n",
+        "Ngram object\n"
+       ]
+      }
+     ],
+     "prompt_number": 26
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [],
+     "language": "python",
+     "metadata": {},
+     "outputs": []
+    }
+   ],
+   "metadata": {}
+  }
+ ]
+}
\ No newline at end of file