Skip to content

Commit

Permalink
debug - debug - debug
Browse files Browse the repository at this point in the history
  • Loading branch information
HendrikStrobelt committed Apr 24, 2018
1 parent fe5d069 commit d5cdb82
Show file tree
Hide file tree
Showing 9 changed files with 156 additions and 37 deletions.
2 changes: 1 addition & 1 deletion client/index.html
Expand Up @@ -111,7 +111,7 @@
</div>

<div class="column">
<div style="height: 550px; overflow-y: auto;">
<div style="height: 500px; overflow-y: auto;">

<div class="col5"></div>
</div>
Expand Down
23 changes: 20 additions & 3 deletions client/ts/api/S2SApi.ts
Expand Up @@ -15,15 +15,32 @@ export type TrainDataIndexResponse = {
export class S2SApi {


static project_info(project_id) {
const request = Networking.ajax_request('/api/project_info');


let payload = new Map();
if (project_id) {
payload = new Map(
[
['project_id', project_id]
]);
}

return request.get(payload)


}

static translate({
input, partial = <string[]>[],force_attn = <{[key:number]:number}>{},
input, partial = <string[]>[], force_attn = <{ [key: number]: number }>{},
neighbors: neighbors = ['decoder', 'encoder'] //, 'context'
}) {
const request = Networking.ajax_request('/api/translate');

let force_attn_array = null;
for (const key in force_attn){
if (!force_attn_array) force_attn_array=[];
for (const key in force_attn) {
if (!force_attn_array) force_attn_array = [];
force_attn_array.push(key);
force_attn_array.push(force_attn[key]);
}
Expand Down
86 changes: 68 additions & 18 deletions client/ts/controller/PanelController.ts
Expand Up @@ -67,6 +67,8 @@ export class PanelController {
selectProjection(key) {
// TODO: remove duck typing for encoder and src/tgt

this.pm.setVisibilityNeighborPanels(true);

this._current.projectedNeighbor = key;
let labels = this._current.translations.map(
translation => {
Expand Down Expand Up @@ -134,6 +136,11 @@ export class PanelController {

}

clearCompare() {
this._current.translations[1] = null;
this._current.comparison = ComparisonMode.none;
}

update(translation: Translation, main = this.pm.vis.left, extra = this.pm.vis.zero, isCompare = false) {

const cur = this._current;
Expand Down Expand Up @@ -320,9 +327,11 @@ export class PanelController {
this.pm.removeMediumPanel();
}

updateAndShowWordProjector(data) {
updateAndShowWordProjector(data, loc) {
this.pm.setVisibilityNeighborPanels(false);
const wp = this.pm.getWordProjector();
console.log(data, "--- WP_data");
wp.options.loc = loc;
wp.update(data);
}

Expand All @@ -332,6 +341,13 @@ export class PanelController {
}


updateProjectInfo(info) {

if (!info.has_neighbors) {
this.pm.panels.loadProjectButton.style('display', 'none');
}
}

_bindEvents() {


Expand Down Expand Up @@ -437,8 +453,27 @@ export class PanelController {
// })
//
// } else {
// this.updateAndShowWordList(word_data);
this.updateAndShowWordProjector(word_data);
// this.updateAndShowWordList(word_data);

if (loc === 'src') {
word_data.compare = word_data.word.map(wd => {

return {
orig: allWords.map((aw, wi) =>
(wi === replaceIndex) ? wd : aw).join(' ')
};
})
// word_data.compare = {orig: }
} else {
word_data.compare = word_data.word.map(wd => {

return {
orig: allWords.map((aw, wi) =>
(wi === replaceIndex) ? wd : (wi < replaceIndex) ? aw : '').join(' ').trim()
};
})
}
this.updateAndShowWordProjector(word_data, loc);
// }


Expand Down Expand Up @@ -502,11 +537,11 @@ export class PanelController {
this.pm.vis.left.decoder_words.actionHighlightWord(0, aChg.selected, true, true, 'selected');
this.pm.vis.left.attention
.actionHighlightEdges(aChg.selected, AttentionVis.VERTEX_TYPE.tgt, true, 'highlight');
console.log("-hen-- AAAAJ");


} else {
alert('Please select a decoder word first. ' +
'Then you can increase weights respective weights by clicking on encoder');
'Then you can increase respective weights by clicking on encoder');
}
}

Expand All @@ -520,8 +555,6 @@ export class PanelController {
else if (d.caller === vis.left.beam) {




const partialDec = this._current.translations[0]
.decoderWords[0].slice(0, d.col).join(' ') + ' ' + d.word.word.text;

Expand Down Expand Up @@ -553,7 +586,7 @@ export class PanelController {

const minIndex = _.min(Object.keys(this._current.attnChange.changes).map(d => +d));
const partialDec = this._current.translations[0]
.decoderWords[0].slice(0, minIndex).join(' ')
.decoderWords[0].slice(0, minIndex).join(' ')


S2SApi.translate(
Expand All @@ -579,17 +612,34 @@ export class PanelController {
d.caller.highlightWord(d.word, true,
true, 'selected');

const loc = d.caller.options.loc;

S2SApi.translate_compare({
input: this._current.sentence,
compare: d.sentence,
neighbors: []
}).then(data => {
// TODO: ENC / DEC difference !!!
this._current.comparison = ComparisonMode.enc_diff;
data = <ComparisonFeedBack>JSON.parse(data);
updateComparisonView(data)
})

if (loc === 'src') {
S2SApi.translate_compare({
input: this._current.sentence,
compare: d.sentence,
neighbors: []
}).then(data => {
// TODO: ENC / DEC difference !!!
this._current.comparison = ComparisonMode.enc_diff;
data = <ComparisonFeedBack>JSON.parse(data);
updateComparisonView(data)
})

} else {
S2SApi.translate({
input: this._current.sentence,
// compare: d.sentence,
partial: [d.sentence],
neighbors: []
}).then(data => {
// TODO: ENC / DEC difference !!!
this._current.comparison = ComparisonMode.none;
data = new Translation(JSON.parse(data));
this.update(data)
})
}


});
Expand Down
8 changes: 7 additions & 1 deletion client/ts/controller/PanelManager.ts
Expand Up @@ -76,7 +76,9 @@ export class PanelManager {
wordBtn: d3.select('#word_vector_fix_btn'),
attnBtn: d3.select('#attn_fix_btn'),
attnApplyBtn: d3.select('#apply_attn')
}
},
statePictoPanel: d3.select('#statePictos')

};

private _vis = {
Expand Down Expand Up @@ -530,4 +532,8 @@ export class PanelManager {
}


setVisibilityNeighborPanels(visibility: boolean) {
this.panels.projectorPanel.style('display', visibility?null:'none');
this.panels.statePictoPanel.style('display', visibility?null:'none');
}
}
15 changes: 14 additions & 1 deletion client/ts/main.ts
Expand Up @@ -16,11 +16,12 @@ window.onload = () => {
S2SApi.translate({input: value, neighbors: []})
.then((data: string) => {
const raw_data = JSON.parse(data);
console.log(raw_data, "--- raw_data");
panelCtrl.clearCompare();
panelCtrl.update(new Translation(raw_data));
panelCtrl.cleanPanels();



$('#spinner').hide();
})
.catch((error: Error) => console.log(error, "--- error"));
Expand Down Expand Up @@ -74,4 +75,16 @@ window.onload = () => {
windowResize();


S2SApi.project_info(null).then((data) =>{

data = JSON.parse(data);

panelCtrl.updateProjectInfo(data);


})




};
21 changes: 11 additions & 10 deletions client/ts/vis/WordProjector.ts
Expand Up @@ -45,7 +45,8 @@ export class WordProjector extends VComponent<any> {
words: d => d.word,
compare: d => d.compare
},
text_measurer: null
text_measurer: null,
loc: null
};


Expand Down Expand Up @@ -144,15 +145,15 @@ export class WordProjector extends VComponent<any> {
.text(d => d.word)
.style('font-size', d => wordScale(d.score) + 'pt');

if (this._current.has_compare) {
const bd_max = _.max(<number[]>renderData.map(d => d.compare.dist));
const bd_scale = d3.scaleLinear<string, string>().domain([0, bd_max])
.range(['#ffffff', '#63676e']); //TODO: hard-coded range ??
allWords.select('rect').style('fill', d => {
return bd_scale(d.compare.dist)
})

}
// if (this._current.has_compare) {
// const bd_max = _.max(<number[]>renderData.map(d => d.compare.dist));
// const bd_scale = d3.scaleLinear<string, string>().domain([0, bd_max])
// .range(['#ffffff', '#63676e']); //TODO: hard-coded range ??
// allWords.select('rect').style('fill', d => {
// return bd_scale(d.compare.dist)
// })
//
// }


if (this._current.clearHighlights) {
Expand Down
9 changes: 9 additions & 0 deletions s2s/project.py
Expand Up @@ -29,6 +29,8 @@ def __init__(self, config_file, directory):

self.indexType = self.config.get('indexType', 'annoy')
self.indices = {}
print(self.config,('indices' in self.config) )
self.has_neighbors = ('indices' in self.config)

self.currentIndexName = None
self.currentIndex = None
Expand All @@ -51,6 +53,13 @@ def __init__(self, config_file, directory):
self.dicts['t2i'][h][token] = iid
raw = f.readline()


def info(self):
return {
'model': self.config['model'],
'has_neighbors': self.has_neighbors
}

def cached_norm(self, loc, matrix):
if self.cached_norms[loc] is None:
self.cached_norms[loc] = np.linalg.norm(matrix, axis=1)
Expand Down
11 changes: 10 additions & 1 deletion server.py
Expand Up @@ -34,7 +34,8 @@
parser.add_argument("--nodebug", default=True)
parser.add_argument("--port", default="8080")
parser.add_argument("--nocache", default=False)
parser.add_argument("--dir", type=str, default=os.path.abspath('model_api/data'))
parser.add_argument("--dir", type=str,
default=os.path.abspath('model_api/data'))
# parser.add_argument('-api', type=str, default='pytorch',
# choices=['pytorch', 'lua'],
# help="""The API to use.""")
Expand Down Expand Up @@ -526,6 +527,14 @@ def get_neighbor_details(**request):
return index.get_details(indices)


def get_info(**request):
if 'project_id' not in request:
current_project = list(projects.values())[0] # type: S2SProject
return current_project.info()

return request


def get_close_vectors(**request):
current_project = list(projects.values())[0] # type: S2SProject
# os.path.join(current_project.directory, request["vector_name"] + ".ann")
Expand Down
18 changes: 16 additions & 2 deletions swagger.yaml
Expand Up @@ -43,7 +43,16 @@ paths:
responses:
200:
description: fun

/project_info:
get:
tags: [All]
operationId: server.get_info
summary: get general project informations
parameters:
- $ref: '#/parameters/project_id'
responses:
200:
description: fun
# /compare_translation:
# get:
# tags: [Translate, All]
Expand Down Expand Up @@ -207,7 +216,12 @@ parameters:
items:
type: integer
required: false

project_id:
name: project_id
description: Project ID
in: query
type: string
required: false


# These definitions are only needed for proper documentation
Expand Down

0 comments on commit d5cdb82

Please sign in to comment.