From 0b9dcfc4d0cae2de5d3d17c1005dccedfea33158 Mon Sep 17 00:00:00 2001
From: Fabian Gallenkamp <fabian.gallenkamp@uni-hamburg.de>
Date: Wed, 13 Feb 2019 17:04:09 +0100
Subject: [PATCH] multiple tools added

---
 app.py           | 268 +++++++++++++++++++++++++++++++++++++----------
 sample_db.sqlite | Bin 53248 -> 65536 bytes
 2 files changed, 214 insertions(+), 54 deletions(-)

diff --git a/app.py b/app.py
index 0ce9c30..226e027 100644
--- a/app.py
+++ b/app.py
@@ -371,6 +371,7 @@ def build_sample_db():
 
     db.drop_all()
     db.create_all()
+    lic_unknown = License(name="Unbekannt")
     lic_bsd = License(name="BSD")
     lic_gpl2 = License(name="GPL", version="2.0")
     lic_gpl3 = License(name="GPL", version="3.0")
@@ -378,6 +379,8 @@ def build_sample_db():
     lic_lgpl = License(name="LGPL")
     lic_apache2 = License(name="Apache", version="2.0")
     lic_mit = License(name="MIT")
+    lic_byncnd3 = License(name="CC BY-NC-ND", version="3.0")
+    lic_ccdl = License(name="CCDL", version="1.0")
     lic_prop = License(name="Proprietär")
     db.session.add(lic_gpl3)
     db.session.add(lic_gpl3)
@@ -391,10 +394,16 @@ def build_sample_db():
     prol_cy = Programminglanguage(name="Cython")
     prol_java = Programminglanguage(name="Java")
     prol_objc = Programminglanguage(name="Objective-C")
+    prol_jupyternb = Programminglanguage(name="Jupyter Notebook")
+    prol_js = Programminglanguage(name="Javascript")
+    prol_c = Programminglanguage(name="C")
     db.session.add(prol_r)
     db.session.add(prol_py)
     db.session.add(prol_java)
     db.session.add(prol_objc)
+    db.session.add(prol_jupyternb)
+    db.session.add(prol_js)
+    db.session.add(prol_c)
 
     cat_tracking = SoftwareCategory(name="datenschutzkonformes Tracking", short_description="Sammlung von Sensordaten/Logdaten oder Nutzungsdaten mit expliziter Einverständnis mittels Software auf dem Gerät.")
     cat_scraping = SoftwareCategory(name="Scraping", short_description="Tools im Zusammenhang mit Web-Scraping.")
@@ -404,11 +413,16 @@ def build_sample_db():
 
     cat_senti = SoftwareCategory(name="Sentiment Analysis", short_description="")
     cat_topic = SoftwareCategory(name="Topic-Modellierung", short_description="")
-    cat_transkript = SoftwareCategory(name="Audio-Transkribtion", short_description="Transkriptionssoftware")
-    cat_transkript = SoftwareCategory(name="Audio-Transkribtion", short_description="Transkriptionssoftware")
-    cat_transkript = SoftwareCategory(name="Audio-Transkribtion", short_description="Transkriptionssoftware")
+    cat_visu = SoftwareCategory(name="Visualisierung", short_description="")
+    cat_kollab_anno = SoftwareCategory(name="Kollaboratives Annotieren", short_description="")
+    cat_kollab_write = SoftwareCategory(name="Kollaboratives Schreiben", short_description="")
+    cat_stat = SoftwareCategory(name="Statisik-Programme", short_description="Zur statistischen Modellierung einsetzbare Software.")
+    cat_repo = SoftwareCategory(name="Forschungsdatenspeicherung", short_description="")
+    cat_now = SoftwareCategory(name="Nowcasting", short_description="")
+    cat_net = SoftwareCategory(name="Netzwerkanalysen", short_description="social network analysis")
     cat_esmema = SoftwareCategory(name="ESM/EMA-Studien", short_description="Datenerhebung in 'natürlicher' Umgebung.")
     cat_transkript = SoftwareCategory(name="Audio-Transkribtion", short_description="Transkriptionssoftware")
+    cat_search = SoftwareCategory(name="Audio-Transkribtion", short_description="Transkriptionssoftware")
     cat_misc = SoftwareCategory(name="Weiteres", short_description="Zu speziell zum Einordnen..")
 
     db.session.add(cat_tracking)
@@ -719,6 +733,30 @@ def build_sample_db():
     db.session.add(Link(software=tool, type="website", url="http://nlesc.github.io/xtas/", comment=""))
     db.session.add(Link(software=tool, type="repository", url="https://github.com/NLeSC/xtas", comment=""))
 
+    tool = Software(name="MALLET",
+                    short_description="",
+                    developer="",
+                    maintainer="",
+                    softwarecategory=cat_topic,
+                    architecture="package",
+                    license=lic_apache2,
+                    programminglanguages=[prol_java])
+    db.session.add(tool)
+    db.session.add(Link(software=tool, type="website", url="http://mallet.cs.umass.edu/", comment=""))
+    db.session.add(Link(software=tool, type="repository", url="https://github.com/mimno/Mallet", comment=""))
+
+    tool = Software(name="TOME",
+                    short_description="TOME is a tool to support the interactive exploration and visualization of text-based archives, supported by a Digital Humanities Startup Grant from the National Endowment for the Humanities (Lauren Klein and Jacob Eisenstein, co-PIs). Drawing upon the technique of topic modeling—a machine learning method for identifying the set of topics, or themes, in a document set—our tool allows humanities scholars to trace the evolution and circulation of these themes across networks and over time.",
+                    developer="",
+                    maintainer="",
+                    softwarecategory=cat_topic,
+                    architecture="package",
+                    license=lic_unknown,
+                    programminglanguages=[prol_py, prol_jupyternb])
+    db.session.add(tool)
+    db.session.add(Link(software=tool, type="website", url="https://dhlab.lmc.gatech.edu/tome/", comment=""))
+    db.session.add(Link(software=tool, type="repository", url="https://github.com/GeorgiaTechDHLab/TOME/", comment=""))
+
     tool = Software(name="Stm",
                     short_description="The Structural Topic Model (STM) allows researchers to estimate topic models with document-level covariates. The package also includes tools for model selection, visualization, and estimation of topic-covariate regressions. Methods developed in Roberts et al (2014) <doi:10.1111/ajps.12103> and Roberts et al (2016) <doi:10.1080/01621459.2016.1141684>.",
                     developer="",
@@ -731,115 +769,223 @@ def build_sample_db():
     db.session.add(Link(software=tool, type="website", url="http://structuraltopicmodel.com", comment=""))
     db.session.add(Link(software=tool, type="repository", url="https://github.com/bstewart/stm", comment=""))
 
-    tool = Software(name="",
-                    short_description="",
+    tool = Software(name="lexicoder",
+                    short_description="Lexicoder performs simple deductive content analyses of any kind of text, in almost any language. All that is required is the text itself, and a dictionary. Our own work initially focused on the analysis of newspaper stories during election campaigns, and both television and newspaper stories about public policy issues. The software can deal with almost any text, however, and lots of it. Our own databases typically include up to 100,000 news stories. Lexicoder processes these data, even with a relatively complicated coding dictionary, in about fifteen minutes. The software has, we hope, a wide range of applications in the social sciences. It is not the only software that conducts content analysis, of course - there are many packages out there, some of which are much more sophisticated than this one. The advantage to Lexicoder, however, is that it can run on any computer with a recent version of Java (PC or Mac), it is very simple to use, it can deal with huge bodies of data, it can be called from R as well as from the Command Line, and its free.",
                     developer="",
                     maintainer="",
-                    softwarecategory=cat_,
+                    softwarecategory=cat_senti,
                     architecture="package",
-                    license=lic_,
-                    programminglanguages=[prol_])
+                    license=lic_prop,
+                    programminglanguages=[prol_java])
     db.session.add(tool)
-    db.session.add(Link(software=tool, type="website", url="", comment=""))
+    db.session.add(Link(software=tool, type="website", url="http://www.lexicoder.com/index.html", comment=""))
+
+    tool = Software(name="OpinionFinder",
+                    short_description="OpinionFinder is a system that processes documents and automatically identifies subjective sentences as well as various aspects of subjectivity within sentences, including agents who are sources of opinion, direct subjective expressions and speech events, and sentiment expressions. OpinionFinder was developed by researchers at the University of Pittsburgh, Cornell University, and the University of Utah. In addition to OpinionFinder, we are also releasing the automatic annotations produced by running OpinionFinder on a subset of the Penn Treebank.",
+                    developer="",
+                    maintainer="",
+                    softwarecategory=cat_senti,
+                    architecture="package",
+                    license=lic_unknown,
+                    programminglanguages=[prol_java])
+    db.session.add(tool)
+    db.session.add(Link(software=tool, type="website", url="https://mpqa.cs.pitt.edu/opinionfinder/", comment=""))
     db.session.add(Link(software=tool, type="repository", url="", comment=""))
 
-    tool = Software(name="",
-                    short_description="",
+    tool = Software(name="Readme",
+                    short_description="The ReadMe software package for R takes as input a set of text documents (such as speeches, blog posts, newspaper articles, judicial opinions, movie reviews, etc.), a categorization scheme chosen by the user (e.g., ordered positive to negative sentiment ratings, unordered policy topics, or any other mutually exclusive and exhaustive set of categories), and a small subset of text documents hand classified into the given categories. ",
+                    developer="",
+                    maintainer="",
+                    softwarecategory=cat_senti,
+                    architecture="package",
+                    license=lic_byncnd3,
+                    programminglanguages=[prol_r])
+    db.session.add(tool)
+    db.session.add(Link(software=tool, type="website", url="https://gking.harvard.edu/readme", comment=""))
+
+    tool = Software(name="Gephi",
+                    short_description="Gephi is an award-winning open-source platform for visualizing and manipulating large graphs.",
                     developer="",
                     maintainer="",
-                    softwarecategory=cat_,
+                    softwarecategory=cat_visu,
                     architecture="package",
-                    license=lic_,
-                    programminglanguages=[prol_])
+                    license=lic_gpl3,
+                    programminglanguages=[prol_java])
     db.session.add(tool)
     db.session.add(Link(software=tool, type="website", url="", comment=""))
-    db.session.add(Link(software=tool, type="repository", url="", comment=""))
+    db.session.add(Link(software=tool, type="repository", url="https://github.com/gephi/gephi/", comment=""))
+
+    tool = Software(name="WebAnno",
+                    short_description="WebAnno is a multi-user tool supporting different roles such as annotator, curator, and project manager. The progress and quality of annotation projects can be monitored and measuered in terms of inter-annotator agreement. Multiple annotation projects can be conducted in parallel.",
+                    developer="",
+                    maintainer="",
+                    softwarecategory=cat_kollab_anno,
+                    architecture="package",
+                    license=lic_apache2,
+                    programminglanguages=[prol_py])
+    db.session.add(tool)
+    db.session.add(Link(software=tool, type="website", url="https://webanno.github.io/webanno/", comment=""))
+    db.session.add(Link(software=tool, type="repository", url="https://github.com/webanno/webanno", comment=""))
 
-    tool = Software(name="",
+    tool = Software(name="FidusWriter",
                     short_description="",
                     developer="",
                     maintainer="",
-                    softwarecategory=cat_,
+                    softwarecategory=cat_kollab_write,
                     architecture="package",
-                    license=lic_,
-                    programminglanguages=[prol_])
+                    license=lic_agpl3,
+                    programminglanguages=[prol_py,prol_js])
     db.session.add(tool)
-    db.session.add(Link(software=tool, type="website", url="", comment=""))
-    db.session.add(Link(software=tool, type="repository", url="", comment=""))
+    db.session.add(Link(software=tool, type="website", url="https://fiduswriter.org", comment=""))
+    db.session.add(Link(software=tool, type="repository", url="https://github.com/fiduswriter/fiduswriter", comment=""))
 
-    tool = Software(name="",
+    tool = Software(name="dataverse",
                     short_description="",
                     developer="",
                     maintainer="",
-                    softwarecategory=cat_,
+                    softwarecategory=cat_repo,
+                    architecture="framework",
+                    license=lic_apache2,
+                    programminglanguages=[prol_java])
+    db.session.add(tool)
+    db.session.add(Link(software=tool, type="website", url="http://dataverse.org/", comment=""))
+    db.session.add(Link(software=tool, type="repository", url="https://github.com/IQSS/dataverse", comment=""))
+
+    tool = Software(name="gretl",
+                    short_description="Is a cross-platform software package for econometric analysis",
+                    developer="",
+                    maintainer="",
+                    softwarecategory=cat_stat,
                     architecture="package",
-                    license=lic_,
-                    programminglanguages=[prol_])
+                    license=lic_gpl3,
+                    programminglanguages=[prol_c])
     db.session.add(tool)
-    db.session.add(Link(software=tool, type="website", url="", comment=""))
-    db.session.add(Link(software=tool, type="repository", url="", comment=""))
+    db.session.add(Link(software=tool, type="website", url="http://gretl.sourceforge.net/", comment=""))
+    db.session.add(Link(software=tool, type="repository", url="https://sourceforge.net/p/gretl/git/ci/master/tree/", comment=""))
 
-    tool = Software(name="",
+    tool = Software(name="MLwiN",
                     short_description="",
                     developer="",
                     maintainer="",
-                    softwarecategory=cat_,
+                    softwarecategory=cat_stat,
                     architecture="package",
-                    license=lic_,
-                    programminglanguages=[prol_])
+                    license=lic_prop,
+                    programminglanguages=[])
     db.session.add(tool)
-    db.session.add(Link(software=tool, type="website", url="", comment=""))
+    db.session.add(Link(software=tool, type="website", url="http://www.bristol.ac.uk/cmm/software/mlwin/", comment=""))
     db.session.add(Link(software=tool, type="repository", url="", comment=""))
 
-    tool = Software(name="",
+    tool = Software(name="SPSS",
                     short_description="",
                     developer="",
                     maintainer="",
-                    softwarecategory=cat_,
+                    softwarecategory=cat_stat,
                     architecture="package",
-                    license=lic_,
-                    programminglanguages=[prol_])
+                    license=lic_prop,
+                    programminglanguages=[])
     db.session.add(tool)
-    db.session.add(Link(software=tool, type="website", url="", comment=""))
-    db.session.add(Link(software=tool, type="repository", url="", comment=""))
 
-    tool = Software(name="",
+    tool = Software(name="STATA",
                     short_description="",
                     developer="",
                     maintainer="",
-                    softwarecategory=cat_,
+                    softwarecategory=cat_stat,
                     architecture="package",
-                    license=lic_,
-                    programminglanguages=[prol_])
+                    license=lic_prop,
+                    programminglanguages=[])
     db.session.add(tool)
-    db.session.add(Link(software=tool, type="website", url="", comment=""))
-    db.session.add(Link(software=tool, type="repository", url="", comment=""))
 
-    tool = Software(name="",
+    tool = Software(name="Nowcasting",
+                    short_description="",
+                    developer="",
+                    maintainer="",
+                    softwarecategory=cat_now,
+                    architecture="package",
+                    license=lic_gpl3,
+                    programminglanguages=[prol_r])
+    db.session.add(tool)
+    db.session.add(Link(software=tool, type="website", url="https://cran.r-project.org/package=nowcasting", comment="cran"))
+    db.session.add(Link(software=tool, type="repository", url="https://github.com/nmecsys/nowcasting", comment=""))
+
+    tool = Software(name="AutoMap",
+                    short_description="AutoMap enables the extraction of information from texts using Network Text Analysis methods. AutoMap supports the extraction of several types of data from unstructured documents. The type of information that can be extracted includes: content analytic data (words and frequencies), semantic network data (the network of concepts), meta-network data (the cross classification of concepts into their ontological category such as people, places and things and the connections among these classified concepts), and sentiment data (attitudes, beliefs). Extraction of each type of data assumes the previously listed type of data has been extracted.",
+                    developer="",
+                    maintainer="",
+                    softwarecategory=cat_net,
+                    architecture="package",
+                    license=lic_prop,
+                    programminglanguages=[prol_java])
+    db.session.add(tool)
+    db.session.add(Link(software=tool, type="website", url="http://www.casos.cs.cmu.edu/projects/automap/software.php", comment=""))
+
+    tool = Software(name="NodeXL",
+                    short_description="",
+                    developer="",
+                    maintainer="",
+                    softwarecategory=cat_net,
+                    architecture="package",
+                    license=lic_prop,
+                    programminglanguages=[])
+    db.session.add(tool)
+    db.session.add(Link(software=tool, type="website", url="https://www.smrfoundation.org/nodexl/", comment=""))
+
+    tool = Software(name="ORA Pro",
                     short_description="",
                     developer="",
                     maintainer="",
-                    softwarecategory=cat_,
+                    softwarecategory=cat_net,
                     architecture="package",
-                    license=lic_,
-                    programminglanguages=[prol_])
+                    license=lic_prop,
+                    programminglanguages=[])
     db.session.add(tool)
     db.session.add(Link(software=tool, type="website", url="", comment=""))
     db.session.add(Link(software=tool, type="repository", url="", comment=""))
-    '''
-    tool = Software(name="",
+
+    tool = Software(name="Pajek",
                     short_description="",
                     developer="",
                     maintainer="",
-                    softwarecategory=cat_,
+                    softwarecategory=cat_net,
+                    architecture="package",
+                    license=lic_prop,
+                    programminglanguages=[])
+    db.session.add(tool)
+    db.session.add(Link(software=tool, type="website", url="http://mrvar.fdv.uni-lj.si/pajek/", comment=""))
+
+    tool = Software(name="NetworkX",
+                    short_description="Data structures for graphs, digraphs, and multigraphs Many standard graph algorithms Network structure and analysis measures Generators for classic graphs, random graphs, and synthetic networks Nodes can be 'anything' (e.g., text, images, XML records) Edges can hold arbitrary data (e.g., weights, time-series) Open source 3-clause BSD license Well tested with over 90% code coverage Additional benefits from Python include fast prototyping, easy to teach, and multi-platform",
+                    developer="",
+                    maintainer="",
+                    softwarecategory=cat_net,
                     architecture="package",
-                    license=lic_,
-                    programminglanguages=[prol_])
+                    license=lic_bsd,
+                    programminglanguages=[prol_py])
     db.session.add(tool)
     db.session.add(Link(software=tool, type="website", url="", comment=""))
     db.session.add(Link(software=tool, type="repository", url="", comment=""))
-    '''
 
+    tool = Software(name="UCINET",
+                    short_description="UCINET 6 for Windows is a software package for the analysis of social network data. It was developed by Lin Freeman, Martin Everett and Steve Borgatti. It comes with the NetDraw network visualization tool.",
+                    developer="",
+                    maintainer="",
+                    softwarecategory=cat_net,
+                    architecture="package",
+                    license=lic_prop,
+                    programminglanguages=[])
+    db.session.add(tool)
+    db.session.add(Link(software=tool, type="website", url="https://sites.google.com/site/ucinetsoftware/home", comment=""))
+
+    tool = Software(name="LuceneSolr",
+                    short_description="",
+                    developer="",
+                    maintainer="",
+                    softwarecategory=cat_search,
+                    architecture="package",
+                    license=lic_apache2,
+                    programminglanguages=[])
+    db.session.add(tool)
+    db.session.add(Link(software=tool, type="website", url="http://lucene.apache.org/solr/", comment=""))
+    db.session.add(Link(software=tool, type="repository", url="", comment=""))
 
     paco = Software(name="paco",
                      short_description="",
@@ -863,6 +1009,20 @@ def build_sample_db():
     db.session.add(f4analyse)
     db.session.add(Link(software=f4analyse, type="website", url="https://www.audiotranskription.de/f4-analyse", comment=""))
 
+    '''
+     tool = Software(name="",
+                     short_description="",
+                     developer="",
+                     maintainer="",
+                     softwarecategory=cat_,
+                     architecture="package",
+                     license=lic_,
+                     programminglanguages=[prol_])
+     db.session.add(tool)
+     db.session.add(Link(software=tool, type="website", url="", comment=""))
+     db.session.add(Link(software=tool, type="repository", url="", comment=""))
+     '''
+
     db.session.commit()
     return
 
diff --git a/sample_db.sqlite b/sample_db.sqlite
index 81c755dbc5d1178004e2e2b7319413fd5bbc7d35..3cc47e76cddaaa783b797d81b5c6d5c4e731913c 100644
GIT binary patch
delta 8952
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
L>KB083Ho{fkkDD+

delta 1015
zcmZo@U};#uJVBn3cca1+ei07-`3(GD_@DFN;6Km5kADmQYX13~1r^%)H_w+(Rp4Xg
zKgPiSlm9LMWByD0$2JQpY~knOVr5~FWN@x5$;i)}e97NPgoF1i1AjWd5#J%cM!q0E
zE8ai6XE!SfY~^Lr<(S+TqsPcTd2fu(W~;bUj696|zZn=97<l=A^J`5ONRSrRWqrxw
z&K$?=!NkV+hH*J#2SdZeMkj$LR%u=a(dI&4UIqpRMn;Co|Ihu<m6hUQ(B%aSaWXOl
zmn7z;<rk$WIOi9o`uPN~I!p2}2=Y2QGB7Z3GBQlAPBhn&kl<lZgy>*oWC%(u$V~Cg
z%u6j|Vr{Y)=VcIYNd}w7$jGqyO`;K_nur(=gCtyiKw@4>Vlg{wW11*0gJiQlOzq^L
z<eLJ`@*=zpqHU@$!Oc!7lNkA&gn1Z5b75kWU#6M~G-e3#GH5m{!v)RKZf};@{+NT6
zfq{WXdXoZ+f{FnDWKcMN;(yKmg#Rx8HU9JbC;1QY@8;jazm|U)|9t+L{F65eDrEE5
zvj{LVa>}sqGc$4uu<|i8GKw*=@-j0rN;9$YFf%fWGO=<qGcrmsvvM&rGKw&<axybA
z3Ny2CFf(#Wva&NXG72%XvN1C<N-(psGBYwVGqbXQC?-~BW=2L?W>zK;#lp(S%*ZIt
z3JQEPmX{3tm-&16efW9!j!hO?5XrfLwT?B6Rh8xC#>P?>CM&ba)Bjnr%jui4F(`UY
zc3dXUm!6-Wo|CFykeHk=t7bBp<-h9W#-(bLZ!F<qmeDnuT(CxT@}DK*o9{hU<KmHK
zXkg%f%s-z$d8DU^Hym8de3lG+-Fz{8mYWp?wE0vO<#-t6Vd+sZ%_K1|F{iRPm6fBo
t1e7*&^7B%4WhZaAsVv2wR+N~VTAp8&-BcvQ%OKq93rlaCBTuI?0sw(--qrvB

-- 
GitLab