Skip to content

Commit

Permalink
more testing
Browse files Browse the repository at this point in the history
  • Loading branch information
pnrobinson committed Jun 6, 2024
1 parent fe01eb4 commit 4ce6679
Show file tree
Hide file tree
Showing 4 changed files with 28 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ public class HpInternationalOboParser {
* @return in this case "tr"
*/
public Optional<String> getLanguage(String annots) {
final String translation = "translation:language=\"(\\w{2,2})\"";
final String translation = "translation:language=\"(\\w{2,3})\"";
final Pattern pattern = Pattern.compile(translation);
Matcher matcher = pattern.matcher(annots);
if (matcher.find()) {
Expand All @@ -53,7 +53,7 @@ public Optional<String> getTranslation(String annots) {
public HpInternationalOboParser(File file) {
languageToInternationalMap = new HashMap<>();
String pattern = "id: (HP:\\d{7,7})";
Set<String> acronyms = Set.of("cs", "en", "de", "it", "es", "fr", "ja", "nl", "nna", "tr", "tw", "zh");
Set<String> acronyms = Set.of("cs", "en", "de", "dtp", "it", "es", "fr", "ja", "nl", "nna", "tr", "tw", "zh");
for (String acronym : acronyms) {
languageToInternationalMap.put(acronym, new HpInternational(acronym));
}
Expand Down Expand Up @@ -84,6 +84,10 @@ public HpInternationalOboParser(File file) {
Optional<String> opt = getLanguage(annots);
if (opt.isPresent()) {
String language = opt.get();
if (! languageToInternationalMap.containsKey(language)) {
System.err.println("[ERROR] Could not find language \"" + language + "\"");
continue;
}
languageToInternationalMap.get(language).addTerm(currentHpoTermId, hpoLabel);
} else {
System.err.printf("[ERROR] Could not extract language for %s.\n", line);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,9 @@ public GermanPromptGenerator(PpktPhenotypicFeatureGenerator pfgen) {
this.ppktPhenotypicFeatureGenerator = pfgen;
}




@Override
public String queryHeader() {
return ppktTextGenerator.QUERY_HEADER();
Expand All @@ -47,7 +50,7 @@ public String formatFeatures(List<OntologyTerm> ontologyTerms) {
public String getVignetteAtAge(PhenopacketAge page, PhenopacketSex psex, List<OntologyTerm> terms) {
String ageString = this.ppktAgeSexGenerator.atAge(page);
String features = formatFeatures(terms);
return String.format("%s, präsentierte %s mit mit den folgenden Symptomen: %s", ageString, ppktAgeSexGenerator.heSheIndividual(psex), features);
return String.format("%s, präsentierte %s mit den folgenden Symptomen: %s", ageString, ppktAgeSexGenerator.heSheIndividual(psex), features);
}


Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package org.monarchinitiative.phenopacket2prompt.output.impl.german;

import com.sun.source.tree.BreakTree;
import org.monarchinitiative.phenol.base.PhenolRuntimeException;
import org.monarchinitiative.phenopacket2prompt.model.*;
import org.monarchinitiative.phenopacket2prompt.output.PPKtIndividualInfoGenerator;
Expand Down Expand Up @@ -272,9 +273,10 @@ private String iso8601individualDescription(PhenopacketSex psex, Iso8601Age iso8
};
} else if (y>0) {
return switch (psex) {
case FEMALE -> iso8601ToYearMonth(iso8601Age, psex);
case MALE -> iso8601ToYearMonth(iso8601Age, psex);
default -> iso8601ToYearMonth(iso8601Age, psex);
case FEMALE -> String.format("Die Patientin war %s", iso8601ToYearMonth(iso8601Age, psex));
case MALE ->
String.format("Der Patient war %s", iso8601ToYearMonth(iso8601Age, psex));
default -> String.format("Der Patient war %s", iso8601ToYearMonth(iso8601Age, psex));
};
} else if (m>0 || d> 0) {
return switch (psex) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,19 @@

public class GermanPromptGeneratorTest {

private final static String case_vignette = """
Ich führe ein Experiment mit einem klinischen Fallbericht durch, um zu sehen, wie sich Ihre Diagnosen mit denen menschlicher Experten vergleichen lassen. Ich werde Ihnen einen Teil eines medizinischen Falles vorstellen. Sie versuchen nicht, irgendwelche Patienten zu behandeln. In diesem Fall sind Sie „Dr. GPT-4“, ein KI-Sprachmodell, das eine Diagnose liefert. Hier sind einige Richtlinien. Erstens gibt es eine einzige definitive Diagnose, und es ist eine Diagnose, von der heute bekannt ist, dass sie beim Menschen existiert. Die Diagnose wird fast immer durch einen Gentest bestätigt. In seltenen Fällen, in denen ein solcher Test für eine Diagnose nicht existiert, kann die Diagnose jedoch anhand validierter klinischer Kriterien gestellt oder in sehr seltenen Fällen einfach durch eine Expertenmeinung bestätigt werden. Nachdem Sie den Fall gelesen haben, möchte ich, dass Sie eine Differentialdiagnose mit einer Liste von Kandidatendiagnosen stellen, die nach Wahrscheinlichkeit geordnet sind, beginnend mit dem wahrscheinlichsten Kandidaten. Jeder Kandidat sollte mit dem Krankheitsnamen angegeben werden. Wenn es sich bei dem ersten Kandidaten beispielsweise um das Branchiookulofaziale Syndrom und bei dem zweiten um Mukoviszidose handelt, geben Sie Folgendes in englischer Sprache an:
1. Branchiooculofacial syndrome
2. Cystic fibrosis
Diese Liste sollte so viele Diagnosen enthalten, wie Sie für sinnvoll halten.
Sie müssen Ihre Argumentation nicht erläutern, sondern nur die Diagnosen auflisten.
Ich habe Ihnen diese Anleitung auf English gegeben, aber ich bitte Sie, ihre Antwort ausschließlich auf English zu liefern.
Hier ist der Fall:
Der Patient war ein 2jähriger Junge, der sich im Alter von 3 Tagen mit den folgenden Symptomen vorgestellt hat: Lymphopenie, Lungenentzündung und Verminderter zirkulierender IgA-Spiegel. Im Alter von 2 Jahren, präsentierte er mit den folgenden Symptomen: Verringertes zirkulierendes Gesamt-IgM.""";
@Test
public void testCase() {
PpktIndividual i = twoYears();
Expand All @@ -35,10 +47,7 @@ public void testCase() {
Map<String, HpInternational> internationalMap = oboParser.getLanguageToInternationalMap();
PromptGenerator german = PromptGenerator.german(internationalMap.get("de"));
String prompt = german.createPrompt(twoYears());


System.out.println(prompt);
assertEquals("asdf", prompt);
assertEquals(case_vignette, prompt.trim());
}


Expand Down

0 comments on commit 4ce6679

Please sign in to comment.