findListOfCompounds method

Future<String> findListOfCompounds(
  1. 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()}';
  }
}