Reporting for UB

pull/1/head
Oliver Kennedy 2018-06-04 15:56:55 -04:00
parent 8460bb0b07
commit e92845d04e
7 changed files with 150 additions and 31 deletions

View File

@ -7,6 +7,7 @@ require "util.rb"
require "cv.rb"
require "nsfcp.rb"
require "nsfconflicts.rb"
require "ubreporting.rb"
require "bootstrap_markdown.rb"
require "disqus.rb"
@ -264,6 +265,10 @@ file "artifacts/grant_report.txt" do
end
task :report => "artifacts/grant_report.txt"
task :ub_report do
UBSOE::generate_yearly_report(2017)
end
file "artifacts/nsf_merit_blurb.txt" => [ $db.files, "artifacts", "Rakefile" ].flatten do
# File.open("artifacts/nsf_related_blurb.txt", "w+") do |fh|
citable_pubs =

View File

@ -43,10 +43,10 @@
"venue":"ICDE",
"year":2019,
"projects" : [ "mimir" ],
"status" : "planned"
"status" : "submitted"
},
{
"title" : "Just-In-Time Adaptive Indexes",
"title" : "Just-In-Time Index Transitions",
"authors": [
"Darshana Balakrishnan",
"Saurav Singhi",
@ -56,7 +56,7 @@
"venue":"ICDE",
"year":2019,
"projects" : [ "astral" ],
"status" : "planned"
"status" : "submitted"
},
{
"title" : "Understanding Mobile Data Management Systems",

View File

@ -4,6 +4,12 @@
"type" : "workshop",
"selectivity" : {
"2018" : 0.196428571
},
"years" : {
"2018" : {
"location" : "Boston, MA, USA",
"date" : "January 19, 2018"
}
}
},
"ICDT" : {
@ -27,6 +33,12 @@
"type" : "conference",
"selectivity" : {
"2017" : 0.218 // Source: acceptance email
},
"years" : {
"2017" : {
"location" : "Venice, Italy",
"date" : "March 21, 2017 through March 24, 2017"
}
}
},
"UB-MS" : {
@ -63,6 +75,12 @@
"startyear" : 2016,
"selectivity" : {
"2016" : 0.5
},
"years" : {
"2018" : {
"location" : "Houston, TX, USA",
"date" : "July 10, 2018"
}
}
},
"PWEEK" : {
@ -157,11 +175,23 @@
"2007" : 0.276, // source: http://www.cs.duke.edu/~shivnath/publications.html
"2005" : 0.129 // source: http://www.cs.duke.edu/~shivnath/publications.html
},
"years" : {
"2017" : {
"location" : "San Diego, CA, USA",
"date" : "April 19, 2017 through April 22, 2017"
}
},
"tracks" : {
"panel" : {
"fullname" : "ICDE Panels",
"type" : "panel",
"acronym" : "Panel"
"acronym" : "Panel",
"years" : {
"2017" : {
"location" : "San Diego, CA, USA",
"date" : "April 19, 2017 through April 22, 2017"
}
}
}
}
},

View File

@ -1,6 +1,12 @@
{
"fullname" : "The ACM SIGMOD/PODS Conference",
"type" : "conference",
"years" : {
"2017" : {
"location" : "Chicago, IL, USA",
"date" : "May 14, 2017 through May 19, 2017"
}
},
"selectivity" : {
"2017" : 0.196, // Source: Email to PC from Dan Suciu; March 9, 2017
// Canonical Source: http://dl.acm.org/citation.cfm?id=2882903&CFID=875232679&CFTOKEN=83069453

View File

@ -556,23 +556,7 @@ class CV < Latex::Builder
end
def get_avg_selectivity(record, rounding = 2)
year = record["year"].to_s
v = LabMetadata.complete_venue(record)
sel_data = v["selectivity"]
if sel_data.nil?
"unavailable"
elsif sel_data["average"].is_a? Numeric
"approximately #{(sel_data["average"]*100).round(rounding)}%"
elsif not sel_data["average"].nil?
sel_data["average"]
else
"approximately #{
(sel_data.keys.
delete_if { |k| /a-zA-Z/ =~ k }.
map { |k| sel_data[k].to_f }.
avg * 100).round(rounding)
}%"
end
LabMetadata.venue_selectivity(record, rounding: rounding)
end
def render_paper_title(title)

View File

@ -192,19 +192,25 @@ module LabMetadata
def LabMetadata.complete_venue(record)
v = record["venue"];
t = record["track"];
y = record["year"]
v = $db["venues"][v];
## if there is no additional metadata for the venue, we're done.
return record if v.nil?;
## if there's no request for a subtrack, merge with what we have.
return v.clone.merge record if t.nil?;
v = v["tracks"]
## if there's no additional metadata for any tracks, we're done
return record if v.nil?;
v = v[t]
## if there's no additional metadata for this specific track, we're done
return record if v.nil?;
## otherwise... merge with what we have
return v.clone.merge record
## if there's no request for a subtrack or year, merge with what we have.
result =
if t.nil? then v.clone.merge record
else
tracks = v["tracks"]
if tracks.nil? then record
else tracks[t].clone.merge record
end
end
if result.has_key? "years" and not y.nil? and result["years"].has_key? y.to_s
result = result.merge result["years"][y.to_s]
end
return result
end
def LabMetadata.venue_name(record, args = {})
@ -219,6 +225,27 @@ module LabMetadata
end
end
def LabMetadata.venue_selectivity(record, params = {})
rounding = params.fetch(:rounding, 2)
year = record["year"].to_s
v = LabMetadata.complete_venue(record)
sel_data = v["selectivity"]
if sel_data.nil?
"unavailable"
elsif sel_data["average"].is_a? Numeric
"approximately #{(sel_data["average"]*100).round(rounding)}%"
elsif not sel_data["average"].nil?
sel_data["average"]
else
"approximately #{
(sel_data.keys.
delete_if { |k| /a-zA-Z/ =~ k }.
map { |k| sel_data[k].to_f }.
avg * 100).round(rounding)
}%"
end
end
def LabMetadata.abbreviate_person(name)
n = name.split(/ +/)
last = n.pop

67
lib/ubreporting.rb Normal file
View File

@ -0,0 +1,67 @@
module UBSOE
def UBSOE::generate_yearly_report(since_year)
puts "-------------------------------------------------------"
puts "| Publications |"
puts "-------------------------------------------------------"
puts ""
#
# Include journal/conference/publication titles, authors,
# event dates and locations, acceptance rate and number
# of pages as appropriate
#
pubs = $db["publications"]
pubs += $db["cv/okennedy/publications_submitted"]
.select { |pub| pub["status"] == "submitted"}
.map { |pub| pub.merge({ "type" => "submitted" }) }
puts(pubs
.select { |pub| pub["year"].to_i >= since_year.to_i }
.map { |pub|
pub_string = [
"\"#{pub["title"]}\"",
pub["authors"].join(", "),
LabMetadata.venue_name(pub),
]
v = LabMetadata.complete_venue(pub)
pub_string.push("#{pub["length"]} pages") if pub.has_key? "length"
pub_string.push("Acceptance rate #{LabMetadata.venue_selectivity(pub)}") unless v["type"] == "techreport"
pub_string.push(v["location"]) if v.has_key? "location"
pub_string.push(v["date"]) if v.has_key? "date"
pub_string.join("\n")
}.join("\n\n------\n\n")
)
puts ""
puts ""
puts "-------------------------------------------------------"
puts "| Presentations |"
puts "-------------------------------------------------------"
puts ""
puts(
$db["cv/okennedy/talks"]
.select { |talk| if /([0-9]{4})/ =~ talk["date"] then $1.to_i >= since_year end }
.map { |talk| "#{talk["talk"]}\n#{talk["date"]}\n#{talk["venue"]}" }
.join("\n\n------\n\n")
)
puts ""
puts ""
puts "-------------------------------------------------------"
puts "| Advising |"
puts "-------------------------------------------------------"
puts ""
puts
puts(
$db["lab/members"]
.map { |k, person|
"#{person["name"]}\n#{person["ubit"]}\n#{person["status"]}"
}
.join("\n\n------\n\n")
)
end
end