@classmethod<EOL><INDENT>def from_tryte_string(cls, trytes, hash_=None):<EOL><DEDENT>
tryte_string = TransactionTrytes(trytes)<EOL>if not hash_:<EOL><INDENT>hash_trits = [<NUM_LIT:0>] * HASH_LENGTH  <EOL>sponge = Curl()<EOL>sponge.absorb(tryte_string.as_trits())<EOL>sponge.squeeze(hash_trits)<EOL>hash_ = TransactionHash.from_trits(hash_trits)<EOL><DEDENT>return cls(<EOL>hash_=hash_,<EOL>signature_message_fragment=Fragment(tryte_string[<NUM_LIT:0>:<NUM_LIT>]),<EOL>address=Address(tryte_string[<NUM_LIT>:<NUM_LIT>]),<EOL>value=int_from_trits(tryte_string[<NUM_LIT>:<NUM_LIT>].as_trits()),<EOL>legacy_tag=Tag(tryte_string[<NUM_LIT>:<NUM_LIT>]),<EOL>timestamp=int_from_trits(tryte_string[<NUM_LIT>:<NUM_LIT>].as_trits()),<EOL>current_index=int_from_trits(tryte_string[<NUM_LIT>:<NUM_LIT>].as_trits()),<EOL>last_index=int_from_trits(tryte_string[<NUM_LIT>:<NUM_LIT>].as_trits()),<EOL>bundle_hash=BundleHash(tryte_string[<NUM_LIT>:<NUM_LIT>]),<EOL>trunk_transaction_hash=TransactionHash(tryte_string[<NUM_LIT>:<NUM_LIT>]),<EOL>branch_transaction_hash=TransactionHash(tryte_string[<NUM_LIT>:<NUM_LIT>]),<EOL>tag=Tag(tryte_string[<NUM_LIT>:<NUM_LIT>]),<EOL>attachment_timestamp=int_from_trits(<EOL>tryte_string[<NUM_LIT>:<NUM_LIT>].as_trits()),<EOL>attachment_timestamp_lower_bound=int_from_trits(<EOL>tryte_string[<NUM_LIT>:<NUM_LIT>].as_trits()),<EOL>attachment_timestamp_upper_bound=int_from_trits(<EOL>tryte_string[<NUM_LIT>:<NUM_LIT>].as_trits()),<EOL>nonce=Nonce(tryte_string[<NUM_LIT>:<NUM_LIT>]),<EOL>)<EOL>
Creates a Transaction object from a sequence of trytes.

:param trytes:
    Raw trytes.  Should be exactly 2673 trytes long.

:param hash_:
    The transaction hash, if available.

    If not provided, it will be computed from the transaction
    trytes.