docs: def from_uncharted_json_serialized_dict(
          cls, _dict, minimum_evidence_pieces_required: int = 1
      ):
          """ Construct an AnalysisGraph object from a dict of INDRA statements
          exported by Uncharted's CauseMos webapp. """
          sts = _dict["statements"]
          G = nx.DiGraph()
          for s in sts:
              if len(s["evidence"]) >= minimum_evidence_pieces_required:
                  subj, obj = s["subj"], s["obj"]
                  if (
                      subj["db_refs"]["concept"] is not None
                      and obj["db_refs"]["concept"] is not None
                  ):
                      subj_name, obj_name = [
                          "/".join(s[x]["db_refs"]["concept"].split("/")[:])
                          for x in ["subj", "obj"]
                      ]
                      G.add_edge(subj_name, obj_name)
                      subj_delta = s["subj_delta"]
                      obj_delta = s["obj_delta"]
  
                      for delta in (subj_delta, obj_delta):
                          # TODO : Ensure that all the statements provided by
                          # Uncharted have unambiguous polarities.
                          if delta["polarity"] is None:
                              delta["polarity"] = 1
  
                      influence_stmt = Influence(
                          Concept(subj_name, db_refs=subj["db_refs"]),
                          Concept(obj_name, db_refs=obj["db_refs"]),
                          subj_delta=s["subj_delta"],
                          obj_delta=s["obj_delta"],
                          evidence=[
                              INDRAEvidence(
                                  source_api=ev["source_api"],
                                  annotations=ev["annotations"],
                                  text=ev["text"],
                                  epistemics=ev.get("epistemics"),
                              )
                              for ev in s["evidence"]
                          ],
                      )
                      influence_sts = G.edges[subj_name, obj_name].get(
                          "InfluenceStatements", []
                      )
                      influence_sts.append(influence_stmt)
                      G.edges[subj_name, obj_name][
                          "InfluenceStatements"
                      ] = influence_sts
  
          for concept, indicator in _dict[
              "concept_to_indicator_mapping"
          ].items():
              if indicator is not None:
                  indicator_source, indicator_name = (
                      indicator["name"].split("/")[0],
                      "/".join(indicator["name"].split("/")[1:]),
                  )
                  if concept in G:
                      if G.nodes[concept].get("indicators") is None:
                          G.nodes[concept]["indicators"] = {}
                      G.nodes[concept]["indicators"][indicator_name] = Indicator(
                          indicator_name, indicator_source
                      )
  
          self = cls(G)
          self.assign_uuids_to_nodes_and_edges()
          return self