findListOfCompounds method
- String applicationDescription
Finds relevant chemical compounds for a given application description.
- Uses AI to generate SMILES patterns.
- Searches PubChem for matching compounds.
- Retrieves properties of the top compounds found.
Returns a formatted string containing search results.
Implementation
Future<String> findListOfCompounds(String applicationDescription) async {
try {
// Step 1: Get relevant SMILES patterns from AI
final smilesList = await getRelevantSmiles(applicationDescription);
// Step 2: Search PubChem for each SMILES pattern
final Set<int> uniqueCids = {};
for (String smiles in smilesList) {
final cids = await getSubstructureCids(smiles);
uniqueCids.addAll(cids.take(maxResultsPerSmiles));
}
// Step 3: Fetch properties for collected CIDs
final List<Map<String, dynamic>> results = [];
for (int cid in uniqueCids.take(10)) {
try {
results.add(await getCompoundProperties(cid));
} catch (e) {
results.add({'error': 'CID $cid: ${e.toString()}'});
}
}
return _formatResults(results, smilesList);
} catch (e) {
return 'Error: ${e.toString()}';
}
}