{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-guides/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":[]},"type":"markdown"},"seo":{"title":"Log Recognition Service","description":"Accelerate E&P application development and protect your innovation by consuming our Data and Domain APIs / Platform APIs.","lang":"en-US","meta":[{"name":"robots","content":"noindex"}],"llmstxt":{"hide":true,"excludeFiles":[]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"log-recognition-service","__idx":0},"children":["Log Recognition Service"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#introduction"},"children":["Introduction"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#about-the-service"},"children":["About the service"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#how-to-use-this-service"},"children":["How to use this service"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#how-to-create-a-custom-catalog"},"children":["How to create a custom catalog"]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"introduction","__idx":1},"children":["Introduction ",{"$$mdtype":"Tag","name":"a","attributes":{"name":"introduction"},"children":[]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/solutions/wellbore-dms/apis/osdu-log-recognition-service"},"children":["Log Recognition API specification"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Wellbore logs are acquired by different logging company with their"," ","convention of defining the log name. This leads to a log called by"," ","different mnemonics for the same measurement. Also, different logging"," ","tools of the same measurement can have different description and units."," ","If, all this data is stored together without any classification it could"," ","lead to a lot of confusion and waste of time. Hence, logs need to be"," ","classified in groups / Families based on the measurement. This would"," ","help in identifying the logs easily and optimize the time spent looking"," ","for the logs."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"em","attributes":{},"children":["Example: The following curves coming from the field are all gamma ray,"," ","but they have different names."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"img","attributes":{"src":"/assets/gamma-ray-logviewer.210d2a3ec946a555c76d575bee632fd88c444369fedc676f52bd99623bb5a4cb.a0dccf2e.png","alt":"gamma-ray-logviewer.png"},"children":[]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"em","attributes":{},"children":["The processing workflows only need Gamma ray. You need to know all of"," ","them are Gamma ray. Hence the classification of these curves to Families"," ","is important."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["In cloud environment, we are looking for automatic solutions. To have"," ","automatic workflows, it becomes important that the logs mnemonics are"," ","identified accurately. But, identifying the logs manually is a very"," ","tedious work. As there could be thousands of logs in a well, and many"," ","such wells in a field. Log recognition is a service that is assigning"," ","the Family attribute to the all the logs automatically using family"," ","assignment rules. This will ensure that the correct logs are picked up"," ","by the workflows for automatic processing."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"about-the-service","__idx":2},"children":["About the service ",{"$$mdtype":"Tag","name":"a","attributes":{"name":"about-the-service"},"children":[]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Log Recognition service has a huge ",{"$$mdtype":"Tag","name":"em","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["default catalog"]}]}," of assignment"," ","rules, which helps in the identification of log family using the Log name"," ","/ Mnemonics, Log unit and description. This catalog cannot be modified"," ","by user. But the users can create their own ",{"$$mdtype":"Tag","name":"em","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["custom catalog"]}]}," with"," ","different set of assignment rules specific to their data partition. The"," ","custom catalog will always have priority over the default catalog."," ","Hence, if a company wants to have their own set of rules which are not"," ","present in the default catalog or override some rules defined in the"," ","default catalog that are different for their company. Then, they could"," ","create their own customized catalog."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"how-to-use-this-service","__idx":3},"children":["How to use this service ",{"$$mdtype":"Tag","name":"a","attributes":{"name":"how-to-use-this-service"},"children":[]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Log Recognition service provides API's to assign Family attribute to"," ","logs using the Log name / Mnemonics, Description of the Log and log"," ","unit. If the curve name is ",{"$$mdtype":"Tag","name":"em","attributes":{},"children":["GRD"]}," and unit ",{"$$mdtype":"Tag","name":"em","attributes":{},"children":["GAPI"]},", then the family will"," ","be identified as ",{"$$mdtype":"Tag","name":"em","attributes":{},"children":["Gamma Ray"]},"**.** The table below illustrates more such"," ","examples. There are examples of how to use the API below the table."]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Curve Name"},"children":["Curve Name"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Unit"},"children":["Unit"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Family"},"children":["Family"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["GRD"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["GAPI"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["LDTD Gamma Ray"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Gamma Ray"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["HD01"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["g/cc"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["SMOOTHED AZIMUTHAL DENSITY - BIN 01"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Bulk Density"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["DFHF0_FSI"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Filtered Water Holdup Electrical Probe 0"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Water Holdup"]}]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Here is an example of an API"]}]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","header":{"controls":{"copy":{}}},"source":"/recognize API\nPOST  /api/log-recognition/recognize\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n \"label\": \"GRD\", \n \"log_unit\": \"gApi\",\n \"description\": \"\"\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Curl"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","header":{"controls":{"copy":{}}},"source":"curl -X POST \"/api/log-recognition/recognize\" -H \"accept: application/json\" -H \"Authorization: BearerToken\" -H \"appkey: appKey\" -H \"Content-Type: application/json\" -d \"{ \\\"label\\\": \\\"GRD\\\", \\\"log_unit\\\": \\\"gApi\\\", \\\"description\\\": \\\"\\\"}\"\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Parameters"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Parameter"},"children":["Parameter"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["label"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Curve name (mandatory)"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["log_unit"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Curve unit (optional)"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["description"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Curve description (optional)"]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Response:"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Key"},"children":["Key"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["family"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Recognized family"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["family_type"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Recognized main family"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["log_unit"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Curve unit (same as input)"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["base_unit"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Default unit defined by main family"]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Example:"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Recognize the family for a curve named \"GRD\" and unit is \"gapi\""]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n \"label\": \"GRD\", \n \"log_unit\": \"gapi\",\n \"description\": \"\"\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The result will be"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"family\": \"Gamma Ray\",\n  \"family_type\": [ \"Gamma Ray\"],\n  \"log_unit\": \"gapi\",\n  \"base_unit\": \"gAPI\"\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"how-to-create-a-custom-catalog","__idx":4},"children":["How to create a custom catalog ",{"$$mdtype":"Tag","name":"a","attributes":{"name":"how-to-create-a-custom-catalog"},"children":[]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The custom catalog consists of the following attributes."]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Unit of log"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Family of log"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Rule or Mnemonic"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Main Family"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Unit of the Family"]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Examples:"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Adding a new rule or overriding an existing Family assignment rule. The"," ","catalog needs to be in the following (json) format."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"data\": {\n    \"family_catalog\": [\n      {\n        \"unit\": \"ohm.m\",\n        \"family\": \"Medium Resistivity\",\n        \"rule\": \"MEDR\"\n      }\n    ],\n    \"main_family_catalog\": [\n      {\n        \"MainFamily\": \"Resistivity\",\n        \"Family\": \"Medium Resistivity\",\n        \"Unit\": \"OHMM\"\n      }\n    ]\n  }\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For adding multiple family assignment, you can also create rules in a"," ","csv file that can be used for creating the custom catalog."]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Log"},"children":["Log"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Unit"},"children":["Unit"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Family"},"children":["Family"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Main Family"},"children":["Main Family"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Family unit"},"children":["Family unit"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["BL1M"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Kg/m3"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Bulk Density"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Density"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["g/cm3"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["RDPL"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["OHMM"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Deep Resistivity"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Resistivity"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["ohm.m"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["PFC2"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["mm"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Caliper"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Borehole Properties"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["in"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["MICR"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["OHMM"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Micro Spherically Focused Resistivity"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Resistivity"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["ohm.m"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["ALCD1"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["mS/ft"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Conductivity - Deep Induction"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Conductivity"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["mS/m"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["CNCQH"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["PU"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Thermal Neutron Porosity"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Porosity"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["v/v"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["CNCQH2"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["PU"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Thermal Neutron Porosity"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Porosity"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["v/v"]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Use the following Python script to convert the csv file to Json format"," ","as required by the service."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"python","header":{"controls":{"copy":{}}},"source":"import csv\nimport json\nimport sys\n\nif len(sys.argv) is not 2:\n    print(\"usage: python converter.py filetoconvert.json\")\n    exit(-1)\nres = {\"data\": {\"family_catalog\": [], \"main_family_catalog\": []}}\n\nfiletoopen = sys.argv[1]\nwith open(filetoopen, newline=\"\") as csvfile:\n    catalog_reader = csv.DictReader(csvfile, delimiter=\",\", quotechar=\"|\")\n    for row in catalog_reader:\n        rule = {\n            \"unit\": row[\"Unit\"],\n            \"family\": row[\"Family\"],\n            \"rule\": row[\"Log\"],\n        }\n        main_fam = {\n            \"MainFamily\": row[\"Main Family\"],\n            \"Family\": row[\"Family\"],\n            \"Unit\": row[\"Family unit\"],\n        }\n        if rule not in res[\"data\"][\"family_catalog\"]:\n            res[\"data\"][\"family_catalog\"].append(rule)\n        if main_fam not in res[\"data\"][\"main_family_catalog\"]:\n            res[\"data\"][\"main_family_catalog\"].append(main_fam)\n\n# res[\"data\"][\"main_family_catalog\"] = list(dict.fromkeys(res[\"data\"][\"main_family_catalog\"]))\nwith open(\"out.json\", mode=\"w\") as json_file:\n    json.dump(res, json_file, indent=4)\nprint(\"out.json generated\")\n","lang":"python"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The python will generate the input for the service as below."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"data\": {\n    \"family_catalog\": [\n      {\n        \"unit\": \"Kg/m3\",\n        \"family\": \"Bulk Density\",\n        \"rule\": \"BL1M\"\n      },\n      {\n        \"unit\": \"OHMM\",\n        \"family\": \"Deep Resistivity\",\n        \"rule\": \"RDPL\"\n      },\n      {\n        \"unit\": \"mm\",\n        \"family\": \"Caliper\",\n        \"rule\": \"PFC2\"\n      },\n      {\n        \"unit\": \"OHMM\",\n        \"family\": \"Micro Spherically Focused Resistivity\",\n        \"rule\": \"MICR\"\n      },\n      {\n        \"unit\": \"mS/ft\",\n        \"family\": \"Conductivity - Deep Induction\",\n        \"rule\": \"ALCD1\"\n      },\n      {\n        \"unit\": \"PU\",\n        \"family\": \"Thermal Neutron Porosity\",\n        \"rule\": \"CNCQH\"\n      },\n      {\n        \"unit\": \"PU\",\n        \"family\": \"Thermal Neutron Porosity\",\n        \"rule\": \"CNCQH2\"\n      }\n    ],\n    \"main_family_catalog\": [\n      {\n        \"MainFamily\": \"Density\",\n        \"Family\": \"Bulk Density\",\n        \"Unit\": \"g/cm3\"\n      },\n      {\n        \"MainFamily\": \"Resistivity\",\n        \"Family\": \"Deep Resistivity\",\n        \"Unit\": \"ohm.m\"\n      },\n      {\n        \"MainFamily\": \"Borehole Properties\",\n        \"Family\": \"Caliper\",\n        \"Unit\": \"in\"\n      },\n      {\n        \"MainFamily\": \"Resistivity\",\n        \"Family\": \"Micro Spherically Focused Resistivity\",\n        \"Unit\": \"ohm.m\"\n      },\n      {\n        \"MainFamily\": \"Conductivity\",\n        \"Family\": \"Conductivity - Deep Induction\",\n        \"Unit\": \"mS/m\"\n      },\n      {\n        \"MainFamily\": \"Porosity\",\n        \"Family\": \"Thermal Neutron Porosity\",\n        \"Unit\": \"v/v\"\n      }\n    ]\n  }\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"em","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Note:"]}," If there is an existing catalog, it will be replaced. It"," ","takes maximum of 5 mins to replace the existing catalog. Hence, any call"," ","to retrieve the family should be made after 5 mins of uploading the"," ","catalog"]}]}]},"headings":[{"value":"Log Recognition Service","id":"log-recognition-service","depth":1},{"value":"Introduction","id":"introduction","depth":2},{"value":"About the service","id":"about-the-service","depth":2},{"value":"How to use this service","id":"how-to-use-this-service","depth":2},{"value":"How to create a custom catalog","id":"how-to-create-a-custom-catalog","depth":2}],"frontmatter":{"seo":{"title":"Log Recognition Service"}},"lastModified":"2026-04-20T20:41:52.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/solutions/wellbore-dms/tutorial/osdu-wdms-data-services","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}