code: def generate_complementary_strand(strand1):
          
          rise_adjust = (
              strand1.rise_per_nucleotide * strand1.axis.unit_tangent) * 2
          strand2 = NucleicAcidStrand.from_start_and_end(
              strand1.helix_end - rise_adjust, strand1.helix_start - rise_adjust,
              generate_antisense_sequence(strand1.base_sequence),
              phos_3_prime=strand1.phos_3_prime)
          ad_ang = dihedral(strand1[0]["C1'"]._vector, strand1.axis.start,
                            strand2.axis.start + rise_adjust,
                            strand2[-1]["C1'"]._vector)
          strand2.rotate(
              225.0 + ad_ang, strand2.axis.unit_tangent,
              point=strand2.helix_start)  # 225 is the base adjust
          return strand2
docs: Takes a SingleStrandHelix and creates the antisense strand.