Skip to content

Commit c648028

Browse files
author
Val Brodsky
committed
Add support for deserialization of confidence for classification types
1 parent 6b9e8b7 commit c648028

File tree

5 files changed

+105
-1
lines changed

5 files changed

+105
-1
lines changed

labelbox/data/serialization/ndjson/classification.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -226,7 +226,8 @@ def to_common(
226226
value=annotation.to_common(),
227227
name=annotation.name,
228228
feature_schema_id=annotation.schema_id,
229-
extra={'uuid': annotation.uuid})
229+
extra={'uuid': annotation.uuid},
230+
confidence=annotation.confidence)
230231
if getattr(annotation, 'frames', None) is None:
231232
return [common]
232233
results = []
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
from labelbox.data.annotation_types.classification.classification import Text
2+
3+
4+
def test_text():
5+
text_entity = Text(answer="good job")
6+
assert text_entity.answer == "good job"
7+
8+
9+
def test_text_confidence():
10+
text_entity = Text(answer="good job", confidence=0.5)
11+
assert text_entity.answer == "good job"
12+
assert text_entity.confidence == 0.5
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
import json
2+
from labelbox.data.annotation_types.annotation import ClassificationAnnotation
3+
from labelbox.data.annotation_types.classification.classification import Checklist, ClassificationAnswer, Radio
4+
from labelbox.data.annotation_types.data.text import TextData
5+
from labelbox.data.annotation_types.label import Label
6+
7+
from labelbox.data.serialization.ndjson.converter import NDJsonConverter
8+
9+
10+
def test_serialization():
11+
label = Label(uid="ckj7z2q0b0000jx6x0q2q7q0d",
12+
data=TextData(
13+
uid="bkj7z2q0b0000jx6x0q2q7q0d",
14+
text="This is a test",
15+
),
16+
annotations=[
17+
ClassificationAnnotation(
18+
name="checkbox_question_geo",
19+
confidence=0.5,
20+
value=Checklist(answer=[
21+
ClassificationAnswer(name="first_answer"),
22+
ClassificationAnswer(name="second_answer")
23+
]))
24+
])
25+
26+
serialized = NDJsonConverter.serialize([label])
27+
28+
res = next(serialized)
29+
assert res['confidence'] == 0.5
30+
assert res['name'] == "checkbox_question_geo"
31+
assert res['answer'][0]['name'] == "first_answer"
32+
assert res['answer'][1]['name'] == "second_answer"
33+
assert res['dataRow']['id'] == "bkj7z2q0b0000jx6x0q2q7q0d"
34+
35+
deserialized = NDJsonConverter.deserialize([res])
36+
res = next(deserialized)
37+
annotation = res.annotations[0]
38+
assert annotation.confidence == 0.5
39+
40+
annotation_value = annotation.value
41+
assert type(annotation_value) is Checklist
42+
assert annotation_value.answer[0].name == "first_answer"
43+
assert annotation_value.answer[1].name == "second_answer"
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
import json
2+
from labelbox.data.annotation_types.annotation import ClassificationAnnotation
3+
from labelbox.data.annotation_types.classification.classification import ClassificationAnswer, Radio
4+
from labelbox.data.annotation_types.data.text import TextData
5+
from labelbox.data.annotation_types.label import Label
6+
7+
from labelbox.data.serialization.ndjson.converter import NDJsonConverter
8+
9+
10+
def test_serialization():
11+
label = Label(uid="ckj7z2q0b0000jx6x0q2q7q0d",
12+
data=TextData(
13+
uid="bkj7z2q0b0000jx6x0q2q7q0d",
14+
text="This is a test",
15+
),
16+
annotations=[
17+
ClassificationAnnotation(
18+
name="radio_question_geo",
19+
confidence=0.5,
20+
value=Radio(answer=ClassificationAnswer(
21+
confidence=0.6, name="first_radio_answer")))
22+
])
23+
24+
serialized = NDJsonConverter.serialize([label])
25+
res = next(serialized)
26+
assert res['confidence'] == 0.5
27+
assert res['name'] == "radio_question_geo"
28+
assert res['answer']['name'] == "first_radio_answer"
29+
assert res['answer']['confidence'] == 0.6
30+
assert res['dataRow']['id'] == "bkj7z2q0b0000jx6x0q2q7q0d"
31+
32+
deserialized = NDJsonConverter.deserialize([res])
33+
res = next(deserialized)
34+
annotation = res.annotations[0]
35+
assert annotation.confidence == 0.5
36+
37+
annotation_value = annotation.value
38+
assert type(annotation_value) is Radio
39+
assert annotation_value.answer.name == "first_radio_answer"

tests/data/serialization/ndjson/test_text.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,3 +26,12 @@ def test_serialization():
2626
assert res['name'] == "radio_question_geo"
2727
assert res['answer'] == "first_radio_answer"
2828
assert res['dataRow']['id'] == "bkj7z2q0b0000jx6x0q2q7q0d"
29+
30+
deserialized = NDJsonConverter.deserialize([res])
31+
res = next(deserialized)
32+
annotation = res.annotations[0]
33+
assert annotation.confidence == 0.5
34+
35+
annotation_value = annotation.value
36+
assert type(annotation_value) is Text
37+
assert annotation_value.answer == "first_radio_answer"

0 commit comments

Comments
 (0)