- Some improvements to the structure of PerSetTracking.py

- Stats about Standard Format printed, similar to Distinct
This commit is contained in:
Sol
2013-01-20 17:05:21 +00:00
parent 61bdf760cc
commit 3e946b48e8

View File

@@ -5,6 +5,58 @@ pathToMtgData = "mtg-data.txt"
############IMPLEMENTATION FOLLOWS############
import os,sys,fnmatch,re
def getSetByFormat(requestedFormat):
# Parse out Standard sets from the Format file
formatLocation = os.path.join(sys.path[0], 'blockdata', 'formats.txt')
with open(formatLocation) as formatFile:
formats = formatFile.readlines()
for format in formats:
if requestedFormat not in format:
continue
parsed = format.split('|')
for p in parsed:
if not p.startswith('Sets:'):
continue
sets = p.strip().split(':')[1]
return sets.split(', ')
return []
def printCardSet(implementedSet, missingSet, fileName, setCoverage=None, printImplemented=False, printMissing=True):
# Add another file that will print out whichever set is requested
# Convert back to lists so they can be sorted
impCount = len(implementedSet)
misCount = len(missingSet)
totalCount = impCount + misCount
filePath = os.path.join(sys.path[0], "PerSetTrackingResults", fileName)
with open(filePath, "w") as outfile:
if setCoverage:
outfile.write(' '.join(setCoverage))
outfile.write('\n')
outfile.write("Implemented (Missing) / Total = Percentage Implemented\n")
outfile.write("%d (%d) / %d = %.2f %%\n" % (impCount, misCount, totalCount, float(impCount)/totalCount*100))
# If you really need to, we can print implemented cards
if printImplemented:
implemented = list(implementedSet)
implemented.sort()
outfile.write("\nImplemented (%d):" % impCount)
for s in implemented:
outfile.write("\n%s" % s)
outfile.write("\n")
# By default Missing will print, but you can disable it
if printMissing:
missing = list(missingSet)
missing.sort()
outfile.write("\nMissing (%d):" % misCount)
for s in missing:
outfile.write("\n%s" % s)
if __name__ == '__main__':
if not os.path.exists(pathToMtgData) :
print("This script requires the text version of Arch's mtg-data to be present.You can download it from slightlymagic.net's forum and either place the text version next to this script or edit this script and provide the path to the file at the top.")
print("Press Enter to exit")
@@ -74,16 +126,20 @@ currentMissing = []
currentImplemented = []
allMissing = set()
allImplemented = set()
standardMissing = set()
standardImplemented = set()
total = 0
percentage = 0
standardSets = getSetByFormat('Standard')
ignoredSet = [ 'ASTRAL', 'ATH', 'BD', 'BR', 'DD2', 'DDC', 'DDD', 'DDE', 'DDF',
'DDG', 'DDH', 'DDI', 'DDJ', 'DKM', 'DRB', 'EVG', 'H09', 'ME2',
'ME3', 'ME4', 'MED', 'PD2', 'PD3', 'SDC', 'UGL', 'UNH',
'V09', 'V10', 'V11', 'V12',]
for currentSet in setCodes :
# Ignore the following sets for tab calculation
# Ignore any sets that we don't tabulate
if currentSet in ignoredSet: continue
for key in mtgDataCards.keys() :
setList = mtgDataCards[key]
@@ -113,6 +169,10 @@ for currentSet in setCodes :
totalData[currentSet] = (len(currentImplemented),len(currentMissing),total,percentage)
allMissing |= set(currentMissing)
allImplemented |= set(currentImplemented)
if currentSet in standardSets:
standardMissing |= set(currentMissing)
standardImplemented |= set(currentImplemented)
del currentMissing[:]
del currentImplemented[:]
@@ -134,26 +194,7 @@ with open(sys.path[0] + os.sep + "PerSetTrackingResults" + os.sep + "CompleteSta
statsfile.write("\n")
statsfile.write("Total over all sets: " + str(totalImplemented) + " (" + str(totalMissing) + ") / " + str(fullTotal))
# Add another file that will print out distinct cards implemented/missing
# Convert back to lists so they can be sorted
impCount = len(allImplemented)
misCount = len(allMissing)
#implemented = list(allImplemented)
#implemented.sort()
missing = list(allMissing)
missing.sort()
totalCount = impCount+misCount
with open(sys.path[0] + os.sep + "PerSetTrackingResults" + os.sep + "DistinctStats.txt", "w") as distinctfile:
distinctfile.write("Distinct: Implemented (Missing) / Total = Percentage Implemented\n")
distinctfile.write("%d (%d) / %d = %.2f %%\n" % (impCount, misCount, totalCount, float(impCount)/totalCount*100))
# Currently only print missing cards, implemented cards are less important
#distinctfile.write("\nImplemented (%d):" % impCount)
#for s in implemented:
# distinctfile.write("\n%s" % s)
distinctfile.write("\nMissing (%d):" % misCount)
for s in missing:
distinctfile.write("\n%s" % s)
printCardSet(allImplemented, allMissing, "DistinctStats.txt")
printCardSet(standardImplemented, standardMissing, "FormatStandard.txt", setCoverage=standardSets)
print "Done!"