Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • abrenon/outillage
1 result
Show changes
Commits on Source (3)
from GEODE.Classification import discursiveFunctions from GEODE.Classification import discursiveFunctions
from GEODE.Metadata import article, paragraph, fromKey, relativePath, toKey, uid from GEODE.Metadata import article, paragraph, fromKey, relativePath, toKey, uid
from GEODE.store import corpus, Directory, SelfContained, toTSV from GEODE.store import corpus, Directory, fromTSV, SelfContained, toTSV
from GEODE.Visualisation import heatmap from GEODE.Visualisation import heatmap
...@@ -21,4 +21,4 @@ def resample(newSize, distribution): ...@@ -21,4 +21,4 @@ def resample(newSize, distribution):
for i in range(newSize): for i in range(newSize):
yield oldSize/lcm*sum([distribution[j]*intersection(i, j) yield oldSize/lcm*sum([distribution[j]*intersection(i, j)
for j in range(math.floor(i*ratio), for j in range(math.floor(i*ratio),
math.ceil((i+1)*ratio))]) round((i+1)*ratio))])
from GEODE.Metadata import fromKey, relativePath from GEODE.Metadata import fromKey, relativePath
from GEODE.store.TSV import toTSV from GEODE.store.TSV import fromTSV, toTSV
import pandas import pandas
from os import makedirs from os import makedirs
from os.path import dirname, isdir from os.path import dirname, isdir
...@@ -37,7 +37,7 @@ class TSVIndexed(Corpus): ...@@ -37,7 +37,7 @@ class TSVIndexed(Corpus):
def load(self): def load(self):
if self.data is None: if self.data is None:
self.data = pandas.read_csv(self.tsv_path, sep='\t') self.data = fromTSV(self.tsv_path)
self.detect_keys() self.detect_keys()
self.data = self.data.set_index(self.keys, drop=False) self.data = self.data.set_index(self.keys, drop=False)
......
...@@ -22,3 +22,6 @@ def toTSV(filePath, data, sortBy='toStrKey'): ...@@ -22,3 +22,6 @@ def toTSV(filePath, data, sortBy='toStrKey'):
else: else:
sortedData = data.sort_index(key=forPanda(data, sortBy)) sortedData = data.sort_index(key=forPanda(data, sortBy))
sortedData.to_csv(filePath, sep='\t', index=False) sortedData.to_csv(filePath, sep='\t', index=False)
def fromTSV(filePath):
return pandas.read_csv(filePath, sep='\t')
from GEODE.store.Corpus import corpus, Directory, SelfContained from GEODE.store.Corpus import corpus, Directory, SelfContained
from GEODE.store.TSV import toTSV from GEODE.store.TSV import fromTSV, toTSV
import os import os
import os.path import os.path
......
#!/usr/bin/env -S PYTHONPATH=lib/python python3
from GEODE import fromTSV, toKey, toTSV
from GEODE.store import prepare
from GEODE.signal import gate, resample
import matplotlib.pyplot as plot
import seaborn
from sys import argv
def plotSingle(measure):
return gate(measure['position'], measure['totalSize'], offset=1)
histData = [0.3741792369121561, 0.7607808340727595, 0.8889086069210292,
0.7491570541259982, 1.2057675244010648, 1.0869565217391306,
1.096095829636202, 0.7124223602484473, 0.7251109139307897,
0.9335403726708075, 1.2277728482697428, 0.9582963620230699,
0.8540372670807452, 1.0281277728482696, 1.4221827861579415,
0.9218278615794143, 0.46814551907719604, 0.7717834960070986,
1.083762200532387, 0.65226264418811, 0.5771073646850046,
0.8025732031943212, 0.5266193433895296, 0.8911268855368234,
0.6836734693877551, 0.9039041703637977, 0.8720496894409939,
0.7113575865128662, 0.8984028393966283, 0.8993788819875776,
1.0016858917480034, 0.5857142857142857, 0.7364685004436559,
0.8047914818101152, 0.7055900621118011, 0.9018633540372669,
0.944010647737356, 0.9955634427684119, 1.0425909494232473,
0.9046140195208519, 0.8504880212954751, 1.1251109139307898,
0.44631765749778174, 0.49893522626441883, 0.6860692102928126,
0.7024844720496894, 0.4693877551020407, 1.5570541259982251,
0.8903283052351374, 0.6923691215616682, 0.8062999112688553,
1.0178349600709848, 0.5559006211180125, 0.7621118012422359,
0.848447204968944, 0.5782608695652174, 0.8464063886424137,
0.5537710736468501, 0.7160603371783496, 0.7982253771073646,
0.8371783496007098, 0.9143744454303461, 1.0799467613132205,
0.9581188997338067, 0.8597160603371785, 0.864685004436557,
1.2598935226264418, 1.3385093167701863, 0.45891748003549254,
0.9355811889973382, 0.6289263531499556, 0.7637089618456078,
0.7324755989352264, 0.754924578527063, 0.568589174800355,
0.49778172138420584, 0.7707187222715175, 1.0097604259094939,
0.8621118012422362, 0.8971606033717835, 1.1584738243123336,
1.1568766637089618, 0.7698314108251997, 0.9032830523513753,
0.5743566992014197, 0.8896184560780832, 0.7858917480035492,
0.9899733806566103, 1.617657497781721, 1.066725820763088,
0.6067435669920143, 1.1874001774622889, 1.0669920141969833,
1.1996450754214731, 1.4835847382431233, 1.6580301685891752,
2.2103815439219168, 2.4215616681455185, 2.7979591836734694,
5.278970718722271]
def plotProfile(profile, outputPath):
plot.figure(figsize=(16,13))
ax = seaborn.lineplot(profile)
ax.set_xlabel("Position")
ax.set_xlim(0, 100)
ax.set_ylim(0)
ax.xaxis.set_major_formatter('{x}%')
ax.set_ylabel("Density")
ax.yaxis.set_major_formatter('{x}%')
curve = ax.lines[0]
x, y = curve.get_xydata()[:,0], curve.get_xydata()[:,1]
ax.fill_between(x, y, alpha=0.3)
plot.savefig(prepare(outputPath), dpi=300, bbox_inches='tight')
def computeProfile(measures, resolution=100):
profile = [0]*resolution
for resampled in map(resample(resolution), map(plotSingle, measures)):
profile = list(map(sum, zip(profile, resampled)))
return [100*x/len(measures) for x in profile]
def drawProfile(measures, outputPath):
profile = computeProfile(measures)
toTSV(prepare(f"{outputPath}/profile.tsv"), profile, sortBy=None)
plotProfile(profile, f"{outputPath}/profile.png")
if __name__ == '__main__':
drawProfile([measure for _, measure in fromTSV(argv[1]).iterrows()], argv[2])
#plotProfile(histData, argv[2])