Skip to content

Commit 9571e46

Browse files
Merge pull request #311 from macrocosm-os/staging
Staging
2 parents 1d4b271 + 95fa263 commit 9571e46

17 files changed

+810
-448
lines changed

blacklist.txt

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
5DcBFgjEPuUtXCWJURUX5mDnmWLw1RukwfvJAgJZD5cHCftb
2+
5F9XbpH9fhYsWQFSZ789EHWdFnzthcVfXLno4WE7YJUBK8nF
3+
5Dm2K8EKo4kvX5cK782w6wwemuPckXi92dVmprTzhg24TyJV
4+
5C5vSVadd2XPX2zyTLvnyRAtLchF68gwkKGFgryjbJn83cU4
5+
5CcGFU5VQmqefkybdf3D2hmJrrqp5HSKfmzmXrjRbbUkWgMs

folding/__init__.py

+2-6
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,8 @@
11
from .protocol import JobSubmissionSynapse
22
from .validators.protein import Protein
33

4-
__version__ = "1.4.0"
4+
__version__ = "1.4.1"
55
version_split = __version__.split(".")
6-
__spec_version__ = (
7-
(10000 * int(version_split[0]))
8-
+ (100 * int(version_split[1]))
9-
+ (1 * int(version_split[2]))
10-
)
6+
__spec_version__ = (10000 * int(version_split[0])) + (100 * int(version_split[1])) + (1 * int(version_split[2]))
117

128
__OPENMM_VERSION_TAG__ = "8.2"

folding/base/neuron.py

+5-11
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ def __init__(self, config=None):
8585
else:
8686
self.wallet = bt.wallet(config=self.config)
8787
self.subtensor = bt.subtensor(config=self.config)
88-
self.metagraph = self.subtensor.metagraph(self.config.netuid, lite = False)
88+
self.metagraph = self.subtensor.metagraph(self.config.netuid, lite=False)
8989

9090
# Check OpenMM version if we are not in mock mode.
9191
self.check_openmm_version()
@@ -126,9 +126,7 @@ def check_openmm_version(self):
126126

127127
def setup_wandb_logging(self):
128128
if os.path.isfile(f"{self.config.neuron.full_path}/wandb_ids.pkl"):
129-
self.wandb_ids = load_pkl(
130-
f"{self.config.neuron.full_path}/wandb_ids.pkl", "rb"
131-
)
129+
self.wandb_ids = load_pkl(f"{self.config.neuron.full_path}/wandb_ids.pkl", "rb")
132130
else:
133131
self.wandb_ids = {}
134132

@@ -161,7 +159,7 @@ def sync(self):
161159
self.save_state()
162160

163161
def weight_setter(self):
164-
""" method to set weights for the validator. """
162+
"""method to set weights for the validator."""
165163
try:
166164
logger.info("Attempting to set weights...")
167165
weights_are_set = self.set_weights()
@@ -188,9 +186,7 @@ def should_sync_metagraph(self):
188186
"""
189187
Check if enough epoch blocks have elapsed since the last checkpoint to sync.
190188
"""
191-
return (
192-
self.block - self.metagraph.last_update[self.uid]
193-
) > self.config.neuron.metagraph_resync_length
189+
return (self.block - self.metagraph.last_update[self.uid]) > self.config.neuron.metagraph_resync_length
194190

195191
def should_set_weights(self) -> bool:
196192
# Don't set weights on initialization.
@@ -206,9 +202,7 @@ def should_set_weights(self) -> bool:
206202
return False
207203

208204
# Define appropriate logic for when set weights.
209-
return (
210-
self.block - self.metagraph.last_update[self.uid]
211-
) > self.config.neuron.epoch_length
205+
return (self.block - self.metagraph.last_update[self.uid]) > self.config.neuron.epoch_length
212206

213207
def save_state(self):
214208
pass

folding/organic/validator.py

+6-18
Original file line numberDiff line numberDiff line change
@@ -40,12 +40,8 @@ def __init__(
4040
self._validator: BaseNeuron = validator
4141

4242
protected_args = ["ff", "water", "box"]
43-
simulation_args = list(
44-
SimulationConfig(ff="organic", water="organic", box="cube").to_dict().keys()
45-
)
46-
self.simulation_args = [
47-
arg for arg in simulation_args if arg not in protected_args
48-
]
43+
simulation_args = list(SimulationConfig(ff="organic", water="organic", box="cube").to_dict().keys())
44+
self.simulation_args = [arg for arg in simulation_args if arg not in protected_args]
4945

5046
async def _on_organic_entry(self, synapse: OrganicSynapse) -> bt.Synapse:
5147
"""
@@ -55,9 +51,7 @@ async def _on_organic_entry(self, synapse: OrganicSynapse) -> bt.Synapse:
5551

5652
config: dict = synapse.get_simulation_params()
5753
self._organic_queue.add(config)
58-
logger.success(
59-
f"Query received: organic queue size = {self._organic_queue.size}"
60-
)
54+
logger.success(f"Query received: organic queue size = {self._organic_queue.size}")
6155

6256
# TODO: This is still False on the API side.... Why!???!
6357
synapse.is_processed = True
@@ -77,21 +71,15 @@ async def start_loop(self):
7771
logs = await self.forward()
7872

7973
total_elapsed_time = logs.get("total_elapsed_time", 0)
80-
logger.info(
81-
f"Organic scoring iteration completed in {total_elapsed_time:.2f} seconds."
82-
)
74+
logger.info(f"Organic scoring iteration completed in {total_elapsed_time:.2f} seconds.")
8375

8476
logger.warning(
8577
f"Sleeping for {self._validator.config.neuron.organic_trigger_frequency} seconds before next organic check."
8678
)
87-
await asyncio.sleep(
88-
self._validator.config.neuron.organic_trigger_frequency
89-
)
79+
await asyncio.sleep(self._validator.config.neuron.organic_trigger_frequency)
9080

9181
except Exception as e:
92-
logger.error(
93-
f"Error occured during organic scoring iteration:\n{e}"
94-
)
82+
logger.error(f"Error occured during organic scoring iteration:\n{e}")
9583
await asyncio.sleep(1)
9684

9785
async def sample(self) -> dict[str, Any]:

folding/store.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -95,10 +95,10 @@ def _job_to_dict(self, job: "Job") -> dict:
9595
"""Convert a Job object to a dictionary for database storage."""
9696
data = job.to_dict()
9797

98-
# Convert Python list or dict objects to JSON strings for sqlite
98+
# Convert Python list or dict objects to JSON strings for sqlite
9999
data_to_update = {}
100100
for k, v in data.items():
101-
if isinstance(v, (list,dict)):
101+
if isinstance(v, (list, dict)):
102102
data_to_update[k] = json.dumps(v)
103103

104104
data.update(data_to_update)
@@ -220,7 +220,7 @@ def update_gjp_job(self, job: "Job", gjp_address: str, keypair, job_id: str):
220220
"""
221221

222222
body = get_epistula_body(job=job)
223-
223+
224224
body_bytes = self.epistula.create_message_body(body)
225225
headers = self.epistula.generate_header(hotkey=keypair, body=body_bytes)
226226

folding/utils/epistula_utils.py

+3-5
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,11 @@ def get_epistula_body(job: "Job") -> dict:
2727
body["is_organic"] = body.get("is_organic", False)
2828
body["update_interval"] = body.pop("update_interval").total_seconds()
2929
body["max_time_no_improvement"] = body.pop("max_time_no_improvement").total_seconds()
30-
body["best_loss_at"] = (
31-
body["best_loss_at"] if pd.notna(body["best_loss_at"]) else datetime.now(timezone.utc)
32-
)
30+
body["best_loss_at"] = body["best_loss_at"] if pd.notna(body["best_loss_at"]) else datetime.now(timezone.utc)
3331
body["best_hotkey"] = "" if body["best_hotkey"] is None else body["best_hotkey"]
3432
body["best_loss"] = 0.0 if body["best_loss"] == np.inf else body["best_loss"]
35-
36-
body["best_cpt_links"] = json.dumps(body.pop("best_cpt_links")) if body["best_cpt_links"] else [""]
33+
34+
body["best_cpt_links"] = body.pop("best_cpt_links") if body["best_cpt_links"] else [""]
3735
body["epsilon"] = int(body.pop("epsilon"))
3836
body.pop("event")
3937
body.pop("job_id")

folding/utils/logger.py

+4-1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
diagnose=False,
2020
)
2121

22+
2223
def setup_file_logging(log_path, retention):
2324
"""Setup file logging with rotation"""
2425
logger.add(
@@ -32,9 +33,11 @@ def setup_file_logging(log_path, retention):
3233
format=FORMAT,
3334
)
3435

36+
3537
def add_events_level():
3638
"""Add custom EVENTS level if it doesn't exist"""
3739
if "EVENTS" not in logger._core.levels:
3840
logger.level("EVENTS", no=38, icon="📝")
3941

40-
__all__ = ['logger', 'setup_file_logging', 'add_events_level']
42+
43+
__all__ = ["logger", "setup_file_logging", "add_events_level"]

folding/utils/s3_utils.py

+5-3
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@ def create_s3_client(
3434
access_key_id: str = S3_CONFIG["access_key_id"],
3535
secret_access_key: str = S3_CONFIG["secret_access_key"],
3636
) -> boto3.client:
37-
3837
"""Creates a configured S3 client using the environment variables defined in S3_CONFIG.
3938
4039
Raises:
@@ -86,7 +85,6 @@ async def upload_to_s3(
8685
input_time = datetime.datetime.now().strftime("%Y-%m-%d_%H-%M-%S")
8786

8887
for file_type in ["pdb", "cpt"]:
89-
9088
if file_type == "cpt":
9189
file_path = os.path.join(validator_directory, simulation_cpt)
9290
else:
@@ -96,7 +94,11 @@ async def upload_to_s3(
9694
logger.debug(f"putting file: {file_path} at {location} with type {file_type}")
9795

9896
key = await asyncio.to_thread(
99-
handler.put, file_path=file_path, location=location, public=True, file_type=file_type
97+
handler.put,
98+
file_path=file_path,
99+
location=location,
100+
public=True,
101+
file_type=file_type,
100102
)
101103
s3_links[file_type] = os.path.join("https://nyc3.digitaloceanspaces.com/vali-s3-demo-do/", key)
102104
await asyncio.sleep(0.10)

0 commit comments

Comments
 (0)